一文理解拉格朗日对偶和KKT条件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文理解拉格朗日对偶和KKT条件相关的知识,希望对你有一定的参考价值。
参考技术A
目标函数: , 引入Lagrange算子:
目标函数:
约束条件:
根据约束条件和目标函数的类型分为3类:
KKT条件指在满足某些规则条件下, 非线性规划 问题能有最优解的 充要条件 , 是广义拉格朗日乘数的重要成果
一般优化问题(含等式和不等式约束约束):
引入Lagrange算子 :
KKT条件指上述问题的最优点 必须满足:
(1) 约束条件满足:
(2)
即,
最优点 处, 必须是 和 的 线性组合
引入拉格朗日算子可以求出极值的原因 :
(3) 且
不等式约束一直是优化问题中的难题,求解对偶问题可以将支持向量机原问题约束中的不等式约束转化为等式约束;
支持向量机中用到了高维映射,但是映射函数的具体形式几乎完全不可确定,而求解对偶问题之后,可以使用核函数来解决这个问题。
并不一定要用拉格朗日对偶。要注意用拉格朗日对偶并没有改变最优解,而是改变了算法复杂度:
在原问题下,求解算法的复杂度与样本维度(等于权值w的维度)有关;
而在对偶问题下,求解算法的复杂度与样本数量(等于拉格朗日算子a的数量)有关。
因此,
支持向量机实现非线性的方法的数学本质是升维,升维升到无穷维则无法表达w, 所以还是使用拉格朗日对偶方法更好一点。准确的说,可以用一些优化算法直接求最小间距,但是,升维的时候核要是正定的,且升维可数,而且不是很大的时候可以用。
任意一个带约束的优化均可写成:
将上述带约束的优化问题转化为无约束优化问题, 定义拉格朗日(Lagrangian)函数如下:
最大化Lagrangian, 令
z(x)满足原始约束条件的x, 其值等于 :
满足初始约束, 则 , 拉格朗日函数第三项被消去:
又因为 , 所以 的最大值在 处取得.
所以原始带约束优化问题等价于以下无约束优化问题:
等价于:
上述问题称为 primal 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的重要结论:
当
成立时,称为strong duality.
严格满足约束条件的点x, 指 严格到 , 即存在x满足:
原始问题是convex且满足slater条件,则strong duality成立:
特例: 对某些 非convex optimization,strong duality也成立
条件(2)中若 必有 , 反之, 若 可得 , 此条件在SVM中用来证明非支持向量 对应的系数
complementary slacknes 加上其他约束条件即为KKT条件:
通过dual problem可求primal problem的解:
拉格朗日乘子法及其对偶问题和KKT条件
参考技术A如何理解拉格朗日乘子法?
https://blog.csdn.net/lijil168/article/details/69395023
http://www.math.ubc.ca/~israel/m340/kkt2.pdf
http://www2.imm.dtu.dk/courses/02711/lecture3.pdf
http://www.onmyphd.com/?p=kkt.karush.kuhn.tucker
在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法。 在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件。
一般情况下,最优化问题会碰到一下三种情况:
(1)无约束条件
这是最简单的情况,解决方法通常是函数对变量求导,令求导函数等于0的点可能是极值点。将结果带回原函数进行验证即可。
(2)等式约束条件
使用拉格朗日乘子法。
当 个等式约束, 时,求 的最优解。——这就是原问题
等价表达式为:
——这就是原问题
其中, 表示最优化,可能是最小化min,或最大化max; 表示subject to ,“受限于”的意思; 为目标函数(不是原问题,不是原函数); 是约束项。写成约束的形式更专业,但是还是题目描述的好理解。
拉格朗日乘子法定义:对于目标函数 以及 个约束条件 ,拉格朗日乘子法为每个约束条件添加一个“乘子” :
(1)如果对目标函数求最小化即
那么得到拉格朗日函数:
其中
(2)如果对目标函数求最大化即
那么得到拉格朗日函数:
其中
上面两种情况是可以通过对 和 取负互相转换。下面只就第(1)种情况进行讨论。
上面两种情况用拉格朗日乘子法对偶问题来解释。
对于第一种情况,如果对目标函数求最小化即 是凹函数,那么对 求最小值等同于 ,而 可分为两部分,第一部分即目标函数 ,第二部分为带有“乘子” 的约束部分;容易看出第一部分不包含 ,所以 也可以分成两部分优化:
基于公式(1),可以用 来表示 ,那么拉格朗日函数 就变成了一个关于 的函数,记为: ——该函数就是拉格朗日函数的对偶函数。所谓对偶函数就是求拉格朗日函数的最优解 等价于求对偶函数的最优解 ,求得 之后基于公式(1),就可以求得 。
对对偶函数求最优解,也是对 求偏导,并令其为0:
...
最终我们可以得到对偶函数的 个最优解 ,进而得到拉格朗日函数的最优解 ,再将 带入目标函数 即可得到 的最优解。
由求带约束的目标函数的最优解 求拉格朗日函数的最优解 求拉格朗日函数的对偶函数的最优解,再将最优解回溯回去。
练一练:已知 ,求 的最大值?
上面的问题,可以写成
思路:基本不等式、三角换元都太麻烦。用拉格朗日乘子法(也叫拉格朗日乘数法)来解决。
将等式约束下的目标函数转化成拉格朗日函数:
这里只有一个约束项。
要求解 的最优解,即对 求偏导,并使结果为0:
可以求得
也就是说当 时,目标函数 取得最大值,即
利用GeoGebra 软件进行验证,如图所示:
(3)不等式约束条件
当 个不等式约束, 时,求 的最小值。
等价表达式为:
采用拉格朗日乘子法会为每一个不等式约束分配一个“乘子” ,于是有拉格朗日函数:
其中不等式约束的“乘子”” 。
KKT条件是说, 的最优解 一定同时满足如下条件:
要同时满足第6、7个条件,那么就是要么 ,要么 ,或 和 都为0——这就是KKT所带来的重要结论。
练一练:
1、将上面的约束项变形如下:
2、拉格朗日函数为:
最优化拉格朗日函数
对 求偏导:
那么
对 求偏导:
那么
将 带入到 中得到的是之关于 的函数 ,该函数是 的对偶函数。
(4)既有等式约束条件又有不等式约束条件
使用拉格朗日乘子法结合KKT条件。
当 个等式约束, ; 个不等式约束, 时,求 的最小值。
等价表达式为:
采用拉格朗日乘子法会为每一个等式约束分配一个“乘子” ,也为每一个不等式约束分配一个“乘子” ,于是有拉格朗日函数:
其中等式约束的“乘子”” ;不等式约束的“乘子” 。
KKT条件是说, 的最优解 一定满足如下条件:
以上是关于一文理解拉格朗日对偶和KKT条件的主要内容,如果未能解决你的问题,请参考以下文章