機器學習筆記--常見算法(9)--support vector machine(SVM)(臺大林軒田SVM)

1. Liner Support Vector Machine

1.1 SVM引出

SVM是一種分類器。現在有兩種類別(如下圖),我們要找到一條直線,將兩個不同的類別區分開。圖中存在許多滿足條件的直線,我們該選哪條最合適呢?
這裏寫圖片描述
直觀上來說,我們有幾種考慮因素:①能容忍更多噪聲,②模型更健壯,不會過擬合。
這個問題可以等價於:選擇一條直線,判斷該直線到最近的點的距離究竟是遠還是近。我們希望這條直線更"fat"(如上圖最後一條直線),也就是直線到最近的點的距離越遠越好。

1.2 SVM中的margin計算

定義分類線有多胖,也就是看距離分類線最近的點與分類線的距離,我們把它用margin表示。
整體來說,我們的目標就是找到這樣的分類線並滿足下列條件:

  • 分類正確。能把所有正負類分開。即ynωTxn>0y_n\omega^Tx_n>0
  • margin最大化
    這裏寫圖片描述

有了上述條件,那麼如何計算點到分類線的距離呢?

爲了便於計算,做一個小小的改動,將ω(ω0,ω1,,ωd)\omega(\omega_0,\omega_1,…,\omega_d)中的ω0\omega_0拿出,替換爲b。同時省去x0x_0項。假設函數hypothesis就變成了h(x)=sign(ωTx+b)h(x)=sign(\omega^Tx+b)

那麼,點到分類平面的距離公式爲:(推導見視頻)
distance(x,b,w)=ωTω(xx)=1ωωTx+bdistance(x,b,w)=|\frac{\omega^T}{||\omega||}(x-x')|=\frac{1}{||\omega||}|\omega^Tx+b|

具體的求距離步驟:
①寫出hyperplane ω1x1+ω2x2+...+ωdxd+b=0\omega_1x1+\omega_2x2+...+\omega_dxd+b=0的形式
②求ω=ω12+ω22+...+ωd2||\omega||=\sqrt{\omega_1^2+\omega_2^2+...+\omega_d^2}
③將距hyperplane最近的點代入ωTx=b\omega^Tx=b
④求③絕對值,代入距離公式計算最終結果

1.3 margin計算公式的簡化

爲了簡化計算,做一個放縮,令距離分類面最近的點滿足yn(wTxn+b)=1y_n(w^Tx_n+b)=1。那麼我們所要求的margin就變成了:
margin(b,w)=1wmargin(b,w)=\frac{1}{||w||}

目標形式簡化爲:
這裏寫圖片描述
另外,最大化問題max1wmax\frac{1}{||w||}可轉換爲最小化問題min12ωTωmin\frac{1}{2}\omega^T\omega
放鬆條件(放鬆條件對我們毫無影響,見視頻1.3 16:00),最終形式爲:
在這裏插入圖片描述

1.4 SVM一般求解方法

現在,SVM的標準問題爲:
在這裏插入圖片描述
這是一個典型的二次規劃問題,即Quadratic Programming(QP)。將SVM與標準二次規劃問題的參數一一對應起來,就可以將參數輸入一些軟件(如matlab)自帶的二次規劃的庫函數求解。
這裏寫圖片描述
那麼,線性SVM算法可以總結爲三步:
①計算對應的二次規劃參數Q、p、A、c
②根據二次規劃庫函數,計算b,ωb, \omega
③將b,ωb, \omega代入gSVMg_{SVM},得到最佳分類面。

1.5 非線性SVM

如果是非線性的,例如包含x的高階項,那麼可以使用在《機器學習基石》課程中介紹的特徵轉換的方法,先作zn=Φ(xn)z_n=\Phi(x_n)的特徵變換,從非線性的x域映射到線性的z域空間,再利用Linear Hard-Margin SVM Algorithm求解即可。

PS:使用SVM得到large-margin,減少了有效的VC Dimension,限制了模型複雜度;另一方面,使用特徵轉換,目的是讓模型更復雜,減少EinE_in。所以,非線性SVM是把這兩者的目的結合起來,平衡這兩者的關係。

2.Dual Support Vector Machine

2.1 Dual SVM引出

在1.5節中,對於非線性SVM,可以使用非線性變換將變量從x域轉換到z域中,再使用線性SVM解決即可。
然而,特徵轉換下,設求解QP問題在z域中的維度爲爲d^+1\hat d +1,如果模型越複雜,則d^+1\hat d +1越大,相應求解這個QP問題也變得很困難。當d^\hat d無限大的時候,問題將會變得難以求解,那麼有沒有什麼辦法可以解決這個問題呢?一種方法就是使SVM的求解過程不依賴d^\hat d,這就是我們本節課所要討論的主要內容。
把問題轉化爲對偶問題,同樣是二次規劃,只不過變量個數編程N個,有N+1個限制條件。這種對偶SVM的好處就是問題只跟N有關,與d^\hat d無關,這樣就不存在當d^\hat d無限大難以求解的情況。

2.2 Lagrange Function 拉格朗日函數

如何把問題轉化爲對偶問題?
首先,把SVM的條件問題轉換爲非條件爲題。對於SVM問題,使用拉格朗日乘子法,令朗格朗日因子爲αn\alpha_n,構造一個函數:

L(b,w,α)=12wTw+n=1Nαn(1yn(wTzn+b))L(b,w,\alpha)=\frac12w^Tw+\sum_{n=1}^N\alpha_n(1-y_n(w^Tz_n+b))
該函數稱爲拉格朗日函數。

2.3 把SVM構造成非條件問題

下面,利用拉格朗日函數,把SVM構造成一個非條件問題。
這裏寫圖片描述
該最小化問題中包含了最大化問題,怎麼解釋呢?首先我們規定拉格朗日因子αn0\alpha_n\geq0,根據SVM的限定條件可得:(1yn(wTzn+b))0(1-y_n(w^Tz_n+b))\leq0,如果沒有達到最優解,即有不滿足(1yn(wTzn+b))0(1-y_n(w^Tz_n+b))\leq0的情況,因爲αn0\alpha_n\geq0,那麼必然有nαn(1yn(wTzn+b))0\sum_n\alpha_n(1-y_n(w^Tz_n+b))\geq0。對於這種大於零的情況,其最大值是無解的。如果對於所有的點,均滿足(1yn(wTzn+b))0(1-y_n(w^Tz_n+b))\leq0,那麼必然有nαn(1yn(wTzn+b))0\sum_n\alpha_n(1-y_n(w^Tz_n+b))\leq0,則當nαn(1yn(wTzn+b))=0\sum_n\alpha_n(1-y_n(w^Tz_n+b))=0時,其有最大值,最大值就是我們SVM的目標:12wTw\frac12w^Tw。因此,這種轉化爲非條件的SVM構造函數的形式是可行的。

2.4 Lagrange Dual SVM

現在,我們已經將SVM問題轉化爲與拉格朗日因子αn\alpha_n有關的最大最小值形式。已知αn0\alpha_n\geq0,那麼對於任何固定的α\alpha',且αn0\alpha_n'\geq0,一定有如下不等式成立:

這裏寫圖片描述

對上述不等式右邊取最大值,不等式同樣成立:

這裏寫圖片描述

上述不等式表明,我們對SVM的min和max做了對調,滿足這樣的關係,這叫做Lagrange dual problem。不等式右邊是SVM問題的下界,我們接下來的目的就是求出這個下界。

已知\geq是一種弱對偶關係,在二次規劃QP問題中,如果滿足以下三個條件:

  • 函數是凸的(convex primal)

  • 函數有解(feasible primal)

  • 條件是線性的(linear constraints)

那麼,上述不等式關係就變成強對偶關係,\geq變成=,即一定存在滿足條件的解(b,w,α)(b,w,\alpha),使等式左邊和右邊都成立,SVM的解就轉化爲右邊的形式。

經過推導,SVM對偶問題的解已經轉化爲無條件形式:

這裏寫圖片描述

其中,上式括號裏面的是對拉格朗日函數L(b,w,α)L(b,w,\alpha)計算最小值。那麼根據梯度下降算法思想:最小值位置滿足梯度爲零。首先,令L(b,w,α)L(b,w,\alpha)對參數b的梯度爲零:

L(b,w,α)b=0=n=1Nαnyn\frac{\partial L(b,w,\alpha)}{\partial b}=0=-\sum_{n=1}^N\alpha_ny_n

也就是說,最優解一定滿足n=1Nαnyn=0\sum_{n=1}^N\alpha_ny_n=0。那麼,我們把這個條件代入計算max條件中(與αn0\alpha_n\geq0同爲條件),並進行化簡:

這裏寫圖片描述

這樣,SVM表達式消去了b,問題化簡了一些。然後,再根據最小值思想,令L(b,w,α)L(b,w,\alpha)對參數w的梯度爲零:

L(b,w,αw=0=wn=1Nαnynzn\frac{\partial L(b,w,\alpha}{\partial w}=0=w-\sum_{n=1}^N\alpha_ny_nz_n

即得到:

w=n=1Nαnynznw=\sum_{n=1}^N\alpha_ny_nz_n

也就是說,最優解一定滿足w=n=1Nαnynznw=\sum_{n=1}^N\alpha_ny_nz_n。那麼,同樣我們把這個條件代入並進行化簡:

這裏寫圖片描述

這樣,SVM表達式消去了w,問題更加簡化了。這時候的條件有3個:

  • all αn0\alpha_n\geq0

  • n=1Nαnyn=0\sum_{n=1}^N\alpha_ny_n=0

  • w=n=1Nαnynznw=\sum_{n=1}^N\alpha_ny_nz_n

SVM簡化爲只有αn\alpha_n的最佳化問題,即計算滿足上述三個條件下,函數12n=1Nαnynzn2+n=1Nαn-\frac12||\sum_{n=1}^N\alpha_ny_nz_n||^2+\sum_{n=1}^N\alpha_n最小值時對應的αn\alpha_n是多少。

總結一下,SVM最佳化形式轉化爲只與αn\alpha_n有關:

這裏寫圖片描述

其中,滿足最佳化的條件稱之爲Karush-Kuhn-Tucker(KKT):

這裏寫圖片描述

在下一部分中,我們將利用KKT條件來計算最優化問題中的α\alpha,進而得到b和w。

2.6 解對偶SVM

上面我們已經得到了dual SVM的簡化版了,接下來,我們繼續對它進行一些優化。首先,將max問題轉化爲min問題,再做一些條件整理和推導,得到:

這裏寫圖片描述

顯然,這是一個convex的QP問題,且有N個變量αn\alpha_n,限制條件有N+1個。則根據上一節課講的QP解法,找到Q,p,A,c對應的值,用軟件工具包進行求解即可。

這裏寫圖片描述

求解過程很清晰,但是值得注意的是,qn,m=ynymznTzmq_{n,m}=y_ny_mz^T_nz_m,大部分值是非零的,稱爲dense。當N很大的時候,例如N=30000,那麼對應的QDQ_D的計算量將會很大,存儲空間也很大。所以一般情況下,對dual SVM問題的矩陣QDQ_D,需要使用一些特殊的方法,這部分內容就不再贅述了。

這裏寫圖片描述

得到αn\alpha_n之後,再根據之前的KKT條件,就可以計算出w和b了。首先利用條件w=αnynznw=\sum\alpha_ny_nz_n得到w,然後利用條件αn(1yn(wTzn+b))=0\alpha_n(1-y_n(w^Tz_n+b))=0,取任一αn0\alpha_n\neq0αn\alpha_n>0的點,得到1yn(wTzn+b)=01-y_n(w^Tz_n+b)=0,進而求得b=ynwTznb=y_n-w^Tz_n

這裏寫圖片描述

值得注意的是,計算b值,αn\alpha_n>0時,有yn(wTzn+b)=1y_n(w^Tz_n+b)=1成立。yn(wTzn+b)=1y_n(w^Tz_n+b)=1正好表示的是該點在SVM分類線上,即fat boundary。也就是說,滿足αn\alpha_n>0的點一定落在fat boundary上,這些點就是Support Vector。這是一個非常有趣的特性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章