拉格朗日乘子法
摘自周志华《机器学习》
拉格朗日乘子法是一种寻找多元函数在一组约束下的极值的方法,通过引入拉格朗日乘子,可将有ddd个变量和kkk个约束条件的最优化问题转化为具有d+kd+kd+k个变量的无约束优化问题求解.
先考虑一个等式约束的优化问题,假定x\boldsymbol xx为ddd维向量,欲寻求x\boldsymbol xx的某个取值x∗\boldsymbol x^*x∗,使目标函数f(x)f(\boldsymbol x)f(x)最小且同时满足g(x)=0g(\boldsymbol x)=0g(x)=0的约束. 从几何角度来看,该问题的目标是在方程g(x)=0g(\boldsymbol x)=0g(x)=0确定的d−1d-1d−1维曲面上寻找能使目标函数f(x)f(\boldsymbol x)f(x)最小化的点. 由此可以得出如下结论:
- 对于约束曲面上的任意点xxx,该点的梯度∇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)不难发现,将其对xxx的偏导数∇xL(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)=0g( \boldsymbol x)=0g(x)=0,于是原约束优化问题可转化为对拉格朗日函数L(x,λ)L(\boldsymbol{x}, \lambda)L(x,λ)的无约束优化问题

图1 拉格朗日乘子法的几何含义:在(a)(a)(a)等式约束g(x)=0g(\boldsymbol x)=0g(x)=0或不等式约束g(x)⩽0g(\boldsymbol{x}) \leqslant 0g(x)⩽0下,最小化目标函数f(x)f(x)f(x),红色曲线表示g(x)=0g(\boldsymbol x)=0g(x)=0构成的曲面,其围成的阴影区域表示g(x)<0g(\boldsymbol{x}) < 0g(x)<0
现考虑不等式约束g(x)⩽0g(\boldsymbol{x}) \leqslant 0g(x)⩽0,如图1所示,此时最优点x∗\boldsymbol x^*x∗或在g(x)<0g(\boldsymbol{x}) < 0g(x)<0的区域中,或在边界上g(x)=0g(\boldsymbol x)=0g(x)=0.
- 对于g(x)<0g(\boldsymbol{x}) < 0g(x)<0的情形,约束g(x)⩽0g(\boldsymbol{x}) \leqslant 0g(x)⩽0不起作用,可直接通过∇f(x)=0\nabla f(\boldsymbol{x})=0∇f(x)=0
来获取最优点;这等价于将λ\lambdaλ置零然后对∇xL(x,λ)\nabla_{\boldsymbol{x}} L(\boldsymbol{x}, \lambda)∇xL(x,λ)置零得到最优点. - g(x)=0g(\boldsymbol x)=0g(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)<0g(\boldsymbol{x}) < 0g(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)称为karush−Kuhn−Tuckerkarush-Kuhn-Tuckerkarush−Kuhn−Tucker (KKT)条件.
上述做法可推广到多个约束
minxf(x) \min _{\boldsymbol{x}} f(\boldsymbol{x}) xminf(x) s.t. gj(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)hi(x)=0(i=1,…,m) h_{i}(\boldsymbol{x})=0 \quad(i=1, \ldots, m) hi(x)=0(i=1,…,m)引入拉格朗日乘子λ=(λ1,λ2,…,λm)T\boldsymbol{\lambda}=\left(\lambda_{1}, \lambda_{2}, \ldots, \lambda_{m}\right)^{\mathrm{T}}λ=(λ1,λ