拉格朗日乘子法是一种寻找多元函数在一组约束下的极值的方法。通过引入拉格朗日乘子,可将有 d d d个变量和 k k k个约束条件的最优化问题转换为具有 d + k d+k d+k个变量的无约束优化问题求解
先考虑一个等式约束的优化问题。假定 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 d−1维曲面上寻找能使目标函数 f ( x ) f(x) f(x)最小化的点。
原始优化问题:
(1) min x f ( 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:设 F F F为 n n n元函数, F ( x ) = c F(x)=c F(x)=c为一等值面,对 F ( x ) = c F(x)=c F(x)=c上的一点 P P P, F F F在 P P P点的梯度 ∇ F ( P ) \nabla F(P) ∇F(P)就是等值面 F ( x ) = c F(x)=c F(x)=c在 P P P点的法向量。(由法向量定义得到)
命题2:设 F F F为 n n n元函数, P P P为其定义域中的一个点, F F F在点 P P P处的梯度为 ∇ F ( P ) \nabla F(P) ∇F(P),则点 P P P沿着正交于 ∇ F ( P ) \nabla F(P) ∇F(P)的方向运动时,函数值不会发生变化。(由方向导数和梯度的关系得到)
由此,我们可以得出下面两个结论:
结论1:对于约束曲面上的任意点 x x x,该点的 ∇ 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) ∇ x L ( 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)。因此,通过拉格朗日乘子法求得的解是原问题的极值点,是不是最值点还需验证。不过,如果 f f f是凸函数,那就无需验证了。对于凸函数而言,极值点和最值点是一致的。
总而言之,拉格朗日函数求出的最优解是原问题最优解的必要条件,本质是极值点是最值点的必要条件。
现在考虑不等式约束 g ( x ) ≤ 0 g(x)\leq0 g(x)≤0,如附图B.1所示,此时最优点 x ∗ x^* x∗或在 g ( x ) < 0 g(x)<0 g(x)<0的区域中,或在边界 g ( x ) = 0 g(x)=0 g(x)=0上。
对于 g ( x ) < 0 g(x)<0 g(x)<0的情形,约束 g ( x ) ≤ 0 g(x) \leq 0 g(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 ) = 0 g(x)=0 g(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 ) ≤ 0 g(x) \leq 0 g(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…
这三个约束条件称为 K K T KKT KKT条件。
当约束条件为不等式时,构造的拉格朗日函数也称作广义拉格朗日函数,以和等式约束下的拉格朗日函数区分。
需要注意的是,此时仍然为必要条件。只有 f f f和 g g g同时为凸函数,并且不等式约束严格可行,即存在 x x x,使得 g ( x ) < 0 g(x)<0 g(x)<0,此时为充要条件。
K K T KKT KKT条件可以是拉格朗日乘子法的泛化,将不等式约束也用拉格朗日乘子法处理,此时,相较于等式,多了一些限制条件。
最后,我们说一下图附B.1(b),如图所示, g ( x ) = 0 g(x)=0 g(x)=0为曲面边界, g ( x ) < 0 g(x)<0 g(x)<0为曲面内部,如果函数最优解 x ∗ x^* x∗在 g ( x ) < 0 g(x)<0 g(x)<0,即在曲面内部,则 λ = 0 \lambda = 0 λ=0,通过 ∇ f ( x ) = 0 \nabla f(x)=0 ∇f(x)=0求解,无需多说。如果 x ∗ x^* x∗在边界 g ( x ) = 0 g(x)=0 g(x)=0上,由于内部 g ( x ) < 0 g(x)<0 g(x)<0,边界 g ( x ) = 0 g(x)=0 g(x)=0,因此,外部 g ( x ) > 0 g(x)>0 g(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 ) > 0 g(x)>0 g(x)>0,外部 g ( x ) < 0 g(x)<0 g(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 ) > 0 g(x)>0 g(x)>0一侧, ∇ f ( x ∗ ) \nabla f(x^*) ∇f(x∗)指向 g ( x ) < 0 g(x)<0 g(x)<0一侧,两者方向总是相反的。
将上述做法推广到多个约束。考虑具有 m m m个等式约束和 n n n个不等式约束,且可行域非空的优化问题
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 = 1 m λ i h i ( x ) + ∑ i = 1 m μ i g i ( 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)
由不等式约束引入的 K K T KKT KKT条件 ( 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…
此时仍然为必要条件。只有 f f f和 g j g_j gj为凸函数, h i h_i hi为仿射函数,并且不等式约束严格可行,即存在 x x x,使得对所有的 j j j有 g j ( x ) < 0 g_j(x)<0 gj(x)<0,此时为充要条件。
拉格朗日乘子法最初是为了解决等式约束下的优化问题,即将等式约束优化问题转化为无约束优化问题;然后,再将拉格朗日乘子法泛化到不等式约束,此时,无法将其转化为无约束优化问题,只能将其转化为约束优化问题,约束条件即为 K K T KKT KKT条件。
转化只能得到必要条件。对与只含等式约束的优化问题,目标函数时凸函数即可保证为充要条件;对含有不等式的约束,要求目标函数和不等式约束都是凸函数,等式约束为仿射函数,不等式约束严格可行,才能保证是充要条件。(指的是两者最优解 x ∗ x^* x∗)