拉格朗日乘子法
摘自周志华《机器学习》
拉格朗日乘子法是一种寻找多元函数在一组约束下的极值的方法,通过引入拉格朗日乘子,可将有 d d d个变量和 k k k个约束条件的最优化问题转化为具有 d + k d+k d+k个变量的无约束优化问题求解.
先考虑一个等式约束的优化问题,假定 x \boldsymbol x x为 d d d维向量,欲寻求 x \boldsymbol x x的某个取值 x ∗ \boldsymbol x^* x∗,使目标函数 f ( x ) f(\boldsymbol x) f(x)最小且同时满足 g ( x ) = 0 g(\boldsymbol x)=0 g(x)=0的约束. 从几何角度来看,该问题的目标是在方程 g ( x ) = 0 g(\boldsymbol x)=0 g(x)=0确定的 d − 1 d-1 d−1维曲面上寻找能使目标函数 f ( x ) f(\boldsymbol x) f(x)最小化的点. 由此可以得出如下结论:
- 对于约束曲面上的任意点 x x x,该点的梯度 ∇ g ( x ) \nabla g(\boldsymbol{x}) ∇g(x)正交于约束曲面;
- 在最优点 x ∗ \boldsymbol x^* x∗,目标函数在该点的梯度 ∇ f ( x ∗ ) \nabla f(\boldsymbol{x^*}) ∇f(x∗)正交于约束曲面.
由此可知,在最优点 x ∗ \boldsymbol x^* x∗,如图1所示梯度 ∇ g ( x ) \nabla g(\boldsymbol{x}) ∇g(x)与梯度 ∇ f ( x ) \nabla f(\boldsymbol{x}) ∇f(x)的方向必相同或相反,即存在 λ ≠ 0 \lambda \neq 0 λ=0使得 ∇ f ( x ∗ ) + λ ∇ g ( x ∗ ) = 0 ( 1 ) \nabla f\left(\boldsymbol{x}^{*}\right)+\lambda \nabla g\left(\boldsymbol{x}^{*}\right)=0 \quad(1) ∇f(x∗)+λ∇g(x∗)=0(1) λ \lambda λ称为拉格朗日乘子 定义拉格朗日函数 L ( x , λ ) = f ( x ) + λ g ( x ) ( 2 ) L(\boldsymbol{x}, \lambda)=f(\boldsymbol{x})+\lambda g(\boldsymbol{x})\quad(2) L(x,λ)=f(x)+λg(x)(2)不难发现,将其对 x x x的偏导数 ∇ x L ( x , λ ) \nabla_{\boldsymbol{x}} L(\boldsymbol{x}, \lambda) ∇xL(x,λ)置零得式 ( 1 ) (1) (1),同时,将其对 λ \lambda λ的偏导数 ∇ λ L ( x , λ ) \nabla_{\boldsymbol{\lambda}} L(\boldsymbol{x}, \lambda) ∇λL(x,λ)置零的得约束条件 g ( x ) = 0 g( \boldsymbol x)=0 g(x)=0,于是原约束优化问题可转化为对拉格朗日函数 L ( x , λ ) L(\boldsymbol{x}, \lambda) L(x,λ)的无约束优化问题
![图片名称](https://i-blog.csdnimg.cn/blog_migrate/bbfd908f2b3d89816b40743259a741d3.png)
图1 拉格朗日乘子法的几何含义:在 ( a ) (a) (a)等式约束 g ( x ) = 0 g(\boldsymbol x)=0 g(x)=0或不等式约束 g ( x ) ⩽ 0 g(\boldsymbol{x}) \leqslant 0 g(x)⩽0下,最小化目标函数 f ( x ) f(x) f(x),红色曲线表示 g ( x ) = 0 g(\boldsymbol x)=0 g(x)=0构成的曲面,其围成的阴影区域表示 g ( x ) < 0 g(\boldsymbol{x}) < 0 g(x)<0
现考虑不等式约束 g ( x ) ⩽ 0 g(\boldsymbol{x}) \leqslant 0 g(x)⩽0,如图1所示,此时最优点 x ∗ \boldsymbol x^* x∗或在 g ( x ) < 0 g(\boldsymbol{x}) < 0 g(x)<0的区域中,或在边界上 g ( x ) = 0 g(\boldsymbol x)=0 g(x)=0.
- 对于 g ( x ) < 0 g(\boldsymbol{x}) < 0 g(x)<0的情形,约束 g ( x ) ⩽ 0 g(\boldsymbol{x}) \leqslant 0 g(x)⩽0不起作用,可直接通过 ∇ f ( x ) = 0 \nabla f(\boldsymbol{x})=0 ∇f(x)=0
来获取最优点;这等价于将 λ \lambda λ置零然后对 ∇ x L ( x , λ ) \nabla_{\boldsymbol{x}} L(\boldsymbol{x}, \lambda) ∇xL(x,λ)置零得到最优点. - g ( x ) = 0 g(\boldsymbol x)=0 g(x)=0的情形类似于上面等式约束的分析,需注意的是,此时 ∇ f ( x ∗ ) = 0 \nabla f(\boldsymbol{x^*})=0 ∇f(x∗)=0的方向必与 ∇ g ( x ∗ ) = 0 \nabla g(\boldsymbol{x^*})=0 ∇g(x∗)=0相反,即存在常数 λ > 0 \lambda >0 λ>0使得 ∇ f ( x ∗ ) + λ ∇ g ( x ∗ ) = 0 \nabla f\left(\boldsymbol{x}^{*}\right)+\lambda \nabla g\left(\boldsymbol{x}^{*}\right)=0 ∇f(x∗)+λ∇g(x∗)=0.
整合这两种情形,必满足 λ g ( x ) = 0 \lambda g(\boldsymbol x)=0 λg(x)=0因此在约束 g ( x ) < 0 g(\boldsymbol{x}) < 0 g(x)<0下最小化 f ( x ) f(\boldsymbol x) f(x),可转化为在约束下最小化式 ( 2 ) (2) (2)的拉格朗日函数:
{ g ( x ) ⩽ 0 λ ⩾ 0 ( 3 ) λ g ( x ) = 0 \left\{\begin{array}{l}{g(\boldsymbol{x}) \leqslant 0} \\ {\lambda \geqslant 0} \qquad\qquad(3)\\ {\lambda g(\boldsymbol{x})=0}\end{array}\right. ⎩⎨⎧g(x)⩽0λ⩾0(3)λg(x)=0式 ( 3 ) (3) (3)称为 k a r u s h − K u h n − T u c k e r karush-Kuhn-Tucker karush−Kuhn−Tucker (KKT)条件.
上述做法可推广到多个约束
min x f ( x ) \min _{\boldsymbol{x}} f(\boldsymbol{x}) xminf(x) s.t. g j ( x ) ⩽ 0 ( j = 1 , … , n ) ( 4 ) \text { s.t. } \quad g_{j}(\boldsymbol{x}) \leqslant 0 \quad(j=1, \ldots, n) \qquad(4) s.t. gj(x)⩽0(j=1,…,n)(4) h i ( x ) = 0 ( i = 1 , … , m ) h_{i}(\boldsymbol{x})=0 \quad(i=1, \ldots, m) hi(x)=0(i=