聽了馮老師在七月在線上講的【純白版手推SVM】一節(jié),感覺很順暢,沒有那么么多的數(shù)學(xué)名詞,直接進(jìn)入本質(zhì),不經(jīng)意間就得出了結(jié)果,也下定決心整理一下自己對SVM的認(rèn)識。下面是自己對SVM的t通俗理解!具體的理論數(shù)學(xué)推導(dǎo),可以參考支持向量機(jī)通俗導(dǎo)論(理解SVM的三層境界)這篇文章。
SVM和DeepLearning:SVM在解決中小規(guī)模樣本(相對少)、非線性(懲罰變量)、高維(核函數(shù))模式識別方面具有較大的優(yōu)勢。DP處理的對象主要為圖像和聲音,優(yōu)勢在于對原始特征的表示,但是神經(jīng)網(wǎng)絡(luò)相當(dāng)于一個(gè)黑匣子模型,如果在一些關(guān)鍵的應(yīng)用場合,出于風(fēng)險(xiǎn)的原因,用戶可能會拒絕,但是如果已經(jīng)提取到了較好對圖像進(jìn)行表示的特征,SVM是有理論推導(dǎo)過程的,有較好的可解釋性。
SVM—線性可分
傳統(tǒng)的監(jiān)督學(xué)習(xí),比如說0-1分類:我們需要學(xué)習(xí)一個(gè)決策邊界g(x),不同的分類器(比如說決策樹、神經(jīng)網(wǎng)絡(luò),邏輯回歸)會給出不同的分類邊界。而這些都是在找一個(gè)“好的”的決策邊界。那么如何量化一個(gè)決策邊界好的程度呢?

首先看一下SVM的關(guān)鍵假設(shè):對于線性可分的情況下,決策邊界有很多個(gè),SVM關(guān)鍵的問題是在這么多決策邊界中選一個(gè)最好的:決策邊界兩邊最近的樣本到?jīng)Q策邊界的間隔最大。這樣具有比較高的魯棒性(比如說有一個(gè)噪點(diǎn)的擾動不會導(dǎo)致決策邊界的變動)。
如下圖,H就是決策邊界,H1、H2是平行于H且過離H最近的兩類樣本的直線,我們將H1到H2之間的距離成為“街寬”,我們希望“街寬”越寬越好。當(dāng)給定了樣本點(diǎn)后,如何找出決策邊界使得間隔最大呢?我們定義和決策邊界垂直的向量w,現(xiàn)在有一個(gè)樣本向量u。決策規(guī)則(Decision Rule):如果這個(gè)u在w的投影大于一個(gè)值,就是正樣本,反之負(fù)樣本。(公式1),這是對于所有樣本而言。

在訓(xùn)練集中,需要正樣本離街的距離大于等于1,反之亦然(最大間隔假設(shè)),伸縮W就可以讓間隔無限大,這里為了計(jì)算方便令距離大于等于1(公式2)。

對于訓(xùn)練樣本,標(biāo)簽都是已知的,正樣本標(biāo)簽為1,負(fù)樣本標(biāo)簽為-1,現(xiàn)在做一個(gè)轉(zhuǎn)換,對公式2兩邊同時(shí)乘以標(biāo)簽yi,我們就可以將兩個(gè)式子合并為一個(gè)公式(公式3),在訓(xùn)練集中所有樣本都需要滿足這個(gè)公式。

街寬就等于X+和X-的差在w上的投影(距離的定義是在單位向量上的投影),同時(shí)對于街邊的點(diǎn)要求Yi(wx+b)=1,對公式進(jìn)行整理可以得到我們的優(yōu)化目標(biāo)(公式4)。


我們的目標(biāo)是街寬最大,同時(shí)在街邊的點(diǎn)滿足等號。要求等于1,街邊的點(diǎn)也就是所謂的支持向量的候選集,因此我們的問題可以轉(zhuǎn)化為下式:求出了優(yōu)化的目標(biāo):t因此我們的優(yōu)化目標(biāo)就是:

這是帶約束的最小值問題,很自然我們想到了拉格朗日乘子法,我們可以寫出下面的表達(dá)式,分別對w和b求偏導(dǎo),令其等于0,可以看到w是街邊x的線性組合。這里只需要等式約束。

再將對w和b求偏導(dǎo)的結(jié)果帶入L中,可以看到L只取決于訓(xùn)練樣本中兩個(gè)向量之間兩兩的點(diǎn)乘。其中alpha是拉格朗日乘子,如果我們求得了alpha,我們就知道了w.

上式中朗格朗日乘子只有很少的一部分部位0,不等于0的乘子所對應(yīng)的樣本點(diǎn)就叫做支持向量,也就是在街邊的那些點(diǎn)。通過對凸優(yōu)化問題(KKT、SMO)的求解就可以求得alpha了,w也就求出了,b也很容易求得。這時(shí)決策邊界g(x)也就知道了,我們就可以對待分類的樣本進(jìn)行分類了。

SVM—線性不可分—核函數(shù)
對于線性可分的情況下,根據(jù)上述公式的推導(dǎo),只需要求得待分類樣本與所有訓(xùn)練樣本的內(nèi)積,但是只有支持向量的朗格朗日乘子是不等于零的,因此只需要就算待分類樣本與支持向量的內(nèi)積即可。
上面都是對于線性可分的情況,那么如果樣本時(shí)線性不可分呢?那就將樣本向高維空間轉(zhuǎn)化,使其線性可分(網(wǎng)上有很多關(guān)于這方面的例子),那么關(guān)鍵就來了,如何將低維空間的小轉(zhuǎn)化為高維空間的y呢?我們需要找到這個(gè)映射,但是這個(gè)映射并沒有系統(tǒng)的方法,但是我們關(guān)系的事高維空間里樣本的內(nèi)積的值,并不是如何映射!核函數(shù)的基本作用就是接受兩個(gè)低維空間的響亮,能夠計(jì)算出經(jīng)過某個(gè)變換后在高維空間里兩個(gè)向量的內(nèi)積值,因此這里我們可以借助核函數(shù)實(shí)現(xiàn)低維到高維的映射。

SVM—線性不可分—松弛變量
當(dāng)我們使用了核函數(shù)后向高維空間映射后,問題仍然線性不可分,那么我們就需要松弛變量時(shí)的問題可分。

SVM—懲罰因子
