拉格朗日乘子法和KKT条件
这里简单说一下拉格朗日乘子法的原理和insight.
等式约束
拉格朗日乘子法主要是用于解决有约束的优化问题. 比如最基本的等式约束
max f ( x , y ) s . t . , g ( x , y ) = 0 \max f(x,y) \\ s.t., g(x,y)=0maxf(x,y)s.t.,g(x,y)=0
我们想求f ( x , y ) f(x,y)f(x,y)的最大值,本身这个三维函数是定义在实平面上的, 他有自己的极值和最值. 但是加上了约束之后,我们就不能在整个实平面上找极值最值了, 我们得在g ( x , y ) = 0 g(x,y)=0g(x,y)=0这条线上找f ( x , y ) f(x,y)f(x,y)的最值.
一个observation是,如果我们令f ( x , y ) = d f(x,y)=df(x,y)=d, 我们就能在平面上为不同的d dd值画出很多等高线, 这时我们再把g ( x , y ) = 0 g(x,y)=0g(x,y)=0也画上去可以得到下图(基本任何教程都会出现一张经典的图)
如果我们要从g ( x , y ) = 0 g(x,y)=0g(x,y)=0这条线上找极值, 比如说我们找到在点( x 0 , y 0 ) (x_0,y_0)(x0,y0)处找到了极值f ( x 0 , y 0 ) = d 1 f(x_0,y_0)=d_1f(x0,y0)=d1. 这时可以看到, g ( x , y ) = 0 g(x,y)=0g(x,y)=0这条线是与f ( x , y ) = d 1 f(x,y)=d_1f(x,y)=d1这个等高线相切的, 这就意味着g ( x , y ) = 0 g(x,y)=0g(x,y)=0这条线在( x 0 , y 0 ) (x_0,y_0)(x0,y0)处的切线方向与f ( x , y ) = d 1 f(x,y)=d_1f(x,y)=d