SVM是機器學習中神一般的存在,雖然自深度學習以來有被拉下神壇的趨勢,但不得不說SVM在這個領域有着舉足輕重的地位。本文從Hard SVM 到 Dual Hard SVM再引進Kernel Trick,然后推廣到常用的Soft Kernel SVM。
一、Hard SVM
SVM本身是從感知機算法演變而來,感知機算法是在一個線性可分的數據集中找到一個分類超平面,盡可能的將數據集划分開,理論上這樣的超平面有無數多個,但是從直覺上,我們知道離兩側數據都比較遠的超平面更適合用於分類,於是我們選擇了一個比較“胖”的邊界的超平面作為分類界,這就是SVM。
我們知道一個超平面wx+b=0,w是這個超平面的法向量,則平面外一點到這個平面的距離為:d=1/||W||*|WTx+b|(解析幾何的知識)。絕對值符號會導致函數不平滑,又因為數據集是線性可分的,所以我們可以把距離公式改寫為:d=1/||W||*yi·(WTxi+b)(具體可以參考感知機)。那么我們就有了最基本的優化對象:
maxw,b margin(b,w)
subject to:for every n yi·(WTxi+b)>0
margin(b,w) = minw,b d
我們知道同時放縮一個超平面的系數並不會改變這個超平面,such as 3wx+3b=0=wx+b,所以我們可以假設離我們超平面最近的那個向量到平面的距離為1,即讓yi·(WTxi+b)=1,那么原來的優化問題就變為了:
maxw,b 1/||W||
subject to:for every n yi·(WTxi+b)>0 (已經滿足)
mini yi·(WTxi+b)≥1
最大化問題不是很好解決,我們可以轉換為我們熟悉最小化問題:
minw,b 0.5*WT*W
subject to:mini yi·(WTxi+b)≥1
很明顯這是一個二次規划問題,我們有成熟的算法如SMO,來解決這樣的問題。
二、Dual SVM
對於一個已經解決的問題,為什么我們還要考慮它的對偶問題?這是因為化作對偶問題后會更容易求解,同樣也方便引入Kernel Trick。
考慮原始SVM問題:
minw,b 0.5*WT*W
subject to:all i yi·(WTxi+b)≥1
我們改變其形式,轉化為:
minw,b(maxall α>0 0.5*WT*W+∑α(1-yi·(WTxi+b)))
我們發現如果滿足了條件α的值會變成0,如果不滿足就會變成+∞,以此來約束我們的條件。然后我們從極小極大的問題轉換為極大極小的問題。
minw,b(maxall α>0 0.5*WT*W+∑α(1-yi·(WTxi+b))) ≥ minw,b(0.5*WT*W+∑α(1-yi·(WTxi+b))
minw,b(0.5*WT*W+∑α(1-yi·(WTxi+b))≥maxall α>0(minw,b 0.5*WT*W+∑α(1-yi·(WTxi+b)))
而maxall α>0(minw,b 0.5*WT*W+∑α(1-yi·(WTxi+b)))就是我們的Lagrange Dual Problem。這是我們原問題的一個下界,那么什么時候能夠取得等號呢?根據拉格朗日對偶問題,當優化函數和條件是凸函數時,對偶問題是原問題的解的充要條件即為KKT 條件。然后我們求解對偶問題的極小問題,對w,b求偏導,令其等於0,得到結果為
L(w,b,α)=-0.5*||∑αyx||2+∑α
我們就可以來解決極大問題了,原始優化問題就可以轉化為:
maxall α>0 ∑yα = 0 w=∑αyx -0.5*||∑αyx||2+∑α
這顯然又是一個二次規划問題!所以就可以求解了,然后用KKT條件來求解w,b。這就是對偶問題的求解方案。
三、Kernel Trick
當數據不是線性可分的,那么SVM就失去了作用,但是我們可以尋找一種函數將數據映射到更高維的空間中,以此把問題變成一個線性可分的問題,但是這會帶來維度的急劇上升,使得模型求解效率大大下降,而Kernel Trick就是為了解決這樣的問題而出現的!(下回補完!)
四、Soft SVM