拉格朗日乘子法

2018.05.29
SF-Zhou

拉格朗日乘子法(Lagrange Multipliers),可以将有 dd 个变量与 kk 个约束条件的最优化问题转化为具有 d+kd+k 个变量的无约束优化问题。

一、简单情况

minxf(x)s.t.g(x)=0 \begin{aligned} & \min_{\boldsymbol x} && f(\boldsymbol x) \\ & \textrm{s.t.} && g(\boldsymbol x) = 0 \end{aligned}

从几何角度看,该问题的目标是在方程 g(x)=0g(\boldsymbol x) = 0 确定的 d1d-1 维曲面上寻找能使目标函数 f(x)f(\boldsymbol x) 最小化的点,此时:

  1. 对于约束曲面上的任一点 x\boldsymbol x,该点的梯度 g(x)\nabla g(\boldsymbol x) 正交于约束平面
  2. 在最优点 x\boldsymbol x^*,目标函数在该点的梯度 f(x)\nabla f(\boldsymbol x) 正交于约束平面。

上述条件即函数等值线与约束曲面相切,可通过反证法证明:若梯度 f(x)\nabla f(\boldsymbol x^*) 与约束曲面不正交,则仍可在约束曲面上移动该点使函数值进一步下降。

由此可知,在最优点 x\boldsymbol x^*,梯度 g(x)\nabla g(\boldsymbol x)f(x)\nabla f(\boldsymbol x) 的方向相同或相反,即存在 λ0\lambda \neq 0 使得:

f(x)+λg(x)=0 \nabla f(\boldsymbol x^*) + \lambda \nabla g(\boldsymbol x^*) = 0

λ\lambda 称为拉格朗日乘子。定义拉格朗日函数:

L(x,λ)=f(x)+λg(x) L(\boldsymbol x, \lambda) = f(\boldsymbol x) + \lambda g(\boldsymbol x)

当函数 L(x,λ)L(\boldsymbol x, \lambda)Jacobian 矩阵 JL=0J_L = \boldsymbol 0 时,约束条件和梯度条件同时满足。于是,原约束优化问题可转化为对拉格朗日函数 L(x,λ)L(\boldsymbol x, \lambda) 的无约束优化问题。

举个例子🌰,求椭圆 x24+y23=1\frac {x^2}{4} + \frac {y^2}{3} = 1 上到点 (1,1)(1, 1) 的最短距离的平方,即:

minx,yf(x,y)=(x1)2+(y1)2s.t.g(x,y)=x24+y231=0 \begin{aligned} & \min_{x, y} && f(x, y) = {(x - 1)^2+(y - 1)^2} \\ & \textrm{s.t.} && g(x, y) = \frac {x^2}{4} + \frac {y^2}{3} - 1 = 0 \end{aligned}

解:定义拉格朗日函数:

L(x,y,λ)=f(x,y)+λg(x,y) L(x, y, \lambda) = f(x, y) + \lambda g(x, y)

对应的 Jacobian 矩阵为:

JL=[2(x1)+λ2x,2(y1)+2λ3y,x24+y231]T=0 J_L = \left [ 2(x - 1)+\frac {\lambda} {2}x, 2(y - 1)+\frac {2\lambda }{3}y, \frac {x^2}{4} + \frac {y^2}{3} - 1 \right ]^T = \boldsymbol 0

可得:

λ=4(1x1)=3(1y1) \lambda = 4(\frac 1 x - 1) = 3(\frac 1 y - 1)

可得:

y=3x4x y = \frac {3x} {4 - x}

可得:

x24+3x2(4x)2=1 \frac {x^2} {4} + \frac {3x^2} {(4 - x)^2} = 1

可得:

x48x3+24x2+32x64=0 x^4 - 8x^3 + 24 x^2 + 32x - 64 = 0

根据四次方程求根公式,可解得 x11.24,x21.71x_1 \approx 1.24, x_2 \approx -1.71

易知 x>0,y>0x > 0, y > 0,最终可求得 x1.24,y1.36,minf(x,y)0.19x \approx 1.24, y \approx 1.36, \min f(x, y) \approx 0.19

上面这道题目是笔者高中的时候想到却不会解决的问题。后来大一的《工科数学分析》课程中有拉格朗日乘子法,却没有好好学习,实在惭愧。

二、不等式约束

minxf(x)s.t.g(x)0 \begin{aligned} & \min_{\boldsymbol x} && f(\boldsymbol x) \\ & \textrm{s.t.} && g(\boldsymbol x) \le 0 \end{aligned}

此时最优点 x\boldsymbol x^* 或在 g(x)<0\nabla g(\boldsymbol x) < 0 的区域中,可直接通过条件 f(x)=0\nabla f(\boldsymbol x) = 0 求解,等价于将 λ\lambda 置零后对 xL(x,λ)\nabla _{\boldsymbol x} L(\boldsymbol x, \lambda) 置零得到最优点;或在边界 g(x)=0\nabla g(\boldsymbol x) = 0 上,此时 f(x)\nabla f(\boldsymbol x^*) 的方向必与 g(x)\nabla g(\boldsymbol x^*) 相反,λ>0\lambda > 0

整合这两种情形,必满足 λg(x)=0\lambda \nabla g(\boldsymbol x) = 0。因此在约束 g(x)0g(\boldsymbol x) \le 0 下最小化 f(x)f(\boldsymbol x),可转化为在如下约束下最小化 L(x,λ)L(\boldsymbol x, \lambda) 的拉格朗日函数:

{g(x)0λ0λg(x)=0 \begin{cases} g(\boldsymbol x) \le 0 \\ \lambda \ge 0 \\ \lambda g(\boldsymbol x) = 0 \end{cases}

上式称为 Karush-Kuhn-Tucker(KTT)条件。KKT 条件是原问题求解的必要条件。具体求解过程中可以分情况讨论不等式约束是否有效。

依然举个例子🌰:

minx,yf(x,y)=(x1)2+(y1)2s.t.g(x,y)=x24+y231<=0 \begin{aligned} & \min_{x, y} && f(x, y) = {(x - 1)^2+(y - 1)^2} \\ & \textrm{s.t.} && g(x, y) = \frac {x^2}{4} + \frac {y^2}{3} - 1 <= 0 \end{aligned}

解:定义拉格朗日函数:

L(x,y,λ)=f(x,y)+λg(x,y) L(x, y, \lambda) = f(x, y) + \lambda g(x, y)

KKT 条件为:

{g(x,y)0λ0λg(x,y)=0 \begin{cases} g(x, y) \le 0 \\ \lambda \ge 0 \\ \lambda g(x, y) = 0 \end{cases}

g(x,y)=0g(x, y) = 0,则类似简单情况求解,不再赘述;若 g(x,y)<0g(x, y) < 0,则 λ=0\lambda = 0,易知:

xL(x,y,λ)=2(x1)=0yL(x,y,λ)=2(y1)=0 \begin{aligned} \nabla_x L(x, y, \lambda) &= 2(x - 1) = 0\\ \nabla_y L(x, y, \lambda) &= 2(y - 1) = 0 \end{aligned}

由上式易得 x=1,y=1x = 1, y = 1f(x,y)=0f(x, y) = 0。此时 g(x,y)<0g(x, y) < 0,条件满足。

对比可得 x=1,y=1x = 1, y = 1f(x,y)f(x, y) 为最优解。

参考文献

  1. 周志华. "机器学习." 清华大学出版社,北京.
  2. "Lagrange multiplier." 维基百科.
  3. "Karush-Kuhn-Tucker conditions." 维基百科