一文理解拉格朗日对偶和KKT条件
一. 最优化问题求解
1. 等式约束的极值求法
目标函数: , 引入Lagrange算子:
2. 不等式约束的极值求法
目标函数:
约束条件:
-
很多情况, 不等式约束条件可引入新变量转化为等式约束条件, 故上述问题可简化为:
3. 最优化问题分类
根据约束条件和目标函数的类型分为3类:
- 线性规划: 目标函数和约束条件都为变量的线性函数
- 二次规划: 目标函数为变量的二次函数, 约束条件为线性函数
- 非线性规划: 目标函数或者约束条件是非线性函数
4. KKT条件广义定义
KKT条件指在满足某些规则条件下, 非线性规划问题能有最优解的充要条件, 是广义拉格朗日乘数的重要成果
一般优化问题(含等式和不等式约束约束):
引入Lagrange算子:
可将
分别看做两个约束
的限制条件
KKT条件指上述问题的最优点必须满足:
(1) 约束条件满足:
(2)
即,
最优点处,
必须是
和
的线性组合
引入拉格朗日算子可以求出极值的原因:
由于
的
变化方向受其他不等式的约束, 且在极值
处,
)的梯度
与
,
之间存在线性关系, 故引入拉格朗日算子可以求出极值
(3) 且
不等式
的限制条件有方向性, 故
, 等式
的限制条件无方向性, 故
无符号限制
5 为什么SVM用Lagrange duality来解决最大化间隔问题?
不等式约束一直是优化问题中的难题,求解对偶问题可以将支持向量机原问题约束中的不等式约束转化为等式约束;
支持向量机中用到了高维映射,但是映射函数的具体形式几乎完全不可确定,而求解对偶问题之后,可以使用核函数来解决这个问题。
并不一定要用拉格朗日对偶。要注意用拉格朗日对偶并没有改变最优解,而是改变了算法复杂度:
在原问题下,求解算法的复杂度与样本维度(等于权值w的维度)有关;
而在对偶问题下,求解算法的复杂度与样本数量(等于拉格朗日算子a的数量)有关。
因此,
-
如果你是做线性分类,且样本维度低于样本数量的话,在原问题下求解就好了,Liblinear之类的线性SVM默认都是这样做的;
-
如果你是做非线性分类,那就会涉及到升维(比如使用高斯核做核函数,其实是将样本升到无穷维),升维后的样本维度往往会远大于样本数量,此时显然在对偶问题下求解会更好。
这样:
- 就可以由求特征向量w转化为求比例系数a,
- 就可以导出含有内积形式的目标函数,
- 就可以实现对内积后的gram矩阵使用核函数,以达到非线性分类的目的。
支持向量机实现非线性的方法的数学本质是升维,升维升到无穷维则无法表达w, 所以还是使用拉格朗日对偶方法更好一点。准确的说,可以用一些优化算法直接求最小间距,但是,升维的时候核要是正定的,且升维可数,而且不是很大的时候可以用。
二. 拉格朗日对偶和KKT
1. 带约束的优化问题
任意一个带约束的优化均可写成:
- 对于任意
均有
.
- 一个
问题可以转化为
- 假定
为凸函数,
是仿射函数(形如
),则上述问题为凸优化问题, 凸优化问题极值唯一
2. primal problem
将上述带约束的优化问题转化为无约束优化问题, 定义拉格朗日(Lagrangian)函数如下:
最大化Lagrangian, 令
z(x)满足原始约束条件的x, 其值等于:
满足初始约束, 则, 拉格朗日函数第三项被消去:
又因为, 所以
的最大值在
处取得.
所以原始带约束优化问题等价于以下无约束优化问题:
等价于:
上述问题称为primal problem
总结:
- 一个带约束的优化问题均可用
表示
- 用拉格朗日函数将带约束优化转为无约束优化问题
- 初始约束条件总可写成
的形式, 且拉格朗日算子
, 所以
可去掉约束条件:
去约束:
最优化:
![]()
3. dual problem
dual problem 只是将primal proble调换了min和max位置:
注意上式和并不等价.
令:
上式中为拉格朗日对偶函数(Lagrange dual function),
是primal function的一个下界.
即, 若将primal proble的最小值记为, 则对于所有的
, 有:
证明:
对所有满足约束条件的x, 总有:
因此
假设在
处取得极值, 则
代入上式:
于是
这样, 的上界是
,于是:
是primal problem的最大下界!
记dual problem 的最优值为, 得到:
该性质称为weak duality, 对所有的优化问题都成立.
此外,
称为duality gap.
基于weak duality的重要结论:
无论 primal problem 是什么形式,dual problem 总是一个 convex optimization 的问题——它的极值是唯一的(如果存在的话). 对于那些难以求解的 primal problem (甚至可以是 NP 问题),我们可以通过找出它的 dual problem ,通过优化这个 dual problem 来得到原始问题的一个下界估计。
当
成立时,称为strong duality.
strong duality 成立的情况下,我们可以通过求解 dual problem 来优化 primal problem, 例如SVM 的时候我们直接假定了 strong duality 的成立.
4. KKT条件
4.1 slater条件
严格满足约束条件的点x, 指严格到
, 即存在x满足:
4.2 strong duality
原始问题是convex且满足slater条件,则strong duality成立:
特例: 对某些非convex optimization,strong duality也成立
4.3 SVM中的strong duality
- SVM是一种convex optimization, SVM中通过QP(quadratic programming凸二次规划)求解, QP是凸优化问题的特殊情况
- slater条件在SVM中等价于存在超平面能将数据分隔开来
4.4 strong duality成立时的性质
- 回顾primal problem和dual problem
primal problem:
dual problem: - dual problem极值
在
处取得, primal problem极值
在
处取得
- strong duality成立, 则
, duality gap为0
-
成立:
由
得:
所以是
的一个极值点, 所以:
又由
得:
故极值点处:
条件(1)(2)合起来称为complementary slackness.
4.5 complementary slacknes条件分析
条件(2)中若必有
, 反之, 若
可得
, 此条件在SVM中用来证明非支持向量
对应的系数
4.6 引入KKT条件
complementary slacknes加上其他约束条件即为KKT条件:
- 任何满足strong duality的问题都满足KKT条件
- primal problem是convex optimization problem是, KKT升级为充要条件, 通过KKT条件可求得$$,
分别是primal problem和dual problem的极值点,且strong duality成立
总结
通过dual problem可求primal problem的解:
- 只有weak duality成立时, 至少可得到一个(primal problem的)下界
- strong duality成立,则直接求解dual problem
dual problem可能比primal problem更易求解
dual problem可能有一些优良的结构(SVM通过dual problem将问题转化为内积以使用kernel trick) - 迭代求解中, 会同事求解dual和primal problem, 通过duality gap来early stopping