唐老板的高级机器学习课上讲了SVM的原理,对支持向量机的推导和原理又加深了理解。
最大化间隔
支持向量机就是希望超平面能距离两个类别点尽可能的远,也就是最大化间隔的思想。
前面就不说了,目标函数就是最大化“超平面到两部分支持向量距离之和”,也就是左上角的式子,也相当于最小化其倒数。
而γ可以通过改变w的值而约掉,所以没有意义,这种损失函数(Lasso loss function)及约束条件最终变成了下图的最下面。
然后我们可以将上面的优化问题写成拉格朗日形式。那为什么可以这样写呢,以及后续再怎么利用对偶理论呢?接下来做些数学上的说明。
拉格朗日对偶
按着下面的截图,先来看一个基础的优化问题:
要最小化f(x),包含不等式约束g(x)和等式约束h(x)。然后我们定义一个L(x, α,β)函数如下所示,它的约束条件只有α。
然后再考虑θ(x) = max L(x, α,β)。如果有些变量x不满足g(x)的不等式约束或h(x)的等式约束,那么θ(x)就是无穷大,因此,θ(x)可以写成下图的分段函数形式。现在我们再min θ(x),那么根据分段函数来看,其实就等价于原优化问题min f(x)。这样我们就把原来的优化问题用min max问题来表示了出来(注意min max各自下面的自变量)。
接着,我们来推导上图min max优化的对偶形式。对偶形式也就是写成max min的形式。那么为什么可以这样写呢?
通过简单的推导,我们可以证明max min L <= min max L。如果它能满足某些特定的条件(KKT条件,下文再讲),就可以取等号,也就是可以把上图的min max目标函数写成max min的目标函数形式。这就是拉格朗日的对偶形式,但是对于我们的SVM优化目标还没有结束。
求解对偶问题
先把目前为止的思路梳理一下,首先是一个min优化问题,有一个不等式约束条件,然后将其写成拉格朗日形式,然后等价地写成min max形式,如果满足KKT条件,我们就可以写成max min的形式。写成了max min形式后,我们先求解内层的min L(w, b, α)。由于要求最小值,我们可以求对w,对b的偏导,让他们等于0。这样就得到了右图的两个等式。
由于w可以由α和样本值得出,所以将其带回到L(w,b,α)。然后我们神奇的发现,L的目标函数中只剩下α一个变量了(α其实不是一个变量,而是与样本点个数相同的一组变量)!最下面的式子就是原目标函数的对偶问题,我们要max L(α)。
KKT条件
返回来说,需要满足哪些条件,min max才等价于max min问题呢?也就是KKT条件是哪几个呢?
下图的右半部分是一般的拉格朗日的形式,有不等式约束g(x)和等式约束h(x)。KKT条件在右下角的6个。(具体有关KKT的介绍不在这里展开了)。然后他们分别对应SVM问题中的条件,就可以得到左下角的几个条件。
从这些条件中,我们可以发现:对于任意训练样本总有α=0,或者y(wx+b)=1。也就是说,如果某样本点对应的α不等于0,那么该样本点一定在最大间隔的边界上,是一个支持向量。而α=0的样本点,对模型wx+b没有任何影响。所以训练完成后,大部分的训练样本都不需要保留,最终的模型只与支持向量有关。
SMO算法求解
刚才的对偶问题,是一个二次规划问题,该问题的规模正比于训练样本数,所以很多人提出了一些高效的算法,比如SMO算法。
SMO算法每次选择两个变量αi和αj,其他参数不变,然后根据对偶问题的目标函数,得到两个更新后的值,再重复这个过程。
核函数
有核函数和没有核函数的推导过程没有什么区别。
软间隔
上面的推导过程,得到的模型都是把所有的样本点都在超平面上进行正确分割,但是这种情况往往过于理想,所以实际的支持向量机,允许它在某些样本上分类错误,达到泛化的效果。
如果ξ=0,表示样本正确分类,如果大于0,说明y(wx+b)<1,这样就表示该样本划分错误,在其上加一个惩罚项C。
然后仍然按照之前的做法,写成拉格朗日形式,然后写成对偶问题,满足KKT条件。这个推导布置了作业,先不在这里描述了。