文章目錄
1. Liner Support Vector Machine
1.1 SVM引出
SVM是一種分類器。現在有兩種類別(如下圖),我們要找到一條直線,將兩個不同的類別區分開。圖中存在許多滿足條件的直線,我們該選哪條最合適呢?
直觀上來說,我們有幾種考慮因素:①能容忍更多噪聲,②模型更健壯,不會過擬合。
這個問題可以等價於:選擇一條直線,判斷該直線到最近的點的距離究竟是遠還是近。我們希望這條直線更"fat"(如上圖最後一條直線),也就是直線到最近的點的距離越遠越好。
1.2 SVM中的margin計算
定義分類線有多胖,也就是看距離分類線最近的點與分類線的距離,我們把它用margin表示。
整體來說,我們的目標就是找到這樣的分類線並滿足下列條件:
- 分類正確。能把所有正負類分開。即
- margin最大化
有了上述條件,那麼如何計算點到分類線的距離呢?
爲了便於計算,做一個小小的改動,將中的拿出,替換爲b。同時省去項。假設函數hypothesis就變成了。
那麼,點到分類平面的距離公式爲:(推導見視頻)
具體的求距離步驟:
①寫出hyperplane 的形式
②求
③將距hyperplane最近的點代入中
④求③絕對值,代入距離公式計算最終結果
1.3 margin計算公式的簡化
爲了簡化計算,做一個放縮,令距離分類面最近的點滿足。那麼我們所要求的margin就變成了:
目標形式簡化爲:
另外,最大化問題可轉換爲最小化問題。
放鬆條件(放鬆條件對我們毫無影響,見視頻1.3 16:00),最終形式爲:
1.4 SVM一般求解方法
現在,SVM的標準問題爲:
這是一個典型的二次規劃問題,即Quadratic Programming(QP)。將SVM與標準二次規劃問題的參數一一對應起來,就可以將參數輸入一些軟件(如matlab)自帶的二次規劃的庫函數求解。
那麼,線性SVM算法可以總結爲三步:
①計算對應的二次規劃參數Q、p、A、c
②根據二次規劃庫函數,計算
③將代入,得到最佳分類面。
1.5 非線性SVM
如果是非線性的,例如包含x的高階項,那麼可以使用在《機器學習基石》課程中介紹的特徵轉換的方法,先作的特徵變換,從非線性的x域映射到線性的z域空間,再利用Linear Hard-Margin SVM Algorithm求解即可。
PS:使用SVM得到large-margin,減少了有效的VC Dimension,限制了模型複雜度;另一方面,使用特徵轉換,目的是讓模型更復雜,減少。所以,非線性SVM是把這兩者的目的結合起來,平衡這兩者的關係。
2.Dual Support Vector Machine
2.1 Dual SVM引出
在1.5節中,對於非線性SVM,可以使用非線性變換將變量從x域轉換到z域中,再使用線性SVM解決即可。
然而,特徵轉換下,設求解QP問題在z域中的維度爲爲,如果模型越複雜,則越大,相應求解這個QP問題也變得很困難。當無限大的時候,問題將會變得難以求解,那麼有沒有什麼辦法可以解決這個問題呢?一種方法就是使SVM的求解過程不依賴,這就是我們本節課所要討論的主要內容。
把問題轉化爲對偶問題,同樣是二次規劃,只不過變量個數編程N個,有N+1個限制條件。這種對偶SVM的好處就是問題只跟N有關,與無關,這樣就不存在當無限大難以求解的情況。
2.2 Lagrange Function 拉格朗日函數
如何把問題轉化爲對偶問題?
首先,把SVM的條件問題轉換爲非條件爲題。對於SVM問題,使用拉格朗日乘子法,令朗格朗日因子爲,構造一個函數:
該函數稱爲拉格朗日函數。
2.3 把SVM構造成非條件問題
下面,利用拉格朗日函數,把SVM構造成一個非條件問題。
該最小化問題中包含了最大化問題,怎麼解釋呢?首先我們規定拉格朗日因子,根據SVM的限定條件可得:,如果沒有達到最優解,即有不滿足的情況,因爲,那麼必然有。對於這種大於零的情況,其最大值是無解的。如果對於所有的點,均滿足,那麼必然有,則當時,其有最大值,最大值就是我們SVM的目標:。因此,這種轉化爲非條件的SVM構造函數的形式是可行的。
2.4 Lagrange Dual SVM
現在,我們已經將SVM問題轉化爲與拉格朗日因子有關的最大最小值形式。已知,那麼對於任何固定的,且,一定有如下不等式成立:
對上述不等式右邊取最大值,不等式同樣成立:
上述不等式表明,我們對SVM的min和max做了對調,滿足這樣的關係,這叫做Lagrange dual problem。不等式右邊是SVM問題的下界,我們接下來的目的就是求出這個下界。
已知是一種弱對偶關係,在二次規劃QP問題中,如果滿足以下三個條件:
-
函數是凸的(convex primal)
-
函數有解(feasible primal)
-
條件是線性的(linear constraints)
那麼,上述不等式關係就變成強對偶關係,變成=,即一定存在滿足條件的解,使等式左邊和右邊都成立,SVM的解就轉化爲右邊的形式。
經過推導,SVM對偶問題的解已經轉化爲無條件形式:
其中,上式括號裏面的是對拉格朗日函數計算最小值。那麼根據梯度下降算法思想:最小值位置滿足梯度爲零。首先,令對參數b的梯度爲零:
也就是說,最優解一定滿足。那麼,我們把這個條件代入計算max條件中(與同爲條件),並進行化簡:
這樣,SVM表達式消去了b,問題化簡了一些。然後,再根據最小值思想,令對參數w的梯度爲零:
即得到:
也就是說,最優解一定滿足。那麼,同樣我們把這個條件代入並進行化簡:
這樣,SVM表達式消去了w,問題更加簡化了。這時候的條件有3個:
-
all
-
-
SVM簡化爲只有的最佳化問題,即計算滿足上述三個條件下,函數最小值時對應的是多少。
總結一下,SVM最佳化形式轉化爲只與有關:
其中,滿足最佳化的條件稱之爲Karush-Kuhn-Tucker(KKT):
在下一部分中,我們將利用KKT條件來計算最優化問題中的,進而得到b和w。
2.6 解對偶SVM
上面我們已經得到了dual SVM的簡化版了,接下來,我們繼續對它進行一些優化。首先,將max問題轉化爲min問題,再做一些條件整理和推導,得到:
顯然,這是一個convex的QP問題,且有N個變量,限制條件有N+1個。則根據上一節課講的QP解法,找到Q,p,A,c對應的值,用軟件工具包進行求解即可。
求解過程很清晰,但是值得注意的是,,大部分值是非零的,稱爲dense。當N很大的時候,例如N=30000,那麼對應的的計算量將會很大,存儲空間也很大。所以一般情況下,對dual SVM問題的矩陣,需要使用一些特殊的方法,這部分內容就不再贅述了。
得到之後,再根據之前的KKT條件,就可以計算出w和b了。首先利用條件得到w,然後利用條件,取任一即>0的點,得到,進而求得。
值得注意的是,計算b值,>0時,有成立。正好表示的是該點在SVM分類線上,即fat boundary。也就是說,滿足>0的點一定落在fat boundary上,這些點就是Support Vector。這是一個非常有趣的特性。