6. 支持向量机(Support Vector Machine,SVM)

6.1. 相关概念

6.1.1. 分类

  • 硬间隔(Hard-margin)SVM,又叫最大间隔分类SVM;
  • 软间隔(Soft-margin)SVM;
  • 核(Kernel)SVM;

6.2. 硬间隔SVM

6.2.1. 问题定义:

  之前的分类算法中,模型致力于寻找一个超平面,可以将训练集中的两类样本分开,但这个超平面理论上存在无数个,它们在训练集上的分类效果可能是相同的,但模型的鲁棒性是不同的,为了寻找最鲁棒的模型,SVM便想要寻找一个所有样本总间隔最大的超平面
  首先定义间隔:假设通过一个超平面 f(x⃗)=sign(w⃗Tx⃗+b)f(\vec{x})=sign\left (\vec{w}^T\vec{x}+b \right )f(x )=sign(w Tx +b),可以完美拟合训练集所有样本,即对任意样本 iii,都有 yi(w⃗Tx⃗i+b)>0y_i(\vec{w}^T\vec{x}_i+b)>0yi(w Tx i+b)>0,则所有样本中最小的间隔为 margin(w⃗)=min⁡w⃗,x⃗i1∥w⃗∥∣w⃗x⃗i+b∣\text{margin}(\vec{w})=\underset{\vec{w},\vec{x}_i}{\min}\frac{1}{\left \| \vec{w} \right \|}\left | \vec{w}\vec{x}_i+b \right |margin(w )=w ,x iminw 1w x i+b
因此硬间隔SVM的优化目标即为最大化这个间隔,使得分类边界具有最高的鲁棒性,即
max⁡w⃗ margin(w⃗)=max⁡w⃗ min⁡x⃗i1∥w⃗∥∣w⃗Tx⃗i+b∣=max⁡w⃗,b 1∥w⃗∥min⁡x⃗i∣w⃗Tx⃗i+b∣,(6.1)\begin{aligned} \underset{\vec{w}}{\max} \ \text{margin}(\vec{w})&=\underset{\vec{w}}{\max}\ \underset{\vec{x}_i}{\min}\frac{1}{\left \| \vec{w} \right \|}\left | \vec{w}^T\vec{x}_i+b \right |\\ &=\underset{\vec{w},b}{\max}\ \frac{1}{\left \| \vec{w} \right \|}\underset{\vec{x}_i}{\min}\left | \vec{w}^T\vec{x}_i +b\right | ,\tag{6.1} \end{aligned}w max margin(w )=w max x iminw 1 w Tx i+b =w ,bmax w 1x imin w Tx i+b ,(6.1)

6.2.2. 问题化简:

  因为 yi∈{−1,1}y_i\in \{-1,1\}yi{1,1},所以可以写作 ∣w⃗Tx⃗i+b∣=yi(w⃗Tx⃗i+b)\left | \vec{w}^T\vec{x}_i+b \right |=y_i(\vec{w}^T\vec{x}_i+b) w Tx i+b =yi(w Tx i+b),因此优化目标可以写作max⁡w⃗,b margin(w⃗)=max⁡w⃗,b 1∥w⃗∥min⁡x⃗iyi(w⃗Tx⃗i+b)\underset{\vec{w},b}{\max} \ \text{margin}(\vec{w})=\underset{\vec{w},b}{\max}\ \frac{1}{\left \| \vec{w} \right \|}\underset{\vec{x}_i}{\min}y_i(\vec{w}^T\vec{x}_i+b )w ,bmax margin(w )=w ,bmax w 1x iminyi(w Tx i+b)
  又因为对超平面 w⃗\vec{w}w ,我们只关心其方向,对 ∥w⃗∥\left \| \vec{w} \right \|w 无要求,因此对 w⃗Tx⃗i+b\vec{w}^T\vec{x}_i+bw Tx i+b 我们只关心正负,无所谓值的大小,因此对 yi(w⃗Tx⃗i+b)y_i(\vec{w}^T\vec{x}_i+b)yi(w Tx i+b) 我们只关心是否大于0,无所谓值的大小。因此为了简化优化目标,可以令 min⁡w⃗,x⃗i,b yi(w⃗Tx⃗i+b)=1\underset{\vec{w},\vec{x}_i,b}{\min}\ y_i( \vec{w}^T\vec{x}_i+b )=1w ,x i,bmin yi(w Tx i+b)=1,则优化目标变为
max⁡w⃗ margin(w⃗)={max⁡w⃗ 1∥w⃗∥⋅1=min⁡w⃗∥w⃗∥=min⁡w⃗ w⃗Tw⃗s.t.  yi(w⃗Tx⃗i+b)⩾1.(6.2)\begin{aligned} \underset{\vec{w}}{\max} \ \text{margin}(\vec{w})=\left\{\begin{matrix} \underset{\vec{w}}{\max}\ \frac{1}{\left \| \vec{w} \right \|}\cdot 1=\underset{\vec{w}}{\min}\left \| \vec{w} \right \|=\underset{\vec{w}}{\min}\ \vec{w}^T\vec{w}\\ \textbf{s.t.}\ \ y_i(\vec{w}^T\vec{x}_i +b)\geqslant 1 \end{matrix}\right..\tag{6.2} \end{aligned}w max margin(w )={w max w 11=w minw =w min w Tw s.t.  yi(w Tx i+b)1.(6.2)
变为一个凸优化问题

6.2.3. 问题求解:

  优化问题首先考虑使用拉格朗日乘数法:

  • L(w⃗,λ⃗,b)=w⃗Tw⃗+∑i=1Nλi[1−yi(w⃗Tx⃗i+b)]\mathcal{L}(\vec{w},\vec{\lambda},b)=\vec{w}^T\vec{w}+\sum_{i=1}^N\lambda_i\left [ 1-y_i(\vec{w}^T\vec{x}_i+b) \right ]L(w ,λ ,b)=w Tw +i=1Nλi[1yi(w Tx i+b)]
    ,将带约束的原问题变为无约束优化问题:{min⁡w⃗,b max⁡λ⃗ L(w⃗,λ⃗,b)s.t.λi⩾0\left\{\begin{matrix} \underset{\vec{w},b}{\min} \ \underset{\vec{\lambda}}{\max} \ \mathcal{L} (\vec{w},\vec{\lambda},b)\\ s.t. \lambda_i\geqslant 0 \end{matrix}\right.{w ,bmin λ max L(w ,λ ,b)s.t.λi0.
  • 若原问题的约束 yi(w⃗Tx⃗i+b)⩾1y_i(\vec{w}^T\vec{x}_i+b )\geqslant 1yi(w Tx i+b)1 不满足,即 1−yi(w⃗Tx⃗i+b)>01-y_i(\vec{w}^T\vec{x}_i+b )> 01yi(w Tx i+b)>0,则 max⁡λ⃗ L(w⃗,λ⃗,b)→∞\underset{\vec{\lambda}}{\max} \ \mathcal{L}(\vec{w},\vec{\lambda},b)\rightarrow \inftyλ max L(w ,λ ,b),反之若都满足,则 max⁡λ⃗ L(w⃗,λ⃗,b)=w⃗Tw⃗\underset{\vec{\lambda}}{\max} \ \mathcal{L}(\vec{w},\vec{\lambda},b)=\vec{w}^T\vec{w}λ max L(w ,λ ,b)=w Tw ,因此优化目标其实是 {min⁡w⃗(∞,w⃗Tw⃗)s.t.λi⩾0\left\{\begin{matrix} \underset{\vec{w}}{\min} (\infty ,\vec{w}^T\vec{w})\\ s.t. \lambda_i\geqslant 0 \end{matrix}\right.{w min(,w Tw )s.t.λi0,因此这个优化目标函数为了取到 min⁡w⃗(∞,w⃗Tw⃗)=w⃗Tw⃗\underset{\vec{w}}{\min} (\infty ,\vec{w}^T\vec{w})=\vec{w}^T\vec{w}w min(,w Tw )=w Tw ,会调整 w⃗\vec{w}w 使得 yi(w⃗Tx⃗i+b)⩾1y_i(\vec{w}^T\vec{x}_i+b )\geqslant 1yi(w Tx i+b)1 对所有 x⃗^i\hat{\vec{x}}_ix ^i 都满足,由此原问题的约束成立。
  • 而此时 L(w⃗,λ⃗,b)=w⃗Tw⃗+∑i=1Nλi[1−yi(w⃗Tx⃗i+b)]=w⃗Tw⃗\mathcal{L} (\vec{w},\vec{\lambda},b)=\vec{w}^T\vec{w}+\sum_{i=1}^N\lambda_i\left [ 1-y_i(\vec{w}^T\vec{x}_i+b) \right ]=\vec{w}^T\vec{w}L(w ,λ ,b)=w Tw +i=1Nλi[1yi(w Tx i+b)]=w Tw ,因此对任意 iii,有 λi[1−yi(w⃗Tx⃗i+b)]=0\lambda_i\left [ 1-y_i(\vec{w}^T\vec{x}_i+b) \right ]=0λi[1yi(w Tx i+b)]=0,则 λi=0\lambda_i=0λi=01−yi(w⃗Tx⃗i+b)=01-y_i(\vec{w}^T\vec{x}_i+b) =01yi(w Tx i+b)=0,由于绝大多数情况,只有两个点离超平面最近(存在更多点距离超平面也是0的理论可能,但实际数据中几乎不存在),即 1−yi(w⃗Tx⃗i+b)=01-y_i(\vec{w}^T\vec{x}_i+b) =01yi(w Tx i+b)=0,其他情况都是λi=0\lambda_i=0λi=0(但这里不能直接带入 λi=0\lambda_i=0λi=0,因为这个是目标函数为了达到优化而隐含的约束,如果直接带入则变成了优化之间的已知约束,问题会变得无法求解)。
    在这里插入图片描述
  • 这两个距离最近的样本我们称其为 x⃗m\vec{x}_mx mym=1y_m=1ym=1)和 x⃗n\vec{x}_nx nyn=−1y_n=-1yn=1),这两个向量被称为支持向量

  变为对偶问题:

  • 弱对偶关系:min⁡ max⁡F⩾max⁡ min⁡F\min \ \max F \geqslant \max \ \min Fmin maxFmax minF(宁做凤尾,不做鸡头),当中间取等号时变为强对偶关系,而线性约束的二次优化问题天然满足强对偶性(此处不做数学证明){ max⁡λ⃗ min⁡w⃗,b £(w⃗,λ⃗,b)s.t.λi⩾0\left\{\begin{matrix} \ \underset{\vec{\lambda}}{\max} \ \underset{\vec{w},b}{\min} \ \pounds (\vec{w},\vec{\lambda},b)\\ s.t. \lambda_i\geqslant 0 \end{matrix}\right.{ λ max w ,bmin £(w ,λ ,b)s.t.λi0.
  • 因此这里可以将优化目标变为 { max⁡λ⃗ min⁡w⃗,b £(w⃗,λ⃗,b)s.t.λi⩾0\left\{\begin{matrix} \ \underset{\vec{\lambda}}{\max} \ \underset{\vec{w},b}{\min} \ \pounds (\vec{w},\vec{\lambda},b)\\ \textbf{s.t.} \lambda_i\geqslant 0 \end{matrix}\right.{ λ max w ,bmin £(w ,λ ,b)s.t.λi0

  求偏导得到结果:

  • ∂L∂b=−∑i=1Nλiyi=0\frac{\partial \mathcal{L}}{\partial b}=-\sum_{i=1}^N\lambda_iy_i=0bL=i=1Nλiyi=0
  • ∂L∂w⃗=2w⃗−∑i=1Nλiyix⃗i=0⇒w⃗∗=12∑i=1Nλiyix⃗i\frac{\partial \mathcal{L} }{\partial \vec{w}}=2\vec{w}-\sum_{i=1}^N\lambda_iy_i\vec{x}_i=0\Rightarrow\vec{w}^*= \frac{1}{2}\sum_{i=1}^N\lambda_iy_i\vec{x}_iw L=2w i=1Nλiyix i=0w =21i=1Nλiyix i.
  • L(w⃗,λ⃗,b)=14∑i=1N∑j=1Nλiλjyiyj(x⃗iTx⃗i)−12∑i=1N∑j=1Nλiλjyiyj(x⃗iTx⃗i)+∑i=1Nλi=−14∑i=1N∑j=1Nλiλjyiyj(x⃗iTx⃗i)+∑i=1Nλi.(6.3)\begin{aligned} \mathcal{L} (\vec{w},\vec{\lambda},b)&=\frac{1}{4}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_j(\vec{x}_i^T\vec{x}_i )-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_j(\vec{x}_i^T\vec{x}_i )+\sum_{i=1}^N\lambda_i\\ &=-\frac{1}{4}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_j(\vec{x}_i^T\vec{x}_i )+\sum_{i=1}^N\lambda_i . \tag{6.3}\end{aligned}L(w ,λ ,b)=41i=1Nj=1Nλiλjyiyj(x iTx i)21i=1Nj=1Nλiλjyiyj(x iTx i)+i=1Nλi=41i=1Nj=1Nλiλjyiyj(x iTx i)+i=1Nλi.(6.3)

  因为对 { max⁡λ⃗ min⁡w⃗,b L(w⃗,λ⃗,b)s.t.λi⩾0\left\{\begin{matrix} \ \underset{\vec{\lambda}}{\max} \ \underset{\vec{w},b}{\min} \ \mathcal{L} (\vec{w},\vec{\lambda},b)\\ \textbf{s.t.} \lambda_i\geqslant 0 \end{matrix}\right.{ λ max w ,bmin L(w ,λ ,b)s.t.λi0 的优化必须使 λ⃗\vec{\lambda}λ w⃗\vec{w}w 满足:只有两个点 x⃗m\vec{x}_mx mx⃗n\vec{x}_nx n 离超平面最近,即 1−yi(w⃗Tx⃗i+b)=01-y_i(\vec{w}^T\vec{x}_i+b) =01yi(w Tx i+b)=0,其他情况都是 λi=0\lambda_i=0λi=0,将这个条件带入 ∑i=1Nλiyi=0\sum_{i=1}^N\lambda_iy_i=0i=1Nλiyi=0 可得:λm=λn,  λi≠m,n=0\lambda_m=\lambda_n,\ \ \lambda_{i\neq m,n}=0λm=λn,  λi=m,n=0

  带入目标函数得 L(w⃗,λ⃗,b)=−14(λm2(x⃗mTx⃗m)+λn2(x⃗nTx⃗n)−2λmλn(x⃗mTx⃗n))+λm+λn=−14λm2∥x⃗m−x⃗n∥+2λm\mathcal{L}(\vec{w},\vec{\lambda},b)=-\frac{1}{4}\left ( \lambda_m^2(\vec{x}_m^T\vec{x}_m )+\lambda_n^2(\vec{x}_n^T\vec{x}_n )-2\lambda_m\lambda_n(\vec{x}_m^T\vec{x}_n ) \right )+\lambda_m+\lambda_n=-\frac{1}{4}\lambda_m^2\left \|\vec{x}_m-\vec{x}_n \right \|+2\lambda_mL(w ,λ ,b)=41(λm2(x mTx m)+λn2(x nTx n)2λmλn(x mTx n))+λm+λn=41λm2x mx n+2λm,对其求偏导:∂L∂λm=−12λm∥x⃗m−x⃗n∥+2=0⇒λm=4∥x⃗m−x⃗n∥\frac{\partial \mathcal{L} }{\partial \lambda_m}=-\frac{1}{2}\lambda_m\left \| \vec{x}_m-\vec{x}_n \right \|+2=0\Rightarrow \lambda_m=\frac{4}{\left \| \vec{x}_m-\vec{x}_n \right \|}λmL=21λmx mx n+2=0λm=x mx n4,带入原式得 L(w⃗,λ⃗,b)=−14λm2∥x⃗m−x⃗n∥+2λm=4∥x⃗m−x⃗n∥\begin{aligned} \mathcal{L} (\vec{w},\vec{\lambda},b)=-\frac{1}{4}\lambda_m^2\left \|\vec{x}_m-\vec{x}_n \right \|+2\lambda_m=\frac{4}{\left \| \vec{x}_m-\vec{x}_n \right \|}\end{aligned}L(w ,λ ,b)=41λm2x mx n+2λm=x mx n4,因此 max⁡L(w⃗,λ⃗,b)=min⁡∥x⃗m−x⃗n∥\max \mathcal{L} (\vec{w},\vec{\lambda},b)=\min\left \| \vec{x}_m-\vec{x}_n \right \|maxL(w ,λ ,b)=minx mx n找到两个类中,间距最小的两个样本,计算其欧氏距离可以算得 λ⃗\vec{\lambda}λ

  再带入 w⃗∗=∑i=1Nλiyix⃗i=λm(x⃗m−x⃗n)\vec{w}^*= \sum_{i=1}^N\lambda_iy_i\vec{x}_i=\lambda_m(\vec{x}_m-\vec{x}_n)w =i=1Nλiyix i=λm(x mx n)b∗=ym−λmx⃗mT(x⃗m−x⃗n)b^*=y_m-\lambda_m\vec{x}_m^T(\vec{x}_m-\vec{x}_n)b=ymλmx mT(x mx n) 即可得到分类边界。

6.3. 软间隔SVM

6.3.1. 引入软间隔的思想

  硬间隔SVM假设所有样本都可以被完美分类,但实际情况很难做到,因此需要允许一些错误,但又要尽可能控制错误,便有了软间隔SVM的思想。

  相比于硬间隔,软间隔SVM取消了约束 s.t. yi(w⃗Tx⃗i+b)⩾1\textbf{s.t.}\ y_i(\vec{w}^T\vec{x}_i +b)\geqslant 1s.t. yi(w Tx i+b)1,而是采用一个损失函数来代替,即设定一组参数 ξ⃗={ξ1,ξ2,⋯ ,ξN}, ξi⩾0\vec{\xi}=\{ \xi_1, \xi_2, \cdots, \xi_N\}, \ \xi_i \geqslant 0ξ ={ξ1,ξ2,,ξN}, ξi0,目标函数变为 {min⁡w⃗,b,ξ⃗ w⃗Tw⃗+C∑i=1Nξis.t. yi(w⃗Tx⃗i+b)⩾1−ξi, ξi⩾0\left\{\begin{matrix} \underset{\vec{w}, b, \vec{\xi}}{\min}\ \vec{w}^T\vec{w}+C\sum_{i=1}^N\xi_i\\ \textbf{s.t.} \ y_i(\vec{w}^T\vec{x}_i+b)\geqslant 1-\xi_i, \ \xi_i\geqslant 0 \end{matrix}\right.{w ,b,ξ min w Tw +Ci=1Nξis.t. yi(w Tx i+b)1ξi, ξi0

  通过这个目标函数,原本间隔外的点(yi(w⃗Tx⃗i+b)⩾1y_i(\vec{w}^T\vec{x}_i+b)\geqslant 1yi(w Tx i+b)1)的参数 ξi\xi_iξi 会被优化到0,而间隔内的点无论是否可以被分类正确,都可以尽可能使其向两边分散。

  CCC 是一个乘法因子,可以作为模型超参数,其作用有点像正则化,CCC 的值越大,ξ⃗\vec{\xi}ξ 被惩罚得越厉害,间隔小的点越少。

6.3.2. 软间隔SVM的求解

  前面的部分和硬间隔相同,化为无约束目标函数和对偶优化问题,分别对 w⃗\vec{w}w bbb 求偏导后,最终目标函数化简如下:{ min⁡λ⃗ 14∑i=1N∑j=1Nλiλjyiyj(x⃗iTx⃗i)−∑i=1Nλis.t. 0⩽λi⩽C, ∑i=1Nλiyi=0\left\{\begin{matrix} \ \underset{\vec{\lambda}}{\min} \ \frac{1}{4}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_j(\vec{x}_i^T\vec{x}_i )-\sum_{i=1}^N\lambda_i\\ s.t. \ 0\leqslant \lambda_i\leqslant C ,\ \sum_{i=1}^N\lambda_iy_i=0\end{matrix}\right.{ λ min 41i=1Nj=1Nλiλjyiyj(x iTx i)i=1Nλis.t. 0λiC, i=1Nλiyi=0w⃗∗=12∑i=1Nλiyix⃗i\vec{w}^*= \frac{1}{2}\sum_{i=1}^N\lambda_iy_i\vec{x}_iw =21i=1Nλiyix i.

  同样先求得 λ⃗\vec{\lambda}λ 后(这里需要用到SMO迭代求解算法,过于复杂,后补),即可得到超平面。

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐