拉格朗日乘子法
拉格朗日乘子法是一种寻找多元函数在一组约束下的极值的方法。通过引入拉格朗日乘子,可将有ddd个变量和kkk个约束条件的最优化问题转换为具有d+kd+kd+k个变量的无约束优化问题求解
等式约束
先考虑一个等式约束的优化问题。假定xxx为ddd维向量,欲寻找xxx的某个取值x∗x^*x∗,使目标函数f(x)f(x)f(x)最小且同时满足g(x)=0g(x)=0g(x)=0的约束。从几何角度看,该问题的目标是在由方程g(x)=0g(x)=0g(x)=0确定的d−1d-1d−1维曲面上寻找能使目标函数f(x)f(x)f(x)最小化的点。
原始优化问题:
(1)minxf(x)s.t.g(x)=0
\quad \min\limits_{x}f(x) \tag{1}
\\
s.t.\quad g(x)=0
xminf(x)s.t.g(x)=0(1)
首先,我们给出下面的命题:
命题1:设FFF为nnn元函数,F(x)=cF(x)=cF(x)=c为一等值面,对F(x)=cF(x)=cF(x)=c上的一点PPP,FFF在PPP点的梯度∇F(P)\nabla F(P)∇F(P)就是等值面F(x)=cF(x)=cF(x)=c在PPP点的法向量。(由法向量定义得到)
命题2:设FFF为nnn元函数,PPP为其定义域中的一个点,FFF在点PPP处的梯度为∇F(P)\nabla F(P)∇F(P),则点PPP沿着正交于∇F(P)\nabla F(P)∇F(P)的方向运动时,函数值不会发生变化。(由方向导数和梯度的关系得到)
由此,我们可以得出下面两个结论:
结论1:对于约束曲面上的任意点xxx,该点的∇g(x)\nabla g(x)∇g(x)梯度正交于约束曲面。
结论2:最优点x∗x^*x∗,目标函数在该点的梯度∇f(x∗)\nabla f(x^*)∇f(x∗)正交于约束曲面。
结论1,可由命题1得到。
结论2,可由反证法得到。如果不正交,则可在约束曲面上移动该点,使函数值进一步下降。具体来说,不正交的话,可将沿着约束曲面的运动分解为两个方向,梯度方向和正交于梯度方向,沿梯度方向(反向)运动时,使函数值下降,沿正交梯度方向运动,不影响函数值。最终结果是使函数值降低。
由结论1和结论2可知,在最优点x∗x^*x∗,梯度∇g(x)\nabla g(x)∇g(x)和∇f(x)\nabla f(x)∇f(x)的方向必相同或相反,即存在λ≠0\lambda \neq 0λ̸=0,使得
(2)∇f(x∗)+λ∇g(x∗)=0
\nabla f(x^*)+\lambda \nabla g(x^*)=0 \tag{2}
∇f(x∗)+λ∇g(x∗)=0(2)
(3)f(x∗)=0
f(x^*)=0 \tag{3}
f(x∗)=0(3)
λ\lambdaλ称为拉格朗日乘子。定义拉格朗日函数
(4)L(x,λ)=f(x)+λg(x)
L(x,\lambda)=f(x)+\lambda g(x) \tag{4}
L(x,λ)=f(x)+λg(x)(4)
由于
(5)∇xL(x,λ)=∇f(x)+λ∇g(x)=0
\nabla _x L(x,\lambda)=\nabla f(x)+\lambda \nabla g(x)=0 \tag{5}
∇xL(x,λ)=∇f(x)+λ∇g(x)=0(5)
(6)∇λL(x,λ)=g(x)=0 \nabla _\lambda L(x,\lambda)= g(x)=0 \tag{6} ∇λL(x,λ)=g(x)=0(6)
观察公式(1)(2)(1)(2)(1)(2)与公式(4)(5)(4)(5)(4)(5),可得,它们是等价的,而公式(4)(5)(4)(5)(4)(5)表示的是对拉格朗日函数L(x,λ)L(x, \lambda)L(x,λ)的求极值。因此,原约束问题(1)(1)(1)就转化成了对拉格朗日函数L(x,λ)L(x,\lambda)L(x,λ)的无约束优化问题。
需要注意的是,x∗x^*x∗满足公式(2)(3)(2)(3)(2)(3)是x∗x^*x∗是原始优化问题最优解的必要条件,因为所有极值都满足公式(2)(3)(2)(3)(2)(3)。因此,通过拉格朗日乘子法求得的解是原问题的极值点,是不是最值点还需验证。不过,如果fff是凸函数,那就无需验证了。对于凸函数而言,极值点和最值点是一致的。
总而言之,拉格朗日函数求出的最优解是原问题最优解的必要条件,本质是极值点是最值点的必要条件。
不等式约束与KKT条件
现在考虑不等式约束g(x)≤0g(x)\leq0g(x)≤0,如附图B.1所示,此时最优点x∗x^*x∗或在g(x)<0g(x)<0g(x)<0的区域中,或在边界g(x)=0g(x)=0g(x)=0上。
对于g(x)<0g(x)<0g(x)<0的情形,约束g(x)≤0g(x) \leq 0g(x)≤0不起作用(相当于λ=0\lambda = 0λ=0),可直接通过条件∇f(x)=0\nabla f(x)=0∇f(x)=0来获得最优解;这等价于
KaTeX parse error: No such environment: equation at position 44: … \\
s.t.\begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲
\left\{
\be…
g(x)=0g(x)=0g(x)=0的情形类似上面关于等式约束的分析,但需要注意的是,此时∇f(x∗)\nabla f(x^*)∇f(x∗)的方向必与∇g(x∗)\nabla g(x^*)∇g(x∗)相反(后面会详细解释),即
λ>0∇f(x∗)+λ∇g(x∗)=0
\quad \quad \quad \lambda > 0
\\
\nabla f(x^*) + \lambda \nabla g(x^*) = 0
λ>0∇f(x∗)+λ∇g(x∗)=0
这等价于
KaTeX parse error: No such environment: equation at position 43: …) \\
s.t.\begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲
\left\{
\be…
综合上面两种情况,可以得到,在约束g(x)≤0g(x) \leq 0g(x)≤0下最小化f(x)f(x)f(x),可转化下面的形式:
KaTeX parse error: No such environment: equation at position 57: …) \\
s.t.\begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲
\left\{
\be…
这三个约束条件称为KKTKKTKKT条件。
当约束条件为不等式时,构造的拉格朗日函数也称作广义拉格朗日函数,以和等式约束下的拉格朗日函数区分。
需要注意的是,此时仍然为必要条件。只有fff和ggg同时为凸函数,并且不等式约束严格可行,即存在xxx,使得g(x)<0g(x)<0g(x)<0,此时为充要条件。
KKTKKTKKT条件可以是拉格朗日乘子法的泛化,将不等式约束也用拉格朗日乘子法处理,此时,相较于等式,多了一些限制条件。
最后,我们说一下图附B.1(b),如图所示,g(x)=0g(x)=0g(x)=0为曲面边界,g(x)<0g(x)<0g(x)<0为曲面内部,如果函数最优解x∗x^*x∗在g(x)<0g(x)<0g(x)<0,即在曲面内部,则λ=0\lambda = 0λ=0,通过∇f(x)=0\nabla f(x)=0∇f(x)=0求解,无需多说。如果x∗x^*x∗在边界g(x)=0g(x)=0g(x)=0上,由于内部g(x)<0g(x)<0g(x)<0,边界g(x)=0g(x)=0g(x)=0,因此,外部g(x)>0g(x)>0g(x)>0,所以,此时∇g(x∗)\nabla g(x^*)∇g(x∗)指向曲面内部。因为最优解在边界取,而不在内部取,所以内部函数值必定大于f(x∗)f(x^*)f(x∗),所以,此时∇f(x∗)\nabla f(x^*)∇f(x∗)指向曲面外部。因此,∇f(x∗)\nabla f(x^*)∇f(x∗)与g(x∗)g(x^*)g(x∗)方向相反。如果曲面内部g(x)>0g(x)>0g(x)>0,外部g(x)<0g(x)<0g(x)<0,则∇g(x∗)\nabla g(x^*)∇g(x∗)指向曲面内部,∇f(x∗)\nabla f(x^*)∇f(x∗)指向曲面外部,两者方向仍相反。
总之,∇g(x∗)\nabla g(x^*)∇g(x∗)指向g(x)>0g(x)>0g(x)>0一侧,∇f(x∗)\nabla f(x^*)∇f(x∗)指向g(x)<0g(x)<0g(x)<0一侧,两者方向总是相反的。
同时有等式和不等式约束
将上述做法推广到多个约束。考虑具有mmm个等式约束和nnn个不等式约束,且可行域非空的优化问题
KaTeX parse error: No such environment: equation at position 60: …) \\
s.t.\begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲
\left\{
\be…
引入拉格朗日乘子λ=(λ1,...,λm)T\lambda = (\lambda_1,...,\lambda_m)^Tλ=(λ1,...,λm)T和μ=(μ1,...,μn)T\mu=(\mu_1,...,\mu_n)^Tμ=(μ1,...,μn)T,相应的拉格朗日函数为
L(x,λ,μ)=f(x)+∑i=1mλihi(x)+∑i=1mμigi(x)
L(x,\lambda, \mu)=f(x)+ \sum \limits_{i=1} \limits^{m}\lambda_ih_i(x) + \sum \limits_{i=1} \limits^{m}\mu_ig_i(x)
L(x,λ,μ)=f(x)+i=1∑mλihi(x)+i=1∑mμigi(x)
由不等式约束引入的KKTKKTKKT条件(j=1,...,n)(j=1,...,n)(j=1,...,n)为
KaTeX parse error: No such environment: equation at position 8:
\begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲
\left\{
\be…
此时仍然为必要条件。只有fff和gjg_jgj为凸函数,hih_ihi为仿射函数,并且不等式约束严格可行,即存在xxx,使得对所有的jjj有gj(x)<0g_j(x)<0gj(x)<0,此时为充要条件。
思考
拉格朗日乘子法最初是为了解决等式约束下的优化问题,即将等式约束优化问题转化为无约束优化问题;然后,再将拉格朗日乘子法泛化到不等式约束,此时,无法将其转化为无约束优化问题,只能将其转化为约束优化问题,约束条件即为KKTKKTKKT条件。
转化只能得到必要条件。对与只含等式约束的优化问题,目标函数时凸函数即可保证为充要条件;对含有不等式的约束,要求目标函数和不等式约束都是凸函数,等式约束为仿射函数,不等式约束严格可行,才能保证是充要条件。(指的是两者最优解x∗x^*x∗)