【机器学习之---数学】拉格朗日乘子法

every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog

0. 前言

优化之
拉格朗日乘子法

1. 概念

拉格朗日乘子法是一种将约束优化问题转化为无约束优化问题的方法,如下面的优化问题:

m i n f ( x ) s . t . g ( x ) = 0 minf(\pmb{x}) \quad s.t. g(\pmb{x}) = 0 minf(x)s.t.g(x)=0

s.t. 是subject to 的缩写,意思是,受限于,即,约束条件

因为有约束存在,无法方便求解,但是如果通过引入拉格朗日函数,

L ( x , λ ) = f ( x ) + λ g ( x ) L(\pmb{x},\lambda) = f(\pmb{x}) + \lambda g(\pmb{x}) L(x,λ)=f(x)+λg(x)

这样函数L就没有约束了,其中, λ \lambda λ称为拉格朗日乘子。原问题可以转化为无约束优化问题:

{ ∇ x L ( x , λ ) = 0 g ( x ) = 0 \left\{ \begin{matrix} \nabla_xL(\pmb{x},\lambda) = 0 \\ g(\pmb{x}) = 0 \end{matrix} \right. {xL(x,λ)=0g(x)=0

第一行是 ∇ x L \nabla_xL xL 即L对 x \pmb{x} x的各个分量偏导都等于0,
第二行是 L L L λ \lambda λ的偏导等于0,这样我们就将原问题转化为无约束优化问题。

但注意此方程组只是必要条件,即这个方程组求出来的解不一定都是最优解(例如存在鞍点),但是最优解一定在里面。在一些特殊情况下,如f是凸函数,这个方程组的解就才一定是最优解。

2. 理解

为什么最优解在 ∇ x L ( x , λ ) = 0 , g ( x ) = 0 \nabla_xL(\pmb{x},\lambda) = 0 ,\quad g(\pmb{x}) = 0 xL(x,λ)=0,g(x)=0解集中呢?,不妨考虑如下问题:

m i n f ( x 1 , x 2 ) s . t . g ( x 1 , x 2 ) = 0 minf(x_1,x_2) \quad s.t. g(x_1,x_2)=0 minf(x1,x2)s.t.g(x1,x2)=0

目标函数 f ( x 1 , x 2 ) f(x_1,x_2) f(x1,x2) 是曲面,在xy中用等高线表示,g(x_1,x_2)是曲线,在xy中用黄线表示,

1710751409411

仔细想想可以发现:我们所求的在黄线约束 g ( x 1 , x 2 ) = 0 g(x_1,x_2) = 0 g(x1,x2)=0
下的最优点P一定是约束曲线g=0与目标函数f的某一条等值线的切点,也就是最优点P处约束曲线的法向量 ∇ g \nabla g g
一定与该处的目标函数的梯度
共线(同向或反向,因为
的方向可正可负)。如下图所示:

v2-d5794fa1585a32f1ccc3add04d19b7dc_720w

如果不共线?

如下图所示,假设最优点P处,目标函数梯度 ∇ f \nabla f f
与约束的法向量 ∇ g \nabla g g 不共线,因此负梯度 − ∇ f -\nabla f f
(表示f下降最快的方向)与 ∇ g \nabla g g也不会共线,这样一来负梯度 − ∇ f -\nabla f f 在约束曲线g 上的切向上就存在 紫色的分量
,这就表明黄线上的P点沿此方向再挪一点,目标函数值还能进一步下降,所以当前的P点并不是最优点,与假设矛盾。

v2-2f787863ae79d810256e6c3e46efa402_720w

故,可用如下数学表达式:

∃ λ ∈ R , 使得, ∇ f + λ ∇ g = 0 \exists \lambda \in R,使得,\nabla f+ \lambda \nabla g = 0 λR,使得,f+λg=0

所以拉格朗日乘子 λ \lambda λ就是待求的一个伸缩系数,令 L ( x , λ ) = f ( x ) + λ g ( x ) L(x,\lambda) = f(x) +\lambda g(x) L(x,λ)=f(x)+λg(x)后,
∇ x L ( x , λ ) = ∇ x f ( x ) + λ ∇ x g ( x ) = 0 \nabla_xL(x,\lambda) = \nabla_xf(x) + \lambda \nabla_xg(x) = 0 xL(x,λ)=xf(x)+λxg(x)=0

同时, g ( x ) = 0 g(x)=0 g(x)=0

参考

  1. https://zhuanlan.zhihu.com/p/440297403
  2. https://zhuanlan.zhihu.com/p/154517678

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-27 06:48:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-27 06:48:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-27 06:48:01       82 阅读
  4. Python语言-面向对象

    2024-03-27 06:48:01       91 阅读

热门阅读

  1. react native hooks 如何避免重复请求

    2024-03-27 06:48:01       34 阅读
  2. AI绘画自动生成器平台有哪些

    2024-03-27 06:48:01       41 阅读
  3. python数据解析xpath

    2024-03-27 06:48:01       41 阅读
  4. 微信小程序 第四节课

    2024-03-27 06:48:01       42 阅读
  5. pytorch中的torch.hub.load()

    2024-03-27 06:48:01       45 阅读
  6. 09 mybatis 注解

    2024-03-27 06:48:01       35 阅读
  7. PgMP考试费用是多少?收费标准详细解析!

    2024-03-27 06:48:01       104 阅读
  8. 1969. 数组元素的最小非零乘积

    2024-03-27 06:48:01       41 阅读
  9. QT学习之UDP

    2024-03-27 06:48:01       42 阅读
  10. spring缓存通用配置

    2024-03-27 06:48:01       43 阅读
  11. sqlite删除数据表

    2024-03-27 06:48:01       40 阅读
  12. GPT大语言模型助力R语言开展数据统计分析

    2024-03-27 06:48:01       27 阅读
  13. torchvision.datasets.ImageFolder

    2024-03-27 06:48:01       37 阅读
  14. 在虚拟机CentOs_7_64环境中安装Docker和Docker-Compose

    2024-03-27 06:48:01       38 阅读