机器学习: 详细推导SVM(Support Vector Machine,支持向量机)

一、什么是支持向量机?

支持向量机可以用下面的一句话进行总结:

支持向量机就是最大间隔分类器

因此,支持向量机其实就是一种分类器(大多数情况下都用于二分类)。那最大间隔是什么意思呢?

考虑下面的例子,我们希望找到一个超平面将两类样本分开。很明显的是中间加粗的划分超平面应该是最鲁棒的。假设我们将超平面上移直到遇到一个样本点(称为支持向量),我们将其定义为上边界。同样的,将它向下移动直到遇到一个样本点,我们将其定义为下边界,上下边界的距离称为间隔(margin)。观察最佳超平面的特点,我们发现它的间隔是所有候选超平面中最大的,因此我们可以通过最大化间隔来找到该最佳超平面。

对于任意一个划分超平面
w T x + b = 0 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b=0 wTx+b=0
不妨设它的上下界为
{ w T x i + b = + 1 w T x i + b = − 1 \left\{\begin{array}{l} \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b =+1 \\ \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b =-1 \end{array}\right. {wTxi+b=+1wTxi+b=1

这里这个1是任意取的,它并不影响我们对于正确超平面的求解。若超平面 ( w ′ , b ′ ) (w^{'} ,b^{'}) (w,b)能将训练样本正确分类,则总存在缩放变换 ς w ↦ w ′ \varsigma w \mapsto w^{\prime} ςww ς b ↦ b ′ \varsigma b \mapsto b^{\prime} ςbb使式上式成立。

容易知道 w w w是两个超平面(一维是就是直线)的法向量,设 x 2 , x 1 x_2,x_1 x2,x1分别是上下界的任一点,根据距离公式可得(即 x 1 − x 2 x_1-x_2 x1x2在法向量上的投影,再除以法向量的长度), 在这里我们省略标识向量的箭头符号。
∥ ( x 1 − x 2 ) ⋅ w ∥ ∥ w ∥ = ∥ w T ( x 1 − x 2 ) ∥ ∥ w ∥ = ∥ w T x 1 − w T x 2 ∥ ∥ w ∥ = ∥ 1 − b − ( − 1 − b ) ∥ ∥ w ∥ = 2 ∥ w ∥ \begin{aligned} \dfrac{\Vert{(\boldsymbol{x_1-x_2})\cdot \boldsymbol{w}}\Vert}{\Vert \boldsymbol{w}\Vert}&=\dfrac{\Vert{\boldsymbol{w}^T(\boldsymbol{x_1-x_2})}\Vert}{\Vert \boldsymbol{w}\Vert} \\ &=\dfrac{\Vert{\boldsymbol{w}^T\boldsymbol{x_1}-\boldsymbol{w}^T\boldsymbol{x_2}}\Vert}{\Vert \boldsymbol{w}\Vert} \\ &=\dfrac{\Vert1-b-(-1-b)\Vert}{\Vert \boldsymbol{w}\Vert} \\ &= \dfrac{2}{\Vert w \Vert} \end{aligned} w(x1x2)w=wwT(x1x2)=wwTx1wTx2=w1b(1b)=w2

因此,我们想要最大化这个间隔来求得相应的w,并且需要满足正确分类的约束(正确分类时 y i f ( x i ) ≥ 1 y_if(\boldsymbol{x_i}) \geq 1 yif(xi)1, 这是因为正确分类只有两种情况, y i = 1 y_i=1 yi=1时预测值在上界上面 f ( x i ) ≥ 1 f(\boldsymbol{x_i})\geq1 f(xi)1, 同样 y i = − 1 y_i=-1 yi=1时预测值在下界下面 f ( x i ) ≤ − 1 f(\boldsymbol{x_i})\leq-1 f(xi)1 ),也就是:
max ⁡ w , b 2 ∥ w ∥  s.t.  y i ( w T x i + b ) ⩾ 1 , i = 1 , 2 , … , m . \begin{aligned} \max _{\boldsymbol{w}, b} & \frac{2}{\|\boldsymbol{w}\|} \\ \text { s.t. } & y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right) \geqslant 1, \quad i=1,2, \ldots, m . \end{aligned} w,bmax s.t. w2yi(wTxi+b)1,i=1,2,,m.
上述约束公式等价于求解
min ⁡ w , b 1 2 ∥ w ∥ 2 s . t . y i ( w T x i + b ) ⩾ 1 , i = 1 , 2 , … , m . \begin{aligned} \min _{\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^{2} \\ s.t. y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right) \geqslant 1, \quad i=1,2, \ldots, m . \end{aligned} w,bmin21w2s.t.yi(wTxi+b)1,i=1,2,,m.
上述带约束的问题就是SVM的基本型,这其实是一个凸二次规划 (convex quadratic programming) 问题,能直接用现成的优化计算包求解(比如梯度下降法),但是我们可以使用下面基于下面的方法求解,更加的高效。(这个方法的过程是:拉格朗日乘子法->转换为对偶问题->SMO求解),因为拉格朗日原本就是直接求闭式解,所以必然比梯度下降或者牛顿法这种迭代的方法更加高效。

二次规划的定义:当凸优化问题的目标函数是(凸)二次型并且约束函数为仿射(仿射,即关于变量的线性组合)时,该问题称为二次规划(Quadratic Programming),二次规划可以表述为
在这里插入图片描述

二、如何求解支持向量机?

事实上,SVM的思想是非常容易理解的,但是它的推导求解是一个复杂的过程,需要一定的数学基础。

在高等数学中,带约束的优化问题很自然而然的就知道是使用拉格朗日乘子法求解,可以参考下直观理解拉格朗日乘子法

我们由上面得到了SVM基本型,可以看到,它是一个带不等式约束的优化问题,根据直观理解拉格朗日乘子法里面的介绍,它可以使用带KKT条件的拉格朗日乘子法进行求解(这个过程就是使用松弛变量将不等式约束转化为等式约束,然后就直接使用拉格朗日乘子法,由于不等式约束转化为等式约束,这个过程导出了KKT条件来对原不等式约束进行等价约束),在这里,为了读者进行对比,再次给出不等式约束条件下的拉格朗日乘子法的标准形式。
在这里插入图片描述

所以对于SVM标准型的求解可以转化为下面的拉格朗日函数最小值的求解

L ( w , b , α ) = 1 2 ∥ w ∥ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) L(\boldsymbol{w}, b, \boldsymbol{\alpha})=\frac{1}{2}\|\boldsymbol{w}\|^{2}+\sum_{i=1}^{m} \alpha_{i}\left(1-y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)\right) L(w,b,α)=21w2+i=1mαi(1yi(wTxi+b))

同时需要满足KKT条件
{ α i ⩾ 0 y i f ( x i ) − 1 ⩾ 0 α i ( y i f ( x i ) − 1 ) = 0 \left\{\begin{array}{l} \alpha_{i} \geqslant 0 \\ y_{i} f\left(\boldsymbol{x}_{i}\right)-1 \geqslant 0 \\ \alpha_{i}\left(y_{i} f\left(\boldsymbol{x}_{i}\right)-1\right)=0 \end{array}\right. αi0yif(xi)10αi(yif(xi)1)=0

上面我们说到了对偶问题?什么是对偶问题?为什么要转化为对偶问题?(一般如果转换为对偶问题,求解更简单,则使用对偶问题)

拉格朗日的对偶问题是指以下问题

d ∗ = max ⁡ λ , μ : i ≥ 0 min ⁡ x L ( x , λ , μ ) ≤ min ⁡ x max ⁡ λ , μ : i ≥ 0 L ( x , λ , μ ) = p ∗ d^{*}=\max _{\lambda, \mu: _{i} \geq 0} \min _{x} L(x, \lambda, \mu) \leq \min _{x} \max _{\lambda, \mu: _{i} \geq 0} L(x, \lambda,\mu)=p^{*} d=λ,μ:i0maxxminL(x,λ,μ)xminλ,μ:i0maxL(x,λ,μ)=p

其实在SVM中,现在的问题是 min max问题(min对于的参数是w,b,max对应的参数是 α \alpha α),然后我们需要将其转化为max min问题(因为这样求解更简单)

下面我们先简单证明下为什么现在的问题是min max问题。为了更一般化的表达,仍使用拉格朗日乘子法的标准形式进行证明,具体读者可以根据SVM的参数进行对号入座。

一般我们要求解的拉格朗日函数都是关于某个目标参数最小值,所以一般都是min max问题。根据上面图片所示的标准形式,我们现在的参数是 x , λ , μ x,\lambda,\mu x,λ,μ,欲求关于x的拉格朗日最小值,即:

Γ ( λ , μ ) = inf ⁡ x ∈ D L ( x , λ , μ ) = inf ⁡ x ∈ D ( f ( x ) + ∑ i = 1 m λ i h i ( x ) + ∑ j = 1 n μ j g j ( x ) ) \begin{aligned} \Gamma(\boldsymbol{\lambda}, \boldsymbol{\mu}) &=\inf _{\boldsymbol{x} \in \mathbb{D}} L(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{\mu}) \\ &=\inf _{\boldsymbol{x} \in \mathbb{D}}\left(f(\boldsymbol{x})+\sum_{i=1}^{m} \lambda_{i} h_{i}(\boldsymbol{x})+\sum_{j=1}^{n} \mu_{j} g_{j}(\boldsymbol{x})\right) \end{aligned} Γ(λ,μ)=xDinfL(x,λ,μ)=xDinf(f(x)+i=1mλihi(x)+j=1nμjgj(x))
这里inf表示下界。 如果 x ~ ∈ D \tilde{\boldsymbol{x}} \in \mathbb{D} x~D是可行域的解,那么根据原始的约束条件(即 h i ( x ) = 0 , g j ( x ) ≤ x h_i(x)=0,g_j(x)\leq x hi(x)=0,gj(x)x,这里只是 x ~ ∈ D \tilde{\boldsymbol{x}} \in \mathbb{D} x~D是可行域的解,而不是说 x ~ \tilde{\boldsymbol{x}} x~是最优解,因此采用的是原始的原始条件,而不是做了最优解假设的KKT条件),因此对于任意的 μ ≥ 0 \mu \geq 0 μ0 λ \lambda λ

∑ i = 1 m λ i h i ( x ) + ∑ j = 1 n μ j g j ( x ) ⩽ 0 \sum_{i=1}^{m} \lambda_{i} h_{i}(\boldsymbol{x})+\sum_{j=1}^{n} \mu_{j} g_{j}(\boldsymbol{x}) \leqslant 0 i=1mλihi(x)+j=1nμjgj(x)0

进而有
Γ ( λ , μ ) = inf ⁡ x ∈ D L ( x , λ , μ ) ⩽ L ( x ~ , λ , μ ) ⩽ f ( x ~ ) \Gamma(\boldsymbol{\lambda}, \boldsymbol{\mu})=\inf _{\boldsymbol{x} \in \mathbb{D}} L(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{\mu}) \leqslant L(\tilde{\boldsymbol{x}}, \boldsymbol{\lambda}, \boldsymbol{\mu}) \leqslant f(\tilde{\boldsymbol{x}}) Γ(λ,μ)=xDinfL(x,λ,μ)L(x~,λ,μ)f(x~)
如果原问题的最优值为 p ∗ p^* p,那对于任意的 μ ≥ 0 \mu \geq 0 μ0 λ \lambda λ
Γ ( λ , μ ) ⩽ p ∗ \Gamma(\boldsymbol{\lambda}, \boldsymbol{\mu}) \leqslant p^{*} Γ(λ,μ)p

因此,也就是说最优值的取得应该是 min max得一个过程,也就是先求一个关于 λ , μ \lambda,\mu λ,μ的拉格朗日函数最大值,然后再求关于x的最小值。
min ⁡ x max ⁡ λ , μ : i ≥ 0 L ( x , λ , μ ) \min _{x} \max _{\lambda, \mu: _{i} \geq 0} L(x, \lambda,\mu) xminλ,μ:i0maxL(x,λ,μ)

现在由于我们如果先求max L的话,对于SVM来说,这并不是一个好解的问题,因此将其SVM标准型转化为其对偶问题,即max min问题,即先求关于w,b的min,再求max。

现在我们回到SVM的具体求解(回想:我们的目标是求得最优值下的w,b, α \alpha α)。

现在用拉格朗日函数 L ( w , b , α ) = 1 2 ∥ w ∥ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) L(\boldsymbol{w}, b, \boldsymbol{\alpha})=\frac{1}{2}\|\boldsymbol{w}\|^{2}+\sum_{i=1}^{m} \alpha_{i}\left(1-y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)\right) L(w,b,α)=21w2+i=1mαi(1yi(wTxi+b))先对w和b求偏导并令其等于0,可得
w = ∑ i = 1 m α i y i x i 0 = ∑ i = 1 m α i y i \begin{aligned} \boldsymbol{w} &=\sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i} \\ 0 &=\sum_{i=1}^{m} \alpha_{i} y_{i} \end{aligned} w0=i=1mαiyixi=i=1mαiyi

接下来我们再求关于 α \alpha α的max问题,从而得到最优值处 α \alpha α的取值。由于求min过程已经得到一部分有用的信息,我们将上面两个式子代入拉格朗日函数 L ( w , b , α ) L(\boldsymbol{w}, b, \boldsymbol{\alpha}) L(w,b,α),可得
max ⁡ α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j \max _{\alpha} \sum_{i=1}^{m} \alpha_{i}-\frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j} αmaxi=1mαi21i=1mj=1mαiαjyiyjxiTxj
 s.t.  ∑ i = 1 m α i y i = 0 α i ⩾ 0 , i = 1 , 2 , … , m . \begin{array}{ll} \text { s.t. } & \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ & \alpha_{i} \geqslant 0, \quad i=1,2, \ldots, m . \end{array}  s.t. i=1mαiyi=0αi0,i=1,2,,m.
并且需满足上述的解依然需要满足KKT条件(这里求解 α \alpha α时先不考虑KKT,求解完再进行验证)
{ α i ⩾ 0 y i f ( x i ) − 1 ⩾ 0 α i ( y i f ( x i ) − 1 ) = 0 \left\{\begin{array}{l} \alpha_{i} \geqslant 0 \\ y_{i} f\left(\boldsymbol{x}_{i}\right)-1 \geqslant 0 \\ \alpha_{i}\left(y_{i} f\left(\boldsymbol{x}_{i}\right)-1\right)=0 \end{array}\right. αi0yif(xi)10αi(yif(xi)1)=0

可以看到,上面对于 α \alpha α的max过程其实是一个二次规划的问题,可以通过半正定规划、梯度下降法、拟牛顿法进行求解。;然而该问题的规模正比于训练样本数 这会在实际任务中造成很大的开销.为了避开这个障碍,人们通过利用问题本身的特性,提出了很多高效算法, SMO(Sequential Minimal Optimization)是其中一个代表。

SMO的基本思路是每次只更新一个变量 α i \alpha_i αi.他不断地迭代以下两个步骤直至收敛。
1. 选取一对需要更新的变量 α i \alpha_i αi α j \alpha_j αj
2. 固定 α i \alpha_i αi α j \alpha_j αj以外的参数,求解上述max函数获得更新后的 α i \alpha _i αi α j \alpha _j αj, 这个过程如下所示:
仅考虑 α i \alpha _i αi α j \alpha _j αj时,约束 ∑ i = 1 m α i y i = 0 \sum_{i=1}^{m} \alpha_{i} y_{i}=0 i=1mαiyi=0可以重写为:
α i y i + α j y j = c , α i ⩾ 0 , α j ⩾ 0 \alpha_{i} y_{i}+\alpha_{j} y_{j}=c, \quad \alpha_{i} \geqslant 0, \quad \alpha_{j} \geqslant 0 αiyi+αjyj=c,αi0,αj0
其中
c = − ∑ k ≠ i , j α k y k c=-\sum_{k \neq i, j} \alpha_{k} y_{k} c=k=i,jαkyk

利用上面关于 α i \alpha _i αi α j \alpha _j αj的式子,我们可以消去 α j \alpha _j αj,这时就得到了只关于 α i \alpha _i αi的单变量二次规划问题,仅有的约束是 α i ≥ 0 \alpha _i \geq 0 αi0。这样的二次规划问题是具有闭式解的(即直接公式求解),可以高效的计算出更新后的 α i \alpha _i αi α j \alpha _j αj

当所有的 α \alpha α都不再发生明显变化后,我们得到了拉格朗日函数最优值处的 α \alpha α

然后我们根据以下公式求得 w \boldsymbol{w} w

w = ∑ i = 1 m α i y i x i \boldsymbol{w} =\sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i} w=i=1mαiyixi

那么如何确定偏移项b呢?注意到对任意支持向量 ( x s , y s ) (\boldsymbol{x_s},y_s) (xs,ys), 都有 y s f ( x s ) = 1 y_sf(\boldsymbol{x_s})=1 ysf(xs)=1,即
y s ( ∑ i ∈ S α i y i x i T x s + b ) = 1 y_{s}\left(\sum_{i \in S} \alpha_{i} y_{i} \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{s}+b\right)=1 ys(iSαiyixiTxs+b)=1
因此,我们可以使用所有支持向量求 解的平均值
b = 1 ∣ S ∣ ∑ s ∈ S ( y s − ∑ i ∈ S α i y i x i T x s ) b=\frac{1}{|S|} \sum_{s \in S}\left(y_{s}-\sum_{i \in S} \alpha_{i} y_{i} \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{s}\right) b=S1sS(ysiSαiyixiTxs)

至此,通过引入带KKT条件的拉格朗日乘子法,再将其转化为对偶问题求解,该对偶问题是一个二次规划问题,最后通过SMO算法高效求解该二次规划问题,得到了最优值下 α \alpha α的取值,然后根据 α \alpha α的取值得到 w \boldsymbol{w} w和b,最终完成了对最优划分超平面的求解。

三、参考资料

【1】周志华《机器学习》
【2】Stephen Boyd 《凸优化》
【3】浅谈最优化问题的KKT条件
【4】直观理解拉格朗日乘子法

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值