拉格朗日乘子法(Lagrange Multiplier) 和 KKT(Karush-Kuhn-Tucker) 条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用 KKT 条件。当然,这两个方法求得的结果只是必要条件,只有当目标函数是凸函数的情况下,才能保证是充分必要条件。
拉格朗日乘子法
基本的拉格朗日乘子法(又称为拉格朗日乘数法),是一个最优化问题,就是求函数 f(x1,x2,...) 在 g(x1,x2,...)=0 的约束条件下的极值的方法。其主要思想是引入一个新的参数 λ (即拉格朗日乘子),将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得到原函数极值的各个变量的解。
方法:
假设需要求极值的目标函数 (objective function) 为 f(x,y) ,约束条件为 φ(x,y)=M 。
设 g(x,y)=M-φ(x,y) ,定义一个新函数F(x,y,λ)=f(x,y)+λg(x,y) ,则用偏导数方法列出方程:
∂F/∂x=0
∂F/∂y=0
∂F/∂λ=0
求出 x,y,λ 的值,代入即可得到目标函数的极值。
KKT条件
优化问题中既包含等式约束和不等式约束是最复杂也最常见的模型。问题的建模为:
对于等式约束,可以引入拉格朗日乘子进行转换。我们着重看下不等式约束。
我们定义不等式约束下的拉格朗日函数 L,则 L 表达式为:
求出的极值点 x∗ 满足 KKT 条件:
注意:f(x),g(x) 都是凸函数。
参考:机器学习——最优化问题:拉格朗日乘子法、KKT条件以及对偶问题 - 多发Paper哈 - 博客园 (cnblogs.com)