图解拉格朗日乘数法:如何求解等式约束下的极值问题

数学

前言

 数学优化是指在给定的约束条件下最小化(或最大化)函数。这类数学优化问题出现在经济学、物理学等各个领域,而且许多机器学习算法最终都归结为数学优化问题。因此,了解数学优化及其求解方法应该有助于理解机器学习的根本部分。

本文将讲解解决数学优化问题时的一种强力方法——“拉格朗日乘数法”。

 在约束条件下最小化函数可以表示如下:
\begin{align*}
\min_{\bm{x}}\ &f(\bm{x}), \\
{\rm subject\ to\ }\ &g(\bm{x}) = 0.
\end{align*}
首先,让我们试着不使用拉格朗日乘数法,直接求解数学优化问题。

作为例子,我们要思考
\begin{align*}
\min_{x,y}\ &xy, \\
{\rm subject\ to\ }\ &x – y + 4 = 0.
\end{align*} 这个简单的问题。

当实数 $x, y$ 满足 $x – y + 4 = 0$ 时,求 $xy$ 的最小值。”

由约束条件可知 $y = x + 4$,因此

\begin{align*}
xy &= x (x + 4) \\
&= x^2 + 4x \\
&= (x + 2)^2 – 4.
\end{align*}

因此,最小值在 $x=-2$ 时取得,为 $-4$。

像这样变量少且简单的问题,可以很容易地求解。
但是,下面的问题又如何呢?

\begin{align*}
\max_{n_1, \dots, n_m}\ &\frac{N!}{\displaystyle{\prod_{i=1}^m(n_i !)}}, \\
{\rm subject\ to\ }\ &\sum_{i=1}^m n_i \varepsilon_i = E,\ \sum_{i=1}^m n_i = N. \end{align*}

或者,下面的问题又如何呢?

\begin{align*}
\min_{w_1, \dots, w_n}\ &\frac{1}{2}\sqrt{w_1^2 + \cdots + w_n^2}, \\
{\rm subject\ to\ }\ &y^{(i)}\left(\sum_{j=1}^n w_j x_j^{(i)} + b\right) \geq 1, \ \ \ i = 1, 2, \cdots, n.\end{align*}

问题太复杂,似乎很难像刚才那样求解。
(顺便一提,前一个问题是物理学中重要的玻尔兹曼分布,后一个问题则是给出支持向量机这一机器学习算法的问题)

\begin{align*}
\newcommand{\d}{\mathrm{d}}
\newcommand{\pd}{\partial}
\end{align*}

 如果是无约束条件的问题,只要解出目标函数 $f(\bm{x})$ 的梯度向量为 0 向量:$\nabla_{\! \bm{x}}\,f(\bm{x}) = \bm{0}$ 的方程组,就能找到驻点(微分后的函数为 0 的点)。如果 $f(\bm{x})$ 是凸函数,该点即为最小值(或最大值)。

在有约束条件的问题中,是否存在像无约束条件那样的解法呢?如果存在,那么即使是上述那样的复杂问题,似乎也能轻松求解……确实存在这样的解法!那就是被称为“拉格朗日乘数法”的方法。


拉格朗日乘数法(等式约束条件)

 拉格朗日乘数法是一种在变量间存在约束条件下,求解多变量函数驻点的方法。使用它,优化问题
\begin{align*}
\min_{\bm{x}}\ &f(\bm{x}), \\
{\rm subject\ to\ }\ &g(\bm{x}) = 0
\end{align*} 可以如下求解。
(以下假设所考虑的函数为下凸函数。)

拉格朗日乘数法(等式约束条件)

定义称为拉格朗日函数的实值函数为
\begin{align*}
L(\bm{x}, \lambda) = f(\bm{x}) – \lambda g(\bm{x})
\end{align*}。
此时,在约束条件 $g(\bm{x}) = 0$ 下求解 $f(\bm{x})$ 极值的问题,可以归结为求解下列方程组解的问题。
\begin{align*}
&\nabla_{\! \bm{x}}\, L(\bm{x}, \lambda) = \bm{0}, \\
\\
&\frac{\pd L(\bm{x}, \lambda)}{\pd \lambda} = 0.
\end{align*}

拉格朗日乘数法通过考虑融合了目标函数 $f(\bm{x})$ 和约束式 $g(\bm{x})$ 的拉格朗日函数 $L(\bm{x}, \lambda)$,可以将带约束条件的问题作为普通的极值问题来求解。这里,约束式的系数 $\lambda$ 被称为拉格朗日乘数。

作为例子,我们尝试用拉格朗日乘数法求解开头的问题。

“当实数 $x, y$ 满足 $x\, – y + 4 = 0$ 时,求 $xy$ 的最小值。”

令 $f(x, y) = xy,\ g(x, y) = x\, – y + 4$。

将拉格朗日函数 $L$ 定义为

\begin{align*}
L(x, y, \lambda) &= f(x,y)\, – \lambda g(x,y) \\
&= xy\, – \lambda(x – y + 4)
\end{align*}

根据拉格朗日乘数法,满足下列方程组的 $x, y$ 即为极值点。

\begin{align*}
\frac{\pd L}{\pd x} &= y\, – \lambda = 0 \\
\frac{\pd L}{\pd y} &= x + \lambda = 0 \\
\frac{\pd L}{\pd \lambda} &= -x + y -4 = 0
\end{align*}

解上述方程组,得到 $x = -2, y = 2, \lambda = 2$。

因此,最小值为 $-4$。

此外,在机器学习算法中,主成分分析的理论中也出现了拉格朗日乘数法。

主成分分析(PCA)の理解 理論編
次元圧縮の手法である、主成分分析(PCA)の理論について解説します。主成分分析とは、お互いに相関のある特徴量について観測した多次元データのもつ情報をできるだけ失うことなく、もとの特徴量の線形結合で表される新たな特徴量へ要約する手法です。

为什么成立?

 为什么它会成立呢?我们抛开严密性,对双变量函数的情况进行几何学考察。
图示目标函数 $f(x, y)$ 和约束函数 $g(x, y) = 0$。双变量函数 $f(x, y)$ 描绘为曲面,$g(x, y) = 0$ 描绘为曲线。

在约束条件下求解目标函数的最小值,也就是在这条曲线:$g(x, y) = 0$ 上寻找目标函数:$f(x, y)$ 海拔最低的位置。

▲用蓝色曲面表示目标函数 $f(x, y)$,用红色曲线表示约束函数 $g(x, y)=0$。

 假设这条曲线是山路。当你处于沿路海拔最低的位置时,你应该正沿着等高线行走。因为,如果正在上坡或下坡,你会穿过等高线行进。沿路海拔最低的瞬间正是没有穿过等高线,即沿着等高线行走的瞬间。这在几何上可以视为曲线的切线与等高线的切线重合的情况

▲用目标函数 $f(x,y)$ 的等高线表示。红色曲线($g(x,y)=0$)上海拔最低的位置,是曲线的切线与等高线的切线重合的地方(图中的星号点)。并且该位置也是两个函数的梯度向量平行的点。

要找到这两条切线重合的点(上图星号处),使用函数的梯度会比较好。梯度向量 $\nabla_{\! x, y}\, f(x, y),\ \nabla_{\! x, y}\, g(x, y)$ 分别表示垂直于等高线的向量和垂直于曲线的向量。

$f(x, y)$ 的梯度 $ \nabla_{\! x, y}\, f(x,y)$ 与 $g(x, y)$ 的梯度 $ \nabla_{\! x, y}\, g(x,y)$ 平行的地方就是两条切线重合的点,也就是在约束条件下目标函数最小的位置。这可以用下面的式子表示。
\begin{align*}
\nabla_{\! x, y}\, f(x,y) = \lambda \nabla_{\! x, y}\, g(x, y)
\end{align*}这里,$\lambda$ 是因为只要 $f$ 和 $g$ 的梯度方向一致即可、其长度无关紧要而出现的变量,被称为“拉格朗日乘数”。

变形上式,
\begin{align*}
\nabla_{\! x, y}\, \left\{f(x,y) – \lambda g(x, y) \right\} = 0
\end{align*}使用拉格朗日函数:$L(x, y) \equiv f(x, y) – \lambda g(x, y)$,可以重写为
\begin{align*}
\nabla_{\! x,y}\, L(x, y) = 0
\end{align*}。

另一方面,$g(x, y) = 0$ 这一约束条件可以表示为 $\frac{\pd L}{\pd \lambda} = 0$。

 像这样,通过拉格朗日乘数法,可以将带约束条件的问题作为普通的 极值问题来求解。

标题和URL已复制