支持向量机–SVM与核学习–kernel

原话说的是,主要考察思想…\ …你搁这搁这呢


讨论最基本的二分类的支持向量机(support vector machines,SVMsupport\ vector\ machines, SVM),考虑训练样本集 D=(x1,y1),,(xm,ym),yi1,+1D=\left(\overrightarrow{x_{1}}, y_{1}\right), \ldots,\left(\overrightarrow{x_{m}}, y_{m}\right), y_{i} \in-1,+1 。从最基本的超平面划分训练样本开始,导出 SVMSVM 的基本问题,再利用对偶问题求解,最后讨论 SVMSVM 的核技巧。

SVM

超平面

超平面(Hyper Plane) 是在样本空间中的一个平面。在我们熟悉的二维平面上, 一条直线的方程可以表示为 ax+by+c=0a x+b y+c=0, 推广到多维的情况之后,超平面 可以用向量的形式表示为 wx+b=0\vec{w} \cdot \vec{x}+b=0 , 记为 (w,b\vec{w}, b) 的形式,其中 w\vec{w} 是法向 量,而 bb 为位移项。
考虑任意一点 x\vec{x} 到超平面之间的距离,可以表示为:

γ=wx+bw\gamma=\frac{|\vec{w} \cdot \vec{x}+b|}{\|\vec{w}\|}

超平面能将样本空间划分成两部分。假设超平面 (w,b\vec{w}, b) 将所有样本正确分类, 即对于任意的 (xi,yi)D\left(\overrightarrow{x_{i}}, y_{i}\right) \in D, 若 yi=+1y_{i}=+1 , 那么 wx+b>0\vec{w} \cdot \vec{x}+b>0 , 若 yi=1y_{i}=-1, 那 么 wx+b<0\vec{w} \cdot \vec{x}+b<0。像这样的决策函数可以表示为:

yi=sign(wxi+b)y_{i}=\operatorname{sign}\left(\vec{w} \cdot \overrightarrow{x_{i}}+b\right)

那么,在一个空间中,会存在多个超平面能够将训练样本分开,那么究竟该努力去 找哪一个超平面呢?

最大间隔

对于 (xi,yi)\left(\vec{x}_{i}, y_{i}\right), 可以将上面的距离公式的分子部分代入 yiy_{i} 改写成:

γi=yi(wx+b)w\gamma_{i}=\frac{y_{i}(\vec{w} \cdot \vec{x}+b)}{\|\vec{w}\|}

定义间隔(marginmarginγ\gamma 为所有样本中离超平面最近的那个, 即 γ=minγi\gamma=\min \gamma_{i}, 那 么 γiγ\gamma_{i} \geq \gamma 总是成立的,代入上式可得:

yi(wx+b)wγ\frac{y_{i}(\vec{w} \cdot \vec{x}+b)}{\|\vec{w}\|} \geq \gamma

因此,SVMSVM 的问题就变成了找到 “最大间隔”(maximum marginmaximum\ margin)的超平 面,使得 γ\gamma 最大,即:

max(w,b)mini1wwxi+b s.t. yi(wxi+b)>0,i=1,2,,m\begin{array}{l} \max _{(\vec{w}, b)} \min _{i} \frac{1}{\|\vec{w}\|}\left|\vec{w} \cdot \vec{x}_{i}+b\right| \\ \text { s.t. } \quad y_{i}\left(\vec{w} \cdot \vec{x}_{i}+b\right)>0, \quad i=1,2, \ldots, m \end{array}

因为间隔始终大于 0 , 即 wxi+b>0\left|\vec{w} \cdot \vec{x}_{i}+b\right|>0, 则可以通过缩放 (w,b\vec{w}, b) 使得 miniwxi+b=1\min _{i}\left|\vec{w} \cdot \vec{x}_{i}+b\right|=1, 那么上面的问题就变成 max1w\max \frac{1}{\|\vec{w}\|}, 即 minw\min \|\vec{w}\|, 在其它书里通常会被等价成 min12w2\min \frac{1}{2}\|\vec{w}\|^{2}, 于是上式可以重写成:

min12w2 s.t. yi(wxi+b)1,i=1,2,,m\begin{array}{ll} \min & \frac{1}{2}\|\vec{w}\|^{2} \\ \text { s.t. } & y_{i}\left(\vec{w} \cdot \vec{x}_{i}+b\right) \geq 1, \quad i=1,2, \ldots, m \end{array}

是一个凸二次规划(convex quadratic programmingconvex\ quadratic\ programming)问题,这样就能够利用 上现有的求解优化问题的方法。(没错,就是一个运筹学的线性规划问题)

对偶问题

浅浅回顾一下

首先考虑一个最优化问题:

minf(z) s.t. hi(z)0\begin{array}{l} \min f(\vec{z}) \\ \text { s.t. } \quad h_{i}(\vec{z}) \leq 0 \end{array}

引入拉格朗日函数 L(z,α)\mathcal{L}(\vec{z}, \vec{\alpha}), 其中 α=(α1,,αm),αi0\vec{\alpha}=\left(\alpha_{1}, \ldots, \alpha_{m}\right), \alpha_{i} \geq 0 为拉格朗日乘 子,则有:

L(z,α)=f(z)+αihi(z)\mathcal{L}(\vec{z}, \vec{\alpha})=f(\vec{z})+\sum \alpha_{i} h_{i}(\vec{z})

那么上面的最优化问题等价于:

minzmaxα0L(z,α)\min _{\vec{z}} \max _{\vec{\alpha} \geq 0} \mathcal{L}(\vec{z}, \vec{\alpha})

称为 原始问题primal problemprimal\ problem。下面来证明其等价于一开始的优化问题,主要思路是将拉格朗日函数展开代入,再利用 α0\vec{\alpha} \geq 0 的条件消去第二项:

minzmaxα0L(z,α)=minz(f(z)+maxα0αihi(z))=minz(f(z)+{0, if hi(z)0, if hi(z)>0)=minzf(z)\begin{aligned} & \min _{\vec{z}} \max _{\vec{\alpha} \geq 0} \mathcal{L}(\vec{z}, \vec{\alpha}) \\ = & \min _{\vec{z}}\left(f(\vec{z})+\max _{\vec{\alpha} \geq 0} \sum \alpha_{i} h_{i}(\vec{z})\right) \\ = & \min _{\vec{z}}\left(f(\vec{z})+\left\{\begin{array}{ll} 0, & \text { if } h_{i}(\vec{z}) \leq 0 \\ \infty, & \text { if } h_{i}(\vec{z})>0 \end{array}\right)\right. \\ = & \min _{\vec{z}} f(\vec{z}) \end{aligned}

将该问题的中的 min\minmax\max 交换位置,即可得到其对偶问题(dual problemdual\ problem):

maxα0minzL(z,α)\max _{\vec{\alpha} \geq 0} \min _{\vec{z}} \mathcal{L}(\vec{z}, \vec{\alpha})

原始问题与对偶问题的关系:

maxα0minzL(z,α)minzmaxα0L(z,α)\max _{\vec{\alpha} \geq 0} \min _{\vec{z}} \mathcal{L}(\vec{z}, \vec{\alpha}) \leq \min _{\vec{z}} \max _{\vec{\alpha} \geq 0} \mathcal{L}(\vec{z}, \vec{\alpha})

在某些条件下,原始问题与对偶问题的最优值相等,这时候可以用解对偶问题代替 解原始问题。该条件称为 KKT(Karush-Kunh-Tucker)条件,具体证明超出了本文的涉及范围,我自己也不会,就先略过。在这个条件下,可以从 SVMSVM 问题的 对偶问题 求解,进而得到 SVMSVM 的解。

SVM 求解(99%

SVMSVM 的问题用拉格朗日函数的形式重写为:

L(w,b,α)=12w2f(w,b)+αi(1yi(wxib))hi(w,b)0\mathcal{L}(\vec{w}, b, \vec{\alpha})=\underbrace{\frac{1}{2}\|\vec{w}\|^{2}}_{f(\vec{w}, b)}+\sum \alpha_{i} \underbrace{\left(1-y_{i}\left(\vec{w} \cdot \vec{x}_{i}-b\right)\right)}_{h_{i}(\vec{w}, b) \leq 0}

L(w,b,α)\mathcal{L}(\vec{w}, b, \vec{\alpha}) 对于 w\vec{w}bb 的偏导数等于零:

{Lw=wαiyixi=0Lb=αiyi=0\left\{\begin{array}{l} \frac{\partial \mathcal{L}}{\partial \vec{w}}=\vec{w}-\sum \alpha_{i} y_{i} \vec{x}_{i}=0 \\ \frac{\partial \mathcal{L}}{\partial b}=\sum \alpha_{i} y_{i}=0 \end{array}\right.

可得:

w=αiyixi0=αiyi\begin{aligned} \vec{w} & =\sum \alpha_{i} y_{i} \vec{x}_{i} \\ 0 & =\sum \alpha_{i} y_{i} \end{aligned}

将上式代入 L(w,b,α)\mathcal{L}(\vec{w}, b, \vec{\alpha}) 可得:

L(w,b,α)=12(αiyixi)(αiyixi)+αi(1yi((αiyixi)xib)))=i=1mαi12i=1mj=1mαiαjyiyj(xixj)\begin{aligned} \mathcal{L}(\vec{w}, b, \vec{\alpha})= & \frac{1}{2}\left(\sum \alpha_{i} y_{i} \vec{x}_{i}\right) \cdot\left(\sum \alpha_{i} y_{i} \vec{x}_{i}\right) \\ & \left.+\sum \alpha_{i}\left(1-y_{i}\left(\left(\sum \alpha_{i} y_{i} \vec{x}_{i}\right) \cdot \vec{x}_{i}-b\right)\right)\right) \\ = & \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}\left(\vec{x}_{i} \cdot \vec{x}_{j}\right) \end{aligned}

这样,对偶问题就变成:

maxα0minzL(z,α)maxα0i=1mαi12i=1mj=1mαiαjyiyj(xixj) s.t. αiyi=0,αi0\begin{aligned} & \max _{\vec{\alpha} \geq 0} \min _{\vec{z}} \mathcal{L}(\vec{z}, \vec{\alpha}) \\ \Longrightarrow & \max _{\vec{\alpha} \geq 0} \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}\left(\vec{x}_{i} \cdot \vec{x}_{j}\right) \\ & \text { s.t. } \quad \sum \alpha_{i} y_{i}=0, \alpha_{i} \geq 0 \end{aligned}

解出 α\vec{\alpha} 后,求出 w\vec{w}bb 即可得到模型:

f(x)=wx+b=i=1mαiyi(xix)+b\begin{aligned} f(\vec{x}) & =\vec{w} \cdot \vec{x}+b \\ & =\sum_{i=1}^{m} \alpha_{i} y_{i}\left(\vec{x}_{i} \cdot \vec{x}\right)+b \end{aligned}

具体求解过程需要满足上面提到的 KTTKTT 条件:

{αi0yif(xi)10αi(yif(xi)1)=0\left\{\begin{array}{l} \alpha_{i} \geq 0 \\ y_{i} f\left(\vec{x}_{i}\right)-1 \geq 0 \\ \alpha_{i}\left(y_{i} f\left(\vec{x}_{i}\right)-1\right)=0 \end{array}\right.

求解上面的对偶问题 的一个著名算法是 SMO (Sequential Minimal Optimization), 这里不展开叙述。

软间隔

啥是软间隔,就是近似线性可分问题

上面我们考虑的都是数据可以分隔的情况,那么当数据集并不是完全能被超平面分 隔,即有些点不满足约束 yi(wxi+b)1y_{i}\left(\vec{w} \cdot \vec{x}_{i}+b\right) \geq 1, 那可以设定一个惩罚项:

ξi=max{1yi(wxi+b),0}\xi_{i}=\max \left\{1-y_{i}\left(\vec{w} \cdot \vec{x}_{i}+b\right), 0\right\}

那么原来的 SVMSVM 的优化问题就会变成:

minw,b12w2+Ci=1mmax{1yi(wxi+b),0} s.t. 1yi(wxi+b)0,i=1,2,,m\begin{array}{ll} \min _{\vec{w}, b} & \frac{1}{2}\|\vec{w}\|^{2}+C \sum_{i=1}^{m} \max \left\{1-y_{i}\left(\vec{w} \cdot \vec{x}_{i}+b\right), 0\right\} \\ \text { s.t. } & 1-y_{i}\left(\vec{w} \cdot \vec{x}_{i}+b\right) \leq 0, \quad i=1,2, \ldots, m \end{array}

其中的 max(1z,0)\max (1-z, 0) 称为 “折页损失” (hinge losshinge\ loss)。接着引入 “松他变量(slackvariable)ξi0(slack variable) \xi_{i} \geq 0, 将上式重写为:

minw,b12w2+Ci=1mξi s.t. yi(wxi+b)1ξiξi0,i=1,2,,m\begin{array}{ll} & \min _{\vec{w}, b} \frac{1}{2}\|\vec{w}\|^{2}+C \sum_{i=1}^{m} \xi_{i} \\ \text { s.t. } & y_{i}\left(\vec{w} \cdot \vec{x}_{i}+b\right) \geq 1-\xi_{i} \\ & \xi_{i} \geq 0, i=1,2, \ldots, m \end{array}

即可得到 “软间隔支持向量机” (soft margin SVMsoft\ margin\ SVM)。求解方法与前面是一样的。

核方法(99%

ppt 看的头大

当遇到样本是 非线性可分 时,一般的线性 SVMSVM 就无法很好的分类,这时候可以采用核技巧(kerneltrickkernel trick)。

基本思想是 将样本映射至高维空间变成高维空间中线性可分的即可

kernel

考虑一个映射函数 ϕ(x)\phi(\vec{x}), 将 dd 维特征映射至 mm 维:

ϕ(x):RdRm\phi(\vec{x}): \mathbb{R}^{d} \rightarrow \mathbb{R}^{m}

定义 核函数kernel functionkernel\ function):

K(xi,xj)=ϕ(xi)ϕ(xj)K\left(\vec{x}_{i}, \vec{x}_{j}\right)=\phi\left(\vec{x}_{i}\right) \cdot \phi\left(\vec{x}_{j}\right)

核技巧的思想是用核函数 KK 避免在高维 mm 空间中计算映射函数的内积,这样能 够极大简化运算。
根据 Mercers theoremMercer's\ theorem, 函数 KK 能够满足成为核函数的充分必要条件是 KK半正定positive semidefinitepositive\ semidefinite),即

i,j=1mcicjK(xi,xj)0\sum_{i, j=1}^{m} c_{i} c_{j} K\left(\vec{x}_{i}, \vec{x}_{j}\right) \geq 0

常用的核函数有 多项式核函数Polynomial functionPolynomial\ function):

K(xi,xj)=(xixj+1)dK\left(\vec{x}_{i}, \vec{x}_{j}\right)=\left(\vec{x}_{i} \cdot \vec{x}_{j}+1\right)^{d}

以及 高斯核函数Guassian radial basis functionGuassian\ radial\ basis\ function),通常称为 RBF KernelRBF\ Kernel:

K(xi,xj)=exp(xixj22σ2)K\left(\vec{x}_{i}, \vec{x}_{j}\right)=\exp \left(-\frac{\left\|\vec{x}_{i}-\vec{x}_{j}\right\|^{2}}{2 \sigma^{2}}\right)