Processing math: 0%

[ML Notes] 拉格朗日函数:直观解释

min

  假设 f(x, y)(x_0, y_0) 处取得极值 z,则在该处,f(x, y) = zg(x, y) = 0 两条曲线应相切,两条曲线在 (x_0, y_0) 处的梯度应平行。于是得到方程组

\begin{cases} \nabla f + \lambda \nabla g = 0 \\ g(x, y) = 0 \end{cases} \tag{2}

由此可以解出 xy\lambda(x, y) 即为函数 f(x, y) 在附加条件 g(x, y) = 0 下的可能的极值点。

  举例来说,令

\begin{aligned} f(x, y) = – x – y^2 + y + 3 \\ g(x, y) = 2 *x + y – 1 \end{aligned}

优化问题为

\begin{aligned} \min \; & – x – y^2 + y + 3 \\ \text{s.t.} \; & 2 *x + y – 1 = 0 \end{aligned}

如图 1 所示,等高线为 f(x, y),黑色直线为 g(x, y),在 f(x, y)g(x, y) 相切处(红点),f(x, y) 取得极值,且二者的梯度方向相反。

图 1
图 1

  计算 f(x, y)g(x, y) 的梯度为

\begin{aligned} \nabla f &= \begin{bmatrix} -1 \\ -2y + 1 \end{bmatrix} \\ \nabla g &= \begin{bmatrix} 2 \\ 1 \end{bmatrix} \end{aligned}

由式 (2),得到方程组

\begin{cases} \begin{bmatrix} -1 \\ -2y + 1 \end{bmatrix} + \lambda \begin{bmatrix} 2 \\ 1 \end{bmatrix} = \boldsymbol 0 \\ 2 x + y – 1 = 0 \end{cases}

解得 x = 0.125y = 0.75\lambda = 0.5,极值为 f(0.375, 0.25) = 3.5625\frac{\nabla f}{\nabla g} = -\lambda = -0.5,说明 fg 的梯度方向相反,前者长度为后者的一半。