[ML Notes] 拉格朗日函数:推导过程
Contents [show]
1. 推导过程
以二元函数为例,要寻找 f(x,y) 在约束条件 g(x,y)=0 下的极值,如
min
假设 f(x, y) 在 (x_0, y_0) 处取得极值,则有
g(x_0, y_0) = 0 \tag{2}
假设在 (x_0, y_0) 的某一邻域内 f(x, y) 和 g(x, y) 都有连续的一阶偏导数,且 g_y(x_0, y_0) \neq 0,由隐函数存在定理可知,g(x, y) 确定一个连续且具有连续导数的函数 y = \phi(x),此时 f(x, y) 变为变量 x 的函数
z = f(x, \phi(x))
由 f(x, y) 在 (x_0, y_0) 处取得极值,有
\left. \frac{\mathrm{d}z}{\mathrm{d}x} \right\vert_{x=x_0} = f_x(x_0, y_0) + f_y(x_0, y_0) \left.\frac{\mathrm{d} y}{\mathrm{d} x}\right\vert_{x=x_0} = 0 \tag{3}
由式 (2) 和隐函数求导公式,有
\left.\frac{\mathrm{d} y}{\mathrm{d} x}\right\vert_{x=x_0} = – \frac{g_x(x_0, y_0)}{g_y(x_0, y_0)} \tag{4}
将式 (4) 代入式 (3),得到
f_x(x_0, y_0) – f_y(x_0, y_0) \frac{g_x(x_0, y_0)}{g_y(x_0, y_0)} = 0 \tag{5}
记
\frac{f_y(x_0, y_0)}{g_y(x_0, y_0)} = -\lambda \tag{6}
将式 (6) 代入式 (5),得到
f_x(x_0, y_0) + \lambda g_x(x_0, y_0) = 0 \tag{7}
由式 (5) 本身,有
f_y(x_0, y_0) + \lambda g_y(x_0, y_0) = 0 \tag{8}
引进辅助函数
L(x, y) = f(x, y) + \lambda g(x, y) \tag{9}
其中 L(x, y) 称为拉格朗日函数,\lambda 称为拉格朗日乘子。
结合拉格朗日函数,式 (7)、(8)、(2) 构成方程组
\begin{cases} f_x(x_0, y_0) + \lambda g_x(x_0, y_0) = 0 \\ f_y(x_0, y_0) + \lambda g_y(x_0, y_0) = 0 \\ g(x, y) = 0 \end{cases} \tag{10}
求解上述方程组,即可得到 x_0、y_0 和 \lambda。
2. 拉格朗日乘数法
要找函数 z = f(x, y) 在附加条件 g(x, y) = 0 下的可能极值点,可以先作拉格朗日函数
L(x, y) = f(x, y) + \lambda g(x, y)
其中 \lambda 为参数。求其对 x 和 y 的一阶偏导数并使之为零,然后与约束条件 g(x, y) = 0 联立起来
\begin{cases} f_x(x_0, y_0) + \lambda g_x(x_0, y_0) = 0 \\ f_y(x_0, y_0) + \lambda g_y(x_0, y_0) = 0 \\ g(x, y) = 0 \end{cases}
由该方程组解出 x、y 和 \lambda,由此得到的 (x, y) 就是函数 f(x, y) 在附加条件 g(x, y) = 0 下的可能的极值点。
对于有多个自变量的场景,如要求函数
u = f(x, y, z, t)
在附加条件
\begin{aligned} g(x, y, z, t) = 0 \\ h(x, y, z, t) = 0 \end{aligned}
下的极值,可以先作拉格朗日函数
L(x, y, z, t) = f(x, y, z, t) + \lambda g(x, y, z, t) + \mu h(x, y, z, t)
其中 \lambda、\mu 均为参数。求上式的一阶偏导数并使之为零,与两个约束条件联立求解即可。
隐函数存在定理 设函数 F(x, y) 在点 (x_0, y_0) 的某一邻域内具有连续偏导数,且 F(x_0, y_0) = 0,F_y(x_0, y_0) \neq 0,则方程 F(x, y) = 0 在点 (x_0, y_0) 的某一邻域内恒能唯一确定一个连续且具有连续导数的函数 y = f(x),它满足条件 y_0 = f(x_0),并有
\frac{\mathrm{d} y}{\mathrm{d} x} = – \frac{F_x}{F_y}