支持向量机(Support Vector Machine, SVM)是曾经打败神经网络的分类方法,从90年代后期开始在很多领域均有举足轻重的应用,近年来,由于深度学习的兴起,SVM的风光开始衰退,但是其仍然不失为一种经典的分类方法。SVM最初由 Vladimir N. Vapnik 和 Alexey Ya. Chervonenkis于1963年提出,之后经过一系列改进,现今普遍使用的版本由Corinna Cortes 和 Vapnik于1993年提出,并在1995年发表[1]。深度学习兴起之前,SVM被认为是机器学习近几十年来最成功、表现最好的方法。
1. 间隔最大化
本文讨论线性可分的支持向量机,详细推导其最大间隔和对偶问题的原理。简单起见,以二分类为例,如下图,设训练集为D={(x1,y1),...,(xn,yn)},蓝色圆点为一类,红色方块为另一类,分类的目标是寻找一个超平面,将两类数据分开。在二维平面中,分类超平面就是一条直线,从图中可以看出,能将训练样本分开的超平面有很多可能(图中绿色虚线),超平面除了要将训练集中的数据分开,还要有较好的泛化性能,需要把测试集中的数据也划分开。从直观上看,绿色实线是比较好的一个划分,因为该直线距离两类数据点均较远,对于数据局部扰动的容忍性较好,能够以较大的置信度将数据进行分类。
所以,距离两类数据点间隔最大的超平面为最好的分类面,两类数据点距离超平面的间隔(margin)如下图,假设图中两条虚线的表达式为wTx+b=−1和wTx+b=1 (为什么等号右边为1?因为若wTx+b=c,令w=w/c,b=b/c即可,w和b是要学习的参数,其大小是随等式右边的常数变化的),那么,中间分类面的表达式为wTx+b=0。为方便计算,将两类数据的标签设为±1,蓝色圆点为y=−1,红色方块为y=1,如果分类超平面能将两类数据正确分类,那么就有
{wTxi+b≥1wTxi+b≤−1yi=1yi=−1
并且两类数据到超平面的距离之和,也就是间隔为:
2||w||
要找到间隔最大的超平面,就是使2||w||最大,也即12||w||2最小,同时满足
{wTxi+b≥1wTxi+b≤−1yi=1yi=−1
这个需要满足的条件可简化为yi(wTxi+b)≥1,最终,寻找具有最大间隔的划分超平面转化为一个有约束的最优化问题
min12||w||2
s.t.yi(wTxi+b)≥1,i=1,⋯,n
其中,约束里的等号在上图中绿色虚线穿过的点处成立,这些点距离超平面最近,被称为“支持向量”(Support Vector),后面我们会看到,分类超平面仅由支持向量决定,这就是线性可分支持向量机的基本模型。
2. 对偶问题
为了求解上述有约束的最优化问题,应用拉格朗日对偶性,通过求解对偶问题(dual problem)得到原始问题(primal problem)的最优解,这样求解的优点是:1. 对偶问题通常更容易求解,2. 自然引入核函数,进而推广到非线性分类的情况[2]。
2.1 拉格朗日对偶性
首先给出原始问题,设f(x),ci(x),hj(x)是定义在Rn上的连续可微函数,给定如下原始问题
minxf(x)
s.t. ci(x)≤0,i=1,2,...,k
hj(x)=0,j=1,2,...,l
其拉格朗日函数(Lagrange function)为
L(x,α,β)=f(x)+∑i=1kαici(x)+∑j=1lβjhj(x)
其中,αi,βj为拉格朗日乘子,并且αi≥0,考虑x的函数
θP(x)=maxα,β;αi≥0L(x,α,β)
如果x违反原问题的约束条件,即存在i∈{1,...,k}使得ci(x)>0或者存在j∈{1,...,l}使得hj(x)≠0,那么就可以令αi→+∞,或者令βjhj(x)→+∞,从而
θP(x)=maxα,β;αi≥0[f(x)+∑i=1kαici(x)+∑j=1lβjhj(x)]=+∞
相反,如果x满足原问题的约束条件,则可令αi=0,βj=0,使得θP(x)=f(x)
因此有
θP(x)={f(x)+∞x满足原始问题约束x违反原问题约束
所以,原问题就可以转化为最小化θP(x),即
minxθP(x)=minxmaxα,β;αi≥0L(x,α,β)
该问题取最小值时,x是满足原始问题的约束的。接下来构造其对偶问题,首先定义α和β的函数
θD(α,β)=minxL(x,α,β)
再对上式最大化
maxα,β;αi≥0θD(α,β)=maxα,β;αi≥0minxL(x,α,β)
将该式表示有约束的最优化问题就得到了原始问题的对偶问题:
maxα,βθD(α,β)=maxα,βminxL(x,α,β)
s.t. αi≥0,i=1,...,k
那么原始问题和对偶问题的解存在什么关系呢?记原始问题的最优值为p∗=minxθP(x),对偶问题的最优值为d∗=maxα,β;αi≥0θD(α,β),那么有d∗≤p∗,此处不再证明,可简单理解为(最大值中的最小值)大于等于(最小值中的最大值)。在什么条件下等号成立呢?这个条件就是强对偶(strong duality),并且在强对偶前提下,如果x∗和α∗, β∗分别是原始问题和对偶问题的可行解,则x∗和α∗, β∗ 分别是原始问题和对偶问题的最优解,此时可以用解对偶问题替代解原始问题。但是强对偶条件是一个比较严格的约束,一般情况下无法满足,如果原问题满足一定的条件,就比较容易达到强对偶,这些条件就叫做约束规范 (constraint qualifications)。适用于SVM的约束规范是Slater条件,即原问题是一个凸优化问题(f(x)和ci(x)均是凸函数),并且存在x,使所有的等式约束成立,不等式约束严格成立(ci(x)<0)。在满足这些条件的前提下,有学者提出了x∗和α∗, β∗分别是原始问题和对偶问题的最优解的充分必要条件:KKT条件(Karush–Kuhn–Tucker conditions)
1. ci(x∗)≤0,hj(x∗)=0,i=1,...,k,j=1,...,l
2. ∇f(x∗)+∑i=1kαi∇ci(x∗)+∑j=1lβj∇hj(x∗)=0
3. αi≥0,αici(x∗)=0,βj≠0
其中,αici(x∗)=0称为KKT的互补松弛条件(Complementary slackness),由此可知,若αi>0,则必有ci(x∗)=0
2.2 SVM的对偶问题
回顾一下SVM的原问题,
min12||w||2
s.t.yi(wTxi+b)≥1,i=1,⋯,n
构造拉格朗日函数:
L(w,b,λ)=12wTw+∑i=1nλi(1−yi(wTxi+b)),λi≥0
可以将原问题等价为:
minw,bθP(w,b)=minw,bmaxλ;λi≥0L(w,b,λ)
易知,原问题满足Slater条件,所以也满足KKT条件,可以将原问题转化为对偶问题进行求解,即求
maxλθD(λ)=maxλminw,bL(w,b,λ)
s.t. λi≥0,i=1,...,n
首先求内部的项minw,bL(w,b,λ),令L(w,b,λ) 对w和b的导数为0
∂L∂w=w−∑i=1nλiyixi=0
∂L∂b=−∑i=1nλiyi=0
因此有w=∑i=1nλiyixi,并且∑i=1nλiyi=0。把w代入L(w,b,λ)得
L(λ)===12∑i=1nλiyixTi∑j=1nλjyjxj+∑i=1nλi(1−yi(∑j=1nλjyjxTjxi+b))12∑i=1n∑j=1nλiλjyiyjxTixj+∑i=1nλi−∑i=1n∑j=1nλiλjyiyjxTixj−∑i=1nλiyib−12∑i=1n∑j=1nλiλjyiyjxTixj+∑i=1nλi
该问题转化成只包含λ的最优化问题,求出λ就可以求出w和b。将L(λ)取负数,把最大化转化为最小化
minλL(λ)=12∑i=1n∑j=1nλiλjyiyjxTixTj−∑i=1nλi
s.t.λi≥0,∑i=1nλiyi=0,i=1,...,n
该问题为二次规划问题,存在全局最优解,设最优解为λ=(λ∗1,...,λ∗n),那么就可以计算原始问题的最优解w∗=∑i=1nλ∗iyixi。
由KKT的对偶松弛条件可知,如果λ∗i≠0,则有1−yi(w∗Txi+b)=0,由于y∈{+1,−1},因此
b∗=yi−w∗Txi=yi−∑j=1nλ∗jyjxTjxi
在预测阶段,对于新数据点z,计算
ŷ =w∗Tz+b∗=∑i=1nλ∗iyixTiz+b∗
如果ŷ >0,则将z分为正类,否则分为负类。
3. SVM进一步分析
等式1−yi(w∗Txi+b)=0对应的是下图中分类超平面两侧的虚线,再向两侧延伸,就会有1−yi(w∗Txi+b)≤0,由于λ∗i(1−yi(w∗Txi+b))=0,所以,对于两条虚线外侧的点,其对应的λi=0。事实上,只有少数的点会落在分类超平面两侧的虚线上,这些点是距离分类超平面最近的点,被称为支持向量。由w∗=∑i=1nλ∗iyixi和b∗=yi−∑j=1nλ∗jyjxTjxi可知,分类超平面仅由支持向量来决定,所以支持向量机具有较高的稀疏性。
支持向量机建立问题的思路是找到距离分类超平面最近的点,通过最大化这些点之间的间隔来求解,间隔最大化的平面具有较高的鲁棒性。
[1] Cortes C, Vapnik V. Support-vector networks. Machine learning. 1995 Sep 1;20(3):273-97.
[2] 李航. 统计学习方法,清华大学出版社,2012.