在二维平面中,正样本和负样本可以由一条直线完全隔开。假设存在直线 y = ω 1 x + b y=\omega_1 x+b y=ω1x+b使得平面上 ω 1 x + b ≥ 0 \omega_1 x+b\ge 0 ω1x+b≥0处完全是正样本, ω 1 x + b < 0 \omega_1 x+b<0 ω1x+b<0完全是负样本,那么这条直线就是一个超平面,它将样本完全分开,并且这样的样本被称为线性可分。
超平面是推广到n维空间后的概念,在一维空间下,超平面就是一个点;在二维空间下,超平面就是一条直线;在三维平面下,超平面就是一个平面;…推广到n维情况,则统称为超平面
在二维平面上,对于一组线性可分的数据,往往可以找到很多条直线作为超平面。支持向量机可以在这若干条直线中,找出最合适的一条直线作为决策边界。如何判断直线足够合适呢?对于一个决策边界,我们希望他能够具有较好的泛化能力。假如正样本均匀分布在y=0的直线上,负样本均匀分布在存在于y=9的直线上。假设我们取y=1,y=5,y=8作为超平面,从直觉上来讲,y=1,y=8两条直线都离一组样本过近,离另外一组样本过远,因此这两条直线都不合适。而y=5作为y=0和y=9的垂线,对于正样本和负样本都留有一定的余地,这使得模型的泛化能力变强。当出现一些噪声,比如y=2上出现了正样本,y=7上出现了负样本的情况,y=5都能够将其归为正确的分类。当然,并不是所有的样本都如我们期望的那样线性可分。
总的来说,支持向量机(support vector machines)可以分为以下三种:
在超平面确定的情况下, ∣ ω x + b ∣ |\omega x+b| ∣ωx+b∣表示点到超平面的距离,而函数最终预测输出的y(1和-1)与 ω x + b \omega x +b ωx+b 符号一致,因此可用 y ( ω x + b ) y(\omega x +b) y(ωx+b)来表示分类预测的准确程度。定义所有样本点最小的 y ( ω x + b ) y(\omega x +b) y(ωx+b)作为函数间隔,
根据高中的知识,我们知道点到直线的距离公式为 d = ∣ a x 0 + b y 0 + c a 2 + b 2 ∣ d=|\frac{ax_0+by_0+c}{\sqrt{a^2+b^2}}| d=∣a2+b2ax0+by0+c∣,点到平面的距离公式为 d = ∣ A x 0 + B y 0 + C z 0 + D A 2 + B 2 + C 2 ∣ d=|\frac{Ax_0+By_0+Cz_0+D}{\sqrt{A^2+B^2+C^2}}| d=∣A2+B2+C2Ax0+By0+Cz0+D∣,如果用向量表示,设 ω = ( a , b ) \omega = (a,b) ω=(a,b), f ( x ) = ω T x + c f(x)=\omega ^Tx+c f(x)=ωTx+c,那么这个距离正是 ∣ f ( x ) ∣ ∣ ∣ ω ∣ ∣ \frac{|f(x)|}{||\omega||} ∣∣ω∣∣∣f(x)∣。
我们知道对于一个超平面恒有
y i ( w x i + b ) > 0 y_i(wx_i+b) \gt 0 yi(wxi+b)>0
则我们一定可以找到一个最小值 r r r令
y i ( w x i + b ) = r y_i(wx_i+b)=r yi(wxi+b)=r
对于 w x + b wx+b wx+b和 2 w x + 2 b 2wx+2b 2wx+2b来说,对应的是相同的超平面,我们不妨令r=1,尽管最小值可能不是1,我们也可以通过缩放操作令其等于1,这样我们实际上也对w做了限制,使我们能够找到特定的解而不是无数解。
满足 y ( ω T x + b ) = 1 y(\omega ^Tx+b)=1 y(ωTx+b)=1的样本点我们称之为支持向量。因为它们是撑开超平面的并且离超平面最近的点。对于其他不是支持向量的点,显然有 y ( ω T x + b ) > 1 y(\omega ^Tx+b)>1 y(ωTx+b)>1。
令 x ⃗ + \vec x_+ x+和 x ⃗ − \vec x_- x−表示两个正负支持向量,满足 y ( ω T x + b ) = 1 y(\omega ^Tx+b)=1 y(ωTx+b)=1,推出 { ω T x + = 1 − b ω T x − = − 1 − b \begin{cases}\omega ^Tx_+=1-b \\ \omega ^Tx_-=-1-b \end{cases} {ωTx+=1−bωTx−=−1−b。对于一正一负两个支持向量的间隔等于两个支持向量的差在 ω \omega ω上的投影,即
γ = x ⃗ + ⋅ ω ⃗ T ∣ ∣ ω ∣ ∣ − x ⃗ − ⋅ ω ⃗ T ∣ ∣ ω ∣ ∣ = x ⃗ + ⋅ ω ⃗ T − x ⃗ − ⋅ ω ⃗ T ∣ ∣ ω ∣ ∣ = 1 − b + ( 1 + b ) ∣ ∣ ω ∣ ∣ = 2 ∣ ∣ ω ∣ ∣ \gamma=\frac{\vec x_+·\vec \omega ^T}{||\omega||}-\frac{\vec x_-·\vec \omega ^T}{||\omega||}=\frac{\vec x_+·\vec \omega ^T-\vec x_-·\vec \omega ^T}{||\omega||}=\frac{1-b+(1+b)}{||\omega||}=\frac{2}{||\omega||} γ=∣∣ω∣∣x+⋅ωT−∣∣ω∣∣x−⋅ωT=∣∣ω∣∣x+⋅ωT−x−⋅ωT=∣∣ω∣∣1−b+(1+b)=∣∣ω∣∣2。因此,我们的目标就是最大化这个间隔,也就是
max w , b 2 ∣ ∣ ω ∣ ∣ , s . t . y i ( ω T x i + b ) ≥ 1 ( i = 1 , 2 , . . . , m ) \max_{w,b}\frac{2}{||\omega||},s.t. y_i(\omega^Tx_i+b)\ge 1(i=1,2,...,m) w,bmax∣∣ω∣∣2,s.t.yi(ωTxi+b)≥1(i=1,2,...,m)
最大化 2 ∣ ∣ ω ∣ ∣ \frac{2}{||\omega||} ∣∣ω∣∣2相当于最小化 ∣ ∣ ω ∣ ∣ ||\omega|| ∣∣ω∣∣,为了计算方便,将上述式子转化为
min w , b 1 2 ∣ ∣ ω ∣ ∣ 2 , s . t . y i ( ω T x i + b ) ≥ 1 ( i = 1 , 2 , . . . , m ) . . . . . . . . . . . . . . . . . . ( 1 ) \min_{w,b}\frac{1}{2}||\omega||^2,s.t. y_i(\omega^Tx_i+b)\ge 1(i=1,2,...,m) ..................(1) w,bmin21∣∣ω∣∣2,s.t.yi(ωTxi+b)≥1(i=1,2,...,m)..................(1)
该问题的拉格朗日函数可以写为:
L ( ω , b , a ) = 1 2 ∣ ∣ ω ∣ ∣ 2 + ∑ i = 1 m a i ( 1 − y i ( ω T x i + b ) ) . . . . . . . . . . . . . . . . . . . . . ( 2 ) L(\omega,b,a)=\frac{1}{2}||\omega||^2+\sum_{i=1}^ma_i(1-y_i(\omega^Tx_i+b)).....................(2) L(ω,b,a)=21∣∣ω∣∣2+i=1∑mai(1−yi(ωTxi+b)).....................(2)
公式(1)等价于求解 min w , b ( max a n ≥ 0 L ( w , b , a ) ) \min\limits_{w,b}(\max\limits_{a_n\ge 0}L(w,b,a)) w,bmin(an≥0maxL(w,b,a)),考虑两种情况:
对于一个确定的a’,根据 m a x ≥ a n y max\ge any max≥any,有
min w , b ( max a n ≥ 0 L ( w , b , a ) ) ≥ min w , b L ( w , b , a ′ ) \min_{w,b}(\max_{a_n\ge 0}L(w,b,a)) \ge \min_{w,b}L(w,b,a') w,bmin(an≥0maxL(w,b,a))≥w,bminL(w,b,a′)
因为对于a’都有上式成立,所以
min w , b ( max a n ≥ 0 L ( w , b , a ) ) ≥ max a n ≥ 0 ( min w , b L ( w , b , a ′ ) ) \min_{w,b}(\max_{a_n\ge 0}L(w,b,a)) \ge \max_{a_n\ge 0}(\min_{w,b}L(w,b,a')) w,bmin(an≥0maxL(w,b,a))≥an≥0max(w,bminL(w,b,a′))
上式被称作是弱对偶关系,当等号成立时称为强对偶关系。什么时候会是强对偶关系呢?我们先将其对偶问题写出来:
max a n ≥ 0 ( min w , b L ( w , b , a ′ ) ) \max_{a_n\ge 0}(\min_{w,b}L(w,b,a')) an≥0max(w,bminL(w,b,a′))
当原问题和对偶具有强对偶关系的充要条件是它们满足KKT条件。该拉格朗日函数式子的KKT条件为:
{ ∂ L ∂ w = 0 , ∂ L ∂ b = 0 , ∂ L ∂ a = 0 a i ≥ 0 1 − y i ( ω T x i + b ) ≤ 0 a i ( 1 − y i ( ω T x i + b ) ) = 0 \begin{cases} \frac{\partial L}{\partial w}=0,\frac{\partial L}{\partial b}=0,\frac{\partial L}{\partial a}=0\\ a_i \ge 0 \\ 1-y_i(\omega^Tx_i+b) \le 0 \\ a_i(1-y_i(\omega^Tx_i+b)) = 0 \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧∂w∂L=0,∂b∂L=0,∂a∂L=0ai≥01−yi(ωTxi+b)≤0ai(1−yi(ωTxi+b))=0
公式(2)分别对 ω \omega ω和b求偏导得到:
{ ∂ L ∂ ω = ω − ∑ i = 1 m a i y i x i ∂ L ∂ b = ∑ i = 1 m a i y i \begin{cases} \frac{\partial L}{\partial \omega}=\omega-\sum\limits_{i=1}^ma_iy_ix_i\\ \frac{\partial L}{\partial b}=\sum\limits_{i=1}^ma_iy_i \end{cases} ⎩⎪⎨⎪⎧∂ω∂L=ω−i=1∑maiyixi∂b∂L=i=1∑maiyi
分别令偏导为0,得到
{ ω = ∑ i = 1 m a i y i x i . . . . . . . . . . ( 3 ) ∑ i = 1 m a i y i = 0.............. ( 4 ) \begin{cases} \omega=\sum\limits_{i=1}^ma_iy_ix_i..........(3)\\ \sum\limits_{i=1}^ma_iy_i=0..............(4) \end{cases} ⎩⎪⎨⎪⎧ω=i=1∑maiyixi..........(3)i=1∑maiyi=0..............(4)
由于并没有出现 b b b,因此我们还需要看一下b怎么求。对于KKT条件,可以发现只有支持向量上的点 x k x_k xk满足
1 − y k ( ω T x k + b ) = 0 1-y_k(\omega^Tx_k+b) = 0 1−yk(ωTxk+b)=0
而除了支持向量以外的点,其参数a都为0。对上式进行同乘 y i y_i yi并化简,就得到了求b的公式
b = y k − ω T x k = y k − ∑ i = 1 m a i y i x i T ⋅ x k . . . . . . . . . . . ( 5 ) b=y_k-\omega^Tx_k=y_k-\sum_{i=1}^ma_iy_ix_i^T·x_k...........(5) b=yk−ωTxk=yk−i=1∑maiyixiT⋅xk...........(5)
将公式(3)和(4)代入(2)中得到
L ( ω , b , a ) = 1 2 ω T ω + ∑ i = 1 m a i − ∑ i = 1 m a i y i ( ω T x i + b ) = 1 2 ω T ω + ∑ i = 1 m a i − ω T ∑ i = 1 m a i y i x i − b ∑ i = 1 m a i y i = 1 2 ω T ∑ i = 1 m a i y i x i + ∑ i = 1 m a i − ω T ∑ i = 1 m a i y i x i − b ⋅ 0 = ∑ i = 1 m a i − 1 2 ω T ∑ i = 1 m a i y i x i = ∑ i = 1 m a i − 1 2 ∑ i = 1 m ∑ j = 1 m a i a j y i y j x i x j s . t . ∑ i = 1 m a i y i = 0 , a i ≥ 0 , i = 1 , 2 , . . . m \begin{aligned}L(\omega,b,a) &=\frac{1}{2}\omega^T\omega+\sum_{i=1}^ma_i-\sum_{i=1}^ma_iy_i(\omega^Tx_i+b)\\ &=\frac{1}{2}\omega^T\omega+\sum_{i=1}^ma_i-\omega^T\sum_{i=1}^ma_iy_ix_i-b\sum_{i=1}^ma_iy_i\\ &=\frac{1}{2}\omega^T\sum_{i=1}^ma_iy_ix_i+\sum_{i=1}^ma_i-\omega^T\sum_{i=1}^ma_iy_ix_i-b·0\\ &=\sum_{i=1}^ma_i-\frac{1}{2}\omega^T\sum_{i=1}^ma_iy_ix_i\\ &=\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_jx_ix_j \\ &s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,i=1,2,...m \end{aligned} L(ω,b,a)=21ωTω+i=1∑mai−i=1∑maiyi(ωTxi+b)=21ωTω+i=1∑mai−ωTi=1∑maiyixi−bi=1∑maiyi=21ωTi=1∑maiyixi+i=1∑mai−ωTi=1∑maiyixi−b⋅0=i=1∑mai−21ωTi=1∑maiyixi=i=1∑mai−21i=1∑mj=1∑maiajyiyjxixjs.t.i=1∑maiyi=0,ai≥0,i=1,2,...m
于是我们得到了只包含变量a的表达式,从上面的式子可以得到
max a ∑ i = 1 m a i − 1 2 ∑ i = 1 m ∑ j = 1 m a i a j y i y j x i x j . . . . . . ( 6 ) s . t . ∑ i = 1 m a i y i = 0 , a i ≥ 0 , i = 1 , 2 , . . . m \max_a\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_jx_ix_j ......(6)\\ s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,i=1,2,...m \\ amaxi=1∑mai−21i=1∑mj=1∑maiajyiyjxixj......(6)s.t.i=1∑maiyi=0,ai≥0,i=1,2,...m
通过求解公式(6)得到a后,并回代得到 ω \omega ω和b,我们最终可以到超平面:
f ( x ) = ω T x + b = ∑ i = 1 m a i y i x i T x + b . . . . . . . . . . ( 7 ) f(x)=\omega^Tx+b=\sum_{i=1}^ma_iy_ix_i^Tx+b..........(7) f(x)=ωTx+b=i=1∑maiyixiTx+b..........(7)
结合式子(2)以及KKT条件,可以知道对于任意的训练样本 ( x i , y i ) (x_i,y_i) (xi,yi),若 a i = 0 a_i=0 ai=0,则其不会在(6)中出现, 也不会在求b和w的公式中出现,不影响模型训练。若 a i > 0 a_i>0 ai>0,则 y i ( ω T x i + b ) = 1 y_i(\omega^Tx_i+b)=1 yi(ωTxi+b)=1,即该样本一定是支持向量。不难发现,最终模型只与支持向量有关;
对于非线性的问题,上面的SVM并不能够有效解决,必须用到非线性模型才可以分类。对于二维平面上散落的点,我们不一定能够用一条直线就将其分开,比如圆形、椭圆形、矩形或其他不规则的决策边界。对于这样的问题,我们可以将训练样本映射到一个更高的维度,并且在这个高维度中样本是线性可分的,这样我们就又可以用回前面的公式。
想象一个平面上分散着线性不可分的样本点,一个高手一拍桌子,样本点飞上了天空,并且刚好有一个平面可以将正样本和负样本隔开。令 ϕ ( x ) \phi_(x) ϕ(x)表示将x映射到高维空间后的特征向量,于是在特征空间中,模型变为
f ( x ) = ω T ϕ ( x ) + b . . . . . . . . . . ( 8 ) f(x)=\omega^T\phi(x)+b..........(8) f(x)=ωTϕ(x)+b..........(8)
最小化函数为:
min w , b 1 2 ∣ ∣ ω ∣ ∣ 2 , s . t . y i ( ω T ϕ ( x i ) + b ) ≥ 1 ( i = 1 , 2 , . . . , m ) . . . . . . . . . . . . . . . ( 9 ) \min_{w,b}\frac{1}{2}||\omega||^2,s.t. y_i(\omega^T\phi(x_i)+b)\ge 1(i=1,2,...,m) ...............(9) w,bmin21∣∣ω∣∣2,s.t.yi(ωTϕ(xi)+b)≥1(i=1,2,...,m)...............(9)
其对偶问题变为:
max a ∑ i = 1 m a i − 1 2 ∑ i = 1 m ∑ j = 1 m a i a j y i y j ϕ ( x i ) T ϕ ( x j ) . . . . . . . . . ( 10 ) s . t . ∑ i = 1 m a i y i = 0 , a i ≥ 0 , i = 1 , 2 , . . . m \max_a\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_j\phi(x_i)^T\phi(x_j) .........(10)\\ s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,i=1,2,...m amaxi=1∑mai−21i=1∑mj=1∑maiajyiyjϕ(xi)Tϕ(xj).........(10)s.t.i=1∑maiyi=0,ai≥0,i=1,2,...m
若要计算,由于样本已经被映射到高维空间,如果要计算高维度的 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^T\phi(x_j) ϕ(xi)Tϕ(xj)通常是困难的,于是我们想利用样本在原特征空间下,通过某个函数 K ( x i , x j ) K(x_i,x_j) K(xi,xj)得到其在高维空间下的內积。则式子(10)变为
max a ∑ i = 1 m a i − 1 2 ∑ i = 1 m ∑ j = 1 m a i a j y i y j K ( x i , x j ) . . . . . . . . . ( 11 ) s . t . ∑ i = 1 m a i y i = 0 , a i ≥ 0 , i = 1 , 2 , . . . m \max_a\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_jK(x_i,x_j) .........(11)\\ s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,i=1,2,...m amaxi=1∑mai−21i=1∑mj=1∑maiajyiyjK(xi,xj).........(11)s.t.i=1∑maiyi=0,ai≥0,i=1,2,...m
求解后得到
f ( x ) = ω T ϕ ( x ) + b = ∑ i = 1 m a i y i ϕ ( x i ) T ϕ ( x j ) + b ( 12 ) = ∑ i = 1 m a i y i K ( x i , x j ) + b \begin{aligned} f(x) &= \omega^T\phi(x)+b\\ &= \sum_{i=1}^ma_iy_i\phi(x_i)^T\phi(x_j)+b \qquad\qquad\qquad (12)\\ &= \sum_{i=1}^ma_iy_iK(x_i,x_j)+b \end{aligned} f(x)=ωTϕ(x)+b=i=1∑maiyiϕ(xi)Tϕ(xj)+b(12)=i=1∑maiyiK(xi,xj)+b
上面提到的 K ( x i , x j ) K(x_i,x_j) K(xi,xj),其实就是核函数,它用来映射原始样本 x i , x i x_i,x_i xi,xi在高维特征空间下的內积,从而避免了直接在高维空间中进行计算。由于核函数的构造较为复杂,因此人们通常从一些常用的核函数中选择,而不是自己构造。一些常用的核函数如下:
当样本是线性不可分的时候,往往需要映射到高维空间内计算。但有时仅仅只是因为数据有噪音,比如说,有一两个噪声,偏离了正常的位置。这些噪声如果作为支持向量的话,超平面将不得不变得偏离,间隔也会变小。如果我们能够允许数据点在一定程度上偏离超平面,这样我们依旧能够得到较好的超平面。因此我们定义一个变量 ξ i = 1 − y i ( ω T x i + b ) \xi_i=1-y_i(\omega^Tx_i+b) ξi=1−yi(ωTxi+b),使得约束条件变为:
y i ( ω T x i + b ) ≥ 1 − ξ i , i = 1 , 2 , . . . , n y_i(\omega ^Tx_i+b) \ge 1-\xi_i ,i=1,2,...,n yi(ωTxi+b)≥1−ξi,i=1,2,...,n
ξ i \xi_i ξi称为松弛变量,是样本 x i x_i xi允许偏移的量。当 ξ \xi ξ很大时,任意的超平面都符合条件。所以在目标函数加上一项,使得 ξ \xi ξ的总和也要最小,新的优化目标为
m i n 1 2 ∣ ∣ ω ∣ ∣ 2 + C ∑ i = 1 m ξ i ( 13 ) s . t . y i ( ω T x i + b ) ≥ 1 − ξ i , i = 1 , 2 , . . . m ξ i ≥ 0 , i = 1 , 2 , . . . m min\frac{1}{2}||\omega||^2+C\sum_{i=1}^m\xi_i\qquad (13)\\ s.t. \qquad y_i(\omega^Tx_i+b)\ge 1-\xi_i,i=1,2,...m \\ \xi_i \ge 0,i=1,2,...m min21∣∣ω∣∣2+Ci=1∑mξi(13)s.t.yi(ωTxi+b)≥1−ξi,i=1,2,...mξi≥0,i=1,2,...m
其中C作为惩罚参数,当C很大时,对分类错误的惩罚较大;当C较小时,对分类错误的惩罚较小,公式(13)要使最小间隔尽量大,误分类点尽量少,C是调和两者的权重系数。
在式子(13)中新增的松弛变量,其实可以看做是对损失函数 l o s s = m a x { 0 , ξ i } = m a x { 0 , 1 − y i ( w ⋅ x i + b ) } loss=max\{0,\xi_i\}=max\{0,1-y_i(w·x_i+b)\} loss=max{0,ξi}=max{0,1−yi(w⋅xi+b)}
的优化,它又被称为合页损失函数。
当样本点被正确分类时且函数间隔 y i ( w ⋅ x i + b ) y_i(w·x_i+b) yi(w⋅xi+b)大于1时,损失是0,否则损失是 1 − y i ( w ⋅ x i + b ) 1-y_i(w·x_i+b) 1−yi(w⋅xi+b)。相比0-1损失函数和感知机损失函数,合页损失函数不仅要正确分类,而且确信度足够高时损失才是0。也就是说,合页损失函数对学习有更高的要求。
公式(13)的拉格朗日函数为
L ( ω , b , a , ξ , μ ) = 1 2 ∣ ∣ ω ∣ ∣ 2 + C ∑ i = 1 m ξ i + ∑ i = 1 m a i ( 1 − ξ i − y i ( ω T x i + b ) ) − ∑ i = 1 m μ i ξ i . . . . . . . . . . ( 14 ) L(\omega,b,a,\xi,\mu)=\frac{1}{2}||\omega||^2+ C\sum_{i=1}^m\xi_i+\sum_{i=1}^ma_i(1-\xi_i-y_i(\omega^Tx_i+b))-\sum_{i=1}^m\mu_i\xi_i..........(14) L(ω,b,a,ξ,μ)=21∣∣ω∣∣2+Ci=1∑mξi+i=1∑mai(1−ξi−yi(ωTxi+b))−i=1∑mμiξi..........(14)
该式子的KKT条件为:
{ a i ≥ 0 1 − ξ i − y i ( ω T x i + b ) ≥ 0 a i ( 1 − ξ i − y i ( ω T x i + b ) ) = 0 ξ i ≥ 0 μ i ≥ 0 μ i ξ i = 0 \begin{cases} a_i \ge 0 \\ 1-\xi_i-y_i(\omega^Tx_i+b) \ge 0 \\ a_i(1-\xi_i-y_i(\omega^Tx_i+b)) = 0 \\ \xi_i \ge 0 \\ \mu_i \ge 0 \\ \mu_i\xi_i = 0 \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧ai≥01−ξi−yi(ωTxi+b)≥0ai(1−ξi−yi(ωTxi+b))=0ξi≥0μi≥0μiξi=0
求导后令偏导数为0,得
{ ω = ∑ i = 1 m a i y i x i . . . . . . . . . ( 15 ) ∑ i = 1 m a i y i = 0......... ( 16 ) ∂ L ∂ ξ i = C − a i − μ i = 0 i = 1 , 2 , . . . m ( 17 ) \begin{cases} \omega=\sum\limits_{i=1}^ma_iy_ix_i.........(15)\\ \sum\limits_{i=1}^ma_iy_i=0.........(16)\\ \frac{\partial L}{\partial \xi_i}=C-a_i-\mu_i=0\quad i=1,2,...m\qquad(17) \end{cases} ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧ω=i=1∑maiyixi.........(15)i=1∑maiyi=0.........(16)∂ξi∂L=C−ai−μi=0i=1,2,...m(17)
将公式(15)(16)(17)带入(14)得到
max a ∑ i = 1 m a i − 1 2 ∑ i = 1 m ∑ j = 1 m a i a j y i y j x i x j . . . . . . . . . . . . . ( 18 ) s . t . ∑ i = 1 m a i y i = 0 , a i ≥ 0 , μ i ≥ 0 , 0 ≤ a i ≤ C , i = 1 , 2 , . . . m \max_a\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_jx_ix_j.............(18) \\ s.t. \sum_{i=1}^ma_iy_i=0,a_i\ge 0,\mu_i \ge 0,0 \le a_i \le C,i=1,2,...m amaxi=1∑mai−21i=1∑mj=1∑maiajyiyjxixj.............(18)s.t.i=1∑maiyi=0,ai≥0,μi≥0,0≤ai≤C,i=1,2,...m
那么如何求解以上公式中的a呢?这里要用到的是一种高效求解的算法SMO算法,即序列最小最优化算法。a需要满足两个条件,因此我们同时更新两个变量,保证两个基本条件可以满足。假设我们更新变量 a 1 , a 2 a_1,a_2 a1,a2,则其他变量 a i ( i = 3 , 4 , . . . m ) a_i(i=3,4,...m) ai(i=3,4,...m)是固定的,令 ξ = − ∑ i = 3 m a i y i \xi=-\sum\limits_{i=3}^ma_iy_i ξ=−i=3∑maiyi,则有 a 1 y 1 + a 2 y 2 = ξ a_1y_1+a_2y_2=\xi a1y1+a2y2=ξ。优化问题的子问题变为:
min a 1 , a 2 W ( a 1 , a 2 ) = 1 2 K 11 a 1 2 + 1 2 K 22 a 2 2 + y 1 y 2 K 12 a 1 a 2 − ( a 1 + a 2 ) + y 1 a 1 ∑ i = 3 m y i a i K i 1 + y 2 a 2 ∑ i = 3 m y i a i K i 2 s . t . a 1 y 1 + a 2 y 2 = ξ , 0 ≤ a i ≤ C , i = 1 , 2 , . . . m \min_{a_1,a_2}W(a_1,a_2)=\frac{1}{2}K_{11}a_1^2+\frac{1}{2}K_{22}a_2^2+y_1y_2K_{12}a_1a_2-(a_1+a_2)+y_1a_1\sum_{i=3}^my_ia_iK_{i1}+y_2a_2\sum_{i=3}^my_ia_iK_{i2} \\ s.t. \quad a_1y_1+a_2y_2=\xi,0 \le a_i \le C,i=1,2,...m a1,a2minW(a1,a2)=21K11a12+21K22a22+y1y2K12a1a2−(a1+a2)+y1a1i=3∑myiaiKi1+y2a2i=3∑myiaiKi2s.t.a1y1+a2y2=ξ,0≤ai≤C,i=1,2,...m
由于 a 1 y 1 + a 2 y 2 = ξ a_1y_1+a_2y_2=\xi a1y1+a2y2=ξ等价于 { a 1 + a 2 = ξ a 1 − a 2 = ξ \begin{cases}a_1+a_2=\xi \\ a_1-a_2=\xi\end{cases} {a1+a2=ξa1−a2=ξ。由于 a 1 a_1 a1和 a 2 a_2 a2都位于0和C之间,目标函数的约束域是以(0,0),(0,C),(C,0),(C,C)围成的正方形区域,其中存在的 a 1 + a 2 = ξ a_1+a_2=\xi a1+a2=ξ和 a 1 − a 2 = ξ a_1-a_2=\xi a1−a2=ξ两条直线。由条件 a 1 y 1 + a 2 y 2 = ξ , y i 2 = 1 a_1y_1+a_2y_2=\xi,y_i^2=1 a1y1+a2y2=ξ,yi2=1得 a 1 = ( ξ − a 2 y 2 ) y 1 a_1=(\xi-a_2y_2)y_1 a1=(ξ−a2y2)y1,回代到 W ( a 1 , a 2 ) W(a_1,a_2) W(a1,a2)得到只包含 a 2 a_2 a2的函数
W ( a 2 ) = 1 2 K 11 ( ξ − a 2 y 2 ) 2 + 1 2 K 22 a 2 2 + y 2 K 12 ( ξ − a 2 y 2 ) a 2 − ( ξ − a 2 y 2 ) y 1 − a 2 + v 1 ( ξ − a 2 y 2 ) + y 2 v 2 a 2 W(a_2)=\frac{1}{2}K_{11}(\xi-a_2y_2)^2+\frac{1}{2}K_{22}a_2^2+y_2K_{12}(\xi-a_2y_2)a_2\\-(\xi-a_2y_2)y_1-a_2+v_1(\xi-a_2y_2)+y_2v_2a_2 W(a2)=21K11(ξ−a2y2)2+21K22a22+y2K12(ξ−a2y2)a2−(ξ−a2y2)y1−a2+v1(ξ−a2y2)+y2v2a2,
其中
v i = ∑ j = 3 N a j y j K ( x i , x j ) = g ( x ) − ∑ j = 1 2 a j y j K ( x i , x j ) − b , i = 1 , 2 v_i=\sum_{j=3}^Na_jy_jK(x_i,x_j)=g(x)-\sum_{j=1}^2a_jy_jK(x_i,x_j)-b,i=1,2 vi=j=3∑NajyjK(xi,xj)=g(x)−j=1∑2ajyjK(xi,xj)−b,i=1,2
令
g ( x ) = ∑ i = 1 N a i y i K ( x i , x ) + b E i = g ( x i ) − y i = ( ∑ j = 1 N a j y j K ( x j , x i ) + b ) − y i , i = 1 , 2 g(x)=\sum_{i=1}^Na_iy_iK(x_i,x)+b \\ E_i=g(x_i)-y_i=\left(\sum_{j=1}^Na_jy_jK(x_j,x_i)+b\right)-y_i,i=1,2 g(x)=i=1∑NaiyiK(xi,x)+bEi=g(xi)−yi=(j=1∑NajyjK(xj,xi)+b)−yi,i=1,2
其中 E i E_i Ei表示函数g(x)对输入 x i x_i xi的预测值与真实输出 y i y_i yi的差。
对 W ( a 2 ) W(a_2) W(a2)求导并令其为0,且 a 1 o l d y 1 + a 2 o l d y 2 = ξ a_1^{old}y_1+a_2^{old}y_2=\xi a1oldy1+a2oldy2=ξ, η = K 11 − 2 K 12 + K 22 = ( ϕ ( x 1 ) − ϕ ( x 2 ) ) 2 \eta=K_{11}-2K_{12}+K_{22}=(\phi(x_1)-\phi(x_2))^2 η=K11−2K12+K22=(ϕ(x1)−ϕ(x2))2,于是得到
a 2 n e w , u n c = a 2 o l d + y 2 ( E 1 − E 2 ) η a_2^{new,unc}=a_2^{old}+\frac{y_2(E_1-E_2)}{\eta} a2new,unc=a2old+ηy2(E1−E2)
我们的目标是求在正方形内的线段上的最优值,令线段的左端点为L,右端点为H,则有 a 1 , a 2 a_1,a_2 a1,a2的更新值如下
a 2 n e w = { H , a 2 n e w , u n c > H a 2 n e w , u n c , L ≤ a 2 n e w , u n c ≤ H L , a 2 n e w , u n c < L a 1 n e w = a 1 o l d + y 1 y 2 ( a 2 o l d − a 2 n e w ) a_2^{new}= \begin{cases} H,a_2^{new,unc} > H \\ a_2^{new,unc} ,L \le a_2^{new,unc} \le H \\ L, a_2^{new,unc} < L \end{cases} \\ a_1^{new}=a_1^{old}+y_1y_2(a_2^{old}-a_2^{new}) a2new=⎩⎪⎨⎪⎧H,a2new,unc>Ha2new,unc,L≤a2new,unc≤HL,a2new,unc<La1new=a1old+y1y2(a2old−a2new)
关于 a 1 , a 2 a_1,a_2 a1,a2变量的选择,SMO采用启发式选择,选择的a应该满足KKT条件,并且更新时应该最大限度地它包含三个步骤:
SMO算法的主要步骤总结如下:
对于线性支持向量机来说,还有另外一种解释就是最小化以下目标函数:
∑ i = 1 N [ 1 − y i ( w ⋅ x i + b ) ] + + λ ∣ ∣ w ∣ ∣ 2 \sum_{i=1}^N[1-y_i(w·x_i+b)]_++\lambda||w||^2 i=1∑N[1−yi(w⋅xi+b)]++λ∣∣w∣∣2
其中第一项是经验损失,函数 L ( y ( w ⋅ x + b ) ) = [ 1 − y i ( w ⋅ x i + b ) ] + L(y(w·x+b))=[1-y_i(w·x_i+b)]_+ L(y(w⋅x+b))=[1−yi(w⋅xi+b)]+被称为合页损失函数。下标“+”表示以下函数
[ z ] + = { z , z > 0 0 , z ≤ 0 [z]_+= \begin{cases} z, & z \gt 0\\ 0, & z \le 0 \end{cases} [z]+={z,0,z>0z≤0
当样本点被正确分类时且函数间隔 y i ( w ⋅ x i + b ) y_i(w·x_i+b) yi(w⋅xi+b)大于1时,损失是0,否则损失是 1 − y i ( w ⋅ x i + b ) 1-y_i(w·x_i+b) 1−yi(w⋅xi+b)。相比0-1损失函数和感知机损失函数,合页损失函数不仅要正确分类,而且确信度足够高时损失才是0。也就是说,合页损失函数对学习有更高的要求。