上一讲我们介绍了最优化问题的两种形式,无约束的和等式约束条件下的,这一讲,我们主要介绍不等式约束条件下的最优化问题,并介绍一下我们的KKT条件。
1、不等式约束条件
设目标函数f(x),不等式约束为g(x),有的教程还会添加上等式约束条件h(x)。此时的约束优化问题描述如下:
![](http://upload-images.jianshu.io/upload_images/4155986-90d4eb0b7bf44926.png)
则我们定义不等式约束下的拉格朗日函数L,则L表达式为:
![](http://upload-images.jianshu.io/upload_images/4155986-fdd2b472ec03e7f8.png)
求解上面的问题,我们同样可以使用等式约束条件的求解思路,对所有的参数进行求导,但是对于求解出的最优解,必须满足KKT条件(Karush-Kuhn-Tucker ):
1)L(a, b, x)对x求导为零;
2)h(x) =0;
3)a*g(x) = 0;
求取这些等式之后就能得到候选最优值。其中第三个式子非常有趣,因为g(x)<=0,如果要满足这个等式,必须a=0或者g(x)=0. 这是SVM的很多重要性质的来源,如支持向量的概念。
2、KKT条件推导
2.1 对偶问题转换
接下来我们介绍一下KKT条件的推导:首先让我们针对针对 λ 和 ν 最大化,令:
![](http://upload-images.jianshu.io/upload_images/4155986-834fef2e3c7ee4fe.png)
这里 λ⪰0 理解为向量 λ 的每一个元素都非负即可。这个函数 z(x) 对于满足原始问题约束条件的那些 x 来说,其值等于 f0(x) ,这很容易验证,因为满足约束条件的 x 会使得 hi(x)=0 ,因此最后一项消掉了,而 fi(x)≤0 ,并且我们要求了 λ⪰0 ,因此 λifi(x)≤0 ,所以最大值只能在它们都取零的时候得到,这个时候就只剩下 f0(x) 了。因此,对于满足约束条件的那些 x 来说,f0(x)=z(x) 。这样一来,原始的带约束的优化问题其实等价于如下的无约束优化问题:
![](http://upload-images.jianshu.io/upload_images/4155986-445b5aa14a695f3a.png)
到这里,我们成功把带约束问题转化为了无约束问题,不过这其实只是一个形式上的重写,并没有什么本质上的改变。我们只是把原来的问题通过 拉格朗日写作了如下形式:
![](http://upload-images.jianshu.io/upload_images/4155986-ecffd1b149eae41e.png)
我们把上面的形式称为原始问题,之前了解过SVM的同学肯定知道,如果我们把min和max对换一下位置,就得到这个问题的对偶问题:
![](http://upload-images.jianshu.io/upload_images/4155986-796351abd1aa9862.png)
2.2 对偶问题的最优解是原始问题最优解的下界
交换之后的对偶问题与原始问题的解并不相等,直观的可以这么理解,别墅中最便宜的房子的价格也要比普通楼房的最贵的价格高。当然这是很不严格的说法,我们需要严格的证明这一点,和刚才的z(x)类似,我们再定一个公式:
![](http://upload-images.jianshu.io/upload_images/4155986-bfa755cc3495c879.png)
g 有一个很好的性质就是它是 primal problem 的一个下界。换句话说,如果 primal problem 的最小值记为 p∗ ,那么对于所有的 λ⪰0 和 ν ,我们有:
![](http://upload-images.jianshu.io/upload_images/4155986-beb790ffa2c441e3.png)
证明过程如下图:
![](http://upload-images.jianshu.io/upload_images/4155986-862b5a292cc7c7dc.png)
上面这个性质叫做弱对偶性,对于所有的优化问题都成立。既然有弱对偶性,那必然有强对偶性,前对偶性指的原始问题和对偶问题的最优解严格相等,即:
![](http://upload-images.jianshu.io/upload_images/4155986-3fab94f9e97c0675.png)
在强对偶性成立的情况下,我们就可以通过对原始问题的对偶问题的求解来得到最优解(SVM就是这么做的),但并不是所有情况下强对偶性都成立,它会有一定的前提。
2.3 Slater 条件
如果你不是专门研究规划问题的同学,咱们还是直接看结论吧。首先我们介绍一下Slater 条件,Slater 条件是指存在严格满足约束条件的点 x ,这里的“严格”是指 fi(x)≤0 中的“小于或等于号”要严格取到“小于号”,亦即,存在 x 满足:
![](http://upload-images.jianshu.io/upload_images/4155986-610ece7f57b7e143.png)
我们有:如果原始问题是凸优化问题(很庆幸,SVM的规划问题是一个凸优化问题)的并且满足 Slater 条件的话,那么 strong duality 成立。需要注意的是,这里只是指出了 strong duality 成立的一种情况,而并不是唯一情况,不过研究SVM的话 ,知道这种情况足够了。
2.4 KKT条件
让我们回到 duality 的话题。来看看 strong duality 成立的时候的一些性质。
假设 x∗ 和 (λ∗,ν∗) 分别是 primal problem 和 dual problem 的极值点,相应的极值为 p∗ 和 d∗ ,首先 p∗=d∗ ,此时我们可以得到:
![](http://upload-images.jianshu.io/upload_images/4155986-cf336685505525bd.png)
因为左右两端其实是相等的,所以上面的小于等于号可以替换为等于号,我们一共替换了两次,这两次替换我们都能得到一个重要的性质:
![](http://upload-images.jianshu.io/upload_images/4155986-04f8726eab782aa1.png)
再将其他一些显而易见的条件写到一起,就是传说中的 KKT (Karush-Kuhn-Tucker) 条件:
![](http://upload-images.jianshu.io/upload_images/4155986-df89054d225e9264.png)
任何满足强对偶性(不一定要求是通过 Slater 条件得到,也不一定要求是凸优化问题)的问题都满足 KKT 条件,换句话说,这是 强对偶性 的一个必要条件。不过,当原始问题是凸优化问题的时候(当然还要求一应函数是可微的,否则 KKT 条件的最后一个式子就没有意义了),KKT 就可以升级为充要条件。换句话说,如果 原始问题是一个凸优化问题,且存在 x˜ 和 (λ˜,ν˜) 满足 KKT 条件,那么它们分别是 原始问题 和 对偶问题 的极值点并且强对偶性成立。