之所以写这篇文章,主要是因为SVM和SMO的算法看了很多遍才看懂,现在网络上也有很多相关的资料,这篇文章主要是记录自己的学习过程,集中在后面的证明求解过程。初学者建议先看底下的参考资料,把相关概念弄清楚了之后,如果在看论文过程中有疑惑的,可以过来看没看有没有参考的地方。
首先对于SVM(support vector machine)的理解为:寻找一个超分类平面,把不同分类的数据分隔开,且两边的最小间距最大。
函数间距与几何间距:
在Andrew Ng的材料中,涉及到两个间距的概念:函数间距与几何间距。
函数间距的定义: γ^(i)=y(i)(wTx+b) γ ^ ( i ) = y ( i ) ( w T x + b ) , 当 w w 和成比例变化,函数间距也成比例变化
几何间距的定义: γ(i)=y(i)(wTx+b)||w|| γ ( i ) = y ( i ) ( w T x + b ) | | w | | , 当 w w 和成比例变化,几何间距不变
最大化间距
SVM目标是最大化最小几何间距,故有:
最小几何间距: γ=mini=1,..,mγ(i) γ = min i = 1 , . . , m γ ( i )
maxγ,w,b γ max γ , w , b γ
s.t. y(i)(wTx+b)≥γ,i=1,...,m s . t . y ( i ) ( w T x + b ) ≥ γ , i = 1 , . . . , m
||w||=1 | | w | | = 1
第一个限制条件保证所有例子的函数间距大于我们的最小几何间距 γ γ , ||w||=1 | | w | | = 1 保证了函数间距和几何间距等价。
由于该式子比较难求解,故我们可以考虑转换一下上式为:
maxγ,w,b γ^||w|| max γ , w , b γ ^ | | w | |
s.t. y(i)(wTx+b)≥γ^,i=1,...,m s . t . y ( i ) ( w T x + b ) ≥ γ ^ , i = 1 , . . . , m
考虑到函数间距与 w w 和成比例变化,故成比例变化 w w 和不影响该最大式子,故可以考虑令 γ^=1 γ ^ = 1
原式可变为:
maxw,b 1||w|| max w , b 1 | | w | |
s.t. y(i)(wTx+b)≥1,i=1,...,m s . t . y ( i ) ( w T x + b ) ≥ 1 , i = 1 , . . . , m
最后该式子等价为:
minw,b 12||w||2 min w , b 1 2 | | w | | 2
s.t. y(i)(wTx+b)≥1,i=1,...,m s . t . y ( i ) ( w T x + b ) ≥ 1 , i = 1 , . . . , m
拉格朗日对偶
上面已经列出了我们需要求解 w w 和的式子,但是由于涉及到限制条件,很难直接求解。这时候就需要我们的朗格朗日乘子和朗格朗日对偶问题的知识了。
对于一般式子:
minw f(w) m i n w f ( w )
s.t. gi(w)≤0,i=1,...,k s . t . g i ( w ) ≤ 0 , i = 1 , . . . , k
hi(w)=0,i=1,...,k h i ( w ) = 0 , i = 1 , . . . , k
令 L(w,α,β)=f(w)+∑i=1kαigi(w)+∑i=1lβihi(w) L ( w , α , β ) = f ( w ) + ∑ i = 1 k α i g i ( w ) + ∑ i = 1 l β i h i ( w ) , 该式子称为拉格朗日函数
在满足原式子的限制条件下有: maxα,β:α≥0L(w,α,β)=f(w) max α , β : α ≥ 0 L ( w , α , β ) = f ( w )
又有以下对偶式子:
maxα,β:α≥0minwL(w,α,β)≤minwmaxα,β:α≥0L(w,α,β)=minwf(w) max α , β : α ≥ 0 min w L ( w , α , β ) ≤ min w max α , β : α ≥ 0 L ( w , α , β ) = min w f ( w )
当满足一定条件下时, 我们有该等式成立。该条件称为KKT:
∂∂wiL(w,α,β)=0,i=1,...,n ∂ ∂ w i L ( w , α , β ) = 0 , i = 1 , . . . , n
∂∂βiL(w,α,β)=0,i=1,...,l ∂ ∂ β i L ( w , α , β ) = 0 , i = 1 , . . . , l
αigi(w)=0,i=1,...k α i g i ( w ) = 0 , i = 1 , . . . k
gi(w)≤0,i=1,...k g i ( w ) ≤ 0 , i = 1 , . . . k
αi≥0,i=1,...k α i ≥ 0 , i = 1 , . . . k
在满足以上KKT条件下,原来求 f(w) f ( w ) 在限制条件下的最小值就可以等价转换为求 maxα,β:α≥0minwL(w,α,β) max α , β : α ≥ 0 min w L ( w , α , β )
应用拉格朗日求解最小间隙最大值
构造朗格朗日函数:
L(w,b,α)=12||w||2+∑i=1mαi(1−y(i)(wTx(i)+b)) L ( w , b , α ) = 1 2 | | w | | 2 + ∑ i = 1 m α i ( 1 − y ( i ) ( w T x ( i ) + b ) )
根据KKT条件有:
∂∂wL=0 ∂ ∂ w L = 0
∂∂bL=0 ∂ ∂ b L = 0
得到以下结果:
w=∑i=1mαiy(i)x(i) w = ∑ i = 1 m α i y ( i ) x ( i )
∑i=1mαiy(i)=0 ∑ i = 1 m α i y ( i ) = 0
以上结果回代入拉格朗日函数得到:
L(w,b,α)=∑i=1mαi−12∑i,j=1my(i)y(j)αiαj(x(i))Tx(j) L ( w , b , α ) = ∑ i = 1 m α i − 1 2 ∑ i , j = 1 m y ( i ) y ( j ) α i α j ( x ( i ) ) T x ( j )
故原式子可等价为:
maxα W(α)=∑i=1mαi−12∑i,j=1my(i)y(j)αiαj<(x(i)),x(j)> max α W ( α ) = ∑ i = 1 m α i − 1 2 ∑ i , j = 1 m y ( i ) y ( j ) α i α j < ( x ( i ) ) , x ( j ) >
s.t. αi≥0,i=1,...m s . t . α i ≥ 0 , i = 1 , . . . m
∑i=1mαiy(i)=0 ∑ i = 1 m α i y ( i ) = 0
<(x(i)),x(j)> < ( x ( i ) ) , x ( j ) > <script type="math/tex" id="MathJax-Element-172"><(x^{(i)}),x^{(j)}></script>表示两个向量的内积. 实际上,可以用核函数来表示两个向量的相似度,这样,我们的SVM模型就可以应用在一些非线性可分的问题上。
正则化及不可分情形讨论
实际上的问题经常是,我们无法找到一个线性可分的超分类平面,这样,我们之前的限制条件是无法被满足的。那么前面做的这么多工作都只能应用于可分的情况吗?
之前我们的限制条件是非常严格的 y(i)(wTx+b)≥1 y ( i ) ( w T x + b ) ≥ 1 , 但是我们可以考虑加入一些松弛变量 ζ ζ 来打破这种情况,同时对于这种情况要加一些惩罚条件,故原先的式子可改写成:
minw,b 12||w||2+C∑i=1mζi min w , b 1 2 | | w | | 2 + C ∑ i = 1 m ζ i
s.t. y(i)(wTx+b)≥1−ζi,i=1,...,m s . t . y ( i ) ( w T x + b ) ≥ 1 − ζ i , i = 1 , . . . , m
ζi≥0,i=1,...,m ζ i ≥ 0 , i = 1 , . . . , m
还是构造拉格朗日函数:
L(w,b,α)=12||w||2+C∑i=1mζi+∑i=1mαi(1−ζi−y(i)(wTx(i)+b))+∑i=1mri(−ζi) L ( w , b , α ) = 1 2 | | w | | 2 + C ∑ i = 1 m ζ i + ∑ i = 1 m α i ( 1 − ζ i − y ( i ) ( w T x ( i ) + b ) ) + ∑ i = 1 m r i ( − ζ i )
w w , , ζ ζ 分别对 L L 偏导可以得到:
w=∑i=1mαiy(i)x(i) w = ∑ i = 1 m α i y ( i ) x ( i )
b=−∑i=1mαiy(i)=0 b = − ∑ i = 1 m α i y ( i ) = 0
C−αi−ri=0,i=1,..,m C − α i − r i = 0 , i = 1 , . . , m
由于 ri≥0 r i ≥ 0 , αi≥0 α i ≥ 0
故由 C−αi−ri=0,i=1,..,m C − α i − r i = 0 , i = 1 , . . , m 可得 0≤αi≤C,i=1,...,m 0 ≤ α i ≤ C , i = 1 , . . . , m
把 w w , 回代回去,原式子可以等价为:
maxα W(α)=∑i=1mαi−12∑i,j=1my(i)y(j)αiαj<(x(i)),x(j)> max α W ( α ) = ∑ i = 1 m α i − 1 2 ∑ i , j = 1 m y ( i ) y ( j ) α i α j < ( x ( i ) ) , x ( j ) >
s.t. 0≤αi≤C,i=1,...m s . t . 0 ≤ α i ≤ C , i = 1 , . . . m
∑i=1mαiy(i)=0 ∑ i = 1 m α i y ( i ) = 0
且再次检查KKT条件,有:
αi(1−ζi−y(i)(wTx(i)+b))=0 α i ( 1 − ζ i − y ( i ) ( w T x ( i ) + b ) ) = 0
1−ζi−y(i)(wTx(i)+b)≤0 1 − ζ i − y ( i ) ( w T x ( i ) + b ) ≤ 0
ri(−ζi)=0 r i ( − ζ i ) = 0
−ζi≤0 − ζ i ≤ 0
ζi≥0 ζ i ≥ 0
αi≥0 α i ≥ 0
对 αi α i 进行讨论(由KKT条件)有:
αi=0⇒y(i)(wTx(i)+b)≥1 α i = 0 ⇒ y ( i ) ( w T x ( i ) + b ) ≥ 1
αi=C⇒y(i)(wTx(i)+b)≤1 α i = C ⇒ y ( i ) ( w T x ( i ) + b ) ≤ 1
0≤αi≤C⇒y(i)(wTx(i)+b)=1 0 ≤ α i ≤ C ⇒ y ( i ) ( w T x ( i ) + b ) = 1
SMO优化
前面已经做了很多工作,现在目标函数已经有了. 接下来就是需要 α α 使得我们的目标函数取到最大值。参考资料中的SMO论文求目标函数的最小值:
minα Ψ(α)=minα12∑i,j=1my(i)y(j)αiαjK(x(i),x(j))−∑i=1mαi min α Ψ ( α ) = min α 1 2 ∑ i , j = 1 m y ( i ) y ( j ) α i α j K ( x ( i ) , x ( j ) ) − ∑ i = 1 m α i
s.t. 0≤αi≤C,i=1,...m s . t . 0 ≤ α i ≤ C , i = 1 , . . . m
∑i=1mαiy(i)=0 ∑ i = 1 m α i y ( i ) = 0
取出一对 α1,α2 α 1 , α 2 我们有 α1y(1)+α2y(2)=k=−∑i=3mαiy(i) α 1 y ( 1 ) + α 2 y ( 2 ) = k = − ∑ i = 3 m α i y ( i ) 故有如下图关系
分两种情况讨论: y1,y2 y 1 , y 2 不同号以及 y1,y2 y 1 , y 2 同号
其中对应的 α2 α 2 的边界为:
- 同号情况: L=max(0,α2−α1),H=min(C,C+α2−α1) L = m a x ( 0 , α 2 − α 1 ) , H = m i n ( C , C + α 2 − α 1 )
- 异号: L=max(0,α2+α1−C),H=min(C,α2+α1) L = m a x ( 0 , α 2 + α 1 − C ) , H = m i n ( C , α 2 + α 1 )
化简目标函数,把 α1,α2 α 1 , α 2 提取出来:
令 s=y1y2,Kij=K(xi,xj) s = y 1 y 2 , K i j = K ( x i , x j )
Ψ(α)=12α21K11+12α22K22+sα1α2K12−α1−α2+y1α1v1+y2α2v2+Ψconst Ψ ( α ) = 1 2 α 1 2 K 11 + 1 2 α 2 2 K 22 + s α 1 α 2 K 12 − α 1 − α 2 + y 1 α 1 v 1 + y 2 α 2 v 2 + Ψ c o n s t
其中有:
vi=∑j=3mα∗jyjKij=ui+b∗−y1α∗1K1i−y2α∗2K2i v i = ∑ j = 3 m α j ∗ y j K i j = u i + b ∗ − y 1 α 1 ∗ K 1 i − y 2 α 2 ∗ K 2 i ( α∗1 α 1 ∗ 表示旧的值)
则有 α1+sα2=−y1∑i=3mαiyi=α∗1+sα∗2=t α 1 + s α 2 = − y 1 ∑ i = 3 m α i y i = α 1 ∗ + s α 2 ∗ = t
把 α1=t−sα2 α 1 = t − s α 2 代入目标函数有:
Ψ(α)=12(t−sα2)2K11+12α22K22+s(t−sα2)α2K12−(t−α2)−α2+y1(t−sα2)v1+y2α2v2+Ψconst Ψ ( α ) = 1 2 ( t − s α 2 ) 2 K 11 + 1 2 α 2 2 K 22 + s ( t − s α 2 ) α 2 K 12 − ( t − α 2 ) − α 2 + y 1 ( t − s α 2 ) v 1 + y 2 α 2 v 2 + Ψ c o n s t
目标函数对 α2 α 2 求导并令其为0:
∂∂α2Ψ(α)=α2(K11+K22−2K12)−st(K11−K12)−y2(v1−v2)+s−1=0 ∂ ∂ α 2 Ψ ( α ) = α 2 ( K 11 + K 22 − 2 K 12 ) − s t ( K 11 − K 12 ) − y 2 ( v 1 − v 2 ) + s − 1 = 0
把 t=α∗1+sα∗2,vi=∑j=3mα∗jyjKij=ui+b∗−y1α∗1K1i−y2α∗2K2i t = α 1 ∗ + s α 2 ∗ , v i = ∑ j = 3 m α j ∗ y j K i j = u i + b ∗ − y 1 α 1 ∗ K 1 i − y 2 α 2 ∗ K 2 i 代入上式得:
α2(K11+K22−2K12)=α∗2(K11+K22−2K12)+y2(u1−u2+y2−y1) α 2 ( K 11 + K 22 − 2 K 12 ) = α 2 ∗ ( K 11 + K 22 − 2 K 12 ) + y 2 ( u 1 − u 2 + y 2 − y 1 )
目标函数对 α2 α 2 进行二次求导有:
∂∂2α2Ψ(α)=η=K11+K22−2K12 ∂ ∂ 2 α 2 Ψ ( α ) = η = K 11 + K 22 − 2 K 12
当 η>0 η > 0 有:
αnew2=α∗2+y2(E1−E2)η α 2 n e w = α 2 ∗ + y 2 ( E 1 − E 2 ) η
αnew1=α1+s(α2−αnew,clipped2) α 1 n e w = α 1 + s ( α 2 − α 2 n e w , c l i p p e d )
当 η≤0 η ≤ 0 有, 此时易知 α2 α 2 取到边界时,目标函数最小:
f1=y1(E1+b)−α1K11−sα2K12, f 1 = y 1 ( E 1 + b ) − α 1 K 11 − s α 2 K 12 ,
f2=y2(E2+b)−sα1K12−α2K22, f 2 = y 2 ( E 2 + b ) − s α 1 K 12 − α 2 K 22 ,
L1=α1+s(α2−L) L 1 = α 1 + s ( α 2 − L )
H1=α1+s(α2−H) H 1 = α 1 + s ( α 2 − H )
ΨL=L1f1+Lf2+12L21K11+12L2K22+sLL1K12 Ψ L = L 1 f 1 + L f 2 + 1 2 L 1 2 K 11 + 1 2 L 2 K 22 + s L L 1 K 12
ΨH=H1f1+Hf2+12H21K11+12H2K22+sHH1K12 Ψ H = H 1 f 1 + H f 2 + 1 2 H 1 2 K 11 + 1 2 H 2 K 22 + s H H 1 K 12
对比 ΨL,ΨH Ψ L , Ψ H , 取值较小的那个
每次更新完 α α 后都需要更新b值:
当 α1 α 1 不在界上时:
bnew=b1=E1+y1(αnew1−α1)K11+y2(αnew,clipped2−α2)K12+b b n e w = b 1 = E 1 + y 1 ( α 1 n e w − α 1 ) K 11 + y 2 ( α 2 n e w , c l i p p e d − α 2 ) K 12 + b
当 α2 α 2 不在界上时:
bnew=b2=E2+y1(αnew1−α1)K12+y2(αnew,clipped2−α2)K22+b b n e w = b 2 = E 2 + y 1 ( α 1 n e w − α 1 ) K 12 + y 2 ( α 2 n e w , c l i p p e d − α 2 ) K 22 + b
当双方都在界上时:
b=b1+b22 b = b 1 + b 2 2
推荐相关参考资料:
Andrew Ng在网易公开课的课堂资料,其中part V涉及到SVM. http://cimg3.163.com/edu/open/ocw/jiqixuexikecheng.zip
John Platt的SMO论文. https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/smo-book.pdf
JerryLead的博客. http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988415.html#undefined