之所以寫這篇文章,主要是因爲SVM和SMO的算法看了很多遍纔看懂,現在網絡上也有很多相關的資料,這篇文章主要是記錄自己的學習過程,集中在後面的證明求解過程。初學者建議先看底下的參考資料,把相關概念弄清楚了之後,如果在看論文過程中有疑惑的,可以過來看沒看有沒有參考的地方。
首先對於SVM(support vector machine)的理解爲:尋找一個超分類平面,把不同分類的數據分隔開,且兩邊的最小間距最大。
函數間距與幾何間距:
在Andrew Ng的材料中,涉及到兩個間距的概念:函數間距與幾何間距。
函數間距的定義:γ^(i)=y(i)(wTx+b) , 當w 和b 成比例變化,函數間距也成比例變化
幾何間距的定義:γ(i)=y(i)(wTx+b)||w|| , 當w 和b 成比例變化,幾何間距不變
最大化間距
SVM目標是最大化最小几何間距,故有:
最小几何間距: γ=mini=1,..,mγ(i)
maxγ,w,b γ
s.t. y(i)(wTx+b)≥γ,i=1,...,m
||w||=1
第一個限制條件保證所有例子的函數間距大於我們的最小几何間距γ , ||w||=1 保證了函數間距和幾何間距等價。
由於該式子比較難求解,故我們可以考慮轉換一下上式爲:
maxγ,w,b γ^||w||
s.t. y(i)(wTx+b)≥γ^,i=1,...,m
考慮到函數間距與w 和b 成比例變化,故成比例變化w 和b 不影響該最大式子,故可以考慮令γ^=1
原式可變爲:
maxw,b 1||w||
s.t. y(i)(wTx+b)≥1,i=1,...,m
最後該式子等價爲:
minw,b 12||w||2
s.t. y(i)(wTx+b)≥1,i=1,...,m
拉格朗日對偶
上面已經列出了我們需要求解w 和b 的式子,但是由於涉及到限制條件,很難直接求解。這時候就需要我們的朗格朗日乘子和朗格朗日對偶問題的知識了。
對於一般式子:
minw f(w)
s.t. gi(w)≤0,i=1,...,k
hi(w)=0,i=1,...,k
令L(w,α,β)=f(w)+∑i=1kαigi(w)+∑i=1lβihi(w) , 該式子稱爲拉格朗日函數
在滿足原式子的限制條件下有:maxα,β:α≥0L(w,α,β)=f(w)
又有以下對偶式子:
maxα,β:α≥0minwL(w,α,β)≤minwmaxα,β:α≥0L(w,α,β)=minwf(w)
當滿足一定條件下時, 我們有該等式成立。該條件稱爲KKT:
∂∂wiL(w,α,β)=0,i=1,...,n
∂∂βiL(w,α,β)=0,i=1,...,l
αigi(w)=0,i=1,...k
gi(w)≤0,i=1,...k
αi≥0,i=1,...k
在滿足以上KKT條件下,原來求f(w) 在限制條件下的最小值就可以等價轉換爲求maxα,β:α≥0minwL(w,α,β)
應用拉格朗日求解最小間隙最大值
構造朗格朗日函數:
L(w,b,α)=12||w||2+∑i=1mαi(1−y(i)(wTx(i)+b))
根據KKT條件有:
∂∂wL=0
∂∂bL=0
得到以下結果:
w=∑i=1mαiy(i)x(i)
∑i=1mαiy(i)=0
以上結果回代入拉格朗日函數得到:
L(w,b,α)=∑i=1mαi−12∑i,j=1my(i)y(j)αiαj(x(i))Tx(j)
故原式子可等價爲:
maxα W(α)=∑i=1mαi−12∑i,j=1my(i)y(j)αiαj<(x(i)),x(j)>
s.t. αi≥0,i=1,...m
∑i=1mαiy(i)=0
<(x(i)),x(j)> 表示兩個向量的內積. 實際上,可以用核函數來表示兩個向量的相似度,這樣,我們的SVM模型就可以應用在一些非線性可分的問題上。
正則化及不可分情形討論
實際上的問題經常是,我們無法找到一個線性可分的超分類平面,這樣,我們之前的限制條件是無法被滿足的。那麼前面做的這麼多工作都只能應用於可分的情況嗎?
之前我們的限制條件是非常嚴格的y(i)(wTx+b)≥1 , 但是我們可以考慮加入一些鬆弛變量ζ 來打破這種情況,同時對於這種情況要加一些懲罰條件,故原先的式子可改寫成:
minw,b 12||w||2+C∑i=1mζi
s.t. y(i)(wTx+b)≥1−ζi,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)
w , b , ζ 分別對L 偏導可以得到:
w=∑i=1mαiy(i)x(i)
b=−∑i=1mαiy(i)=0
C−αi−ri=0,i=1,..,m
由於ri≥0 , αi≥0
故由C−αi−ri=0,i=1,..,m 可得0≤αi≤C,i=1,...,m
把w , b 回代回去,原式子可以等價爲:
maxα W(α)=∑i=1mαi−12∑i,j=1my(i)y(j)αiαj<(x(i)),x(j)>
s.t. 0≤αi≤C,i=1,...m
∑i=1mαiy(i)=0
且再次檢查KKT條件,有:
αi(1−ζi−y(i)(wTx(i)+b))=0
1−ζi−y(i)(wTx(i)+b)≤0
ri(−ζi)=0
−ζi≤0
ζi≥0
αi≥0
對αi 進行討論(由KKT條件)有:
αi=0⇒y(i)(wTx(i)+b)≥1
αi=C⇒y(i)(wTx(i)+b)≤1
0≤αi≤C⇒y(i)(wTx(i)+b)=1
SMO優化
前面已經做了很多工作,現在目標函數已經有了. 接下來就是需要α 使得我們的目標函數取到最大值。參考資料中的SMO論文求目標函數的最小值:
minα Ψ(α)=minα12∑i,j=1my(i)y(j)αiαjK(x(i),x(j))−∑i=1mαi
s.t. 0≤αi≤C,i=1,...m
∑i=1mαiy(i)=0
取出一對α1,α2 我們有α1y(1)+α2y(2)=k=−∑i=3mαiy(i) 故有如下圖關係
分兩種情況討論:y1,y2 不同號以及y1,y2 同號
其中對應的α2 的邊界爲:
- 同號情況:L=max(0,α2−α1),H=min(C,C+α2−α1)
- 異號: L=max(0,α2+α1−C),H=min(C,α2+α1)
化簡目標函數,把α1,α2 提取出來:
令s=y1y2,Kij=K(xi,xj)
Ψ(α)=12α21K11+12α22K22+sα1α2K12−α1−α2+y1α1v1+y2α2v2+Ψconst
其中有:
vi=∑j=3mα∗jyjKij=ui+b∗−y1α∗1K1i−y2α∗2K2i (α∗1 表示舊的值)
則有α1+sα2=−y1∑i=3mαiyi=α∗1+sα∗2=t
把α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
目標函數對α2 求導並令其爲0:
∂∂α2Ψ(α)=α2(K11+K22−2K12)−st(K11−K12)−y2(v1−v2)+s−1=0
把t=α∗1+sα∗2,vi=∑j=3mα∗jyjKij=ui+b∗−y1α∗1K1i−y2α∗2K2i 代入上式得:
α2(K11+K22−2K12)=α∗2(K11+K22−2K12)+y2(u1−u2+y2−y1)
目標函數對α2 進行二次求導有:
∂∂2α2Ψ(α)=η=K11+K22−2K12
當η>0 有:
αnew2=α∗2+y2(E1−E2)η
αnew1=α1+s(α2−αnew,clipped2)
當η≤0 有, 此時易知α2 取到邊界時,目標函數最小:
f1=y1(E1+b)−α1K11−sα2K12,
f2=y2(E2+b)−sα1K12−α2K22,
L1=α1+s(α2−L)
H1=α1+s(α2−H)
ΨL=L1f1+Lf2+12L21K11+12L2K22+sLL1K12
ΨH=H1f1+Hf2+12H21K11+12H2K22+sHH1K12
對比ΨL,ΨH , 取值較小的那個
每次更新完α 後都需要更新b值:
當α1 不在界上時:
bnew=b1=E1+y1(αnew1−α1)K11+y2(αnew,clipped2−α2)K12+b
當α2 不在界上時:
bnew=b2=E2+y1(αnew1−α1)K12+y2(αnew,clipped2−α2)K22+b
當雙方都在界上時:
b=b1+b22
推薦相關參考資料:
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