本文是臺大林軒田老師機器學習技法課程系列筆記的第一篇。介紹了線性支持向量機。
文章目錄
Linear Support Vector Machine
1.1 Large-Margin Separating Hyperplane
機器學習基石課程中介紹了線性分類算法PLA/pocket,可以實現二分類。即通過一條直線將正負兩類樣本分割開。
實現二分類的直線不只有一條,那麼如何選擇最好的一條呢?這就是本節課要介紹的內容。看一個簡單的例子:
上圖中的三種劃分方式,都可以實現正負兩類樣本的劃分,並且都滿足VC限制的要求(上圖不等式)。如果要憑直覺選擇最好的一條直線的話,會選擇第三條,事實上也是這樣。下面介紹原因。
直觀簡單地解釋,假設已經有訓練樣本 (圖中灰色圓圈內部的中心點○和×),圖中黑色直線表示分隔超平面(separating hyperplane),下稱超平面。測試時,使用的是與訓練樣本相近的測試樣本 (灰顏色表示)。注意:相近而不是相同是因爲在資料收集過程中會引入測量誤差,所以訓練樣本與測試樣本有差異,這個差異可以通過上圖中灰色圓圈表示,即測試樣本在該圓圈內分佈。
首先看上圖中第三張圖,圖中心的 × 表示訓練樣本,測試樣本在灰色陰影內部分佈,可以看到圖中的超平面(黑色直線)仍然可以將測試樣本很好的分割開,這正是我們期望的,即泛化能力強。
現在看上圖中第一張圖,超平面的離訓練樣本×太近,如果測試樣本與訓練樣本的差異過大,則超平面會把測試樣本錯誤的分類爲○。現在定義上述超平面的特性:對測量誤差的容忍度(tolerance)。容忍度該如何衡量?如果圖中的訓練樣本點(上圖各圖中灰色圓圈內部的中心點)到超平面(黑色直線)的距離越遠,則說明超平面對測量誤差的容忍度越高,在測試樣本上的分類效果也越好,亦即泛化能力越強。
有一點需要注意,在機器學習基石課程中提到,數據集中存在的噪聲(noise)是導致過擬合的主要原因。測量誤差也是一種噪聲。因此,如果超平面對噪聲和測量誤差的容忍度越高,則說明超平面的分類性能越好。更進一步,需要找到容忍度最高的超平面,容忍最多的測量誤差。
現在繼續看,如果要衡量訓練樣本與超平面的距離,可以想象成超平面有“多胖”,即以超平面爲中心線,在其兩側做與之平行的直線,逐漸向兩邊平移,直到“碰到”訓練樣本爲止,稱這兩條直線之間的距離爲邊界(margin),上圖中,右邊的margin比左邊的margin要“胖”,即分類能力好,我們的目標就是要找到最“胖”的線。現在問題就變爲:
其中 表示可以把樣本點分開的分平面,最“胖”的超平面需要滿足兩個條件:一個是把所有樣本點正確分類,二所有樣本點與其的距離最小。以上是直觀地解釋,專業術語來講,fatness其實是margin:
考慮二分類問題(標籤爲±1),預測分類標籤的數學表達式爲 ,如果全部樣本點都分類正確則需要滿足 (同號)此時,目標就變爲最大化margin,其表達式如上圖所示。
這裏補充一點,課程中可能會感到困惑。之前寫文章介紹過這個問題,引用之前文章中的圖片說明:
假設右圖中的白實線(兩條虛線之間的中心線)的方程爲向量 。則另外兩條虛線的方程分別爲:(左上),(右下)。why?
- 假設左上的虛線方程爲 ( 爲非零常數)
- 方程兩邊同時除以 ,則有:
- 令 ,,則有
- 同理可推知知 和 。
其實這裏對兩條虛線中方程中的 或者 可以設爲任意非零常數,兩條虛線的方程互換有沒有問題,只是爲了計算方便。
習題1:
③,將以上兩個點分開的超平面一定過兩點連線的中垂線,即 表示超平面的法向量。該結果可以推廣到 的情形。之前的文章裏介紹過超平面的概念,超平面總是比輸入空間少一個維度,比如,二維空間中爲直線,三維空間中爲平面。
1.2 Standard Large-Margin Problem
上一小節中,將目標函數轉化爲上圖所示的情形。本小節首先考慮如何計算 。在之前的機器學習基石課程中,爲了便於公式表示和推導,令 ,則 可表示截距。本系列課程中,使用 代替 , 表示 ,同樣地, , 表示 。則假設函數變爲:
下面考慮以下問題:
-
都是超平面 中的點,則可以計算得到:。
-
表示超平面中的直線的方向向量,若 爲超平面的法向量,則有 成立。
-
則訓練樣本點 到超平面的距離 爲方向向量爲 的線段在超平面法向量 上的投影長度。計算公式如下:
回顧上文提到的目標函數:
綜合距離公式和假設函數,可以將距離公式轉化爲:
上式還不易計算,可以進一步簡化。$w^Tx + b = 0 $ 和 其實是一樣的,亦即對 和 縮放後,得到的超平面是一樣的。爲了將 和 分離,考慮一種特殊的縮放:
則,目標函數變爲:
有了以上假設,則可以省略限制條件: ,因爲條件 成立,則上式一定成立。此時,目標函數變爲最大化 。
條件 成立,則可推導出所有的樣本點都滿足 ,之前的課程中將最大化問題轉化爲最小化問題的步驟是,將模 轉換爲向量相乘 ,同時添加係數 ,此時目標函數轉化爲:
至此,求解思路就是在條件 成立時,最小化 。
習題2:
因爲 ,可知超平面的法向量爲 ,根據距離計算公式:
可以得到 到超平面的距離爲 。
1.3 Support Vector Machine (SVM)
剛纔導出的問題是一個標準問題。那麼在具體問題中,應該如何計算呢。考慮一個簡單的例子:
假設圖中的四個樣本點的座標和期望輸出(分類標籤)爲:
代入限制條件進行計算,得到包含四個不等式的方程組, 與 聯立, 與 聯立,可以得到 ,進一步推導容易得到 ,轉換成向量相乘(兩列向量相乘,左轉(置)右不轉(置),結果爲實數值。厲害得八達鳥~)的形式,同時,乘以係數 ,則可推導出 。
目標函數爲最小化 ,假設找到的最佳的超平面的法向量的分量分別爲 ,求得的偏置 。則此時邊界 ,找到的最佳的假設函數矩g爲:
接下來引入支持向量機(Support Vector Machine, SVM)的概念。
Support Vector Machine
可以看到上圖四個樣本點中有三個樣本點能夠決定 ,與另一個樣本點無關,這三個樣本點稱爲支持向量,支持向量機就是依靠支持向量來尋找最“胖”的 的算法。更一般地,輸入空間中,能決定 的樣本點,稱爲支持向量。
Solving General SVM
下面介紹 SVM 的一般求解方法。首先回憶目標函數:
這是一個典型的二次規劃問題(quadratic programming, QP),其求解流程如下:
線性硬邊界SVM算法求解步驟如下:
- 計算轉化爲二次規劃問題中的參數:Q,p,A,c;
- 根據二次規劃函數,計算 ;
- 將 代入最佳的假設函數矩 求解,得到最佳的分隔超平面。
這裏的“硬邊界(hard-margin)”的意思是說,堅持樣本點一定要分開。線性指的是輸入空間是線性可分的,如果是非線性的,則可以根據之前在迴歸問題中學習的方法,通過特徵轉換函數 ,將非線性問題轉化爲線性問題求解,求解之後再反變換回去。求解SVM非線性問題同樣可以適用。
習題3:
1.4 Reasons behind Large-Margin Hyperplane
本小節從理論上講解了爲什麼這樣求得的SVM分類性能會最好。回顧之前所學的迴歸問題,從最小化 出發,爲了防止過擬合,引入了限制條件 ;SVM的目標是最小化向量 的長度 ,從而使得 。不難看出,SVM和迴歸其實相當於限制條件和目標函數對調,互爲反問題。
可以將SVM看爲限制條件爲 的權重衰減正則化(weight-decay regularization, L2)。
Large-Margin Restricts Dichotomies
回顧一下之前學的shatter的概念,shatter就是所有的情況都發生,對於N=1,shatter的情況就是 ;N=2,shatter的情況就是,之後同理。
從另一方面來看,Large-Margin會限制Dichotomies(二分類)的個數。即margin越“胖”,它可能shtter的點的個數就可能越少。
在之前的機器學習基石課程中提到,Dichotomies與VC Dimension是密切相關的,存在以下關係:
即dichotomies(二分類)的情況越少,則VC dimention越小,算法複雜度就越小,就會有更好的泛化能力。
VC Dimension of Large-Margin Algorithm
接下來推導,爲什麼dichotomies(二分類)的情況越少,則VC dimention越小。如果要關心一個演算法的VC Dimension,就看看這個算法最多可以shatter多少個點。那麼,應該如何計算VC Dimention呢?考慮這樣一種情況:
假如平面上有3個點分佈在單位圓上,如果 (margin=0),則該“瘦”直線可以很容易將圓上任意三點分開(shatter),即 。如果 (),則“胖”的線無法將圓上的任一三點全完分開(no shatter),因爲圓上必然至少存在兩個點的距離小於 ,則 。
更一般的情況,當樣本點使用半徑爲 的球體超平面進行劃分時,演算法 的VC Dimention滿足上圖中的式子。
機器學習基石課程中介紹的 Perceptron算法的 ,而SVM的 ,即因爲large-margin的限制,減少了dichotomies的數量,進而減少了 VC Dimention。因此也就降低了模型複雜度,提高了泛化能力。
習題4:
Summary
本節課介紹了線性支持向量機(Linear Support Vector Machine),其核心思想是想辦法降低VC Dimention,進而降低算法複雜度,從而提高泛化能力。