拉格朗日乘子法 Lagrange Multiplier

拉格朗日乘子法是解决带约束条件的最优值的一种常用方法。对于目标 $\min{f(x, y)}$ 和约束条件 $g(x,y)=0$,我们构造拉格朗日函数 $L(x, y, \lambda)$

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

然后对其自变量求梯度,令其为 $0$

$$ \nabla L(x, y, \lambda) =

{\Large \left[\begin{matrix}

\frac{\partial f(x, y)}{\partial x} \\[6pt] \frac{\partial f(x, y)}{\partial y}

\end{matrix}\right] }

\lambda

{\Large \left[\begin{matrix}

\frac{\partial g(x, y)}{\partial x} \\[6pt] \frac{\partial g(x, y)}{\partial y}

\end{matrix}\right] }

=

\left[\begin{matrix} 0 \\ 0 \end{matrix}\right] $$

可以简单理解为参数 $\lambda$ 调整了 $f(x, y)$ 与 $g(x, y)$ 梯度之间的差值。

为什么这样可以获得约束条件下的最小值?

图源 WIKIPEDIA

图源 WIKIPEDIA

图中蓝线是 $f(x, y)$ 的等高线,$g(x, y) = c$ 可以理解为 $g(x, y) - c = 0$。

我们的约束条件要求我们的取值始终落在红线上,从图上可以直观看出,$\min f(x, y)$ 的最优解在最内圈的等高线和红线交点上。

我们标记出每个点的梯度,蓝色箭头为 $f(x, y)$ 负梯度方向,红线亦然。只有当蓝线和红线方向相反时,乘上参数 $\lambda$ 才有可能使两函数的导数互相抵消,使得 $\nabla L(x, y, \lambda) = 0$。换言之,每当其导数互相抵消时,可能出现我们要找的目标 $\min f(x, y)$ 才会出现。

但是为什么令拉格朗日函数 $L(x, y, \lambda)$ 为 $0$ 就可以求得最优值的一个超集呢?不妨从解决问题的角度推导一下拉格朗日函数。

从零推导拉格朗日函数

用 GoodNotes 画的

用 GoodNotes 画的

分析一下我们需要的结果:想要求的点取自于红线 $g(x, y)$ 上,假设 $f(x, y)$ 的最小值位于 $m_0$。直观来讲,最简单的方法,就是计算红线上每个点与最小值点的距离,这样对于简单函数 $f(x, y)$ 就可以求得最优解。

<aside> 💡 请注意,不是在所有情况下,与最小值点距离越近,函数值就越小。

</aside>

任取一点 $C$,它与最值点 $m_0$ 的距离为 d。可以发现,在最有可能取到最优点的地方(如 $x_0$ 和 $x_1$)总是满足两函数梯度平行,也就是总是存在 $\epsilon \in \mathbb{R}$,满足如下公式:

$$ \frac{d f(x, y)}{d (x, y)} = \epsilon \frac{d g(x, y)}{d (x, y)} $$

稍微变一下形

$$ \frac{d f(x, y)}{d (x, y)} - \epsilon \frac{d g(x, y)}{d (x, y)} = 0 $$