第6章 支持向量机 学习心得

间隔与支持向量

支持向量机(Support Vector Machine,SVM)的主要目的就是在特征空间中找到距离正反例最远的分离超平面,由于是“最远”因此与上一章感知机里初值敏感,由误分类点修正最后得到的“初值敏感”的超平面不同,对于线性可分的(linearly separable)数据集,SVM确定的分离超平面是唯一的,超平面上的点可以用“平面”方程表示:
wTx+b=0 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b=0 wTx+b=0
而任意样本x\boldsymbol{x}x到超平面的距离,可以由二维平面的几何简单推导获得:
r=∣wTx+b∣∥w∥ r=\frac{\left|\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b\right|}{\|\boldsymbol{w}\|} r=w wTx+b
其中分母取模长来自取超平面法向量的单位向量,分子取绝对值来自于正反例在超平面两侧,法向量指向正例,因此投影时反例要加一个负号取法向量反方向的单位向量,从而使得最终为正值符合几何意义,将负号去掉,加绝对值是等价的,将两种情况统一为一个表达式。
SVM人为规定距离超平面最近的样本的函数间隔是1。这样,超平面两侧没有样本的区域宽度(几何间隔)便为:
γ=2∥w∥ \gamma=\frac{2}{\|\boldsymbol{w}\|} γ=w2
有个专有名字叫做“间隔”(margin),因此SVM就是要在正确分类的情况下,最大化这个间隔。等价地最小化∥w∥2\|\boldsymbol{w}\|^{2}w2。因此SVM的原始问题/基本型为:
min⁡w,b12∥w∥2 s.t. yi(wTxi+b)⩾1,i=1,2,…,m \begin{array}{l}\min _{\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^{2} \\ \text { s.t. } y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right) \geqslant 1, \quad i=1,2, \ldots, m \end{array} minw,b21w2 s.t. yi(wTxi+b)1,i=1,2,,m
可以自然地想到“间隔”仅与距离超平面最近的样本决定,这些样本称为支持向量。

对偶问题(dual problem)

SVM的原始问题是一个凸优化问题,可以用现成的凸优化问题的解决方法来解决,然而将其转换为对偶问题,有时会使问题更加简洁,同时也可以自然地引入核函数。
为了转化为对偶问题,先写出拉格朗日函数:
L(w,b,α)=12∥w∥2+∑i=1mαi(1−yi(wTxi+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))
按照约束最优化问题,求偏导数置0可得:
w=∑i=1mαiyixi0=∑i=1mαiyi \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
这样就可以将w\boldsymbol{w}wα\alphaα表示。
对偶问题可以表示为:
max⁡α∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxiTxj \max _{\boldsymbol{\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=1mαiyi=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(Karush-Kuhn-Tucker)条件:
{αi⩾0;yif(xi)−1⩾0αi(yif(xi)−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. αi0;yif(xi)10αi(yif(xi)1)=0
从而可以知道,对于α>0\alpha > 0α>0的样本点其一定有yif(xi)=1y_{i} f\left(\boldsymbol{x}_{i}\right)=1yif(xi)=1,从而在最大间隔边界上,因此对应的是支持向量,而对α=0\alpha = 0α=0,由于w=∑i=1mαiyixi\boldsymbol{w} =\sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i}w=i=1mαiyixi,其对于w\boldsymbol{w}w没有贡献,从而最终的超平面仅取决于支持向量。
求解这个对偶问题,本质是二次规划问题,运算开销比较大,因此出现了很多更加高效的算法,最典型的是SMO(Sequential Minimum Optimization),即序列最小最优化算法。其一开始的思想是,对于一个待优化的参数向量,每次只优化其中一个分量值,其他分量值都固定不变,而对于SVM的对偶问题,由于等式约束0=∑i=1mαiyi0=\sum_{i=1}^{m} \alpha_{i} y_{i}0=i=1mαiyi,从而每次至少要同时优化两个分量α\alphaα才可行。选择这两个分量的原则是:外层循环先选择第一个分量,原则是违反KKT条件最严重的,因此也是最需要“修正”的,先遍历支持向量的样本,如果全都不违反则遍历整个样本集;内层在选择第一个分量以后进行选择,希望是更新量比较大的(由于和受到等式约束,因此这两个选定分量的改变量绝对值是相等的),这个周老师书上说是选择的两个对应样本间隔最大,我个人觉得不全是如此,因为看一下更新公式:
α2new ,unc =α2old +y2(E1−E2)η \alpha_{2}^{\text {new ,unc }}=\alpha_{2}^{\text {old }}+\frac{y_{2}\left(E_{1}-E_{2}\right)}{\eta} α2new ,unc =α2old +ηy2(E1E2)
η=∥Φ(x1)−Φ(x2)∥2 \eta=\left\|\Phi\left(x_{1}\right)-\Phi\left(x_{2}\right)\right\|^{2} η=Φ(x1)Φ(x2)2
其中η\etaη表示两个样本矢量的差(设计核函数,这里就直接理解为特征空间两个样本矢量差本身)的模,分子的两个E表示两个样本在目前超平面的情况下,预测值与真实值的误差,因此更新在目前模型下位于超平面两侧的样本要比位于同侧的样本产生的更新量更大,这并不严格为书上说的“对应样本的间隔最大”,事实上,算法也没有选择这个更新量严格最大的,而是选择分子绝对值最大的,即∣E1−E2∣\left|E_{1}-E_{2}\right|E1E2,这样本质上并非一定是更新量最大的,而只是选择了当前超平面下,位于超平面两侧距离超平面距离之和最大的第二个样本,当然即便不是最大更新量,可以知道,这种情况的更新量也不会太小,所以也是很有效的。
最后还有个b值,这个对于任何一个支持向量,由于约束,总会有:
ys(∑i∈SαiyixiTxs+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,且用任何一个SV算出来的都是相等的b,当然实际中可能像书上说的(因为实际可能用了软间隔),求SV平均出来的b:
b=1∣S∣∑s∈S(ys−∑i∈SαiyixiTxs) 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)

核函数(kernel function)

有的样本在原本的特征空间线性不可分,那么可以考虑将其变换到高维空间,从而在高维空间线性可分,如果原来特征空间中样本矢量为x\boldsymbol{x}x变换后的高维特征空间中矢量为ϕ(x)\phi(\boldsymbol{x})ϕ(x),那么可以将之前特征空间中的SVM转化为新空间中的SVM,模型可表示为:
f(x)=wTϕ(x)+b f(\boldsymbol{x})=\boldsymbol{w}^{\mathrm{T}} \phi(\boldsymbol{x})+b f(x)=wTϕ(x)+b
最优化问题为:
min⁡w,b12∥w∥2 s.t. yi(wTϕ(xi)+b)⩾1,i=1,2,…,m \begin{aligned} \min _{\boldsymbol{w}, b} & \frac{1}{2}\|\boldsymbol{w}\|^{2} \\ \text { s.t. } & y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \phi\left(\boldsymbol{x}_{i}\right)+b\right) \geqslant 1, \quad i=1,2, \ldots, m \end{aligned} w,bmin s.t. 21w2yi(wTϕ(xi)+b)1,i=1,2,,m
相应的对偶问题为:
max⁡α∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjϕ(xi)Tϕ(xj) s.t. ∑i=1mαiyi=0αi⩾0,i=1,2,…,m \begin{aligned} \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} \phi\left(\boldsymbol{x}_{i}\right)^{\mathrm{T}} \phi\left(\boldsymbol{x}_{j}\right) \\ & \\ \text { s.t. } & \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ & \alpha_{i} \geqslant 0, \quad i=1,2, \ldots, m \end{aligned} αmax s.t. i=1mαi21i=1mj=1mαiαjyiyjϕ(xi)Tϕ(xj)i=1mαiyi=0αi0,i=1,2,,m
即把原来的x\boldsymbol{x}x替换为新空间的ϕ(x)\phi(\boldsymbol{x})ϕ(x)即可,对于新空间中的内积,由于其维数增多,所以计算量增大,因此引入核函数,直接给出原来的特征空间的内积表达式,这样可以降低计算量:
κ(xi,xj)=⟨ϕ(xi),ϕ(xj)⟩=ϕ(xi)Tϕ(xj) \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\left\langle\phi\left(\boldsymbol{x}_{i}\right), \phi\left(\boldsymbol{x}_{j}\right)\right\rangle=\phi\left(\boldsymbol{x}_{i}\right)^{\mathrm{T}} \phi\left(\boldsymbol{x}_{j}\right) κ(xi,xj)=ϕ(xi),ϕ(xj)=ϕ(xi)Tϕ(xj)
从而:
max⁡α∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjκ(xi,xj) s.t. ∑i=1mαiyi=0αi⩾0,i=1,2,…,m \begin{array}{ll}\max _{\boldsymbol{\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} \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right) \\ \text { s.t. } & \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ & \alpha_{i} \geqslant 0, \quad i=1,2, \ldots, m\end{array} maxα s.t. i=1mαi21i=1mj=1mαiαjyiyjκ(xi,xj)i=1mαiyi=0αi0,i=1,2,,m
最终的模型为:
f(x)=wTϕ(x)+b=∑i=1mαiyiϕ(xi)Tϕ(x)+b=∑i=1mαiyiκ(x,xi)+b \begin{aligned} f(\boldsymbol{x}) &=\boldsymbol{w}^{\mathrm{T}} \phi(\boldsymbol{x})+b \\ &=\sum_{i=1}^{m} \alpha_{i} y_{i} \phi\left(\boldsymbol{x}_{i}\right)^{\mathrm{T}} \phi(\boldsymbol{x})+b \\ &=\sum_{i=1}^{m} \alpha_{i} y_{i} \kappa\left(\boldsymbol{x}, \boldsymbol{x}_{i}\right)+b \end{aligned} f(x)=wTϕ(x)+b=i=1mαiyiϕ(xi)Tϕ(x)+b=i=1mαiyiκ(x,xi)+b
最终的模型相当于用训练样本中的SV做核函数展开,因此这个展式也被称为支持向量展式(support vector expansion)。
实际中,通常不知道具体的原来特征空间样本如何映射到新的特征空间,而是直接取合适的核函数,不需要知道具体的映射形式,而如何判断是否是合法的核函数,从理论上可以证明就是核函数对应的核矩阵(kernel matrix):
K=[κ(x1,x1)⋯κ(x1,xj)⋯κ(x1,xm)⋮⋱⋮⋱⋮κ(xi,x1)⋯κ(xi,xj)⋯κ(xi,xm)⋮⋱⋮⋱⋮κ(xm,x1)⋯κ(xm,xj)⋯κ(xm,xm)] \mathbf{K}=\left[\begin{array}{ccccc}\kappa\left(\boldsymbol{x}_{1}, \boldsymbol{x}_{1}\right) & \cdots & \kappa\left(\boldsymbol{x}_{1}, \boldsymbol{x}_{j}\right) & \cdots & \kappa\left(\boldsymbol{x}_{1}, \boldsymbol{x}_{m}\right) \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{1}\right) & \cdots & \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right) & \cdots & \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{m}\right) \\ \vdots & \ddots & \vdots & \ddots & \vdots \\ \kappa\left(\boldsymbol{x}_{m}, \boldsymbol{x}_{1}\right) & \cdots & \kappa\left(\boldsymbol{x}_{m}, \boldsymbol{x}_{j}\right) & \cdots & \kappa\left(\boldsymbol{x}_{m}, \boldsymbol{x}_{m}\right)\end{array}\right] K= κ(x1,x1)κ(xi,x1)κ(xm,x1)κ(x1,xj)κ(xi,xj)κ(xm,xj)κ(x1,xm)κ(xi,xm)κ(xm,xm)
对于任何的数据集,都是半正定的,这与是合法的核函数是充要条件,这种核函数都隐式定义了一个再生核希尔伯特空间(Reproducing Kernel Hilbert Space,RKHS)。核函数选择合适就能起到很好的效果,反之不然。\

常用核函数

请添加图片描述

此外,核函数的运算组合很多时候也是合法的核函数:

  • κ1\kappa_{1}κ1κ2\kappa_{2}κ2为合法核函数,其线性组合也为合法核函数,即:
    γ1κ1+γ2κ2 \gamma_{1} \kappa_{1}+\gamma_{2} \kappa_{2} γ1κ1+γ2κ2
  • κ1\kappa_{1}κ1κ2\kappa_{2}κ2为合法核函数,其直积也为合法核函数,即:
    κ1⊗κ2(x,z)=κ1(x,z)κ2(x,z) \kappa_{1} \otimes \kappa_{2}(\boldsymbol{x}, \boldsymbol{z})=\kappa_{1}(\boldsymbol{x}, \boldsymbol{z}) \kappa_{2}(\boldsymbol{x}, \boldsymbol{z}) κ1κ2(x,z)=κ1(x,z)κ2(x,z)
  • κ1\kappa_{1}κ1为合法核函数,对于任意函数g(x)g(\boldsymbol{x})g(x),下面函数也为合法核函数:
    κ(x,z)=g(x)κ1(x,z)g(z) \kappa(\boldsymbol{x}, \boldsymbol{z})=g(\boldsymbol{x}) \kappa_{1}(\boldsymbol{x}, \boldsymbol{z}) g(\boldsymbol{z}) κ(x,z)=g(x)κ1(x,z)g(z)

软间隔与正则化

软间隔

软间隔(soft margin)的引出基于两点原因:首先是无论在原特征空间,还是使用核函数技巧在新的特征空间进行线性超平面划分,都很有可能在实际中比如由于噪音等问题无法现行可分;另外,即使线性可分,也有可能因为训练集本身的特征(非分布的本征特征),使得最终的超平面因为某些异常点,造成过拟合。
软间隔是相对于硬间隔(hard margin)的概念,是指可以允许一部分样本不满足硬间隔时候的约束:
yi(wTxi+b)⩾1 y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right) \geqslant 1 yi(wTxi+b)1
这时优化问题变为:
min⁡w,b12∥w∥2+C∑i=1mℓ0/1(yi(wTxi+b)−1) \min _{\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum_{i=1}^{m} \ell_{0 / 1}\left(y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)-1\right) w,bmin21w2+Ci=1m0/1(yi(wTxi+b)1)
其中0/1损失函数为:
ℓ0/1(z)={1, if z<00, otherwise  \ell_{0 / 1}(z)=\left\{\begin{array}{ll}1, & \text { if } z<0 \\ 0, & \text { otherwise }\end{array}\right. 0/1(z)={1,0, if z<0 otherwise 
其中C是一个大于0的常数,用量衡量是否条件足够“软”,当它比较小的时候,就更软,当它趋于无穷时,迫使0/1损失函数内的宗量要尽量和之前的约束条件相同,转化为硬间隔。这里使用0/1损失是为了逻辑简单,实际上有很多可用的损失函数:
 hinge 损失: ℓhinge (z)=max⁡(0,1−z); 指数损失(exponential loss): ℓexp⁡(z)=exp⁡(−z); 对率损失(logistic loss): ℓlog⁡(z)=log⁡(1+exp⁡(−z)) \begin{array}{l}\text { hinge 损失: } \ell_{\text {hinge }}(z)=\max (0,1-z) ; \\ \text { 指数损失(exponential loss): } \ell_{\exp }(z)=\exp (-z) ; \\ \text { 对率损失(logistic loss): } \ell_{\log }(z)=\log (1+\exp (-z))\end{array}  hinge 损失hinge (z)=max(0,1z); 指数损失(exponential loss): exp(z)=exp(z); 对率损失(logistic loss): log(z)=log(1+exp(z))
请添加图片描述

指数损失的算法如提升方法(Adaboost),对率损失的就是logistic regression用的,而SVM采用的是合页损失函数(hinge loss)。优化问题写为:
min⁡w,b12∥w∥2+C∑i=1mmax⁡(0,1−yi(wTxi+b)) \min _{\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum_{i=1}^{m} \max \left(0,1-y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)\right) w,bmin21w2+Ci=1mmax(0,1yi(wTxi+b))
引入松弛变量(slack variables):
ξi=max⁡(0,1−yi(wTxi+b)) \xi_{i}=\max \left(0,1-y_{i}\left(w^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)\right) ξi=max(0,1yi(wTxi+b))
从而问题可以写为:
min⁡w,b,ξi12∥w∥2+C∑i=1mξi \min _{\boldsymbol{w}, b, \xi_{i}} \frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum_{i=1}^{m} \xi_{i} w,b,ξimin21w2+Ci=1mξi
 s.t. yi(wTxi+b)⩾1−ξiξi⩾0,i=1,2,…,m \begin{array}{ll}\text { s.t. } & y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right) \geqslant 1-\xi_{i} \\ & \xi_{i} \geqslant 0, i=1,2, \ldots, m\end{array}  s.t. yi(wTxi+b)1ξiξi0,i=1,2,,m
每个样本都有一个松弛变量,表示了样本不满足原来硬间隔约束的程度,二次规划问题可以用拉格朗日乘子法解决,拉格朗日函数为:
L(w,b,α,ξ,μ)=12∥w∥2+C∑i=1mξi+∑i=1mαi(1−ξi−yi(wTxi+b))−∑i=1mμiξi \begin{aligned} L(\boldsymbol{w}, b, \boldsymbol{\alpha}, \boldsymbol{\xi}, \boldsymbol{\mu})=& \frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum_{i=1}^{m} \xi_{i} \\ &+\sum_{i=1}^{m} \alpha_{i}\left(1-\xi_{i}-y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)\right)-\sum_{i=1}^{m} \mu_{i} \xi_{i} \end{aligned} L(w,b,α,ξ,μ)=21w2+Ci=1mξi+i=1mαi(1ξiyi(wTxi+b))i=1mμiξi
令其对非拉格朗日乘子的参数求导并置零得到:
w=∑i=1mαiyixi0=∑i=1mαiyiC=αi+μ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} \\ C &=\alpha_{i}+\mu_{i} \end{aligned} w0C=i=1mαiyixi=i=1mαiyi=αi+μi
代入原始问题,消去上面参数得到原始问题的对偶问题:
max⁡α∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxiTxj s.t. ∑i=1mαiyi=00⩽αi⩽C,i=1,2,…,m \begin{aligned} \max _{\boldsymbol{\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} \\ \text { s.t. } & \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ & 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2, \ldots, m \end{aligned} αmax s.t. i=1mαi21i=1mj=1mαiαjyiyjxiTxji=1mαiyi=00αiC,i=1,2,,m
最终与硬间隔时候的唯一差别是0⩽αi0 \leqslant \alpha_{i}0αi变为0⩽αi⩽C0 \leqslant \alpha_{i} \leqslant C0αiC。通过KKT条件可以分析出样本的特点:
{αi⩾0,μi⩾0yif(xi)−1+ξi⩾0αi(yif(xi)−1+ξi)=0ξi⩾0,μiξi=0 \left\{\begin{array}{l}\alpha_{i} \geqslant 0, \quad \mu_{i} \geqslant 0 \\ y_{i} f\left(\boldsymbol{x}_{i}\right)-1+\xi_{i} \geqslant 0 \\ \alpha_{i}\left(y_{i} f\left(\boldsymbol{x}_{i}\right)-1+\xi_{i}\right)=0 \\ \xi_{i} \geqslant 0, \mu_{i} \xi_{i}=0\end{array}\right. αi0,μi0yif(xi)1+ξi0αi(yif(xi)1+ξi)=0ξi0,μiξi=0
因此对于任意样本,要么αi=0\alpha_{i}=0αi=0要么yif(xi)=1−ξiy_{i} f\left(x_{i}\right)=1-\xi_{i}yif(xi)=1ξi,当αi>0\alpha_{i}>0αi>0,则为支持向量(对最终的weights有贡献),同时它必须满足yif(xi)=1−ξiy_{i} f\left(x_{i}\right)=1-\xi_{i}yif(xi)=1ξi,因此他们是满足软间隔约束的所有样本,对于这些SV,如果其αi<C\alpha_{i}<Cαi<C那么由前面求导置零中C=αi+μiC=\alpha_{i}+\mu_{i}C=αi+μi(其实也是KKT条件之一),则μi>0\mu_{i}>0μi>0,从而ξi=0\xi_{i}=0ξi=0,所以此时这种SV对应原本硬间隔边界的边界上;仍然是SV,如果其αi=C\alpha_{i}=Cαi=C那么由C=αi+μiC=\alpha_{i}+\mu_{i}C=αi+μi必有μi=0\mu_{i}=0μi=0,此时样本在哪取决于ξi\xi_{i}ξi,如果其值为0,那么样本也是落在硬间隔边界上,如果其0<ξi<10<\xi_{i}<10<ξi<1,那么落在硬间隔内部,且在超平面正确分类一侧,如果其值为1,那么正好落在超平面上,如果其值大于1,则落在超平面错误分类一侧,且有可能超过错误一侧的硬间隔边界。
关于这个之前看李航老师书的时候也总结过:https://blog.csdn.net/qq_26928055/article/details/120639786
最终,通过hinge loss,软间隔SVM仍然保证了最终只需要少量的SV,保持了稀疏性。

非常惊喜的一段

周老师这段话讲解,感觉非常好,因为我在学习吴恩达老师的CS229时候,做课后大作业(problem set 02)的时候,碰到了这个用logistic损失来作为损失函数的情况,见https://blog.csdn.net/qq_26928055/article/details/123255525 中的01b题目(题目相当于是证明了,对于硬间隔线性可分情况,logistic损失可以进入近乎平坦的阶段,没有weights约束的话会出现不收敛问题,间隔可以无限放大,而对于线性不可分数据,由于总是存在误分类点,可以起到限制效果从而收敛)。那个时候就感觉这个损失又像logistic回归,又像SVM,这里有了很好的解答和理解,非常惊喜。确实,将对率损失代替SVM中的hinge损失之后,就很像logistic回归(特别是现行不可分情况下,一般也更实际)。
书上总结了三点对比感觉很受益,第一个是logistic回归输出相比SVM有自然的概率意义,更好;第二是,logistic回归可以直接用于多分类;第三点最让人觉得醍醐灌顶,因为logistic损失没有一段像hinge loss那样平坦,其梯度总不为0,因此总会对最终的weights更新有贡献,从而依赖大量样本,无法像SVM一样,可以忽略这些非SV,从而其预测时候开销更小。

正则化

软间隔SVM的这种原始最优化问题写成更一般的形式:
min⁡fΩ(f)+C∑i=1mℓ(f(xi),yi) \min _{f} \Omega(f)+C \sum_{i=1}^{m} \ell\left(f\left(\boldsymbol{x}_{i}\right), y_{i}\right) fminΩ(f)+Ci=1m(f(xi),yi)
第一项称为结构风险(structure risk)表示模型本身造成的损失,或者说模型复杂度带来的损失,也叫做正则化项或罚项,通过构造可以让我们产生偏好的模型,比如偏好复杂度大或小的模型(例如,L2L_{2}L2范数倾向将weights取值每个分量尽量均衡,非零分量个数尽量稠密;L1L_{1}L1范数即绝对值和L0L_{0}L0范数即最大值,倾向weights尽量稀疏,非零分量个数尽量少),同时也起到了限制假设空间的作用,降低过拟合风险;第二项叫做经验风险(empirical risk)描述模型与训练数据的契合程度,也是一般训练考虑的主要直接的损失。常数C用来平衡两者的相对重要程度,转换到正则化项前为1/C1/C1/C1/C1/C1/C称为正则化常数(感觉书上说的C是不太对?)。

支持向量回归(Support Vector Regression,SVR)

本质是模仿SVM的方法,导出了一种能够在线性回归中,引入一定“软间隔”的方法。从马后炮的角度,可以有这样的理解,SVM在选用了hinge loss的情况下,最终起作用的基本是超平面附近的一条带的向量,也就是SV主要分布在一条带上,如果用与hinge loss“互补or互斥”的一种损失,那是不是就可以使用带外的作为一种SV?从这个SVR的结果看,确实如此。
回想一般的线性回归,比如最小二乘回归,每个样本只要不在最后的回归直线上,都会有一定的损失,SVR就是让一部分距离回归直线较近的样本的损失可认为是0。因此SVR优化问题可以表达为:
min⁡w,b12∥w∥2+C∑i=1mℓc(f(xi)−yi) \min _{\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum_{i=1}^{m} \ell_{c}\left(f\left(\boldsymbol{x}_{i}\right)-y_{i}\right) w,bmin21w2+Ci=1mc(f(xi)yi)
其中损失函数使用ϵ\epsilonϵ-不敏感损失(ϵ\epsilonϵ-insensitive loss)函数:
ℓϵ(z)={0, if ∣z∣⩽ϵ∣z∣−ϵ, otherwise  \ell_{\epsilon}(z)=\left\{\begin{array}{ll}0, & \text { if }|z| \leqslant \epsilon \\ |z|-\epsilon, & \text { otherwise }\end{array}\right. ϵ(z)={0,zϵ, if zϵ otherwise 
其图像为:
请添加图片描述

模仿SVM引入松弛变量ξi\xi_{i}ξiξ^i\hat{\xi}_{i}ξ^i,分别作为在正反两个方向相对于约束的偏离的允许程度,则问题变为:
min⁡w,b,ξi,ξ^i12∥w∥2+C∑i=1m(ξi+ξ^i) \min _{\boldsymbol{w}, b, \xi_{i}, \hat{\xi}_{i}} \frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum_{i=1}^{m}\left(\xi_{i}+\hat{\xi}_{i}\right) w,b,ξi,ξ^imin21w2+Ci=1m(ξi+ξ^i)
 s.t. f(xi)−yi⩽ϵ+ξiyi−f(xi)⩽ϵ+ξ^iξi⩾0,ξ^i⩾0,i=1,2,…,m \begin{array}{ll}\text { s.t. } & f\left(\boldsymbol{x}_{i}\right)-y_{i} \leqslant \epsilon+\xi_{i} \\ & y_{i}-f\left(\boldsymbol{x}_{i}\right) \leqslant \epsilon+\hat{\xi}_{i} \\ & \xi_{i} \geqslant 0, \hat{\xi}_{i} \geqslant 0, i=1,2, \ldots, m\end{array}  s.t. f(xi)yiϵ+ξiyif(xi)ϵ+ξ^iξi0,ξ^i0,i=1,2,,m
同SVM处理方式一样,使用二次规划的常规解法——拉格朗日乘数法,得到拉格朗日函数:
L(w,b,α,α^,ξ,ξ^,μ,μ^)=12∥w∥2+C∑i=1m(ξi+ξ^i)−∑i=1mμiξi−∑i=1mμ^iξ^i+∑i=1mαi(f(xi)−yi−ϵ−ξi)+∑i=1mα^i(yi−f(xi)−ϵ−ξ^i) \begin{array}{l}L(\boldsymbol{w}, b, \boldsymbol{\alpha}, \hat{\boldsymbol{\alpha}}, \boldsymbol{\xi}, \hat{\boldsymbol{\xi}}, \boldsymbol{\mu}, \hat{\boldsymbol{\mu}}) \\ =\frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum_{i=1}^{m}\left(\xi_{i}+\hat{\xi}_{i}\right)-\sum_{i=1}^{m} \mu_{i} \xi_{i}-\sum_{i=1}^{m} \hat{\mu}_{i} \hat{\xi}_{i} \\ +\sum_{i=1}^{m} \alpha_{i}\left(f\left(\boldsymbol{x}_{i}\right)-y_{i}-\epsilon-\xi_{i}\right)+\sum_{i=1}^{m} \hat{\alpha}_{i}\left(y_{i}-f\left(\boldsymbol{x}_{i}\right)-\epsilon-\hat{\xi}_{i}\right)\end{array} L(w,b,α,α^,ξ,ξ^,μ,μ^)=21w2+Ci=1m(ξi+ξ^i)i=1mμiξii=1mμ^iξ^i+i=1mαi(f(xi)yiϵξi)+i=1mα^i(yif(xi)ϵξ^i)
对非拉格朗日乘子参数求偏导置零得:
w=∑i=1m(α^i−αi)xi0=∑i=1m(α^i−αi)C=αi+μiC=α^i+μ^i \begin{aligned} \boldsymbol{w} &=\sum_{i=1}^{m}\left(\hat{\alpha}_{i}-\alpha_{i}\right) \boldsymbol{x}_{i} \\ 0 &=\sum_{i=1}^{m}\left(\hat{\alpha}_{i}-\alpha_{i}\right) \\ C &=\alpha_{i}+\mu_{i} \\ C &=\hat{\alpha}_{i}+\hat{\mu}_{i} \end{aligned} w0CC=i=1m(α^iαi)xi=i=1m(α^iαi)=αi+μi=α^i+μ^i
反代入得到:
max⁡α,α^∑i=1myi(α^i−αi)−ϵ(α^i+αi)−12∑i=1m∑j=1m(α^i−αi)(α^j−αj)xiTxj s.t. ∑i=1m(α^i−αi)=00⩽αi,α^i⩽C \begin{aligned} \max _{\boldsymbol{\alpha}, \hat{\boldsymbol{\alpha}}} & \sum_{i=1}^{m} y_{i}\left(\hat{\alpha}_{i}-\alpha_{i}\right)-\epsilon\left(\hat{\alpha}_{i}+\alpha_{i}\right) \\ &-\frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m}\left(\hat{\alpha}_{i}-\alpha_{i}\right)\left(\hat{\alpha}_{j}-\alpha_{j}\right) \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j} \\ \text { s.t. } & \sum_{i=1}^{m}\left(\hat{\alpha}_{i}-\alpha_{i}\right)=0 \\ & 0 \leqslant \alpha_{i}, \hat{\alpha}_{i} \leqslant C \end{aligned} α,α^max s.t. i=1myi(α^iαi)ϵ(α^i+αi)21i=1mj=1m(α^iαi)(α^jαj)xiTxji=1m(α^iαi)=00αi,α^iC
次即为SVR的对偶问题,相应的KKT条件为:
{αi(f(xi)−yi−ϵ−ξi)=0α^i(yi−f(xi)−ϵ−ξ^i)=0αiα^i=0,ξiξ^i=0(C−αi)ξi=0,(C−α^i)ξ^i=0 \left\{\begin{array}{l}\alpha_{i}\left(f\left(\boldsymbol{x}_{i}\right)-y_{i}-\epsilon-\xi_{i}\right)=0 \\ \hat{\alpha}_{i}\left(y_{i}-f\left(\boldsymbol{x}_{i}\right)-\epsilon-\hat{\xi}_{i}\right)=0 \\ \alpha_{i} \hat{\alpha}_{i}=0, \xi_{i} \hat{\xi}_{i}=0 \\ \left(C-\alpha_{i}\right) \xi_{i}=0,\left(C-\hat{\alpha}_{i}\right) \hat{\xi}_{i}=0\end{array}\right. αi(f(xi)yiϵξi)=0α^i(yif(xi)ϵξ^i)=0αiα^i=0,ξiξ^i=0(Cαi)ξi=0,(Cα^i)ξ^i=0
从中可以分析出,当f(xi)−yi−ϵ−ξi=0f\left(x_{i}\right)-y_{i}-\epsilon-\xi_{i}=0f(xi)yiϵξi=0时候αi\alpha_{i}αi才非0,相应地,当yi−f(xi)−ϵ−ξ^i=0y_{i}-f\left(\boldsymbol{x}_{i}\right)-\epsilon-\hat{\xi}_{i}=0yif(xi)ϵξ^i=0时,α^i\hat{\alpha}_{i}α^i才非0,直观地就是样本对应的损失不落在损失函数中间“平坦”的部分,αi\alpha_{i}αiα^i\hat{\alpha}_{i}α^i才会有一个非0,落在非平坦右侧则αi\alpha_{i}αi非0,而α^i\hat{\alpha}_{i}α^i为0,反之亦然,所以对于SV,由于w=∑i=1m(α^i−αi)xi\boldsymbol{w}=\sum_{i=1}^{m}\left(\hat{\alpha}_{i}-\alpha_{i}\right) \boldsymbol{x}_{i}w=i=1m(α^iαi)xi,则要求SV的α\alphaα要有一个非0值,因此SV只能是上述情况的样本,即不在“平坦”区对应的样本,即带两侧(不包含带)的样本,这其实已经达到了SVR的目的。
对于另一个参数b,可以发现,在SV中对于0<αi<C0<\alpha_{i}<C0<αi<C,由KKT条件:
(C−αi)ξi=0 \left(C-\alpha_{i}\right) \xi_{i}=0 (Cαi)ξi=0
αi(f(xi)−yi−ϵ−ξi)=0 \alpha_{i}\left(f\left(\boldsymbol{x}_{i}\right)-y_{i}-\epsilon-\xi_{i}\right)=0 αi(f(xi)yiϵξi)=0
此时必有ξi=0\xi_{i}=0ξi=0,从而由αi(f(xi)−yi−ϵ−ξi)=0\alpha_{i}\left(f\left(\boldsymbol{x}_{i}\right)-y_{i}-\epsilon-\xi_{i}\right)=0αi(f(xi)yiϵξi)=0,必有f(xi)−yi−ϵ=0f\left(\boldsymbol{x}_{i}\right)-y_{i}-\epsilon=0f(xi)yiϵ=0,将f(x)=∑i=1m(α^i−αi)xiTx+bf(\boldsymbol{x})=\sum_{i=1}^{m}\left(\hat{\alpha}_{i}-\alpha_{i}\right) \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}+bf(x)=i=1m(α^iαi)xiTx+b代入可得:
b=yi+ϵ−∑i=1m(α^i−αi)xiTx b=y_{i}+\epsilon-\sum_{i=1}^{m}\left(\hat{\alpha}_{i}-\alpha_{i}\right) \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x} b=yi+ϵi=1m(α^iαi)xiTx
从而求出。实际中类似SVM,为了更加robust,常常多选几个这样的SV求平均的b值。
由于整个问题与SVM极为相似,因此也可以同样的引入核函数技巧(kernel trick):
w=∑i=1m(α^i−αi)ϕ(xi) \boldsymbol{w}=\sum_{i=1}^{m}\left(\hat{\alpha}_{i}-\alpha_{i}\right) \phi\left(\boldsymbol{x}_{i}\right) w=i=1m(α^iαi)ϕ(xi)
f(x)=∑i=1m(α^i−αi)κ(x,xi)+b f(\boldsymbol{x})=\sum_{i=1}^{m}\left(\hat{\alpha}_{i}-\alpha_{i}\right) \kappa\left(\boldsymbol{x}, \boldsymbol{x}_{i}\right)+b f(x)=i=1m(α^iαi)κ(x,xi)+b

核方法

核方法解释就是把样本从特征空间映射到新的空间,在新空间进行分类,同时可以不显式知道映射的方法,只知道映射后内积的计算结果即可。关于核方法有个重要的一般性的定理,称为表示定理(representer theorem),令H\mathbb{H}H为核函数的再生核希尔伯特空间,则:
min⁡h∈HF(h)=Ω(∥h∥H)+ℓ(h(x1),h(x2),…,h(xm)) \min _{h \in \mathbb{H}} F(h)=\Omega\left(\|h\|_{\mathbb{H}}\right)+\ell\left(h\left(\boldsymbol{x}_{1}\right), h\left(\boldsymbol{x}_{2}\right), \ldots, h\left(\boldsymbol{x}_{m}\right)\right) hHminF(h)=Ω(hH)+(h(x1),h(x2),,h(xm))
其中第一项的Ω\OmegaΩ表示一个大调递增的函数,其宗量表示再生核希尔伯特空间中的范数,第二项为一个非负任意损失函数。该问题的解可以写为:
h∗(x)=∑i=1mαiκ(x,xi) h^{*}(\boldsymbol{x})=\sum_{i=1}^{m} \alpha_{i} \kappa\left(\boldsymbol{x}, \boldsymbol{x}_{i}\right) h(x)=i=1mαiκ(x,xi)
上述描述中,表示定理对于第一项和第二项函数的形式要求极为宽松,因此这也显示了核方法的巨大威力。
如前面的例子,最常见的“核化”(kernelized)方法是将线性学习器拓展为非线性学习器,这里进一步将线性判别分析(LDA)也进行核化,得到核线性判别分析(Kernelized Linear Discriminant Analysis,KLDA)。希望在新空间中求的的线性模型为:
h(x)=wTϕ(x) h(\boldsymbol{x})=\boldsymbol{w}^{\mathrm{T}} \phi(\boldsymbol{x}) h(x)=wTϕ(x)
类似于LDA,其目标是:
max⁡wJ(w)=wTSbϕwwTSwϕw \max _{\boldsymbol{w}} J(\boldsymbol{w})=\frac{\boldsymbol{w}^{\mathrm{T}} \mathbf{S}_{b}^{\phi} \boldsymbol{w}}{\boldsymbol{w}^{\mathrm{T}} \mathbf{S}_{w}^{\phi} \boldsymbol{w}} wmaxJ(w)=wTSwϕwwTSbϕw
模仿LDA定义平均值,类内/类间散度的方法,定义以下新空间中的量:
μiϕ=1mi∑x∈Xiϕ(x) \boldsymbol{\mu}_{i}^{\phi}=\frac{1}{m_{i}} \sum_{\boldsymbol{x} \in X_{i}} \phi(\boldsymbol{x}) μiϕ=mi1xXiϕ(x)
Sbϕ=(μ1ϕ−μ0ϕ)(μ1ϕ−μ0ϕ)TSwϕ=∑i=01∑x∈Xi(ϕ(x)−μiϕ)(ϕ(x)−μiϕ)T \begin{aligned} \mathbf{S}_{b}^{\phi} &=\left(\boldsymbol{\mu}_{1}^{\phi}-\boldsymbol{\mu}_{0}^{\phi}\right)\left(\boldsymbol{\mu}_{1}^{\phi}-\boldsymbol{\mu}_{0}^{\phi}\right)^{\mathrm{T}} \\ \mathbf{S}_{w}^{\phi} &=\sum_{i=0}^{1} \sum_{\boldsymbol{x} \in X_{i}}\left(\phi(\boldsymbol{x})-\boldsymbol{\mu}_{i}^{\phi}\right)\left(\phi(\boldsymbol{x})-\boldsymbol{\mu}_{i}^{\phi}\right)^{\mathrm{T}} \end{aligned} SbϕSwϕ=(μ1ϕμ0ϕ)(μ1ϕμ0ϕ)T=i=01xXi(ϕ(x)μiϕ)(ϕ(x)μiϕ)T
从表示定理一般形式出发,令Ω\OmegaΩ为0,第二项损失函数为J(w)J(\boldsymbol{w})J(w),那么假设函数可以表示为:
h(x)=∑i=1mαiκ(x,xi) h(\boldsymbol{x})=\sum_{i=1}^{m} \alpha_{i} \kappa\left(\boldsymbol{x}, \boldsymbol{x}_{i}\right) h(x)=i=1mαiκ(x,xi)
再由新空间中的线性方程的表达式h(x)=wTϕ(x)h(\boldsymbol{x})=\boldsymbol{w}^{\mathrm{T}} \phi(\boldsymbol{x})h(x)=wTϕ(x),从而:
w=∑i=1mαiϕ(xi) \boldsymbol{w}=\sum_{i=1}^{m} \alpha_{i} \phi\left(\boldsymbol{x}_{i}\right) w=i=1mαiϕ(xi)
定义:
μ^0=1m0K10μ^1=1m1K11M=(μ^0−μ^1)(μ^0−μ^1)TN=KKT−∑i=01miμ^iμ^iT \begin{aligned} \hat{\boldsymbol{\mu}}_{0} &=\frac{1}{m_{0}} \mathbf{K} \mathbf{1}_{0} \\ \hat{\boldsymbol{\mu}}_{1} &=\frac{1}{m_{1}} \mathbf{K} \mathbf{1}_{1} \\ \mathbf{M} &=\left(\hat{\boldsymbol{\mu}}_{0}-\hat{\boldsymbol{\mu}}_{1}\right)\left(\hat{\boldsymbol{\mu}}_{0}-\hat{\boldsymbol{\mu}}_{1}\right)^{\mathrm{T}} \\ \mathbf{N} &=\mathbf{K K}^{\mathrm{T}}-\sum_{i=0}^{1} m_{i} \hat{\boldsymbol{\mu}}_{i} \hat{\boldsymbol{\mu}}_{i}^{\mathrm{T}} \end{aligned} μ^0μ^1MN=m01K10=m11K11=(μ^0μ^1)(μ^0μ^1)T=KKTi=01miμ^iμ^iT
其中,1i∈{0,1}m×1\mathbf{1}_{i}\in \{0, 1\}^{m \times 1}1i{0,1}m×1,是类别指示向量,对应的类别i的样本为1,其余为0,K\mathbf{K}K为核矩阵。从而将之前的表达式带入整理可得等价地简洁的目标函数表达式:
max⁡αJ(α)=αTMααTNα \max _{\boldsymbol{\alpha}} J(\boldsymbol{\alpha})=\frac{\boldsymbol{\alpha}^{\mathrm{T}} \mathbf{M} \boldsymbol{\alpha}}{\boldsymbol{\alpha}^{\mathrm{T}} \mathbf{N} \boldsymbol{\alpha}} αmaxJ(α)=αTNααTMα
求解方法同LDA中,利用广义特征向量解出(涉及SVD)。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐