手打推导拉格朗日乘子算法Lagrange Multiplier

来源:互联网 发布:ios mvvm的数据绑定 编辑:程序博客网 时间:2024/04/28 12:31

拉格朗日乘子公式我就不给了,网上有很多,主要是原理,虽然网上页有,但是不直观甚至不完全。分为几个断言,根据上一个断言继续进行下一个。

1,最优值是在梯度相等的点

z=f(x,y)是目标函数,要求z的极值。而给定一个g(x,y)=0,为约束条件。目标函数是3维的,可以认为z变量是高度,那么固定一个高度z,f(x,y)就是x,y平面的一条线,当z变化时,x、y平面的投影线会移动,移动的方向我们不管,反正其可以移动,假如没有约束的话,那么z的最大值可以是无穷大。但是有一个额外要求就是最优点不仅要在f(x,y)上,还要求在g(x,y)上。g(x,y)这条直线是固定的,你可以沿一个方向移动f(x,y),那么你就一直移动f(x,y),直到无法与g(x,y)相交时就不能满足条件了,所以那个点必然是相切的或者是达到了g(x,y)这条线的极点,你只要在脑中想想就可以想明白了。所以极值点必然发送在一个位置,这个位置要让z=f(x,y)的投影线与g(x,y)相切。

相切就导致了在此处的斜率相等。

2,最后的乘子公式由1断言如何推导出来

网上有很多推导我认为是错误或模糊的。

梯度相等是在x,y平面的梯度相等,所以是dy/dx=dy/dx。假设前面的dy/dx是目标函数的梯度,它等于-(df/dx)/(df/dy);后面的是约束函数的梯度,一般由g(x,y)计算是:-(dg/dx)/(dg/dy),注意这里是偏导数。然后两者相等,为-(df/dx)/(df/dy)=-(dg/dx)/(dg/dy),等式右边分子分母同时乘以一个namda,让左右两边相等即得到了拉格朗日乘子的标准公式。这是我自己推导的。

阅读全文
0 0