【機器學習筆記】SVM part1: 線性SVM

前言

先說我對線性SVM的整體理解吧:
其實就是一個最優間隔的二分類器(如下圖)
image_1bntvf1v43lt7391rpb1l5n1u6r2h.png-25.1kB

目標就是找到中間那個最優的分類超平面,而如圖在虛線上的點,就是所謂的支持向量(support vectors) 。在求解這一問題的時候用到了對偶問題來幫助解決(爲什麼要用對偶問題?)而想要這樣的話,我們定義了一個滿足KKT條件的原問題,這裏很巧妙的一點在於,KKT 的總體思想是認爲極值會在可行域邊界上取得,我覺得這一點是線性SVM的核心思想。

在總結下來這些的時候,我主要是根據

  • Andrew Ng的機器學習公開課(Stanford cs229 2003)
  • 當年課程的學習講義
  • JerryLead 的中文筆記
  • Matrix cookbook

其實很多問題,很多人都闡述的非常清楚透徹,自己寫下來只是理一下自己的思路,確認是否真正的理解;
我在看講義和聽課的過程中,經常暫停下來提一些奇怪的問題,有些能夠解決,有些卻不能,我也會在下面寫出,供大家思考,這部分我用引用格式表示,如:

爲什麼最優間隔?

最優間隔,就是這個分類器(超平面)要儘可能的離兩邊的樣本數據都很遠纔好;
我們知道,分類器是根據已有樣本數據來訓練得到,以便預測測試數據的,在這一點上,我們考慮到,最優間隔的分類器,在未來的測試數據上,更保險,更不容易出錯。

問題的數學表示

我們有很多樣本點:

(x(i),y(i)),i=1...m

其中 x(i)=[x(i)1,x(i)2,...,x(i)n] 是一個向量, y(i){1,1} 是類別標籤;

既然還是一個線性的分類器,那麼我們可以將這個分類超平面定義爲:

hw,b=g(wTx+b)g(z)={1,1,z>=0z<0

其中 w,b 就是我們需要學習到的分類器的參數

這裏我想說一下這個 g(z) ,我們知道:
在LR裏面,這個 g(z) 就是 sigmoid 函數
在softmax裏面,這個 g(z) 就是softmax函數
那麼在這裏,寫到這的時候還沒有一個 g(z) 的顯式表出;
我們考慮一個特殊情況,因爲我上面說到,KKT條件的整體思想,引發了我的思考,也就是SVM的核心思想就是邊界值,那麼,我們索性假設有一個邊界值點 (x(j),y(j)),y(j)=0 :那也就是說 g(z)=0
當然,這個邊界值點在被分類數據中不會存在,但是我們先繼續, g(z)=0 的唯一取到的可能就是 z=0 , 那此時,也就是說 wTx+b=0 ;
既然對於一個合法的分類器來說,這個點不會存在於被分類數據中,那麼在這個空間內,它唯一存在的地方就是在這個分類超平面上,也就是說,這個超平面的性質就是:

wTx+b=0

函數間隔(functional margin) & 幾何間隔(geometric margin)

函數間隔

對於一個樣本點 (x(i),y(i)) ,函數間隔爲:γ^(i)=y(i)(wTx(i)+b)
考慮到 y 的正負性,則有: γ^(i)=|wTx(i)+b|
下面這點我覺得講的很好:
如果y(i)>0 , wTx(i)+b 應該是一個大正數,反之是個大負數
因此函數間隔代表了我們認爲特徵是正例還是反例的確信度

這裏,函數間隔還沒有什麼具體的實際數值意義,因爲隨着參數 w,b 的改變,函數間隔可以隨意變化

幾何間隔

簡單來說,幾何間隔就是歸一化的函數間隔
歸一化之後,幾何間隔就是某個樣本點到分類平面的距離
image_1bnu4e0u11fqut6917rh1jos62j3o.png-23.4kB

上圖中, B 點位於

wTx+b=0
這個分割面上, 設 A 點到 B 點的距離用 γ(i) 表示,即 A 的幾何間隔, 那麼, w 就是 BA 方向上的梯度, 單位向量爲 w||w|| ;

這裏我又瞎想了一下, w 爲啥是梯度呢?
首先這個問題是一個線性的問題,也就是 wTx+b=0 是一個 x 的線性組合,那麼我們先從二維着手,
假設 x 就是一個一維變量,那麼 wTx+b=0 就是一條分類直線, w 就是斜率
那麼二維空間的梯度,不就是斜率嗎?
換句話講,梯度就是函數的走勢方向,因爲想想梯度下降,不就是選擇函數下降最快的方向作爲梯度嗎?
或者你也可以這麼理解,梯度是怎樣得到的?求導得到的
你在二維空間,將 wx+bx 求導就是 w
或者直接在高維將 wTx+b=0x 求導, 得到的就是 w
這裏可以參考matrix cookbook, 有一系列的求導規則,這裏用到了:
image_1bnu5ddne111f1jcq1649ebe1qpq45.png-5.9kB

迴歸正題:所以如果 A 是 (x(i),y(i)) , B 就是 (x(i)γ^(i)w||w||,0) 。 這裏我一度將這個運算和上面的示意圖混淆,不知道爲什麼這樣計算 B, 但是,當我意識到, y 並不是示意圖的一個維度,知識一個類別標籤,把這個運算單純作爲向量運算,就很明瞭了。
把 B 代入 wTx+b=0 , 運算得到:

γ(i)=y(i)((w||w||)Tx(i)+b||w||)

||w||=1 時, 幾何間隔就是函數間隔了,所以說幾何間隔就是歸一化的函數間隔;

最優間隔分類器

我們的目標是尋找一個超平面,使得離超平面比較近的點能有更大的間距。也就是我們不考慮所有的點都必須遠離超平面,我們關心求得的超平面能夠讓所有點中離它最近的點具有最大間距。將問題形式化表示:

maxγ,w,bγs.t.y(i)(wTx(i)+b)γ||w||=1

這裏約束了 ||w||=1 , wTx+b 就是幾何間隔,也就是點到分類平面的距離
,至此我們定義出的問題,藉助這個優化目標,如果求出了 w,b 就可以藉助之前定義的 h(x),g(z) 來判別 y 的類別了。

其實我覺得這部分是精髓,轉化的思想也可以應用到其他地方

我們雖然有了這個 ||w||=1 的約束,但是用這個約束,卻有點手足無措,因爲這不是一個凸函數。所以開始了奇妙的轉化:

第一步:

考慮到幾何間隔和函數間隔的關係 γ=γ^||w|| , 先將問題轉化成:

maxγ,w,bγ^||w||s.t.y(i)(wTx(i)+b)γ^

這裏,把 ||w||=1 這個約束條件轉化到優化目標問題裏,我們就不用單獨去考慮這個非凸優化的條件,但是優化目標還不是凸函數,那就繼續

第二步:

image_1bntvf1v43lt7391rpb1l5n1u6r2h.png-25.1kB
之前簡略提過,分類面的確立只與那些離分類面最近的那些點有關;
我們在上圖中,考慮這些離分類面最近的那些點,把他們的函數間隔設爲1, γ^=1 ;(這裏只是對 w,b 進行了縮放,因爲本身函數間隔的大小就是可以改變的)
那麼他們的幾何間隔 γ=γ^||w||=1||w||
也即他們到分類面的距離。
那麼問題就轉化成:

maxγ,w,b1||w||s.t.y(i)(wTx(i)+b)1

由於 ||w|| 是二範數,本質還是一個數值,我們求 1||w|| 的最大值,也就是求 12||w||2 的最小值
所以問題轉化爲:
minγ,w,b12||w||2s.t.y(i)(wTx(i)+b)1

這就成了一個帶有不等式約束的二次規劃問題,帶條件的優化問題,我們可以用拉格朗日乘子法來解決;

拉格朗日乘數法, 對偶問題, KKT 條件

先看一下一般形式的拉格朗日乘數法:
假設有問題:

minwf(w)s.t.gi(w)0i=1,...,khi(w)=0i=1,...,l

爲了解決有兩個約束(一個等式約束 hi(w)=0 , 一個不等式約束 gi(w)0 )的優化問題,引入拉格朗日乘數法,先定義拉格朗日公式:

L(w,α,β)=f(w)+i=1kαigi(w)+i=1lβihi(w)

其中 αi,βi 是拉格朗日算子,然後聯立如下方程組,就可以解出可能的極值點:
L(w,α,β)w=0L(w,α,β)αi=0L(w,α,β)βi=0

(這部分我自己理解的時候也有點亂,條理可能不太清晰,如果看一次沒看懂,再看一遍可能會有幫助)
至於爲什麼能夠這樣的條件約束下的優化問題能夠用拉格朗日乘數法求解,
首先,我看到了這樣一篇博客 拉格朗日乘數法,第二部分中數學實例的例子不錯,提出了拉格朗日乘數法的思想:
通過引入拉格朗日乘子將原來的約束優化問題轉化爲無約束的方程組問題
其次這個 維基百科 的圖,覺得對自己理解很有幫助
image_1bnvinmmk1o99r2hd9e12sh1b7f4i.png-40.6kB
簡單來說,雖然還是尋找極值點,但是約束條件的存在使得這個尋找的軌跡只能由上圖綠線所決定;綠線就是問題的可行域。那麼我們沿着綠線的方向走,向着 f(x,y) 下降(或上升,取決於問題求極大還是極小)的方向走,走到 g(x,y) 的變化率爲0的時候,我們就找到了極值點, 這裏的圖中就表現爲與 f(x,y) 的等高線相切。
此時:從圖上理解,曲面相切,法向量共線,曲面的法向量就是偏導(偏導是各個分量的變化率,法向量是各個方向變化率疊加的結果,如果不太明白,推薦一篇博客:小談導數、梯度和極值
或者也可以從一元函數來理解,兩個曲線相切,意味着此刻在切點,斜率相同,曲線法向量共線;
Anyway, 我們定義一個只有一個不等約束的拉格朗日問題方便理解,這裏再從解析的角度去理解:

minwf(w)s.t.g(w)0

先看求解過程:
L(w,α)=f(w)+αg(w)

聯立方程組:
L(w,α)w=0(1)L(w,α)α=0(2)

我們先看 (1) , 進一步: L(w,α)w=f(w)w+αg(w)w=0
回想我們剛剛說的法向量共線,是不是這個公式就是對於法向量共線的解釋呢?
我們繼續看 (2)L(w,α)α=g(w)=0 ,這說明了什麼? L(w,α)=f(w)+αg(w) , 現在 g(w)=0 ,那說明在極值點: L(w,α)=f(w)
現在再回來看 (1) , 相當於是在求 L(w,α)α 的極值點,是不是就是原問題 f(w) 的極值點了呢? 這樣這種解法就能解釋得通了吧。
不過有點不嚴謹的地方是,記得我們在學的時候,是有一條:就是原問題 f(w) 的極值是 L(w,α) 的極值的子集,之後還需繼續驗證
擴展到高維不難,如果有多個約束條件無非就是多個條件的線性組合,相信在理解的過程中是一樣的。

回到正題,但是我們不能直接求解,有 gi(w)0 ,求極小值可以發散到負無窮,這樣我們先定義一個這樣的函數:

θP(w)=maxα,β:αi0L(w,α,β)

作爲我們的原問題。由於有 gi(w)0 , 爲了求極大值,我們這裏約束 αi0

講義上這裏直接說
image_1bo1eb93hdmqn8gqvm1ts1m3s4v.png-20kB
但是我覺得這個式子只有在提出KKT條件再提比較合適,因爲在不滿足KKT條件的情況下,αigi(w)=0 是不一定能成立的。但是爲了方便表述,這裏暫且先默認滿足

w 滿足所有約束時,我們就可以將問題轉化如下:

minwθP(w)=minwmaxα,β:αi0L(w,α,β)

我們使用 p 來表示 minwθP(w)
原問題 p 是先求最大,再求最小,那麼我們定義一個它的對偶問題 d ,即先求最小,再求最大;
首先:

θD(α,β)=minwL(w,α,β)

那麼:
d=maxα,β:αi0θD(α,β)=maxα,β:αi0minwL(w,α,β)

就有:
d=maxα,β:αi0minwL(w,α,β)minwmaxα,β:αi0L(w,α,β)=p

這一點,我們有這樣一個事實:

maxminf(x)minmaxf(x)

那麼,再什麼時候兩者會等價呢?

首先,是三個假設:

  • f,g 是凸函數
  • h 是仿射函數: ai,bi,s.t.hi(w)=aTiw+bi
  • 存在 w , 使對於所有 i , gi(w)<0

滿足上述假設,就是一個凸優化問題

滿足之後,一定存在 w,α,β

  • w 是原問題的解
  • α,β 是對偶問題的解
  • p=d=L(w,α,β)

同時 w,α,β 滿足K.K.T.條件:

  • wiL(w,α,β)=0,i=1,...,n
  • βiL(w,α,β)=0,i=1,...,l
  • αigi(w)=0,i=1,...,k
  • gi(w)0,i=1,...,k
  • α0,i=1,...,k

我們看後三條:
如果我們限定 αi>0 那麼 gi(w)=0 就一定成立。
由於 gi(w) 是限定條件, gi(w)=0 意味着,w 處於可行域的邊界上

這也就是我之前提到過的 (其實是別人提到過,我只是印象深刻),K.K.T.條件是在可行域邊界上取得極值;至於在可行域內部的點 gi(w)<0 的約束是不起作用的,我總覺得這裏和支持向量的思想很像;

最優間隔分類器

講了一大堆,回到剛剛的優化問題:

minγ,w,b12||w||2s.t.y(i)(wTx(i)+b)1,i=1,...,m

現在將約束條件改爲: gi(w)=y(i)(wTx(i)+b)+10
現在原問題是凸函數,不等式約束是一個線性函數,也是一個廣義的凸函數
所以滿足了K.K.T.條件的假設前提。

約束條件表明了,函數間隔爲1是邊界上的點
由K.K.T條件得知,(通常來說,在邊界上的點,gi(w)=0 時, αi>0 , 而在其餘的點上,當,gi(w)>0 時, αi=0

現在可以構造拉格朗日函數如下:

L(w,b,α)=12||w||2i=1mαi[y(i)(wTx(i)+b)1],αi0

注意參數不同了,是 w,b,α ;
和上面一樣,我們構造一個 p ,然後找到對偶問題 d :
d=maxα:αi0minw,bL(w,b,α)minw,bmaxα:αi0L(w,b,α)=p

先求解minw,bL(w,b,α) , 對 w , b 求偏導:

wL(w,b,α)=wi=1mαiy(i)x(i)=0bL(w,b,α)=i=1mαiy(i)=0

得到 w=mi=1αiy(i)x(i) , 代回原拉格朗日函數:
(省略計算過程)
L(w,b,α)=i=1mαi12i,j=1my(i)y(j)αiαj(x(i))Tx(j)bi=1mαiy(i)

由於如上: bL(w,b,α)=mi=1αiy(i)=0 ,最後一項爲0,得:
L(w,b,α)=i=1mαi12i,j=1my(i)y(j)αiαj(x(i))Tx(j)

現在用 W(α) 表示 minw,bL(w,b,α) , 再來求最大值:

d=maxα:αi0minw,bL(w,b,α)=maxα:αi0W(α)maxαW(α)=i=1mαi12i,j=1my(i)y(j)αiαj(x(i))Tx(j)s.t.αi0,i=1,...,mi=1mαiy(i)=0

這個問題,留給之後解決,假設我們解決了這個問題,找到了 α , 又有樣本點數據,我們很容易由 w=mi=1αiy(i)x(i) 得出 w , 但是我們沒有直接求出 b , 但是我們知道離超平面最近的正的函數間隔要等於離超平面最近的負的函數間隔,據此,可以用其他變量將 b 表出:
b=maxi:y(i)=1wTx(i)+mini:y(i)=1wTx(i)2

這裏我將 α,w,b 都用 α,w,b 表示,因爲原問題的解和對偶問題相同

這樣,問題就解決了,我們只要找到那些函數間隔爲1的樣本點,代入上面的公式求出 w , 和 b ,就能確定目標超平面 wTx+b

所以,起到作用的只有那些“支持向量”,也就是,只有邊界值決定了分類面。

That’s all for now.

發佈了105 篇原創文章 · 獲贊 159 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章