支持向量机(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)}D=\{(\boldsymbol{x}_1,y_1),...,(\boldsymbol{x}_n,y_n)\}D={(x1,y1),...,(xn,yn)},蓝色圆点为一类,红色方块为另一类,分类的目标是寻找一个超平面,将两类数据分开。在二维平面中,分类超平面就是一条直线,从图中可以看出,能将训练样本分开的超平面有很多可能(图中绿色虚线),超平面除了要将训练集中的数据分开,还要有较好的泛化性能,需要把测试集中的数据也划分开。从直观上看,绿色实线是比较好的一个划分,因为该直线距离两类数据点均较远,对于数据局部扰动的容忍性较好,能够以较大的置信度将数据进行分类。
所以,距离两类数据点间隔最大的超平面为最好的分类面,两类数据点距离超平面的间隔(margin)如下图,假设图中两条虚线的表达式为wTx+b=−1\boldsymbol{w}^T\boldsymbol{x}+b=-1wTx+b=−1和wTx+b=1\boldsymbol{w}^T\boldsymbol{x}+b=1wTx+b=1 (为什么等号右边为1?因为若wTx+b=c\boldsymbol{w}^T\boldsymbol{x}+b=cwTx+b=c,令w=w/c\boldsymbol{w}=\boldsymbol{w}/cw=w/c,b=b/cb=b/cb=b/c即可,w\boldsymbol{w}w和bbb是要学习的参数,其大小是随等式右边的常数变化的),那么,中间分类面的表达式为wTx+b=0\boldsymbol{w}^T\boldsymbol{x}+b=0wTx+b=0。为方便计算,将两类数据的标签设为±1\pm1±1,蓝色圆点为y=−1y=-1y=−1,红色方块为y=1y=1y=1,如果分类超平面能将两类数据正确分类,那么就有
{wTxi+b≥1yi=1wTxi+b≤−1yi=−1\begin{cases}\boldsymbol{w}^T \boldsymbol{x}_i + b \geq 1 & y_i = 1 \\ \boldsymbol{w}^T \boldsymbol{x}_i + b \leq -1 & y_i = -1 \end{cases}{wTxi+b≥1wTxi+b≤−1yi=1yi=−1
并且两类数据到超平面的距离之和,也就是间隔为:
2∣∣w∣∣\dfrac{2}{||\boldsymbol{w}||}∣∣w∣∣2
要找到间隔最大的超平面,就是使2∣∣w∣∣\dfrac{2}{||\boldsymbol{w}||}∣∣w∣∣2最大,也即12∣∣w∣∣2\dfrac{1}{2}{||\boldsymbol{w}||}^221∣∣w∣∣2最小,同时满足
{wTxi+b≥1yi=1wTxi+b≤−1yi=−1\begin{cases}\boldsymbol{w}^T \boldsymbol{x}_i + b \geq 1 & y_i = 1 \\ \boldsymbol{w}^T \boldsymbol{x}_i + b \leq -1 & y_i = -1 \end{cases}{wTxi+b≥1wTxi+b≤−1yi=1yi=−1
这个需要满足的条件可简化为yi(wTxi+b)≥1y_i (\boldsymbol{w}^T\boldsymbol{x}_i+b) \geq 1yi(wTxi+b)≥1,最终,寻找具有最大间隔的划分超平面转化为一个有约束的最优化问题
min12∣∣w∣∣2min \dfrac{1}{2} ||\boldsymbol{w}||^2min21∣∣w∣∣2
s.t.yi(wTxi+b)≥1,i=1,⋯ ,ns.t. \quad y_i (\boldsymbol{w}^T \boldsymbol{x}_i + b) \geq 1 , \quad i = 1, \cdots, ns.t.yi(wTxi+b)≥1,i=1,⋯,n
其中,约束里的等号在上图中绿色虚线穿过的点处成立,这些点距离超平面最近,被称为“支持向量”(Support Vector),后面我们会看到,分类超平面仅由支持向量决定,这就是线性可分支持向量机的基本模型。
2. 对偶问题
为了求解上述有约束的最优化问题,应用拉格朗日对偶性,通过求解对偶问题(dual problem)得到原始问题(primal problem)的最优解,这样求解的优点是:1. 对偶问题通常更容易求解,2. 自然引入核函数,进而推广到非线性分类的情况[2]。
2.1 拉格朗日对偶性
首先给出原始问题,设f(x)f(x)f(x),ci(x)c_i(x)ci(x),hj(x)h_j(x)hj(x)是定义在Rn\boldsymbol{R}^nRn上的连续可微函数,给定如下原始问题
minxf(x)\min \limits_{x}f(x)xminf(x)
s.t. ci(x)≤0,i=1,2,...,k\text{s.t. } c_i(x) \leq 0, \quad i = 1,2,...,ks.t. ci(x)≤0,i=1,2,...,k
hj(x)=0,j=1,2,...,l\text{ } \quad h_j(x) = 0, \quad j = 1,2,...,l hj(x)=0,j=1,2,...,l
其拉格朗日函数(Lagrange function)为
L(x,α,β)=f(x)+∑i=1kαici(x)+∑j=1lβjhj(x)L(x,\alpha, \beta ) = f(x) + \sum\limits_{i=1}^k \alpha_i c_i(x) + \sum\limits_{j=1}^l \beta_j h_j(x)L(x,α,β)=f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)
其中,αi\alpha_iαi,βj\beta_jβj为拉格朗日乘子,并且αi≥0\alpha_i \geq 0αi≥0,考虑xxx的函数
θP(x)=maxα,β;αi≥0L(x,α,β)\theta_P(x) = \max \limits_{\alpha,\beta; \alpha_i \geq 0}L(x,\alpha, \beta)θP(x)=α,β;αi≥0maxL(x,α,β)
如果xxx违反原问题的约束条件,即存在i∈{1,...,k}i \in \{1,...,k\}i∈{1,...,k}使得ci(x)>0c_i(x)>0ci(x)>0或者存在j∈{1,...,l}j \in \{1,...,l\}j∈{1,...,l}使得hj(x)≠0h_j(x) \neq 0hj(x)̸=0,那么就可以令αi→+∞\alpha_i \rightarrow +\inftyαi→+∞,或者令βjhj(x)→+∞\beta_j h_j(x) \rightarrow + \inftyβjhj(x)→+∞,从而
θP(x)=maxα,β;αi≥0[f(x)+∑i=1kαici(x)+∑j=1lβjhj(x)]=+∞\theta_P(x) = \max \limits_{\alpha,\beta; \alpha_i \geq 0}{[f(x) + \sum\limits_{i=1}^k \alpha_i c_i(x) + \sum\limits_{j=1}^l \beta_j h_j(x)]} = +\inftyθP(x)=α,β;αi≥0max[f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)]=+∞
相反,如果xxx满足原问题的约束条件,则可令αi=0\alpha_i = 0αi=0,βj=0\beta_j = 0βj=0,使得θP(x)=f(x)\theta_P(x) = f(x)θP(x)=f(x)
因此有
θP(x)={f(x)x满足原始问题约束+∞x违反原问题约束\theta_P(x) = \begin{cases} f(x) & x\text{满足原始问题约束} \\ +\infty & x\text{违反原问题约束}
\end{cases}θP(x)={f(x)+∞x满足原始问题约束x违反原问题约束
所以,原问题就可以转化为最小化θP(x)\theta_P(x)θP(x),即
minxθP(x)=minxmaxα,β;αi≥0L(x,α,β)\min\limits_{x} \theta_P(x) = \min\limits_{x}\max\limits_{\alpha,\beta;\alpha_i \geq 0} L(x,\alpha,\beta)xminθP(x)=xminα,β;αi≥0maxL(x,α,β)
该问题取最小值时,xxx是满足原始问题的约束的。接下来构造其对偶问题,首先定义α\alphaα和β\betaβ的函数
θD(α,β)=minxL(x,α,β)\theta_D(\alpha, \beta) = \min\limits_{x} {L(x,\alpha,\beta)}θD(α,β)=xminL(x,α,β)
再对上式最大化
maxα,β;αi≥0θD(α,β)=maxα,β;αi≥0minxL(x,α,β)\max\limits_{\alpha,\beta;\alpha_i \geq 0} \theta_D(\alpha, \beta) = \max\limits_{\alpha,\beta;\alpha_i \geq 0} \min\limits_{x} {L(x,\alpha,\beta)}α,β;αi≥0maxθD(α,β)=α,β;αi≥0maxxminL(x,α,β)
将该式表示有约束的最优化问题就得到了原始问题的对偶问题:
maxα,βθD(α,β)=maxα,βminxL(x,α,β)\max\limits_{\alpha,\beta}{\theta_D(\alpha,\beta)} = \max\limits_{\alpha,\beta}{\min\limits_{x}{L(x,\alpha,\beta)}}α,βmaxθD(α,β)=α,βmaxxminL(x,α,β)
s.t. αi≥0,i=1,...,k\text{s.t. } \alpha_i \geq 0, i = 1,...,ks.t. αi≥0,i=1,...,k
那么原始问题和对偶问题的解存在什么关系呢?记原始问题的最优值为p∗=minxθP(x)p^* = \min\limits_{x}{\theta_P(x)}p∗=xminθP(x),对偶问题的最优值为d∗=maxα,β;αi≥0θD(α,β)d^* = \max\limits_{\alpha,\beta; \alpha_i \geq 0}{\theta_D(\alpha,\beta)}d∗=α,β;αi≥0maxθD(α,β),那么有d∗≤p∗d^* \leq p^*d∗≤p∗,此处不再证明,可简单理解为(最大值中的最小值)大于等于(最小值中的最大值)。在什么条件下等号成立呢?这个条件就是强对偶(strong duality),并且在强对偶前提下,如果x∗x^\astx∗和α∗\alpha^\astα∗, β∗\beta^\astβ∗分别是原始问题和对偶问题的可行解,则x∗x^\astx∗和α∗\alpha^\astα∗, β∗\beta^\astβ∗ 分别是原始问题和对偶问题的最优解,此时可以用解对偶问题替代解原始问题。但是强对偶条件是一个比较严格的约束,一般情况下无法满足,如果原问题满足一定的条件,就比较容易达到强对偶,这些条件就叫做约束规范 (constraint qualifications)。适用于SVM的约束规范是Slater条件,即原问题是一个凸优化问题(f(x)f(x)f(x)和ci(x)c_i(x)ci(x)均是凸函数),并且存在xxx,使所有的等式约束成立,不等式约束严格成立(ci(x)<0c_i(x)<0ci(x)<0)。在满足这些条件的前提下,有学者提出了x∗x^\astx∗和α∗\alpha^\astα∗, β∗\beta^\astβ∗分别是原始问题和对偶问题的最优解的充分必要条件:KKT条件(Karush–Kuhn–Tucker conditions)
1. ci(x∗)≤0,hj(x∗)=0,i=1,...,k,j=1,...,lc_i(x^\ast) \leq 0, h_j(x^\ast) = 0, i=1,...,k, j = 1,...,lci(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\nabla f(x^\ast)+\sum\limits_{i=1}^k \alpha_i \nabla c_i(x^\ast) + \sum\limits_{j=1}^l \beta_j \nabla h_j(x^\ast) = 0∇f(x∗)+i=1∑kαi∇ci(x∗)+j=1∑lβj∇hj(x∗)=0
3. αi≥0,αici(x∗)=0,βj≠0\alpha_i \geq 0, \alpha_i c_i(x^\ast) = 0, \beta_j \ne 0αi≥0,αici(x∗)=0,βj̸=0
其中,αici(x∗)=0\alpha_i c_i(x^\ast)=0αici(x∗)=0称为KKT的互补松弛条件(Complementary slackness),由此可知,若αi>0\alpha_i > 0αi>0,则必有ci(x∗)=0c_i(x^\ast) = 0ci(x∗)=0
2.2 SVM的对偶问题
回顾一下SVM的原问题,
min12∣∣w∣∣2min \dfrac{1}{2} ||\boldsymbol{w}||^2min21∣∣w∣∣2
s.t.yi(wTxi+b)≥1,i=1,⋯ ,ns.t. \quad y_i (\boldsymbol{w}^T \boldsymbol{x}_i + b) \geq 1 , \quad i = 1, \cdots, ns.t.yi(wTxi+b)≥1,i=1,⋯,n
构造拉格朗日函数:
L(w,b,λ)=12wTw+∑i=1nλi(1−yi(wTxi+b)),λi≥0L(\boldsymbol{w}, b, \boldsymbol{\lambda}) = \dfrac{1}{2} \boldsymbol{w}^T \boldsymbol{w} + \sum\limits_{i = 1}^n {\lambda_i (1- y_i(\boldsymbol{w}^T \boldsymbol{x}_i + b))}, \quad \lambda_i \geq 0L(w,b,λ)=21wTw+i=1∑nλi(1−yi(wTxi+b)),λi≥0
可以将原问题等价为:
minw,bθP(w,b)=minw,bmaxλ;λi≥0L(w,b,λ)\min\limits_{\boldsymbol{w},b} \theta_P(\boldsymbol{w},b) = \min\limits_{\boldsymbol{w},b}\max\limits_{\boldsymbol{\lambda};\lambda_i \geq 0} L(\boldsymbol{w}, b, \boldsymbol{\lambda})w,bminθP(w,b)=w,bminλ;λi≥0maxL(w,b,λ)
易知,原问题满足Slater条件,所以也满足KKT条件,可以将原问题转化为对偶问题进行求解,即求
maxλθD(λ)=maxλminw,bL(w,b,λ)\max\limits_{\boldsymbol{\lambda}} \theta_D(\boldsymbol{\lambda}) = \max\limits_{\boldsymbol{\lambda}} \min\limits_{\boldsymbol{w}, b} L(\boldsymbol{w}, b, \boldsymbol{\lambda})λmaxθD(λ)=λmaxw,bminL(w,b,λ)
s.t. λi≥0,i=1,...,n\text{s.t. } \lambda_i \geq 0, i = 1,...,ns.t. λi≥0,i=1,...,n
首先求内部的项minw,bL(w,b,λ)\min\limits_{\boldsymbol{w}, b} L(\boldsymbol{w}, b, \boldsymbol{\lambda})w,bminL(w,b,λ),令L(w,b,λ)L(\boldsymbol{w}, b, \boldsymbol{\lambda})L(w,b,λ) 对w\boldsymbol{w}w和bbb的导数为0
∂L∂w=w−∑i=1nλiyixi=0\dfrac{\partial{L}}{\partial{\boldsymbol{w}}} = \boldsymbol{w} - \sum\limits_{i = 1}^n {\lambda_i y_i \boldsymbol{x}_i = 0}∂w∂L=w−i=1∑nλiyixi=0
∂L∂b=−∑i=1nλiyi=0\dfrac{\partial{L}}{\partial{b}} = - \sum\limits_{i = 1}^n {\lambda_i y_i} = 0∂b∂L=−i=1∑nλiyi=0
因此有w=∑i=1nλiyixi\boldsymbol{w} = \sum\limits_{i = 1}^n {\lambda_i y_i \boldsymbol{x}_i}w=i=1∑nλiyixi,并且∑i=1nλiyi=0\sum\limits_{i = 1}^n {\lambda_i y_i} = 0i=1∑nλiyi=0。把w\boldsymbol{w}w代入L(w,b,λ)L(\boldsymbol{w}, b, \boldsymbol{\lambda})L(w,b,λ)得
L(λ)=12∑i=1nλiyixiT∑j=1nλjyjxj+∑i=1nλi(1−yi(∑j=1nλjyjxjTxi+b))=12∑i=1n∑j=1nλiλjyiyjxiTxj+∑i=1nλi−∑i=1n∑j=1nλiλjyiyjxiTxj−∑i=1nλiyib=−12∑i=1n∑j=1nλiλjyiyjxiTxj+∑i=1nλi\begin{aligned} L(\boldsymbol\lambda) &= \dfrac{1}{2} \sum\limits_{i = 1}^n {\lambda_i y_i \boldsymbol{x}_i^T} \sum\limits_{j = 1}^n {\lambda_j y_j \boldsymbol{x}_j} + \sum\limits_{i = 1}^n {\lambda_i (1 - y_i (\sum\limits_{j = 1}^n \lambda_j y_j \boldsymbol{x_j}^T \boldsymbol{x}_i + b))} \\ &= \dfrac{1}{2}\sum\limits_{i = 1}^n {\sum\limits_{j = 1}^n {\lambda_i \lambda_j y_i y_j \boldsymbol{x}_i^T \boldsymbol{x}_j}} + \sum\limits_{i = 1}^n {\lambda_i} - \sum\limits_{i = 1}^n {\sum\limits_{j = 1}^n {\lambda_i \lambda_j y_i y_j \boldsymbol{x}_i^T \boldsymbol{x}_j}} - \sum\limits_{i = 1}^n {\lambda_i y_i b} \\ &= -\dfrac{1}{2} \sum\limits_{i = 1}^n {\sum\limits_{j = 1}^n {\lambda_i \lambda_j y_i y_j \boldsymbol{x}_i^T \boldsymbol{x}_j}} + \sum\limits_{i = 1}^n {\lambda_i} \end{aligned}L(λ)=21i=1∑nλiyixiTj=1∑nλjyjxj+i=1∑nλi(1−yi(j=1∑nλjyjxjTxi+b))=21i=1∑nj=1∑nλiλjyiyjxiTxj+i=1∑nλi−i=1∑nj=1∑nλiλjyiyjxiTxj−i=1∑nλiyib=−21i=1∑nj=1∑nλiλjyiyjxiTxj+i=1∑nλi
该问题转化成只包含λ\boldsymbol{\lambda}λ的最优化问题,求出λ\boldsymbol{\lambda}λ就可以求出w\boldsymbol{w}w和bbb。将L(λ)L(\boldsymbol{\lambda})L(λ)取负数,把最大化转化为最小化
minλL(λ)=12∑i=1n∑j=1nλiλjyiyjxiTxjT−∑i=1nλi\min\limits_{\boldsymbol\lambda} \quad L(\boldsymbol{\lambda}) = \dfrac{1}{2} \sum\limits_{i = 1}^n {\sum\limits_{j = 1}^n {\lambda_i \lambda_j y_i y_j \boldsymbol{x}_i^T \boldsymbol{x}_j^T}} - \sum\limits_{i = 1}^n {\lambda_i}λminL(λ)=21i=1∑nj=1∑nλiλjyiyjxiTxjT−i=1∑nλi
s.t.λi≥0,∑i=1nλiyi=0,i=1,...,ns.t. \quad \lambda_i \geq 0, \quad \sum\limits_{i = 1}^n {\lambda_i y_i} = 0, \quad i = 1,...,ns.t.λi≥0,i=1∑nλiyi=0,i=1,...,n
该问题为二次规划问题,存在全局最优解,设最优解为λ=(λ1∗,...,λn∗)\boldsymbol\lambda = (\lambda_1^*,...,\lambda_n^*)λ=(λ1∗,...,λn∗),那么就可以计算原始问题的最优解w∗=∑i=1nλi∗yixi\boldsymbol{w}^* = \sum\limits_{i=1}^n {\lambda_i^* y_i \boldsymbol{x}_i}w∗=i=1∑nλi∗yixi。
由KKT的对偶松弛条件可知,如果λi∗≠0\lambda_i^* \ne 0λi∗̸=0,则有1−yi(w∗Txi+b)=01-y_i({\boldsymbol{w}^*}^T \boldsymbol{x}_i+b) = 01−yi(w∗Txi+b)=0,由于y∈{+1,−1}y \in \{+1, -1\}y∈{+1,−1},因此
b∗=yi−w∗Txi=yi−∑j=1nλj∗yjxjTxib^* = y_i - {\boldsymbol{w}^*}^T \boldsymbol{x}_i = y_i - \sum\limits_{j=1}^n {\lambda_j^* y_j \boldsymbol{x}_j^T \boldsymbol{x_i}}b∗=yi−w∗Txi=yi−j=1∑nλj∗yjxjTxi
在预测阶段,对于新数据点z\boldsymbol{z}z,计算
y^=w∗Tz+b∗=∑i=1nλi∗yixiTz+b∗\hat{y} = {\boldsymbol{w}^*}^T \boldsymbol{z} + b^* = \sum\limits_{i=1}^n {\lambda_i^* y_i \boldsymbol{x}_i^T \boldsymbol{z}} + b^*y^=w∗Tz+b∗=i=1∑nλi∗yixiTz+b∗
如果y^>0\hat{y} > 0y^>0,则将z\boldsymbol{z}z分为正类,否则分为负类。
3. SVM进一步分析
等式1−yi(w∗Txi+b)=01-y_i({\boldsymbol{w}^*}^T \boldsymbol{x}_i +b) = 01−yi(w∗Txi+b)=0对应的是下图中分类超平面两侧的虚线,再向两侧延伸,就会有1−yi(w∗Txi+b)≤01-y_i({\boldsymbol{w}^*}^T \boldsymbol{x}_i +b) \leq 01−yi(w∗Txi+b)≤0,由于λi∗(1−yi(w∗Txi+b))=0\lambda_i^*(1-y_i({\boldsymbol{w}^*}^T \boldsymbol{x}_i +b)) = 0λi∗(1−yi(w∗Txi+b))=0,所以,对于两条虚线外侧的点,其对应的λi=0\lambda_i = 0λi=0。事实上,只有少数的点会落在分类超平面两侧的虚线上,这些点是距离分类超平面最近的点,被称为支持向量。由w∗=∑i=1nλi∗yixi\boldsymbol{w}^* = \sum\limits_{i=1}^n {\lambda_i^* y_i \boldsymbol{x}_i}w∗=i=1∑nλi∗yixi和b∗=yi−∑j=1nλj∗yjxjTxib^* =y_i - \sum\limits_{j=1}^n {\lambda_j^* y_j \boldsymbol{x}_j^T \boldsymbol{x_i}}b∗=yi−j=1∑nλj∗yjxjTxi可知,分类超平面仅由支持向量来决定,所以支持向量机具有较高的稀疏性。
支持向量机建立问题的思路是找到距离分类超平面最近的点,通过最大化这些点之间的间隔来求解,间隔最大化的平面具有较高的鲁棒性。
[1] Cortes C, Vapnik V. Support-vector networks. Machine learning. 1995 Sep 1;20(3):273-97.
[2] 李航. 统计学习方法,清华大学出版社,2012.