拉格朗日乘子法原理:等式约束和不等式约束

拉格朗日乘子法是寻找函数在一组约束下的极值方法。

1、等式约束

形式: (x是d维向量)
min f(x)
s.t. h(x) = 0.
写成如下形式:
min f(x)+lambda*h(x)(lambda为参数)
s.t. h(x) = 0.
发现两者是等价的。
记:拉格朗日函数L(x,lambda) =  f(x)+lambda*h(x).
发现约束条件h(x)=0,其实就是对拉格朗日函数L(x,lambda)关于lambda求偏导等于0得到,略去该约束,继而原约束优化问题就转化成了对拉格朗日函数L(x,lambda)的无约束优化问题(即令L关于x和lambda的偏导等于0求解)。

几何解释:
原目标函数f(x)取得最小化点x*时,可以得到如下结论:
a.约束曲面上的任意点x,该点的梯度正交于约束曲面;
b.在最优点x*,目标函数在该点的梯度正交于约束曲面(可以反正:若目标函数梯度与约束曲面不正交,则总可以在约束曲面上移动该点使目标函数进一步减小)。
所以,在最优点x*, 梯度f(x*)和 h(x*)的方向相同或相反,即存在lambda!=0,使:
▽f(x*)+lambda*▽h(x*)=0.        (1式)
定义拉格朗日函数:L(x,lambda) = f(x)+lambda*h(x).
令L(x,lambda)对x的偏导数等于0,得到1式;令 L(x,lambda)对lambda的偏导数等于0,得到约束条件h(x)=0。于是,原约束优化问题转化为无约束优化问题。

2、不等式约束

形式:
min f(x)
s.t. g(x) <= 0.
同样定义拉格朗日函数 L(x,lambda) = f(x)+lambda*g(x).

此时,首先看目标函数f(x)在无约束条件下的最优点,显然要么在g(x)<=0的区域内,要么在g(x)>0的区域内。
f(x)在无约束条件下的最优点g(x)<=0区域内,则约束条件g(x)<=0不起作用(即可直接求min f(x),得到的结果必然满足g(x)<=0),相当于lambda=0;
f(x)在无约束条件下的最优点不g(x)<=0区域内,则f(x)在约束条件下的最优点必然在g(x)<=0区域边界,即在边界g(x)=0上。此类情形类似于等式约束,但此时梯度f(x*)▽g(x*)的方向相反(梯度方向是函数值增大最快的方向),即存在lambda>0,使▽f(x*)+lambda*▽g(x*)=0
整合上述两种情形,必有lambda*g(x) = 0。所以原不等式约束问题就转化为:
min L(x,lambda)
s.t. g(x)<=0,
lambda>=0,
lambda*g(x)=0.
上面的约束条件即为KKT条件。


参考资料: 周志华《机器学习》

猜你喜欢

转载自blog.csdn.net/weixin_35732969/article/details/80816249