在约束最优化问题中,常常利用拉格朗日对偶性(Lagrange duality)将原始问题转换为对偶问题,通过解对偶问题而得到原始问题的解。该方法应用在许多统计学习方法中,例如最大熵模型和支持向量机。
对于等式约束的优化问题,可以应用拉格朗日乘子法(Lagrange Multiplier)去求取最优值;如果含有不等式约束,可以应用KKT(Karush-Kuhn-Tucker)条件去求取。当然,这两个方法求得的结果只是必要条件,只有当是凸函数的情况下,才能保证是充分必要条件。
1. 拉格朗日乘子法和KKT条件
通常我们需要求解的最优化问题有如下几类:
无约束优化问题,可以写为:
minf(x);有等式约束的优化问题,可以写为:
minf(x),s.t.hi(x)=0;i=1,...,n有不等式约束的优化问题,可以写为:
对于无约束优化问题,常常使用的方法就是Fermat定理,即使用求取 f(x) 的导数,然后令其为零,可以求得候选最优值,再在这些候选值中验证;如果是凸函数,可以保证是最优解。
对于有等式约束的优化问题,常常使用的方法就是拉格朗日乘子法,即把等式约束 hi(x) 用一个系数与 f(x) 写为一个式子,称为拉格朗日函数,而系数称为拉格朗日乘子。通过拉格朗日函数对各个变量求导,令其为零,可以求得候选值集合,然后验证求得最优值。
对于有不等式约束的优化问题,常常使用的方法就是KKT条件。同样地,我们把所有的等式、不等式约束与 f(x) 写为一个式子,也叫拉格朗日函数,系数也称拉格朗日乘子,通过一些条件,可以求出最优值的必要条件,这个条件称为KKT条件。
1.1 拉格朗日乘子法
对于等式约束,我们可以通过一个拉格朗日系数 a 把等式约束和目标函数组合成为一个式子