支持向量机的一些推导梳理

基本上按照吴恩达的PDF的思路,参考了西瓜书和一本机器学习实战,感觉吴恩达PDF和西瓜书简直互补。
先梳理一下拉格朗日对偶的数学概念,然后后面思路会顺一些。

拉格朗日对偶

对于优化问题(原问题)$$\mathop{min}{w}f(w)\s.t.\begin{aligned} g_i(w)\leqslant0\h_i(w)=0\end{aligned}$$
构造拉格朗日函数$$L(w,\alpha,\beta)=f(w)+\sum
\alpha_ig_i(w)+\sum_i\beta_ih_i(w)$$定义函数$$\theta_p(w)=\mathop{max}{\alpha,\beta;\alpha_i>0}L(w,\alpha,\beta)$$
定义问题$$p^*=\mathop{min}
\mathop{max}{\alpha,\beta;\alpha_i>0}L(w,\alpha,\beta)=\mathop{min}\theta_p(w)$$则\(p^*\)这个问题和原问题同解,因为

对于拉格朗日函数\(L\)而言,如果原问题的约束满足,则使得\(L\)最大化(即\(\theta_p(w)\)函数)就是让\(\alpha\)\(\beta\)全部为零,这样\(L\)就等于\(f(w)\); 如果原问题的约束不满足,则\(\theta_p(w)\)可以任意地接近正无穷。所以$$\theta_p(w)=\begin{cases}f(w)&约束满足\+\infty&约束不满足\end{cases}$$因此最小化\(\theta_p(w)\)就是在原问题约束下最小化\(f(w)\).

再定义函数$$\theta_D(\alpha,\beta)=\mathop{min}{w}L(w,\alpha,\beta)$$定义问题$$d^*=\mathop{max}\mathop{min}{w}L(w,\alpha,\beta)=\mathop{max}\theta_D(\alpha,\beta)$$称为对偶问题。

一般情况下总是成立\(d^*\leqslant p^*\),因为:

对于二元函数\(f(x,y)\)总有$$\mathop{max}{x}\mathop{min}f(x,y)\leqslant \mathop{min}{y}\mathop{max}f(x,y)$$因为上式等价于说,对于任意\(s,t\)有(你的最大值比我最小值还小,那我任何元素都比你更大)$$\mathop{min}{y}f(s,y)\leqslant \mathop{max}f(x,t)$$上面这个式子就是:(显然成立)$$\mathop{min}{y}f(s,y)\leqslant f(s,t)\leqslant \mathop{max}f(x,t)$$

但是在满足某些条件的时候\(p^*=d^*\),条件是:

1 \(f(w)\)是凸函数;2 \(\{g_i(w)\}\)是凸函数;3 \(\{h_i(w)\}\)是仿射函数;4 \(\{g_i(w)\}\)的那个不等式约束取严格小于时,原问题可行域非空

满足上面条件,则一定存在\(w^*,\alpha^*,\beta^*\)满足:1 \(w^*\)是原问题的解;2 \(\alpha^*\)\(\beta^*\)是对偶问题的解;3 \(w^*,\alpha^*,\beta^*\)满足KKT条件。反过来,如果存在\(w^*,\alpha^*,\beta^*\)满足KKT条件,则\(w^*,\alpha^*,\beta^*\)也一定是原问题和对偶问题的解。

KKT条件是:

\[\frac{\partial}{\partial w_i}L(w^*,\alpha^*,\beta^*)=0$$ $$\frac{\partial}{\partial \beta_i}L(w^*,\alpha^*,\beta^*)=0$$ $$\alpha^*_ig_i(w^*)=0$$ $$g_i(w^*)\leqslant0$$ $$\alpha_i\geqslant0 \]

最大间隔分类器

给定训练集\((x^{(i)},y^{(i)})\),希望寻找超平面\(w^Tx+b=0\)使得对于所有\(y^{(i)}=1\)的样本在超平面上方:\(w^Tx^{(i)}+b\geqslant0\),对于所有\(y^{(i)}=-1\)的样本在超平面下方:\(w^Tx^{(i)}\leqslant0\).

为衡量一个样本距离超平面的远近,定义函数间隔为$$\hat{\gamma}{(i)}=y(wTx+b)$$注意这个函数间隔总是正数。希望对于正例,间隔越大样本越“正”;对与负例,间隔越大样本越“负”。然而定义的函数间隔有问题:同时给\(w,b\)乘以同一个常数,超平面不变,样本的正负程度不变,但函数间隔却变化了一个常数倍。

为解决这个问题,可以定义几何间隔为$$\gamma{(i)}=y(wTx+b)/||w||_2$$可以证明这个几何间隔就是\(n\)维欧几里得空间中样本\(x^{(i)}\)到超平面\(w^Tx+b=0\)的距离。

最大间隔分类器目的是在特征空间中找到超平面使得正负样本被分到超平面两边且到超平面的距离都最大化。转化为优化问题就是:$$\mathop{max}{\gamma,w,b} \gamma\s.t.\begin{aligned}&y{(i)}(wT+b)\geqslant\gamma\ &||w||=1\end{aligned}$$这个问题含有等式约束很麻烦,使用函数间隔可以转换成(首先应该使得函数间隔大于某个值,又因为函数间隔可以任意缩放,对优化目标进行归一化处理,也可以按照西瓜书上那样直接得到优化目标为\(\gamma=2/||w||\))$$\mathop{max},w,b}\frac{\hat{\gamma}}{||w||}\s.t. \quad y{(i)}(wT+b)\geqslant\hat{\gamma}$$上面优化问题说的是遍历所有满足约束的\(\hat{\gamma},w,b\)求出使得\(\hat{\gamma}/||w||\)最大的那一组\(\hat{\gamma},w,b\)。对于每一次\(\hat{\gamma},w,b\)的取值,我都可以利用 “\(w,b\)任意缩放不影响分类效果” 而把\(\hat{\gamma}\)变成\(1\)。所以可以直接将上面问题中的\(\hat{\gamma}\)设为\(1\)而不改变问题的解(\(\hat{\gamma}\)正好为\(1\)的那些样本称之为支持向量)。把\(||w||\)倒数最大化等于将\(||w||\)最小化。所以问题转化为$$\mathop{min}_{w,b}\frac{1}{2}||w||^2_2\s.t.\quad y{(i)}(wT+b)\geqslant1$$

为进一步简化这个问题,尝试利用对偶问题来解决。可以验证这个问题满足使得\(d^*=p^*\)的四个条件,因此这个问题的解与其对偶问题的解相同。先不写其对偶问题是什么,先写拉格朗日函数,再利用KKT条件对拉格朗日函数进行化简。

拉格朗日函数为$$L(w,\alpha,\beta)=\frac{1}{2}||w||2-\sum_i\alpha_i[y(wTx+b)-1]$$利用KKT条件里的对\(w\)\(b\)偏导为零(\(b\)可以视为\(w\)的一部分),得到$$w-\sum_i\alpha_iy{(i)}x=0\tag{\(*\)}$$$$\sum_i\alpha_iy{(i)}=0\tag{$**$}$$把这两个式子代入拉格朗日函数得到$$\begin{aligned}L(w,\alpha,\beta)&=\sum_i\alpha_i-\frac{1}{2}\sum_{i,j}\alpha_i\alpha_jyy{(j)}xx^{(j)}\ &=\sum_i\alpha_i-\frac{1}{2}\sum_{i,j}\alpha_i\alpha_jy{(i)}y\langle x{(i)},x\rangle\end{aligned}$$
所以对偶问题是$$\mathop{max}{\alpha}\sum_i\alpha_i-\frac{1}{2}\sum\alpha_i\alpha_jy{(i)}y\langle x{(i)},x\rangle\ s.t.\quad \begin{aligned}&\alpha_i\geqslant0\&\sum_i\alpha_iy^{(i)}=0\end{aligned}$$对偶问题的两个约束,第一个是一直都有的(在拉格朗日对偶里面),第二个是KKT条件得来的\((**)\)式。

为求得对偶问题的解,使用SMO算法。对偶问题是一个有约束的最大值问题。SMO算法思想是,选取一个变量更新,使目标函数最大化,同时固定其他变量不变。由于对偶问题中有一个等式约束,不能只更新一个变量而保持约束成立,所以每次选取两个\(\alpha_i,\alpha_j\)同时更新使目标函数最大化。

一旦在某次更新中选取了\(\alpha_i,\alpha_j\)两个变量,而其余变量固定,那么剩下的就是求新的\(\alpha_i,\alpha_j\)值使得拉格朗日函数最大化。这个过程可以做得非常高效:因为约束为\(\alpha_iy^{(i)}+\alpha_jy^{(j)}=c\),则\(a_j\)可以用\(a_i\)表示,从而转化为一个单变量二次优化问题,且约束条件只有一个\(\alpha_i\geqslant0\),这个问题有解析解:全局极值点如果在可行域内则直接取它,如果不在可行域内则取边界点。

每次更新都要选取\(\alpha_i,\alpha_j\),一般的选取策略是,选取的两个\(\alpha_i,\alpha_j\)对应的样本间隔应该最大。

如果求得了对偶问题的解,那么直接使用\((*)\)式可以非常简单地得到\(w^*\).

剩下的只有\(b\)了,\(w\)是斜率,控制超平面的摆放角度(斜率),\(b\)控制其摆放的高度(截距)。当最佳的\(w^*\)确定了以后,最佳的\(b\)的取值,直觉上应该使得超平面位于两组支持向量确定的两个平行超平面的中间。设最佳\(b\)\(b^*\),则对于正样本的支持向量而言\(w^{*T}x^+=1-b^*\),对于负样本的支持向量而言\(w^{*T}x^-=-1-b^*\)所以\(b^*=-\frac{w^{*T}x^++w^{*T}x^-}{2}\),而\(x^+\)\(x^-\)可以用\(\mathop{min}_{i:y^{(i)}=1}w^{*T}x^{(i)}\)\(\mathop{max}_{i:y^{(i)}=-1}w^{*T}x^{(i)}\)来表示。所以$$b*=-\frac{\mathop{min}\limits_{i:y=1}w{*T}x+\mathop{max}\limits_{i:y{(i)}=-1}wx^{(i)}}{2}$$

既然已经求出\(w\)\(b\),那就可以对输入的新样本进行预测。预测根据的是看\(w^Tx+b\)是正是负而归到正类或者负类。为\(w^Tx+b\)可以化简,利用\((*)\)式$$\begin{aligned}wTx+b&=\left(\sum_i\alpha_iyx{(i)}\right)Tx+b\ &=\sum_i\alpha_iy^{(i)}\langle x^{(i)},x\rangle+b\end{aligned}$$
观察KKT条件的最后三行,那里实际上说的是,不等式\(g_i(w)\leqslant0\)和不等式\(\alpha_i\geqslant0\)总有一个取等号,另一方面,对于非支持向量而言,前者必然不取等号,所以后者一定取等号。换句话说,只有支持向量对应的\(\alpha_i\)才可能非零。于是实际上,上面的式子中的内积,只需要对支持向量计算即可。

核函数

有的问题是线性可分的,有的问题不是线性可分的。前面所有的讨论都是事先假设训练集一定线性可分。如果训练集不是线性可分的,个人感觉上一般来说可以大致分为两种情况。一种是有部分样本类似于乱跑的小噪声,但总体上训练集仍然基本上呈现出线性可分的趋势,这部分可以通过软间隔来解决。另一种是,本来训练集就完全不是线性可分的,但使用非线性的曲线(二维时),或者“超曲面”就可以较好地分割,这就需要使用核函数。

核函数使用的场合,西瓜书上的列举的异或是一个典型,这类问题使用超平面无法分割,但是映射到更高维的特征空间,在高维特征空间中使用超平面却可能实现分割。具体例子就不抄写了。

一般使用\(\phi(x)\)表示样本\(x\)经过某个从低维到高维的映射\(\phi(\cdot)\)操作后的特征向量。预测函数原来是\(w^Tx+b\),现在是\(w^T\phi(x)+b\),其余一切推导可以照旧,得到的对偶问题是$$\mathop{max}{\alpha}\sum_i\alpha_i-\frac{1}{2}\sum\alpha_i\alpha_jy{(i)}y\langle \phi(x{(i)}),\phi(x)\rangle\ s.t.\quad \begin{aligned}&\alpha_i\geqslant0\&\sum_i\alpha_iy{(i)}=0\end{aligned}$$与之前的不同仅在于使用了$\phi(x)$代替$x$而已。但是,一般情况下高维空间维数很高,计算内积很麻烦,而且有时候高维空间是无穷维的,所以可以设想有一个函数$k(\cdot,\cdot)$可以在原特征空间计算高维空间的内积,即$$k(x,x{(j)})=\langle\phi(x),\phi(x{(j)})\rangle=\phiT(x{(i)})\phi(x)$$
这个函数就叫做核函数。引入这个记号以后,预测函数就变成$$\begin{aligned}wT\phi(x)+b&=\left(\sum_i\alpha_iy\phi(x){(i)}\right)T\phi(x)+b\ &=\sum_i\alpha_iy{(i)}k(x,x)+b\end{aligned}$$
有了映射\(\phi(\cdot)\)就有核函数\(k(\cdot,\cdot)\),有核函数计算将会很简便而不用管原来的映射到底是什么。实际任务中,往往事先并不知道怎样的映射才是有效的,也就不知道核函数是怎样的,那么任取一个函数作为核函数可行吗? 不可以。满足Mercer定理的函数才可以取为核函数。

Mercer定理(按照西瓜书的版本):设\(R^n\)为特征空间,\(k(\cdot,\cdot)\)为定义在\(R^n\times R^n\)上的对称函数,则\(k(\cdot,\cdot)\)是核函数当且仅当对于任意(样本数量为\(m\)的)训练集\(x^{(1)},\cdots,x^{(m)}\),核矩阵$$K=[K_{i,j}]$$总是半正定的。其中矩阵元\(K_{ij}=k(x^{(i)},x^{(j)}),i,j=1,\cdots,m\).

吴恩达PDF上对此有两点简单的解释,首先内积是可以调换次序的,所以核函数必须是对称的。其次解释了在有限维空间中,矩阵\(K\)的正定性是“函数\(k\)可以作为核函数”的必要条件(充分性成立但没解释):

\(z\)是有限维任意向量,则$$zTKz=\sum_i\sum_jz_i\phi(x)T\phi(x)z_j=\sum_k\sum_i\sum_jz_i\phi_k(x{(i)})\phi_k(x)z_j=\sum_k\left(\sum_i \phi_k(x{(i)})z_i\right)2\geqslant0$$
满足半正定矩阵的定义。

软间隔

如果训练集不是线性可分的,但是排除掉一些少量的样本以后,基本上仍是线性可分的,这时可以使用软间隔。此外,软间隔也可以用于减弱离群点(outliers)的不良影响,例如下面这张图。这张图说的是,由于离群点的影响,如果非要严格地线性分割就会造成间隔很小,影响预测准确性。
这里写图片描述

软间隔允许一定程度上对训练集分类错误的容忍。使用下面优化问题代替原来的问题:$$\mathop{min}_{\gamma,\beta,b}\frac{1}{2}||w||^2+C\sum_i\xi_i\s.t.\quad\begin{aligned} &y{(i)}(wTx^{(i)}+b)\geqslant1-\xi_i\&\xi_i\geqslant0\end{aligned}$$这样就允许部分样本点的函数间隔小于\(1\),但也要付出相应的代价。参数\(C\)控制这两者的权衡。

加入这一个\(\ell_{1}\)惩罚项以后,得到的对偶问题只是约束条件稍有不同,求出的\(w^*\)\(b^*\)也不同,但预测函数仍然是\(w^{*T}x+b^*\)

posted @ 2018-05-25 16:18  immcrr  阅读(383)  评论(0编辑  收藏  举报