拉格朗日乘子法和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,再有等式约束时使用拉格朗日乘子法,在有不等式约束时使用KKT条件。前提是,只有当目标函数为凸函数时,使用这两种方法才能保证求得的是最优解。
拉格朗日乘子法:
设,
是定义在
上的连续可微函数,考虑约束最优化问题:
将这个问题转换为:
其中,称为拉格朗日乘子。
下面依据wikipedia来解释拉格朗日乘子法的合理性:
假设有一个二维的优化问题:
通过画图来辅助思考:
绿线标出的是约束的点的轨迹,蓝线是
的等高线。箭头代表斜率,和等高线的法线平行。从图中可以看出在最优解处,f和g的法线方向刚好相反(梯度共线),即
而满足该条件的点同时又是下式的解
所以min 与 min
等价。新方程
在达到极值时与
相等,因为达到极值时,
总等于零。
所以拉格朗日乘子法与原优化问题是等价的。
KKT条件:
kKT条件是拉格朗日乘子法的泛化,
同时具有等式约束与不等式约束的最优化问题:
对应的拉格朗日函数为:
可以得出原始问题最小化f(x)等价于的结论。
注:都是向量;
表明f(x)在极值点
处的梯度是各个
和
梯度的线性组合。
以下进行证明:
1. 根据式(1)知,,进而
2. 接下来证明:
首先:
f(x)与变量无关,所以上式等于:
又因为: 所以:
所以: ;此时
所以:
3. 综上根据1和2我们可以得出结论:当满足一定条件时:
我们把称为 原问题
的对偶问题。上式表明当满足一定条件时,原问题与对偶问题是等价的,两者的最优值是相等的。这时可以用解对偶问题替代解原始问题。且在最优解
处,
而且:
这说明也就是
的极值点,即
;
得证;
结论:
- 考虑原始问题和对偶问题,假设函数
和
是凸函数,
是仿射函数;并且假设不等式约束
是严格可行的,即存在x,对于所有i有
,则存在
,使
是原始问题的解,
是对偶问题的解,并且:
其中和
分别是原始问题与对偶问题的最优值,两者相同。
- 考虑原始问题和对偶问题,假设函数
和
是凸函数,
是仿射函数;并且假设不等式约束
是严格可行的,即
和
分别是原始问题和对偶问题的解的充分必要条件是
满足下面的Karush-Kuhn-Tucker(KKT)条件:
参考:1. http://www.cnblogs.com/zhangchaoyang/articles/2726873.html#3980843
2.统计学习方法《李航》