支持向量机

支持向量机

支持向量机(Support Vector Machine)是一种针对二分类任务设计的分类器,它的理论相对于神经网络模型来说更加完备和严密,在某些DL神经网络的输出层也会使用SVM用来分类(例如R-CNN)。

下面我们将会探讨:

  • 间隔与支持向量:如何计算空间中任意一点到超平面的距离?什么是支持向量?什么是间隔?支持向量机求解的目标是什么?
  • 对偶问题:求取最大间隔等价于怎样的对偶问题?KKT条件揭示出支持向量机的什么性质?如何用SMO算法进行高效求解?为什么SMO算法能高效求解?
  • 核函数:如何处理非线性可分问题?什么是核函数?为什么需要核函数?有哪些常用的核函数?核函数具有什么性质?
  • 软间隔与正则化:如何应对过拟合问题?软间隔和硬间隔分别指什么?如何求解软间隔支持向量机?0/1损失函数有哪些可选的替代损失函数?支持向量机和回归对率模型(Logistic regression)有什么联系?支持向量回归的支持向量满足什么条件?
  • 核方法:什么是表示定理?什么是核方法?如何应用?

间隔与支持向量

给定一个二分类数据集,正类标记为+1,负类标记为-1(对率回归中负类标记是0,这点是不同的)

分类学习对基本的想法就是基于训练集D在样本空间中找到一个划分超平面、将不同类别的样本分开,但这样的超平面有很多个,我们该选取哪一个呢?

存在多个划分超平面将两类训练样本分开

支持向量

直观上看,我们应该找位于两类样本“正中间”的划分超平面,即上图中红色的那个,因为该划分超平面对训练样本局部扰动的“容忍”性最好。即这个划分超平面所产生的分类结果是 最鲁棒的泛化能力最强

上图的红色实现就是划分超平面,在线性表模型中通过线线方程 ω T x + b = 0 \omega^Tx+b = 0 ωTx+b=0. ω \omega ω是线性模型的投影向量,也是划分超平面的法向量,决定着法向量的方向。偏置项b又被成为位置项决定了超平面和空间原点之间的距离

假定超平面能够将所有训练样本正确分类,也即对所有标记为+1的点有 ω T x + b > 0 \omega^Tx+b > 0 ωTx+b>0,所有标记为-1的点有 ω x + b < 0 \omega^x+b < 0 ωx+b<0.只要这个超平面存在,那么我们必然可以对 ω \omega ω和b进行适当的线性缩放,使得:
w T x + b ≥ 1 , y i = + 1 w T x + b ≤ 1 , y i = − 1 w^T x+ b \ge 1,y_i = +1 \\ w^T x +b \le 1,y_i = -1 wTx+b1,yi=+1wTx+b1,yi=1

在这里插入图片描述
而SVM中定义 使得上式等号成立的训练样本点 就是 支持向量 (如果叫做 支持点 可能更好理解一些,因为事实上就是样本空间中的数据点,但因为在表示数据点的时候一般写成向量形式,所以就称为 支持向量),它们是距离超平面最近的几个样本点,也即上图两条虚线上的点。(当然,也可能出现比支持向量距离超平面更近的点,这跟 软间隔 有关,这里先不讨论)。

在SVM中,我们希望实现的是 最大化两类支持向量到超平面的距离

那首先就需要知道怎么计算距离,怎样计算样本空间中任意数据点到划分超平面的距离呢?

方法:假设直线方程为 a x 1 + b x 2 + c = 0 ax_1 + bx_2 + c =0 ax1+bx2+c=0,那么有点到直线距离公式:
r = ∣ a x 1 + b x 2 + c ∣ a 2 + b 2 r = \frac {|ax_1 + bx_2 + c|}{\sqrt {a^2+b^2}} r=a2+b2 ax1+bx2+c
令w = (a,b),x = (x1,x2),则可以把 a x 1 + b x 2 ax_1+bx_2 ax1+bx2写成向量形式 w T x w^Tx wTx.把截距项设为b,则直线方程变为 w T x + b = 0 w^Tx+b=0 wTx+b=0,代入距离公式得:
r = w T x + b w T w = w T x + b ∣ ∣ w ∣ ∣ r = \frac {w^Tx+b}{\sqrt {w^Tw}} = \frac {w^Tx+b}{||w||} r=wTw wTx+b=wwTx+b

该式扩展到多维情况下也是通用的。

间隔

希望实现的是 最大化两类支持向量到超平面的距离之和,而根据定义,所有支持向量都满足:
w T x + b = + 1 , y i = + 1 w T x + b = − 1 , y i = − 1 w^Tx+b=+1,y_i=+1\\ w^Tx+b=-1,y_i=-1 wTx+b=+1,yi=+1wTx+b=1,yi=1

代入前面的距离公式:

r = w T x + b ∣ ∣ w ∣ ∣ r = \frac {w^Tx+b}{||w||} r=wwTx+b

可以得到支持向量到超平面的距离为 1 ∣ ∣ w ∣ ∣ \frac 1{||w||} w1

定义 间隔两个异类超平面的距离之和

γ = 2 ⋅ 1 ∣ ∣ w ∣ ∣ = 2 ∣ ∣ w ∣ ∣ \gamma =2 ·\frac 1{||w||} = \frac 2{||w||} γ=2w1=w2

SVM的目标是找到 具有最大间隔(maximum margin)的划分超平面,也即找到使 γ \gamma γ最大的w和b:

max ⁡ w , b 2 ∣ ∣ w ∣ ∣      s . t . y i ( w T x + b ) ≥ 1 , i = 1 , 2 , ⋯   , m \max_{w,b} \frac 2{||w||} \ \ \ \ s.t.y_i(w^Tx+b)\ge1,i=1,2,\cdots,m maxw,bw2    s.t.yi(wTx+b)1,i=1,2,,m

约束部分指的是全部样本都被正确分类,此时标记值(+1 或 -1)呈上预测值必定是一个 ≥ 1 \ge1 1的数值。看上去间隔大小只与w有关,但实际上位移项也通过约束影响取值,进而对间隔产生影响。

由于最大化 ∣ ∣ w ∣ ∣ − 1 ||w||^{-1} w1等价于最小化 ∣ ∣ w ∣ ∣ 2 ||w||^2 w2,所以可以重写 目标函数 为:

min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2      s . t . y i ( w T x + b ) ≥ 1 , i = 1 , 2 , ⋯   , m           ( 1 ) \min_{w,b} \frac 12||w||^2 \ \ \ \ s.t.y_i(w^Tx+b)\ge1,i=1,2,\cdots,m\ \ \ \ \ \ \ \ \ (1) minw,b21w2    s.t.yi(wTx+b)1,i=1,2,,m         (1)

引入 1 2 \frac 12 21是为了求导时可以消去平方项的2,这边是 支持向量机的基本模型

特别地,还有以下定义:

  • 函数间隔 y i ( w T + b ) y_i(w^T+b) yi(wT+b)
  • 几何间隔: y i ( w T + b ) ∣ ∣ w ∣ ∣ 2 \frac {y_i(w^T+b)}{||w||^2} w2yi(wT+b)

对偶问题

式(1)是一个带约束的凸二次规划问题(凸优化问题就意味着必定能求到全局最优解,而不会陷入局部最优解)。对于这样的问题,可以直接采取现成的优化计算包求解,但下面将介绍的是一种更高效的方法。

在开始介绍这种方法之前,我们先需要明确几个概念,拉格朗日乘子法KKT条件

拉格朗日乘子法:

为什么需要使用 拉格朗日乘子法 呢?记住,有拉格朗日乘子法的地方,必然是一个组合优化问题。比如下面的这个:
min ⁡ f = 2 x 1 2 + 3 x 2 2 + 3 x 3 2     s . t . { 2 x 1 + x 2 = 1 2 x 2 + 3 x 3 = 2 \min f = 2x_1^2+3x_2^2+3x_3^2 \ \ \ s.t.\begin{cases}2x_1+x_2=1\\ 2x_2+3x_3=2\end{cases} minf=2x12+3x22+3x32   s.t.{2x1+x2=12x2+3x3=2

这是一个带等式的优化问题,有目标值,有约束条件。那么你可以想想,假设没有这个约束条件这个问题是怎么求解的呢?

若问题是一个凸优化问题,可以直接f对x求导等于0。但若是不是凸优化问题呢?

凸优化问题就是开口朝向一个方向(向上或者向下),更准确的数学公式是:
f ( x 1 ) + f ( x 2 ) 2 > f ( x 1 + x 2 2 ) \frac {f(x_1)+f(x_2)}{2} > f(\frac {x_1+x_2}{2}) 2f(x1)+f(x2)>f(2x1+x2)或者
f ( x 1 ) + f ( x 2 ) 2 < f ( x 1 + x 2 2 ) \frac {f(x_1)+f(x_2)}{2} < f(\frac {x_1+x_2}{2}) 2f(x1)+f(x2)<f(2x1+x2)

拉格朗日乘子法一定适用于 凸优化 问题,但不一定适用于其他问题。

有了约束不能直接求导,那么就要想办法将约束去掉,怎么去掉呢?我们把约束乘以一个系数加到目标函数中去,这样就相当于既考虑了原目标函数,也考虑了约束条件

L ( w , b , α ) = f + α 1 ( 2 x 1 + x 2 ) + α 2 ( 2 x 2 + 3 x 3 ) L(w,b,\alpha)=f+\alpha_1(2x_1+x_2)+\alpha_2(2x_2+3x_3) L(w,b,α)=f+α1(2x1+x2)+α2(2x2+3x3)

然后分别对 x 1 、 x 2 、 x 3 x_1、x_2、x_3 x1x2x3求导,解得x为含 α \alpha α的式子,带回约束条件,即可求解。

等式约束我们找到了解决方案,那么如果约束条件是不等式呢?就需要用KKT条件来解决这种问题了。

KKT条件:

约束条件无非就是等于、大于、小于,而经过一些变化都可以转变为约束方程小于0和等于0,举个简单的例子。假设原始约束条件为下列所示:
min ⁡ f = x 1 2 − 2 x 1 + 1 + x 2 2 + 4 x 2 + 4   s . t . { x 1 + 10 x 2 > 10 10 x 1 − 10 x 2 < 10 \min f = x_1^2 - 2x_1+1+x_2^2+4x_2+4 \ s.t.\begin{cases}x_1+10x_2>10\\10x_1-10x_2<10\end{cases} minf=x122x1+1+x22+4x2+4 s.t.{x1+10x2>1010x110x2<10

那么把约束条件变个样子:

s . t .     { 10 − x 1 − 10 x 2 < 0 10 x 1 − x 2 − 10 < 0 s.t. \ \ \ \begin{cases}10-x_1-10x_2<0\\10x_1-x_2-10<0\end{cases} s.t.   {10x110x2<010x1x210<0

将不等式都变为小于号

现在将约束拿到目标函数就变为:
L ( x , a ) = f ( x ) + α 1 g 1 ( x ) + α 2 g 2 ( x ) = x 1 2 − 2 x 1 + 1 + x 2 2 + 4 x 2 + 4 + α 1 ( 10 − x 1 − 10 x 2 ) + α 2 ( 10 x 1 − x 2 − 10 ) L(x,a)=f(x)+\alpha_1g1(x)+\alpha_2g2(x)\\=x_1^2-2x_1+1+x_2^2+4x_2+4+\alpha_1(10-x_1-10x_2)+\alpha_2(10x_1-x_2-10) L(x,a)=f(x)+α1g1(x)+α2g2(x)=x122x1+1+x22+4x2+4+α1(10x110x2)+α2(10x1x210)

那么KKT条件的定理是什么呢?就是如果一个优化问题在转变后变为:
L ( x , α , β ) = f ( x ) + ∑ α i g i ( x ) + ∑ β i h i ( x ) L(x,\alpha,\beta)=f(x)+\sum\alpha_ig_i(x)+\sum\beta_ih_i(x) L(x,α,β)=f(x)+αigi(x)+βihi(x)

其中g是不等式约束,h是等式约束,KKT条件就是函数最优值时x满足:

  1. L对各个x求导为0
  2. h(x)=0;
  3. ∑ α i g i ( x ) = 0 , α i ≥ 0 \sum\alpha_ig_i(x)=0,\alpha_i\ge0 αigi(x)=0,αi0

前两个式子比较好理解,对于第三个式子来说, g ( x ) ≤ 0 且 α ≥ 0 g(x)\le0且\alpha\ge0 g(x)0α0,而 g i ( x ) α i g_i(x)\alpha_i gi(x)αi求和等于0,所以要么g(x)=0,要么 α \alpha α等于0

SVM的拉格朗日乘子法:

为式(1)的每条约束添加拉格朗日乘子 α i ≥ 0 \alpha_i\ge0 αi0(对应m个样本的m条约束),得到该问题的拉格朗日函数:
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) )     ( 2 ) L(w,b,\alpha)=\frac 12||w||^2+\sum_{i=1}^m\alpha_i(1-y_i(w^Tx_i+b))\ \ \ (2) L(w,b,α)=21w2+i=1mαi(1yi(wTxi+b))   (2)

解析:
南瓜书——https://datawhalechina.github.io/pumpkin-book/#/
南瓜书——https://datawhalechina.github.io/pumpkin-book/#/

其中 α = ( α 1 , α 2 , ⋯   ; α m ) \alpha=(\alpha_1,\alpha_2,\cdots;\alpha_m) α=(α1,α2,;αm),对拉格朗日函数求w和b的偏导,并令偏导为0可以得到:

w = ∑ i = 1 m α i y i x i          ( 3 ) 0 = ∑ i = 1 m α i y i               ( 4 ) w = \sum_{i=1}^m\alpha_iy_ix_i \ \ \ \ \ \ \ \ (3)\\ 0=\sum_{i=1}^m\alpha_iy_i \ \ \ \ \ \ \ \ \ \ \ \ \ (4) w=i=1mαiyixi        (3)0=i=1mαiyi             (4)

解析:南瓜书——https://datawhalechina.github.io/pumpkin-book/#/
南瓜书——https://datawhalechina.github.io/pumpkin-book/#/

将(3)代入(2)可以消去w,又因为式(2)中b的系数是 α i y i \alpha_iy_i αiyi,由式(4)可知b也可以消去。然后再考虑(4)的约束就得到了式(1)的 对偶问题(dual problem):
W ( α ) = max ⁡ ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j      s . t . ∑ i = 1 m α i y i = 0 , α i ≥ 0 , i = 1 , 2 ⋯   , m      ( 5 ) W(\alpha)=\max\sum_{i=1}^m\alpha_i-\frac 12\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jx_i^Tx_j\ \ \ \ s.t.\sum_{i=1}^m\alpha_iy_i=0,\alpha_i\ge0,i=1,2\cdots,m\ \ \ \ (5) W(α)=maxi=1mαi21i=1mj=1mαiαjyiyjxiTxj    s.t.i=1mαiyi=0,αi0,i=1,2,m    (5)

解析:
在这里插入图片描述
南瓜书——https://datawhalechina.github.io/pumpkin-book/#/

只要求出该对偶问题的解a,就可以退出w和b,从而得出模型:
f ( x ) = w T x + b = ∑ i = 1 m α i y i x i T x + b      ( 6 ) f(x)=w^Tx+b\\=\sum_{i=1}^m\alpha_iy_ix_i^Tx+b \ \ \ \ (6) f(x)=wTx+b=i=1mαiyixiTx+b    (6)

不过实际计算时一般不会直接求解 α \alpha α,特别是需要用核函数映射到高维空间时,因为映射后做内积很困难,而用少量支持向量进行表示,在原始空间进行计算显然更优,这点在后续章节会更详细讲解。

注意,由于式(1)的约束条件是 不等式约束,所以求解过程要满足 KKT条件
{ α i ≥ 0 y i f ( x i ) − 1 ≥ 0 α i ( y I f ( x i ) − 1 ) = 0 \begin{cases}\alpha_i\ge0\\ y_if(x_i)-1\ge0\\ \alpha_i(y_If(x_i)-1)=0\end{cases} αi0yif(xi)10αi(yIf(xi)1)=0

这个 KKT条件说明了,对任何一个样本 x i x_i xi来说,

  • 要么对应的拉格朗日乘子 α i \alpha_i αi为0,此时有样本 x i x_i xi对(6)毫无贡献,将不会在式(6)求和中出现,不会影响到模型,也不会对 f ( x ) f(x) f(x)有任何影响;
  • 要么 α i > 0 \alpha_i>0 αi>0,则必有函数间隔 y I f ( x i ) = 1 y_If(x_i)=1 yIf(xi)=1,此时对应的样本点 x i x_i xi位于最大间隔边界上,是一个支持向量。

它揭示了一个重要性质:训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关。

SMO算法

可以发现对偶式(5)是一个二次规划问题,可以使用通用的二次规划算法求解。但 问题的规模正比于训练样本数,因此这会在实际任务中造成很大的开销。为了避免这个障碍,人们通过利用问题本身的特性,提出了很多高效算法,可以使用高效的SMO(Sequential Minimal Optimization)算法。

对于式(5)来说,我们要解决的是在 α \alpha α上求最大值W的问题,至于 x i 和 y i x_i和y_i xiyi都是已知数,C由我们预先设定,也是已知数。

按照坐标上升的思路,我们首先固定除 α i \alpha_i αi以外的所有参数,然后再 α i \alpha_i αi上求极值。但是如果固定 α i \alpha_i αi之外的所有参数,那么 α i \alpha_i αi将不再是变量(可以由其他退出),因为问题中规定:
∑ i = 1 m α i y i = 0 ⇒ α 1 y 1 = − ∑ i = 2 m α i y i \sum_{i=1}^m\alpha_iy_i=0 \Rightarrow\\ \alpha_1y_1 = -\sum_{i=2}^m\alpha_iy_i i=1mαiyi=0α1y1=i=2mαiyi

因此,我们需要一次选取两个参数做优化,比如 α 1 和 α 2 \alpha_1和\alpha_2 α1α2,此时 α 1 和 α 2 \alpha_1和\alpha_2 α1α2可以由其他参数表示出来。这样带回带W中,W就是关于 α i \alpha_i αi的函数了。

SMO的步骤:
在这里插入图片描述

第一步,选取一对 α i 和 α j \alpha_i和\alpha_j αiαj,选取方法使用启发式方法。第二步,固定除 α i 和 α j \alpha_i和\alpha_j αiαj之外的其他参数,确定W极值条件下的 α i , α j \alpha_i,\alpha_j αi,αj α i \alpha_i αi表示。

SMO之所以高效,就是因为在固定其他参数后,对一个参数优化过程很高效

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值