机器学习中的数学——拉格朗日乘子法(一):等式约束的拉格朗日乘子法

分类目录:《机器学习中的数学》总目录
相关文章:
·拉格朗日乘子法(一):等式约束的拉格朗日乘子法
·拉格朗日乘子法(二):不等式约束与KKT条件


拉格朗日乘子法是一种寻找多元函数在一组约束下的极值的方法。通过引入拉格朗日乘子,可将有 d d d个变量与 k k k个约束条件的最优化问题转化为具有 d + k d+k d+k个变量的无约束优化问题求解。即对于:
min ⁡ f ( x ) s.t. g i ( x ) = 0 , i = 1 , 2 , ⋯   , k \begin{aligned} \min&\quad f(x)\\ \text{s.t.}&\quad g_i(x)=0\qquad ,i=1,2,\cdots,k \end{aligned} mins.t.f(x)gi(x)=0,i=1,2,,k我们定义拉格朗日函数:
L ( x , λ ) = f ( x ) + λ i g i ( x ) L(x,\lambda)=f(x)+\lambda_ig_i(x) L(x,λ)=f(x)+λigi(x)
我们即可将原优化问题转化为:
∇ X L ( x , λ ) = ∇ f + λ i ∇ g k = 0 ∇ λ L ( x , λ ) = g ( x ) = 0 \begin{aligned} \nabla_X L(x,\lambda)&=\nabla f+\lambda_i \nabla g_k=0\\ \nabla_\lambda L(x,\lambda)&=g(x)=0 \end{aligned} XL(x,λ)λL(x,λ)=f+λigk=0=g(x)=0

先考虑一个等式约束的优化问题。假定 x x x d d d维向量,欲寻找 x x x的某个取值 x ∗ x^* x,使目标函数 f ( x ) f(x) f(x)最小且同时满足 g ( x ) = 0 g(x)=0 g(x)=0的约束。从几何角度看,该问题的目标是在由方程 g ( x ) = 0 g(x)=0 g(x)=0确定的 d − 1 d-1 d1维曲面上寻找能使目标函数 f ( x ) f(x) f(x)最小化的点。此时可以得到如下结论:

  • 对于约束曲面上的任意点 x x x,该点的梯度 ∇ g ( x ) \nabla g(x) g(x)正交于约束曲面
  • 在最优点 x ∗ x^* x,目标函数在该点的梯度 ∇ f ( x ∗ ) \nabla f(x^*) f(x)正交于约束曲面

由此可知,在最优点 x ∗ x^* x,如下图所示,梯度 ∇ g ( x ) \nabla g(x) g(x) ∇ f ( x ∗ ) \nabla f(x^*) f(x)的方向必相同或相反,即存在 λ ≠ 0 \lambda\neq0 λ=0使得:
∇ f ( x ∗ ) + λ ∇ g ( x ∗ ) = 0 \nabla f(x^*) + \lambda\nabla g(x^*) =0 f(x)+λg(x)=0
λ \lambda λ称为拉格朗日乘子,我们定义拉格朗日函
L ( x , λ ) = f ( x ) + λ g ( x ) L(x,\lambda)=f(x)+\lambda g(x) L(x,λ)=f(x)+λg(x)
不难发现,将其对 x x x的偏导数 ∇ x L ( x , λ ) \nabla_x L(x,\lambda) xL(x,λ)置零即得上式。同时,将其对入的偏导数 ∇ λ L ( x , λ ) \nabla_\lambda L(x,\lambda) λL(x,λ)置零即得约束条件 g ( x ) = 0 g(x)=0 g(x)=0

等式约束
于是,原约束优化问题可转化为对拉格朗日函数 L ( x , λ ) L(x,\lambda) L(x,λ)的无约束优化问题。

现在我们以一个常见的例子来考虑拉格朗日乘子法。假设 x x x为2维向量,且:
g ( x ) = x 1 2 x 2 − 3 = 0 g(x)=x_1^2x_2-3=0 g(x)=x12x23=0
现在我们想求其上的点与原点的最短距离,即:
min ⁡ f ( x ) = x 1 2 + x 2 2 \min f(x)=x_1^2+x_2^2 minf(x)=x12+x22
此时,圆( f ( x ) f(x) f(x))和曲线( g ( x ) g(x) g(x))相切,也就是在该点切线相同:

示例图

此时 f f f梯度:
∇ f x 1 = 2 x 1 ∇ f x 2 = 2 x 2 \nabla f_{x_1}=2x_1 \\ \nabla f_{x_2}=2x_2 fx1=2x1fx2=2x2
此时 g g g梯度:
∇ g x 1 = 2 x 1 x 2 ∇ g x 2 = x 1 2 \begin{aligned} &\nabla g_{x_1}=2x_1x_2\\ &\nabla g_{x_2}=x_1^2 \end{aligned} gx1=2x1x2gx2=x12

梯度向量平行,我们可以写为:
∇ f = λ ∇ g \nabla f=\lambda \nabla g f=λg

所以我们可得:
∇ f = λ ∇ g g ( x ) = x 1 2 x 2 − 3 = 0 \begin{aligned} \nabla f&=\lambda \nabla g\\ g(x)&=x_1^2x_2-3=0 \end{aligned} fg(x)=λg=x12x23=0
我们构造拉格朗日函数:
L ( x , λ ) = f ( x ) + λ g ( x ) L(x,\lambda)=f(x)+\lambda g(x) L(x,λ)=f(x)+λg(x)
并利用拉格朗日乘子法即可得到与上式相同的等式:
∇ X L ( x , λ ) = ∇ f + λ ∇ g = 0 ∇ λ L ( x , λ ) = g ( x ) = x 1 2 x 2 − 3 = 0 \begin{aligned} \nabla_X L(x,\lambda)&=\nabla f+\lambda \nabla g=0\\ \nabla_\lambda L(x,\lambda)&=g(x)=x_1^2x_2-3=0 \end{aligned} XL(x,λ)λL(x,λ)=f+λg=0=g(x)=x12x23=0

  • 16
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
拉格朗日乘子法是一种优化算法,应用于具有约束条件的优化问题。它的原理是基于拉格朗日乘子的概念,在求解有约束问题的时候,将约束条件转化为目标函数的一部分,通过求解该新的目标函数,得到问题的最优解。 在使用拉格朗日乘子法时,首先根据问题的约束条件构造拉格朗日函数。拉格朗日函数是由目标函数和约束条件组成的,目标函数会被调整为加入拉格朗日乘子与约束条件的乘积,同时每个约束条件都会有一个对应的拉格朗日乘子。然后,通过求取拉格朗日函数的偏导数,将其等于0,可以得到一组方程,包括目标函数的梯度和约束条件的梯度。将这些方程联立求解,就可以得到问题的最优解。 对于拉格朗日函数的求解,可以采用数值方法,例如使用fmincon算法。fmincon是一种非线性约束最小化算法,可以求解具有非线性约束的优化问题。它的实现基于拉格朗日乘子法,通过迭代的方式逼近最优解。在每一次迭代,通过求解一组子问题,不断调整拉格朗日乘子的值,直到找到最优解为止。 总之,拉格朗日乘子法是一种基于拉格朗日函数的优化算法,通过将约束条件转化为目标函数的一部分,再利用数值方法求解最优解。而fmincon算法则是一种具体的数值方法实现,可以应用于求解具有非线性约束的优化问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

von Neumann

您的赞赏是我创作最大的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值