我们直接用数学公式来描述我们要解决的问题。假设我有一个数据集 D \mathcal{D} D,总共有m个样本 { x i , y i } , i = 1 , . . . , n \{x_i, y_i\}, i=1, ..., n {xi,yi},i=1,...,n。其中。其中 x i ∈ R d x_i \in \mathbb{R}^d xi∈Rd是维的向量,是二类分类问题的标签,是d维的向量,y是二类分类问题的标签, y i ∈ { − 1 , + 1 } y_i \in \{-1, +1\} yi∈{−1,+1}。我们首先假设我们的数据是完美的,即,在维度的平面上,我们的数据是线性可分的,那么我们就可以画一条直线。我们首先假设我们的数据是完美的,即,在维度d的平面上,我们的数据是线性可分的,那么我们就可以画一条直线 f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b使得我们所有的不同类别的样本区分开来,即对于所有使得我们所有的不同类别的样本区分开来,即对于所有 y i = − 1 y_i=-1 yi=−1的样本的样本 i i i有 w T x + b ≤ 0 w^Tx+b \leq 0 wTx+b≤0,反之对于所有,反之对于所有 y i = + 1 y_i = +1 yi=+1的样本有的样本有 w T x + b ≥ 0 w^Tx+b \geq 0 wTx+b≥0。
但是,如果我们只是单纯的规定 w T x + b = 0 w^Tx+b=0 wTx+b=0作为超平面来区分正负样本,这样的超平面有很多,任何一个超平面符合上述条件都可以作为解,而这对分类的泛化性并不友好。也就是说,当超平面实际上选取很差时,对于测试数据,一点微小的噪声就会导致它的错分。所以SVM定义了另外两个超平面(支持超平面 Supporting Hyperplane),都与 w T x + b = 0 w^Tx+b=0 wTx+b=0平行,到超平面的距离(边际 Margin)分别为 d − d_- d−和 d + d_+ d+,并且保持 d − = d + d_-=d_+ d−=d+。我们将这两个超平面用公式表示:
w T x = b − σ w T x = b + σ w^Tx = b-\sigma \\ w^Tx = b+\sigma wTx=b−σwTx=b+σ
我们注意到,如果将公式的左右两边同时乘以一个系数,公式仍然成立。而且这个公式存在着过参数化。因此SVM规定了这个 σ = 1 \sigma = 1 σ=1。那么边际大小 γ = d − + d + \gamma = d_-+d_+ γ=d−+d+就等于:
γ = 2 ∥ w ∥ \gamma = \frac{2}{\Vert w\Vert} γ=∥w∥2
至此我们已经决定了我们所要得到的优化目标,即找到一个超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0使得它存在两个与之平行、与之距离为 1 1 1并分布两侧的超平面,能够完美分开所有的训练数据,使得正样本在 w T x + b ≥ 1 w^Tx+b \geq 1 wTx+b≥1,负样本 w T x + b ≤ − 1 w^Tx+b \leq -1 wTx+b≤−1。我们把问题写成凸优化问题的形式:(这里强调一点,源自于Convex Optimization那门课中,很多人把优化公式中的max和maximize,min和minimize混为一谈,实际上是不正确的,min/max返回的是一个值,即最小/大值,只有maximize/minimize代表着优化目标函数。)
m a x i m i z e 2 ∥ w ∥ s . t . y i ( w T x + b ) − 1 ≥ 0 , i = 1 , . . . , m \begin{aligned} \mathop{maximize}&~~\frac{2}{\|w\|}\\ s.t. &~~y_i(w^Tx+b) -1 \geq 0 , ~i=1,...,m \end{aligned} maximizes.t. ∥w∥2 yi(wTx+b)−1≥0, i=1,...,m
由于 2 ∥ w ∥ \frac{2}{\|w\|} ∥w∥2是个concave的函数,我们便可以通过倒数的方式转成convex的标准形式,这里加平方应该是要为了是让曲线保证平滑来保证处处可导(这里不是很确定,如果说的不对请大家指出谢谢),即:
m i n i m i z e 1 2 ∥ w ∥ 2 s . t . y i ( w T x + b ) − 1 ≥ 0 , i = 1 , . . . , m \begin{aligned} minimize&~~\frac{1}{2}\|w\|^2\\ s.t. &~~y_i(w^Tx+b) -1 \geq 0 , ~i=1,...,m \end{aligned} minimizes.t. 21∥w∥2 yi(wTx+b)−1≥0, i=1,...,m
对于刚好落在支持超平面上的点,我们就将他们成为支持向量(Support Vector)。
这个问题,可以通过拉格朗日法(Lagrangian) 转换成对偶问题求解。
首先,我们将约束条件乘以一个 λ i \lambda_i λi加入到优化函数 f 0 ( x ) f_0(x) f0(x)中。随后根据拉格朗日法求对偶问题的定义,我们可以得到:
L ( w , b , λ i ) = inf w , b 1 2 ∥ w ∥ 2 − ∑ i m λ i [ y i ( w T x + b ) − 1 ] \mathcal{L}(w,b,\lambda_i)=\inf_{w,b}\frac{1}{2}\|w\|^2-\sum_{i}^{m}\lambda_i[y_i (w^Tx+b)-1] L(w,b,λi)=w,binf21∥w∥2−i∑mλi[yi(wTx+b)−1]
我们仔细看 L \mathcal{L} L这个公式,要求关于 w w w和 b b b的下界,实际上,对于 w w w来说,是一个二次型 w T w w^Tw wTw加上一个累加的Affine映射 ∑ i m λ i y i w T x \sum_i^m \lambda_i y_i w^Tx ∑imλiyiwTx,那么这些都是保持凸函数性质的运算。对于 b b b来说,是一个Affine映射。因此对于 w w w和 b b b而言, L \mathcal{L} L是一个凸函数,在求下界时,我们可以直接通过求导函数为0的点来计算Optimal(全局最优)。
那么我们分别对 w w w和 b b b求导并求等于0的点:
∂ L ∂ w = w − ∑ i m λ i y i x i = 0 ∂ L ∂ b = ∑ i m λ i y i = 0 \begin{aligned} \frac{\partial \mathcal{L}}{\partial w}&=w-\sum_i^m \lambda_iy_ix_i&=0 \\ \frac{\partial \mathcal{L}}{\partial b}&=\sum_i^m{\lambda_iy_i}=0 \end{aligned} ∂w∂L∂b∂L=w−i∑mλiyixi=i∑mλiyi=0=0
随后我们将求导得到的结果带回到 L \mathcal{L} L中,得到:
L = 1 2 w T w + ∑ i m λ i − ∑ i m λ i y i w T x i − ∑ i m λ i y i b = 1 2 ∥ ∑ i m λ i y i x i ∥ 2 + ∑ i m λ i − ∑ i m λ i y i ( ∑ i m λ i y i x i ) T x i = ∑ i m λ i − 1 2 ( ∑ i m λ i y i x i T ) ( ∑ i m λ i y i x i ) = ∑ i m λ i − 1 2 ∑ i m ∑ j m λ i λ j y i y j x i T x j \begin{aligned} \mathcal{L}&=\frac{1}{2}w^Tw+\sum_i^m\lambda_i-\sum_i^m\lambda_iy_iw^Tx_i-\sum_i^m\lambda_iy_ib \\ &=\frac{1}{2}\|\sum_i^m\lambda_iy_ix_i\|^2+\sum_i^m\lambda_i-\sum_i^m\lambda_iy_i(\sum_i^m\lambda_iy_ix_i)^Tx_i\\ &=\sum_i^m\lambda_i-\frac{1}{2}(\sum_i^m\lambda_iy_ix_i^T)(\sum_i^m\lambda_iy_ix_i)\\ &=\sum_i^m\lambda_i-\frac{1}{2}\sum_i^m\sum_j^m\lambda_i\lambda_jy_iy_jx_i^Tx_j \end{aligned} L=21wTw+i∑mλi−i∑mλiyiwTxi−i∑mλiyib=21∥i∑mλiyixi∥2+i∑mλi−i∑mλiyi(i∑mλiyixi)Txi=i∑mλi−21(i∑mλiyixiT)(i∑mλiyixi)=i∑mλi−21i∑mj∑mλiλjyiyjxiTxj
此时,对偶问题就可以被描述为:
m a x i m i z i ∑ i m λ i − 1 2 ∑ i m ∑ j m λ i λ j y i y j x i T x j s . t . λ i ≥ 0 , i = 1 , . . . , m ∑ i m λ i y i = 0 \begin{aligned} \mathop{maximizi}&~~\sum_i^m\lambda_i-\frac{1}{2}\sum_i^m\sum_j^m\lambda_i\lambda_jy_iy_jx_i^Tx_j \\ s.t.&~~\lambda_i \geq 0, ~i=1,...,m \\ &~~\sum_i^m\lambda_iy_i=0 \end{aligned} maximizis.t. i∑mλi−21i∑mj∑mλiλjyiyjxiTxj λi≥0, i=1,...,m i∑mλiyi=0
这个问题可以通过SMO算法去求解,这里就不详细赘述了。其实在整个Convex Optimization的课程中,也没有过于强调如何去解各种凸优化问题,主要还是在介绍如何将各种问题转成可解的凸优化形式。只要转成很好解的形式,就会有各种成熟的工具去进行求解。
在SVM中的问题设定中,我们发现其中很重要的一个假设就是假定超平面能够完美分割全部的数据。尽管在线性不可分的数据中,找不到这样的平面,但是如果使用足够复杂的核函数,大概率会找到一个高维空间的超平面来完美区分,但是这样可能导致的结果就是严重的过拟合。转换成低维的情况可以大致理解为,将每个点用超平面都划分成一个单独的部分,这样也是会100%正确分类训练数据,但是这并不是我们想要的。
在实际数据中,存在噪声是非常有可能的,此时如果将训练数据全部“记住”,会导致严重的过拟合。所以带有松弛变量的SVM就是设定一个参数,让部分数据可以不严格遵守到超平面最小距离为1这个设定。带有松弛变量的SVM的优化目标如下:
m i n i m i z e 1 2 ∥ w ∥ 2 + C ∑ i m ξ i s . t . y i ( w T x i + b ) ≥ 1 − ξ i , i = 1 , . . . , m ξ i > 0 , i = 1 , . . . , m \begin{aligned} \mathop{minimize}&~~\frac{1}{2}\|w\|^2+C\sum_i^m \xi_i\\ s.t.&~~y_i(w^Tx_i+b) \geq 1-\xi_i,~i=1,...,m\\ &\xi_i > 0, ~i=1, ..., m \end{aligned} minimizes.t. 21∥w∥2+Ci∑mξi yi(wTxi+b)≥1−ξi, i=1,...,mξi>0, i=1,...,m
同样我们将它写成对偶的形式,它的拉格朗日对偶函数如下:
L ( w , b , ξ , λ , μ ) = inf w , b , ξ i 1 2 ∥ w ∥ 2 + C ∑ i m ξ i + ∑ i m λ i [ 1 − ξ i − y i ( w T x i + b ) ] − ∑ i m μ i ξ i \mathcal{L}(w,b,\xi,\lambda,\mu) = \inf_{w,b,\xi_i}\frac{1}{2}\|w\|^2+C\sum_i^m\xi_i+\sum_i^m\lambda_i[1-\xi_i-y_i(w^Tx_i+b)]-\sum_i^m\mu_i\xi_i L(w,b,ξ,λ,μ)=w,b,ξiinf21∥w∥2+Ci∑mξi+i∑mλi[1−ξi−yi(wTxi+b)]−i∑mμiξi
L \mathcal{L} L对于 w , b , ξ w,b,\xi w,b,ξ同样是convex的函数,同样我们对这三个变量进行求导。
∂ L ∂ w = w − ∑ i m λ i y i x i = 0 ∂ L ∂ b = ∑ i m λ i y i = 0 ∂ L ∂ ξ i = C − μ i − λ i = 0 \begin{aligned} &\frac{\partial \mathcal{L}}{\partial w} = w-\sum_i^m\lambda_iy_ix_i=0 \\ &\frac{\partial \mathcal{L}}{\partial b} = \sum_i^m\lambda_iy_i = 0 \\ &\frac{\partial \mathcal{L}}{\partial \xi_i}=C-\mu_i-\lambda_i=0 \end{aligned} ∂w∂L=w−i∑mλiyixi=0∂b∂L=i∑mλiyi=0∂ξi∂L=C−μi−λi=0
将求导等于0的结果带回到对偶函数中,我们得到:
L = 1 2 ∥ ∑ i m λ i y i x i ∥ 2 + C ∑ i m ξ i + ∑ i m λ i − ∑ i m λ i ξ i − ∑ i m λ i y i x i T ∑ i m λ i y i x i − ∑ i m λ i y i b − ∑ i m μ i ξ i = C ∑ i m ξ i + ∑ i m λ i − 1 2 ∑ i m ∑ j m λ i λ j y i y j x i T x j − ∑ i m λ i ξ i − ∑ i m μ i ξ i = ∑ i m λ i − 1 2 ∑ i m ∑ j m λ i λ j y i y j x i T x j \begin{aligned} \mathcal{L} &= \frac{1}{2}\|\sum_i^m\lambda_iy_ix_i\|^2+C\sum_i^m\xi_i+\sum_i^m\lambda_i-\sum_i^m\lambda_i\xi_i-\sum_i^m\lambda_iy_ix_i^T\sum_i^m\lambda_iy_ix_i-\sum_i^m\lambda_iy_ib-\sum_i^m\mu_i\xi_i\\ &=C\sum_i^m\xi_i+\sum_i^m\lambda_i-\frac{1}{2}\sum_i^m\sum_j^m\lambda_i\lambda_jy_iy_jx_i^Tx_j-\sum_i^m\lambda_i\xi_i-\sum_i^m\mu_i\xi_i\\ &=\sum_i^m\lambda_i-\frac{1}{2}\sum_i^m\sum_j^m\lambda_i\lambda_jy_iy_jx_i^Tx_j \end{aligned} L=21∥i∑mλiyixi∥2+Ci∑mξi+i∑mλi−i∑mλiξi−i∑mλiyixiTi∑mλiyixi−i∑mλiyib−i∑mμiξi=Ci∑mξi+i∑mλi−21i∑mj∑mλiλjyiyjxiTxj−i∑mλiξi−i∑mμiξi=i∑mλi−21i∑mj∑mλiλjyiyjxiTxj
那么此时对偶问题就可以描述为:
m a x i m i z i ∑ i m λ i − 1 2 ∑ i m ∑ j m λ i λ j y i y j x i T x j s . t . λ i ≥ 0 , i = 1 , . . . , m ∑ i m λ i y i = 0 λ i ≤ C \begin{aligned} \mathop{maximizi}&~~\sum_i^m\lambda_i-\frac{1}{2}\sum_i^m\sum_j^m\lambda_i\lambda_jy_iy_jx_i^Tx_j \\ s.t.&~~\lambda_i \geq 0, ~i=1,...,m \\ &~~\sum_i^m\lambda_iy_i=0 \\ &~~\lambda_i \leq C \end{aligned} maximizis.t. i∑mλi−21i∑mj∑mλiλjyiyjxiTxj λi≥0, i=1,...,m i∑mλiyi=0 λi≤C
可以注意到的是,带有松弛变量的SVM和原始SVM的区别就在于,对于 λ i \lambda_i λi的值的限制不能大于C。
原理
m i n i m i z e 1 2 ∥ w ∥ 2 + C ∑ i m ( ξ i + ξ i ∗ ) , i = 1 , . . . , m s . t . y i − w T x i − b ≤ ε + ξ i , i = 1 , . . . , m w T x i + b − y i ≤ ε + ξ i ∗ , i = 1 , . . . , m ξ i ≥ 0 , i = 1 , . . . , m ξ i ∗ ≥ 0 , i = 1 , . . . , m \begin{aligned} \mathop{minimize}&~~\frac{1}{2}\|w\|^2+C\sum_i^m(\xi_i+\xi_i^*),~i=1,...,m\\ s.t.&~~y_i-w^Tx_i-b\leq\varepsilon+\xi_i,~i=1,...,m \\ &~~w^Tx_i+b-y_i \leq \varepsilon+\xi_i^*,~i=1,...,m\\ &~~\xi_i\geq 0,~i=1,...,m\\ &~~\xi_i^* \geq 0,~i=1,...,m \end{aligned} minimizes.t. 21∥w∥2+Ci∑m(ξi+ξi∗), i=1,...,m yi−wTxi−b≤ε+ξi, i=1,...,m wTxi+b−yi≤ε+ξi∗, i=1,...,m ξi≥0, i=1,...,m ξi∗≥0, i=1,...,m
对偶函数
L ( w , b , ξ , ξ ∗ ) = inf w , b , ξ , ξ ∗ 1 2 ∥ w ∥ 2 + C ∑ i m ( ξ i + ξ i ∗ ) + ∑ i m λ i ( y i − w T x i − b − ε − ξ i ) + ∑ i m λ i ∗ ( w T x i + b − y i − ε − ξ i ∗ ) − ∑ i m μ i ξ i − ∑ i m μ i ∗ ξ i ∗ \begin{aligned} \mathcal{L}(w,b,\xi,\xi^*) = \inf_{w,b,\xi,\xi^*}&\frac{1}{2}\|w\|^2+C\sum_i^m(\xi_i+\xi_i^*)\\ &+\sum_i^m\lambda_i(y_i-w^Tx_i-b-\varepsilon-\xi_i)\\& +\sum_i^m\lambda_i^*(w^Tx_i+b-y_i-\varepsilon-\xi_i^*) \\ &-\sum_i^m\mu_i\xi_i-\sum_i^m\mu_i^*\xi_i^* \end{aligned} L(w,b,ξ,ξ∗)=w,b,ξ,ξ∗inf21∥w∥2+Ci∑m(ξi+ξi∗)+i∑mλi(yi−wTxi−b−ε−ξi)+i∑mλi∗(wTxi+b−yi−ε−ξi∗)−i∑mμiξi−i∑mμi∗ξi∗
求导
∂ L ∂ w = w − ∑ i m ( λ i − λ i ∗ ) x i = 0 ∂ L ∂ b = − ∑ i m λ i + ∑ i m λ i ∗ = 0 ∂ L ∂ ξ i ( ∗ ) = C − λ i ( ∗ ) − μ i ( ∗ ) = 0 \begin{aligned} &\frac{\partial \mathcal{L}}{\partial w} = w-\sum_i^m(\lambda_i-\lambda_i^*)x_i=0 \\ &\frac{\partial \mathcal{L}}{\partial b} = -\sum_i^m\lambda_i+\sum_i^m\lambda_i^*=0 \\ &\frac{\partial \mathcal{L}}{\partial \xi_i^{(*)}} = C-\lambda_i^{(*)}-\mu_i^{(*)}=0\\ \end{aligned} ∂w∂L=w−i∑m(λi−λi∗)xi=0∂b∂L=−i∑mλi+i∑mλi∗=0∂ξi(∗)∂L=C−λi(∗)−μi(∗)=0
代入
m a x i m i z e − 1 2 ∑ i m ∑ j m ( λ i − λ i ∗ ) ( λ j − λ j ∗ ) x i T x j + ∑ i m ( λ i − λ i ∗ ) y i − ε ∑ i m ( λ i + λ i ∗ ) s . t . ∑ i m ( λ i ∗ − λ i ) = 0 λ i ( ∗ ) ≤ C , i = 1 , . . . , m \begin{aligned} \mathop{maximize}&~~-\frac{1}{2}\sum_i^m\sum_j^m(\lambda_i-\lambda_i^*)(\lambda_j-\lambda_j^*)x_i^Tx_j+\sum_i^m(\lambda_i-\lambda_i^*)y_i-\varepsilon\sum_i^m(\lambda_i+\lambda_i^*) \\ s.t.&~~\sum_i^m(\lambda_i^*-\lambda_i)=0\\ &~~\lambda_i^{(*)} \leq C,~i=1,...,m \end{aligned} maximizes.t. −21i∑mj∑m(λi−λi∗)(λj−λj∗)xiTxj+i∑m(λi−λi∗)yi−εi∑m(λi+λi∗) i∑m(λi∗−λi)=0 λi(∗)≤C, i=1,...,m