回顾

支持向量机 对偶函数 核函数 支持向量机的对偶问题_svm


上一篇已经讲到了将找一个最好的分割超平面转化为上面的公式并且用二次规划来求解的问题。但是还是存在一个问题,这个算法维度(w的维度)不是跟数据量相关的,而是跟数据内在的vc维度有关的,所以当数据内在维度很大时算法的效率无法保证,所以这一节讲一下上述问题的对偶问题,将这个算法维度转化为与数据量N相关的问题。

支持向量机 对偶函数 核函数 支持向量机的对偶问题_最小化_02

对偶问题

1.去除条件约束

对偶问题是将条件约束变成最小化式子中的一项并且前面乘上一个数(拉格朗日乘子):

支持向量机 对偶函数 核函数 支持向量机的对偶问题_最小化_03


具体到svm中:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_机器学习_04


一般的,svm不使用λ而是使用α作为拉格朗日乘子。

新引入的α,有一个小小约束是要大于等于0

要做到与原来的条件约束相同,需要改变一下优化过程:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_最小化_05


这里把问题转化为先做一个关于α的最大化问题,再做关于b,w的最小化问题,这里的最大化就可以跟原来的条件有一样的约束。假如违背了条件,那么拉格朗日乘字对应的式子结果就是正的,那么最大化这个问题会趋向正无穷,而如果没有违反,拉格朗日乘字对应的式子就是小于等于0,最大化之后就会变成0。跟原来的约束是一样的,只是把条件隐藏到最大化的过程中了。

2.拉格朗日对偶

对偶问题引入:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_支持向量机 对偶函数 核函数_06


支持向量机 对偶函数 核函数 支持向量机的对偶问题_机器学习_07


实际上就是简单的证明了minmax是大于等于maxmin问题的。

而由minmax到maxmin就是一个对偶问题,但是大于等于只是弱对偶,我们需要一些限制条件把问题变为强对偶:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_svm_08

3.问题化简

现在求解的问题:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_支持向量机 对偶函数 核函数_09


这里因为已经假定是凸问题所以最小化问题可以求导来解,先对b求导:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_支持向量机 对偶函数 核函数_10


上式得到一个等式,可以进一步带入原来式子中:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_最小化_11


这样是不是看起来好一些了~:)。

但是还可以更简洁,对w求导:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_最小化_12


又得到一个等式,然后再带入一下:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_最小化_13


卧槽~居然b,w都不见了~只剩下α,这样最小化问题也可以去掉了好开心。

最终的问题化简变成了:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_机器学习_14


当然这里有很多的隐藏条件:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_最小化_15


前三个条件大家应该都懂的,第四个是那时候引入最大最小化时的隐含条件,因为最大化的原因:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_机器学习_16


这两个项至少有一个是0,否则最大化就会出问题。用林教授的话说也就是哈利波特和伏地魔只能活一个:0

对了这个问题叫kkt问题~关于这个。。我也不太懂。

4.问题求解

现在的最优化问题:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_最小化_17


而最大化问题很容易变成最小化:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_支持向量机 对偶函数 核函数_18


到这里我们终于把问题转化成与数据量N有关的问题了,而不是跟数据vc维d有关的。

而这个问题用什么解呢~跟上一讲一样,QP solver:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_最小化_19


最后可以写成这个样子:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_最小化_20


当然这个Q矩阵可能很大,并且是dense的矩阵,所以可能需要一些特殊的QP solver来解~

5.总结

kkt条件:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_支持向量机 对偶函数 核函数_21


根据这个我们很容易可以根据α的值(上面QP求出来的)来推倒出w和b:

支持向量机 对偶函数 核函数 支持向量机的对偶问题_支持向量机 对偶函数 核函数_22


而当α大于0时,那他对应的点就是在边界上的点,也就是支持向量~