拉格朗日乘子法和KKT条件
首先明确一点,拉格朗日乘子法和KKT条件是两种求条件极值的方法,具体来说KKT是拉格朗日乘子法的一种推广。条件极值,顾名思义,即函数在一定条件约束下可取到的极值。谈到约束条件无非两种,等式约束和不等式约束,拉格朗日乘子法用于解决等式约束条件下函数极值的问题,KKT条件用于解决含有不等式条件约束下函数的极值问题。下面先介绍拉格朗日乘子法是肿么来滴。
拉格朗日乘子法
假设我们有二元函数 f ( x , y ) f(x, y) f(x,y)和约束条件 g ( x , y ) = c g(x, y) = c g(x,y)=c, 现在我们要求函数 f ( x , y ) f(x, y) f(x,y)在 g ( x , y ) g(x, y) g(x,y)约束条件下的最小值,换句话说我们要在 g ( x , y ) g(x, y) g(x,y)上找一点 ( x 0 , y 0 ) (x_{0}, y_{0}) (x0,y0),使得 f ( x , y ) f(x, y) f(x,y)取得最小值,将这句话公式化即为:(s.t. 为subject to,受限于) m i n ( f ( x , y ) ) min(f(x, y)) min(f(x,y)) s . t . g ( x , y ) = c s.t. \quad g(x, y) = c s.t.g(x,y)=c 我们将 f ( x , y ) f(x, y) f(x,y)和 g ( x , y ) g(x, y) g(x,y)在图像上表示,即为,
图中虚线为函数 f ( x , y ) f(x, y) f(x,y)值的等高线,假设我们的待求函数为 z = f ( x , y ) z = f(x, y) z=f(x,y),那么等高线即为 z z z 在 ( x , y ) (x, y) (x,y)平面内的投影。因为我们求的是 f ( x , y ) f(x, y) f(x,y)的最小值所以,假定箭头方向为负梯度方向即为函数值下降最快的方向,即 d 3 > d 2 > d 1 d_{3} > d_{2} > d_{1} d3>d2>d1。
很明显, g ( x , y ) g(x, y) g(x,y)上能使 f ( x , y ) f(x, y) f(x,y)取得最小值的点 ( x 0 , y 0 ) (x_{0}, y_{0}) (x0,y0)一定为 f ( x , y ) f(x, y) f(x,y)等高线和 g ( x , y ) = c g(x, y)=c g(x,y)=c的切点。同是在点 ( x 0 , y 0 ) (x_{0}, y_{0}) (x0,y0)处我们可以知道, f ( x , y ) f(x, y) f(x,y)和 g ( x , y ) g(x, y) g(x,y)的梯度共线。下面计算 f ( x , y ) f(x, y) f(x,y)和 g ( x , y ) g(x, y) g(x,y)在点 ( x 0 , y 0 ) (x_{0}, y_{0}) (x0,y0)处的梯度: ∇ f ( x 0 , y 0 ) = f x ′ ( x 0 , y 0 ) + f y ′ ( x 0 , y 0 ) \nabla f(x_{0}, y_{0}) = f_{x}^{'}(x_{0}, y_{0}) + f_{y}^{'}(x_{0}, y_{0}) ∇f(x0,y0)=fx′(x0,y0)+fy′