拉格朗日乘子法(Lagrange Multipliers),可以将有 d 个变量与 k 个约束条件的最优化问题转化为具有 d+k 个变量的无约束优化问题。
xmins.t.f(x)g(x)=0从几何角度看,该问题的目标是在方程 g(x)=0 确定的 d−1 维曲面上寻找能使目标函数 f(x) 最小化的点,此时:
- 对于约束曲面上的任一点 x,该点的梯度 ∇g(x) 正交于约束平面
- 在最优点 x∗,目标函数在该点的梯度 ∇f(x) 正交于约束平面。
上述条件即函数等值线与约束曲面相切,可通过反证法证明:若梯度 ∇f(x∗) 与约束曲面不正交,则仍可在约束曲面上移动该点使函数值进一步下降。
由此可知,在最优点 x∗,梯度 ∇g(x) 和 ∇f(x) 的方向相同或相反,即存在 λ=0 使得:
∇f(x∗)+λ∇g(x∗)=0λ 称为拉格朗日乘子。定义拉格朗日函数:
L(x,λ)=f(x)+λg(x)当函数 L(x,λ) 的 Jacobian 矩阵 JL=0 时,约束条件和梯度条件同时满足。于是,原约束优化问题可转化为对拉格朗日函数 L(x,λ) 的无约束优化问题。
举个例子🌰,求椭圆 4x2+3y2=1 上到点 (1,1) 的最短距离的平方,即:
x,ymins.t.f(x,y)=(x−1)2+(y−1)2g(x,y)=4x2+3y2−1=0解:定义拉格朗日函数:
L(x,y,λ)=f(x,y)+λg(x,y)对应的 Jacobian 矩阵为:
JL=[2(x−1)+2λx,2(y−1)+32λy,4x2+3y2−1]T=0可得:
λ=4(x1−1)=3(y1−1)可得:
y=4−x3x可得:
4x2+(4−x)23x2=1可得:
x4−8x3+24x2+32x−64=0根据四次方程求根公式,可解得 x1≈1.24,x2≈−1.71。
易知 x>0,y>0,最终可求得 x≈1.24,y≈1.36,minf(x,y)≈0.19。
上面这道题目是笔者高中的时候想到却不会解决的问题。后来大一的《工科数学分析》课程中有拉格朗日乘子法,却没有好好学习,实在惭愧。
xmins.t.f(x)g(x)≤0此时最优点 x∗ 或在 ∇g(x)<0 的区域中,可直接通过条件 ∇f(x)=0 求解,等价于将 λ 置零后对 ∇xL(x,λ) 置零得到最优点;或在边界 ∇g(x)=0 上,此时 ∇f(x∗) 的方向必与 ∇g(x∗) 相反,λ>0。
整合这两种情形,必满足 λ∇g(x)=0。因此在约束 g(x)≤0 下最小化 f(x),可转化为在如下约束下最小化 L(x,λ) 的拉格朗日函数:
⎩⎨⎧g(x)≤0λ≥0λg(x)=0上式称为 Karush-Kuhn-Tucker(KTT
)条件。KKT 条件是原问题求解的必要条件。具体求解过程中可以分情况讨论不等式约束是否有效。
依然举个例子🌰:
x,ymins.t.f(x,y)=(x−1)2+(y−1)2g(x,y)=4x2+3y2−1<=0解:定义拉格朗日函数:
L(x,y,λ)=f(x,y)+λg(x,y)KKT 条件为:
⎩⎨⎧g(x,y)≤0λ≥0λg(x,y)=0若 g(x,y)=0,则类似简单情况求解,不再赘述;若 g(x,y)<0,则 λ=0,易知:
∇xL(x,y,λ)∇yL(x,y,λ)=2(x−1)=0=2(y−1)=0由上式易得 x=1,y=1,f(x,y)=0。此时 g(x,y)<0,条件满足。
对比可得 x=1,y=1 时 f(x,y) 为最优解。
- 周志华. "机器学习." 清华大学出版社,北京.
- "Lagrange multiplier." 维基百科.
- "Karush-Kuhn-Tucker conditions." 维基百科