李航-統計學習方法-筆記-7:支持向量機


簡述

支持向量機 :是一種二分類模型,它的基本模型是定義在特征空間上的間隔最大的線性分類器,間隔最大使它有別於感知機。

核技巧:SVM還包括核技巧,這使它成為實質上的非線性分類器。

間隔最大化:SVM的學習策略是間隔最大化,可形式化為一個求解凸二次規划的問題,也等價於正則化的合頁損失函數的最小化問題。SVM的學習算法是求解凸二次規划的最優化算法。

線性可分SVM:當訓練數據線性可分時,通過硬間隔最大化,學習一個線性的分類器,即線性可分SVM,又稱硬間隔SVM。

線性SVM:當訓練數據近似線性可分時,通過軟間隔最大化,也學習一個線性分類器,即線性SVM,又稱軟間隔SVM。

非線性SVM:當訓練數據線性不可分時,通過使用核技巧及軟間隔最大化,學習非線性SVM。

核函數表示將輸入從輸入空間映射到特征空間得到特征向量之間的內積。通過使用核函數可以學習非線性SVM,等價於隱式地在高維特征空間中學習線性SVM。這樣的方法稱為核方法,核方法是比SVM更為一般的機器學習方法。

線性可分SVM

線性可分SVM:一般地,當訓練數據線性可分時,存在無窮個分離超平面可將兩類數據正確分開。感知機利用誤分類最小的策略,求得分離超平面,不過這時的解有無窮多個。線性可分SVM利用間隔最大化求最優分離超平面,這時解唯一。

通過間隔最大化或等價地求解凸二次規划問題學習得到的超平面為\(w^* \cdot x + b^* = 0\)以及相應的分類決策函數\(f(x) = sign(w^* \cdot x + b^*)\),稱為線性可分SVM。

函數間隔:一般來說,一個點距離分離超平面的遠近可以表示分類預測的確信程度(越遠越確信)。在超平面\(w \cdot x + b = 0\)確定的情況下,\(|w \cdot x + b|\)能夠相對地表示點\(x\)距離超平面的遠近。而\(w \cdot x + b\)的符號與類標記\(y\)的符號是否一致能夠表示分類是否正確。所以可用\(y(w \cdot x + b)\)來表示分類的正確性及確信度,這就是函數間隔。

定義超平面\((w, b)\)關於樣本點\((x_i, y_i)\)的函數間隔為

\[\hat{\gamma_i} = y_i (w \cdot x_i + b) \]

定義超平面\((w, b)\)關於訓練數據集\(T\)的函數間隔為超平面\((w, b)\)關於\(T\)中所有樣本點\((x_i, y_i)\)的函數間隔的最小值。

\[\hat{\gamma} = \min_{i=1, ..., N} \hat{\gamma_i} \]

幾何間隔:但是選擇分離超平面時,只有函數間隔還不夠。因為只要成比例改變\(w\)\(b\),例如將它們改為\(2w\)\(2b\),超平面並沒有改變,但函數間隔卻成為原來的2倍。這一事實啟示我們,可以對分離超平面的法向量\(w\)加某些約束,如規范化,\(||w|| = 1\),使間隔是確定的(\(w\)\(b\)成比例改變時,幾何間隔不變),這時函數間隔變成幾何間隔。

定義超平面\((w, b)\)關於樣本點\((x_i, y_i)\)的幾何間隔為

\[\gamma_i = y_i (\frac{w}{||w||} \cdot x_i + \frac{b}{||w||}) \]

定義超平面\((w, b)\)關於訓練數據集\(T\)的幾何間隔為超平面\((w, b)\)關於\(T\)中所有樣本點\((x_i, y_i)\)的幾何間隔的最小值。

\[\gamma = \min_{i=1, ..., N} \gamma_i \]

硬間隔最大化:SVM學習的基本想法是求解能正確划分訓練集並且幾何間隔最大的分離超平面,以充分大的確信度對訓練數據進行分類。也就是說,不僅將正負實例點分開,而且對最難分的實例點(離超平面最近的點)也有足夠大的確信度將它們分開。這樣的超平面應該對未知的新實例也有很好的分類預測能力。

這里的間隔最大化又稱為硬間隔最大化。
線性可分訓練數據集的最大間隔分離超平面是存在且唯一的。

最大間隔分離超平面:這個問題可以表示為下面的約束最優化問題

\[\max_{w,b} \ \gamma \]

\[s.t. \ \ y_i (\frac{w}{||w||} \cdot x_i + \frac{b}{||w||}) \geqslant \gamma, \ \ i = 1, 2, ..., N \]

我們希望最大化超平面\((w, b)\)關於訓練數據集的幾何間隔\(\gamma\),約束條件表示的是超平面\((w, b)\)關於每個訓練樣本點的幾何間隔至少是\(\gamma\)

考慮幾何間隔和函數間隔的關系式 \(\gamma = \frac{\hat{\gamma}}{||w||}\),可將問題改寫成

\[\max_{w,b} \ \frac{\hat{\gamma}}{||w||} \]

\[s.t. \ \ y_i (w \cdot x_i + b) \geqslant \hat{\gamma}, \ \ i = 1, 2, ..., N \]

函數間隔的取值並不影響最優化問題的解。假設將\(w\)\(b\)按比例改變為\(\lambda w\)\(\lambda b\),這時函數間隔稱為\(\lambda \hat{\gamma}\),函數間隔的這一改變對上面最優化問題的不等式約束沒有影響,對目標函數的優化也沒有影響。這樣,就可以取\(\hat{\gamma} = 1\)

又注意到最大化\(\frac{1}{||w||}\)和最小化\(\frac{||w||^2}{2}\)是等價的,於是得到下面的最優化問題

\[\min_{w, b} \frac{1}{2} || w || ^2, \tag{7.13} \]

\[s.t. \ \ y_i ( w \cdot x_i + b) - 1 \geqslant 0, \ \ i=1, 2, ..., N \tag{7.14} \]

這是一個凸二次規划問題,求解得到\(w^*\)\(b^*\),就可以得到最大間隔分離超平面
$w^* \cdot x + b^* = 0 \( 以及分類決策函數\)f(x) = sign(w^* \cdot x + b^*)$,即線性可分SVM。

凸優化:凸優化問題是指約束優化問題

\[\min_w \ \ f(w) \]

\[\begin{split} s.t. \ \ &g_i(w) \leqslant 0, i=1, 2, ..., k \\ &h_i(w) = 0, i=1, 2, ..., l \end{split}\]

其中,目標函數\(f(w)\)和約束函數\(g_i(w)\)都是\(R^n\)上的連續可微的凸函數,約束函數\(h_i(w)\)\(R^n\)上的仿射函數。

\(h(x)\)稱為仿射函數,如果它滿足\(h(x) = a \cdot x + b\)\(a \in R^n, b \in R, x \in R^n\)

凸二次規划:當\(f(w)\)為二次函數,且\(g_i(w)\)是仿射函數時,上述問題為凸二次規划。

支持向量:線性可分情況下,樣本點與分離超平面距離最近的樣本點稱為支持向量。支持向量是使式\((7.14)\)等號成立的點,即

\[y_i (w \cdot x_i + b) - 1 = 0 \]

\(y_i = +1\)的正例點,支持向量在超平面\(H_1: w \cdot x + b = +1\)
\(y_i = -1\)的正例點,支持向量在超平面\(H_2: w \cdot x + b = -1\)

間隔邊界\(H_1\)\(H_2\)平行,並沒有實例點落在它們中間。\(H_1\)\(H_2\)之間形成一條長帶,分離超平面與它們平行且位於它們中央。長度的寬度,即\(H_1\)\(H_2\)之間的距離稱為間隔,間隔依賴於分離超平面的法向量\(w\),等於\(\frac{2}{||w||}\)\(H_1\)\(H_2\)稱為間隔邊界。

在決定分離超平面時,只有支持向量起作用。如果移動支持向量將改變所求的解,但是如果在間隔邊界以外移動其它實例點,甚至去掉這些點,解都不會改變。

由於支持向量在確定超平面中起着決定性作用,所以這個方法稱為支持向量機。支持向量的個數一般很少,所以支持向量機由很少的“重要”訓練樣本確定。

求解線性可分SVM

為求解線性可分SVM的最優化問題\((7.13)-(7.14)\),將它作為原始最優化問題,應用拉格朗日對偶性,通過求解對偶問題得到原始問題的最優解。這樣做的優點,一是對偶問題往往更容易求解,二是自然引入核函數,進而推廣到非線性分類問題。

對偶算法:首先構建拉格朗日函數。為此,對每個不等式約束\((7.14)\)引進拉格朗日乘子\(\alpha_i \geqslant 0, \ \ i=1,2, ..., N\),定義拉格朗日函數:

\[L(w, b, \alpha) = \frac{1}{2}||w||^2 - \sum_{i=1}^{N}\alpha_i y_i (w \cdot x_i + b) + \sum_{i=1}^{N}\alpha_i \tag{7.18} \]

原始問題的對偶問題是極大極小問題\(\max_\alpha \min_{w,b} L(w, b, \alpha)\)

(1)先求\(\min_{w,b} L(w, b, \alpha)\),分別對\(w,b\)求偏導,令其等於0。

\[\nabla_w L(w, b, \alpha) = w - \sum_{i=1}^{N}\alpha_i y_i x_i = 0 \]

\[\nabla_b L(w, b, \alpha) = -\sum_{i=1}^{N}\alpha_i y_i = 0 \]

解得

\[w = \sum_{i=1}^{N}\alpha_i y_i x_i, \tag{7.19} \]

\[\sum_{i=1}^{N}\alpha_i y_i = 0, \tag{7.20} \]

將式\((7.19)\)代入式\((7.18)\),並利用式\((7.20)\),即得

\[\begin{split} &\min_{w, b} L(w, b, \alpha) \\ &= \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j(x_i \cdot x_j) - \sum_{i=1}^{N} \alpha_i y_i [(\sum_{j=1}^{N} \alpha_j y_j x_j) \cdot x_i + b] + \sum_{i=1}^{N} \alpha_i \\ &= - \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j(x_i \cdot x_j) + \sum_{i=1}^{N} \alpha_i \end{split}\]

(2)求\(\min_{w, b} L(w, b, \alpha)\)\(\alpha\)的極大,即是對偶問題

\[\max_\alpha - \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j(x_i \cdot x_j) + \sum_{i=1}^{N} \alpha_i, \tag{7.21} \]

\[s.t. \ \ \sum_{i=1}^{N}\alpha_i y_i = 0 \]

\[\alpha_i \geqslant 0, \ \ i = 1,2, ..., N \]

將式\((7.21)\)的目標函數由求極大轉換成求極小,得到下面與之等價的對偶最優化問題:

\[\max_\alpha - \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j(x_i \cdot x_j) + \sum_{i=1}^{N} \alpha_i \tag{7.22} \]

\[s.t. \ \ \sum_{i=1}^{N}\alpha_i y_i = 0 \tag{7.23} \]

\[\alpha_i \geqslant 0, \ \ i = 1,2, ..., N \tag{7.24} \]

考慮原始最優化問題\((7.13)-(7.14)\)和對偶最優化問題\((7.22)-(7.24)\),滿足強對偶性(滿足凸優化和slater條件即可推出強對偶),所以存在\(w^*, \alpha^*, \beta^*\),使\(w^*\)是原始問題的解,\(\alpha^*, \beta^*\)是對偶問題的解。求解原始問題\((7.13)-(7.14)\)可以轉換為求解對偶問題\((7.22)-(7.24)\)

對線性可分訓練數據集,假設對偶最優化問題\((7.22)-(7.24)\)\(\alpha\)的解為\(\alpha^* = (\alpha_1^*, \alpha_2^*, ..., \alpha_N^*)^T\),可以由\(\alpha^*\)求得原始優化問題\((7.13)-(7.14)\)\((w, b)\)的解\(w^*, b^*\)

\[w^* = \sum_{i}\alpha_i^* y_i x_i \tag{7.25} \]

\[b^* = y_j - \sum_{i=1}^{N} \alpha_i^* y_i (x_i \cdot x_j) \tag{7.26} \]

下面闡述得到以上兩式的計算過程。

由KKT條件得

\[\nabla_w L(w^*, b^*, \alpha^*) = w^* - \sum_{i=1}^{N}\alpha_i^* y_i x_i = 0 \tag{7.27} \]

\[\nabla_b L(w^*, b^*, \alpha^*) = -\sum_{i=1}^{N}\alpha_i^* y_i = 0 \]

\[\alpha_i^* (y_i ( w^* \cdot x_i + b^*) - 1) = 0, \ \ i=1, 2, ..., N \]

\[y_i ( w^* \cdot x_i + b^*) - 1 \geqslant 0, \ \ i=1, 2, ..., N \]

\[\alpha^* \geqslant 0, i=1, 2, ..., N \]

由此得

\[w^* = \sum_{i}\alpha_i^* y_i x_i \]

其中至少有一個\(\alpha_j^* > 0\)(用反證法,假設\(\alpha^*=0\),由式\((7.27)\)可知\(w^*=0\),而\(w^*=0\)不是原始問題\((7.13)-(7.14)\)的解,產生矛盾),對此有

\[y_j (w^* \cdot x_j + b^*) - 1 = 0 \tag{7.28} \]

將式\((7.25)\)代入式\((7.28)\)並注意到\(y_j^2=1\),得

\[b^* = y_j - \sum_{i=1}^{N} \alpha_i^* y_i (x_i \cdot x_j) \]

則分離超平面可以寫成

\[\sum_{i=1}^{N} \alpha_i^* y_i (x \cdot x_i) + b^* = 0 \tag{7.29} \]

分離決策函數可以寫成

\[f(x) = sign(\sum_{i=1}^{N} \alpha_i^* y_i (x \cdot x_i) + b^*) \tag{7.30} \]

可以看出分類決策函數只依賴於輸入\(x\)和訓練樣本輸入的內積。

支持向量
由式\((7.25)-(7.26)\)可知,\(w^*\)\(b^*\)只依賴於訓練數據中對應\(\alpha_i^* > 0\)的樣本點\((x_i, y_i)\),其它樣本點對\(w^*\)\(b^*\)沒有影響。我們將訓練數據中對應\(\alpha_i^* > 0\)的實例點\(x_i \in R^n\)稱為支持向量。

由KKT互補條件可知,

\[\alpha_i^* (y_i ( w^* \cdot x_i + b^*) - 1) = 0, \ \ i=1, 2, ..., N \]

對應於\(\alpha_i^* > 0\)的實例\(x_i\),有\(y_i ( w^* \cdot x_i + b^*) - 1 = 0\),即

\[w^* \cdot x_i + b^* = \pm1 \]

\(x_i\)一定在間隔邊界上,符合前面支持向量的定義。

更進一步
對於線性可分問題,上述線性可分SVM的學習(硬間隔最大化)算法是完美的,但是在現實的問題中,訓練數據集往往是線性不可分的,即在樣本中出現噪聲或特異點,此時,有更一般的學習算法。

線性SVM和軟間隔最大化

軟間隔:線性可分SVM的學習方法對線性不可分數據是不適用的,因為上述方法中的不等式約束並不能都成立。為了將其擴展到線性不可分問題,需要修改硬間隔最大化,使其稱為軟間隔最大化。

通常情況是,訓練數據中有一些特異點(outlier)。將這些特異點除去后,剩下大部分的樣本點組成的集合是線性可分的。

松弛變量:線性不可分意味着某些樣本點\((x_i, y_i)\)不能滿足函數間隔大於等於1的約束條件\((7.14)\)。為了解決這個問題,可以對每個樣本點\((x_i, y_i)\)引入一個松弛變量$\xi_i \geqslant 0 $,使函數間隔加上松弛變量大於等於1。這樣,約束條件變成

\[y_i(w \cdot x_i + b) \geqslant 1 - \xi_i \]

同時對每個松弛變量\(\xi_i\)支付一個代價,目標函數變成

\[\frac{1}{2} || w ||^2 + C \sum_{i=1}^{N} \xi_i \tag{7.31} \]

這里\(C>0\)稱為懲罰參數,一般由應用問題決定,\(C\)值大時對誤分類的懲罰增大,\(C\)值小時對誤分類的懲罰減小。

最小化目標函數\((7.31)\)包含兩層含義:使\(\frac{1}{2}||w||^2\)盡量小即間隔盡量大,同時使誤分類點的個數盡量小,\(C\)是調和二者的系數。

學習問題:問題變成如下凸二次規划問題

\[\min_{w, b, \xi} \frac{1}{2} || w || ^2 + C \sum_{i=1}^{N} \xi_i \tag{7.32} \]

\[s.t. \ \ y_i ( w \cdot x_i + b) \geqslant 1 - \xi_i, \ \ i=1, 2, ..., N \tag{7.33} \]

\[\xi_i \geqslant 0, \ \ i=1, 2, ..., N \tag{7.34} \]

可以證明\(w\)的解是唯一的,但\(b\)的解可能不唯一,而是存在於一個區間。

設問題\((7.32)-(7.34)\)的解是\(w^*, b^*\),於是可以得到分離超平面\(w^* \cdot x + b^* = 0\)及分類決策函數\(f(x) = sign(w^* \cdot x + b^*)\)。稱這樣的模型為訓練樣本線性不可分時的線性支持向量機,簡稱線性SVM。

顯然線性SVM包含線性可分SVM。由於現實中訓練數據集往往是線性不可分的,線性SVM具有更廣的適用性。

求解線性SVM

原始問題\((7.32)-(7.34)\)的拉格朗日函數是

\[\begin{split} L(w, b, \xi, \alpha, \mu) &= \frac{1}{2}||w||^2 + C \sum_{i=1}^{N} \xi_i - \sum_{i=1}^{N}\mu_i \xi_i \\ &- \sum_{i=1}^{N}\alpha_i (y_i (w \cdot x_i + b) -1 + \xi_i) \end{split} \tag{7.40}\]

其中$\alpha_i \geqslant 0, \mu_i \geqslant 0 $。

對偶問題是拉格朗日函數的極大極小問題,先求極小

\[\nabla_w L(w, b, \xi, \alpha, \mu) = w - \sum_{i=1}^{N}\alpha_i y_i x_i = 0 \tag{7.41} \]

\[\nabla_b L(w, b, \xi, \alpha, \mu) = -\sum_{i=1}^{N}\alpha_i y_i = 0 \tag{7.42} \]

\[\nabla_\xi L(w, b, \xi, \alpha, \mu) = C - \alpha_i - \mu_i = 0 \tag{7.43} \]

將式\((7.41)-(7.43)\)代入式\((7.40)\),得

\[\min_{w, b, \xi} L(w, b, \xi, \alpha, \mu) = - \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j(x_i \cdot x_j) + \sum_{i=1}^{N} \alpha_i \]

再對\(\min_{w, b, \xi} L(w, b, \xi, \alpha, \mu)\)\(\alpha\)的極大,即得對偶問題:

\[\max_\alpha - \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j(x_i \cdot x_j) + \sum_{i=1}^{N} \alpha_i \tag{7.44} \]

\[s.t. \ \ \sum_{i=1}^{N} \alpha_i y_i = 0 \tag{7.45} \]

\[C - \alpha_i - \mu_i = 0 \tag{7.46} \]

\[\alpha_i \geqslant 0 \tag{7.47} \]

\[\mu_i \geqslant 0 \ \ i=1,2, ..., N \tag{7.48} \]

將對偶優化問題\((7.44)-(7.48)\)進行變換:利用等式約束\((7.46)\)消去\(\mu_i\),從而只留下變量\(\alpha_i\),並將約束\((7.46)-(7.48)\)寫成

\[0 \geqslant \alpha_i \geqslant C \tag{7.49} \]

再將對目標函數求極大轉換為求極小,於是得到對偶問題\((7.37)-(7.39)\)

\[\min_\alpha \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j(x_i \cdot x_j) - \sum_{i=1}^{N} \alpha_i \tag{7.37} \]

\[s.t. \ \ \sum_{i=1}^{N} \alpha_i y_i = 0 \tag{7.38} \]

\[0 \geqslant \alpha_i \geqslant C, \ \ i=1,2, ..., N \tag{7.39} \]

定理7.3:設\(\alpha^* = (\alpha_1^*, \alpha_2^*, ..., \alpha_N^*)^T\)是對偶問\((7.37)-(7.39)\)的一個解,若存在\(\alpha^*\)的一個分量\(\alpha_j^*\)\(0 < \alpha_j^* < C\),則原始問題\((7.32)-(7.34)\)的解可按下式求得:

\[w^* = \sum_{i=1}^N \alpha_i^* y_i x_i \tag{7.50} \]

\[b^* = y_j -\sum_{i=1}^N y_i \alpha_i^*(x_i \cdot x_j) \tag{7.51} \]

證明:原始問題是凸二次規划問題,解滿足KKT條件,即得

\[\nabla_w L(w^*, b^*, \xi^*, \alpha^*, \mu^*) = w^* - \sum_{i=1}^{N}\alpha_i^* y_i x_i = 0 \tag{7.52} \]

\[\nabla_b L(w^*, b^*, \xi^*, \alpha^*, \mu^*) = -\sum_{i=1}^{N}\alpha_i^* y_i = 0 \]

\[\nabla_\xi L(w^*, b^*, \xi^*, \alpha^*, \mu^*) = C - \alpha_i^* - \mu_i^* = 0 \]

\[\alpha_i^*(y_i(w^* \cdot x_i + b^*) - 1 + \xi_i^*) = 0 \tag{7.53} \]

\[\mu_i^* \xi_i^* = 0 \tag{7.54} \]

\[y_i(w^* \cdot x_i + b^*) - 1 + \xi_i^* \geqslant 0 \]

\[\xi_i^* \geqslant 0 \]

\[\alpha_i^* \geqslant 0 \]

\[\mu_i^* \geqslant 0, \ \ i=1, 2, ..., N \]

由式\((7.52)\)易知\((7.50)\)成立。再由式\((7.53)-(7.54)\)可知,若存在\(\alpha_j^*\)\(0 < \alpha_j^* < C\),則\(y_j(w^* \cdot x_j + b^*) - 1 = 0\),由此得式\((7.51)\)

分離超平面:由此,分離超平面可以寫成

\[\sum_{i=1}^N \alpha_i^* y_i (x \cdot x_i) + b^* = 0 \tag{7.55} \]

分類決策函數可以寫成

\[f(x) = sign(\sum_{i=1}^N \alpha_i^* y_i (x \cdot x_i) + b^*) \tag{7.56} \]

支持向量
在線性不可分的情況下,將對偶問題\((7.37)-(7.39)\)的解\(\alpha^* = (\alpha_1^*, \alpha_2^*, ..., \alpha_N^*)^T\)中對應於\(\alpha_i^* > 0\)的樣本點\((x_i, y_i)\)的實例\(x_i\)稱為支持向量(軟間隔的支持向量)。如下圖所示,這時的支持向量要比線性可分時的情況復雜一些。圖中還標出了實例\(x_i\)到間隔邊界的距離\(\frac{\xi_i}{||w||}\)

軟間隔的支持向量\(x_i\)或者在間隔邊界上,或者在間隔邊界與分離超平面之間,或者在分離超平面誤分一側。

\(\alpha_i^* < C\),則\(\xi_i = 0\),支持向量\(x_i\)恰好落在間隔邊界上。
\(\alpha_i^* = C, \ 0 < \xi_i < 1\),則分類正確,\(x_i\)在間隔邊界與分離超平面之間。
\(\alpha_i^* = C, \xi_i = 1\),則分類正確,\(x_i\)在間隔邊界與分離超平面之間。
\(\alpha_i^* = C, \xi_i > 1\),則\(x_i\)位於分離超平面誤分一側。

合頁損失函數

損失函數的說明
線性SVM學習還有另一種解釋,就是最小化以下目標函數:

\[\sum_{i=1}^{N}[1 - y_i (w \cdot x_i + b)]_+ + \lambda||w||^2 \tag{7.57} \]

目標函數的第1項是經驗風險,函數

\[L(y(w \cdot x + b)) = [1 - y(w \cdot x + b)]_+ \tag{7.58} \]

稱為合頁損失函數(hinge loss),下標“+”表示以下取正值的函數

\[[z]_+ = \left\{\begin{matrix} z, & z>0 \\ 0, & z\leqslant0 \end{matrix}\right. \tag{7.59}\]

這就是說,當樣本點\((x_i, y_i)\)被正確分類且函數間隔(確信度)\(y_i(w \cdot x_i +b)\)大於1時,損失是0,否則損失是\(1 - y_i(w \cdot x_i +b)\)

目標函數的第2項是系數為\(\lambda\)\(w\)\(L_2\)范數,是正則化項。

等價的證明
線性SVM原始優化問題

\[\min_{w, b, \xi} \frac{1}{2} || w || ^2 + C \sum_{i=1}^{N} \xi_i \tag{7.60} \]

\[s.t. \ \ y_i ( w \cdot x_i + b) \geqslant 1 - \xi_i, \ \ i=1, 2, ..., N \tag{7.61} \]

\[\xi_i \geqslant 0, \ \ i=1, 2, ..., N \tag{7.62} \]

等價於

\[\min_{w,b} \sum_{i=1}^{N}[1 - y_i (w \cdot x_i + b)]_+ + \lambda||w||^2 \tag{7.63} \]

可將最優化問題\((7.63)\)改寫成問題\((7.60)-(7.62)\),令

\[[1 - y_i (w \cdot x_i + b)]_+ = \xi_i \tag{7.64} \]

\(\xi_i \geqslant 0\),式\((7.62)\)成立。由式\((7.64)\)

\(1 - y_i (w \cdot x_i + b) > 0\)時,有\(y_i (w \cdot x_i + b) = 1 - \xi_i\)
\(1 - y_i (w \cdot x_i + b) \leqslant 0\)時,有\(y_i (w \cdot x_i + b) \geqslant 1 - \xi_i\)

所以式\((7.61)\)成立。所以\((7.63)\)可寫成

\[\min_{w,b} \sum_{i=1}^N \xi_i + \lambda ||w||^2 \]

若取\(\lambda = \frac{1}{2C}\),則

\[\min_{w,b} \frac{1}{C} (\frac{1}{2}||w||^2 + C \sum_{i=1}^N \xi_i) \]

與式\((7.60)\)等價。

圖示
合頁損失函數如下圖所示,橫軸是函數間隔\(y(w \cdot x + b)\),縱軸是損失。由於函數形狀像一個合頁,故名合頁損失函數。

圖中還畫出0-1損失函數,可以認為它是二分類問題的真正損失函數,而合頁損失函數是0-1損失函數的上界。由於0-1損失不是連續可導的,直接優化比較困難,可以認為線性SVM是優化0-1損失的上界(合頁損失)構成的目標函數。這時的上界損失又稱為代理損失。

圖中虛線顯示的是感知機的損失\([-y_i(w \cdot x_i) + b]_+\)。樣本被正確分類時損失為0,否則為\(-y_i(w \cdot x_i) + b\)。相比之下,合頁損失不僅要分類正確,而且要確信度高,損失才是0,對學習有更高的要求。

非線性SVM與核函數

核技巧

左圖分類問題無法用直線(線性模型)將正負實例正確分開,但可以用一條橢圓曲線(非線性模型)將它們正確分開。

如果能用一個超曲面將正負例正確分開,則稱這個問題為非線性可分問題。非線性問題往往不好求解,所以希望能用解線性分類問題的方法解決這個問題。所采取的方法是進行一個非線性變換,將非線性問題變換為線性問題。通過求解線性問題來求解原問題。

設原空間為\(X \subset R^2\)\(x = (x^{(1)}, x^{(2)})^T \in X\)
新空間為\(Z \subset R^2\)\(z = (z^{(1)}, z^{(2)})^T \in Z\)
定義原空間到新空間的映射:

\[z = \phi(x) = ((x^{(1)})^2, (x^{(2)})^2)^T \]

則原空間的橢圓\(w_1(x^{(1)})^2 + w_2(x^{(2)})^2 + b = 0\)
變換成新空間的直線\(w_1 z^{(1)} + w_2 z^{(2)} + b = 0\)

核技巧應用到SVM,基本想法是通過一個非線性變換將輸入空間對應於一個特征空間,使得輸入空間\(R^n\)中的超曲面對應於特征空間\(\mathcal{H}\)的超平面。這樣,分類問題的學習任務通過在特征空間中求解線性SVM就可以完成。

核函數
\(\mathcal{X}\)是輸入空間,又設\(\mathcal{H}\)為特征空間,如果存在一個從\(\mathcal{X}\)\(\mathcal{H}\)的映射\(\phi(x): \mathcal{X} \to \mathcal{H}\),使得對所有\(x, z \in \mathcal{X}\),函數\(K(x, z)\)滿足條件:

\[K(x, z) = \phi(x) \cdot \phi(z) \]

則稱\(K(x, z)\)為核函數,\(\phi(x)\)為映射函數,式子\(\phi(x) \cdot \phi(z)\)表示內積。

核技巧的想法是,學習與預測中只定義核函數\(K(x, z)\),而不是顯示的定義映射函數\(\phi\)。通過,直接計算\(K(x, z)\)比較容易,而通過\(\phi(x)\)\(\phi(z)\)計算\(K(x, z)\)並不容易。特征空間\(\mathcal{H}\)一般是高維的,甚至是無窮維的。

對於給定的核\(K(x, z)\),特征空間\(\mathcal{H}\)和映射函數\(\phi\)的取法並不唯一,可以取不同的特征空間,即使在同一特征空間里也可以取不同映射。

學習非線性SVM:注意到線性SVM的對偶問題中,無論是目標函數還是決策函數(分離超平面)都只涉及輸入實例與實例之間的內積。在對偶問題的目標函數\((7.37)\)中的內積\(x_i \cdot x_j\)可用\(K(x_i, x_j) = \phi(x_i) \cdot \phi(x_j)\)來代替。此時對偶問題的目標函數為

\[W(\alpha) = \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j K(x_i, x_j) - \sum_{i=1}^{N} \alpha_i \]

分類決策函數為

\[f(x) = sign(\sum_{i=1}^N \alpha_i^* y_i K(x, x_i) + b^*) \]

在新的特征空間里從訓練樣本中學習線性SVM。學習是隱式地在特征空間進行的,不需要顯式地定義特征空間和映射函數。這樣的技巧稱為核技巧。當映射函數是非線性函數時,學習到的含有核函數的SVM是非線性分類模型。

在實際應用中,往往依賴領域知識直接選擇核函數,核函數的有效性需要通過實驗驗證。

正定核
函數\(K(x, z)\)滿足什么條件才能稱為核函數呢?通常所說的核函數就是正定核函數,下面給出正定核的定義。

定理7.5(正定核的充要條件)
\(K: \mathcal{X} \times \mathcal{X} \to R\)是對稱函數,則\(K(x, z)\)為正定核函數的充要條件是對任意\(x_i \in \mathcal{X}, \ \ i=1, 2, ...,m\)\(K(x, z)\)對應的Gram矩陣:

\[K = [K(x_i, x_j)]_{mxm} \]

是半正定矩陣。

但對於一個具體函數\(K(x, z)\)來說,檢驗它是否為正定核函數並不容易,因為要求任意有限輸入集\(\{x_1, ..., x_m\}\)驗證\(K\)對應的Gram矩陣是否為半正定。在實際問題中往往應用已有的核函數。

常用核函數
(1)多項式核函數(polynomial kernel function)

\[K(x, z) = (x \cdot z + 1)^p \]

對應的支持向量機是一個p次多項式分類器。在此情形下,分類決策函數成為

\[f(x) = sign(\sum_{i=1}^{N_s} \alpha_i^* y_i (x_i \cdot x + 1)^p + b^*) \]

(2)高斯核函數(Gaussian kernel function)

\[K(x, z) = exp(- \frac{||x-z||^2}{2\sigma^2}) \]

對應的支持向量機是高斯徑向基函數分類器。在此情形下,分類決策函數成為

\[f(x) = sign(\sum_{i=1}^{N_s} \alpha_i^* y_i \ exp(- \frac{||x-z||^2}{2\sigma^2}) + b^*) \]

(3)字符串核函數
核函數不僅可以定義在歐式空間上,還可以定義在離散數據的集合上。比如,字符串核是定義在字符串集合上的核函數。字符串核函數在文本分類,信息檢索,生物信息等方面都有應用

判斷核函數
(1)給定一個核函數\(K\),對於\(a>0\)\(aK\)也為核函數。
(2)給定兩個核函數\(K'\)\(K''\)\(K' K''\)也為核函數。
(3)對輸入空間的任意實值函數\(f(x)\)\(K(x_1, x_2) = f(x_1) f(x_2)\)為核函數。

序列最小最優化算法

SVM的學習問題可以形式化為求解凸二次規划問題。這樣的凸二次規划問題具有全局最優解,並且有許多最優化算法可以用於這一問題的求解。但是當訓練樣本容易很大時,這些算法往往變得非常低效,以致無法使用。如何高效地實現SVM就成為一個重要問題。

SMO(sequential minimal optimization)是其中一種快速學習算法。解如下凸二次規划的對偶問題

\[\min_\alpha \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j K(x_i, x_j) - \sum_{i=1}^{N} \alpha_i \tag{7.98} \]

\[s.t. \ \ \sum_{i=1}^{N} \alpha_i y_i = 0 \tag{7.99} \]

\[0 \geqslant \alpha_i \geqslant C, \ \ i=1,2, ..., N \tag{7.100} \]

問題中變量是拉格朗日乘子,一個變量\(\alpha_i\)對應於一個樣本點\((x_i, y_i)\),變量的總數等於訓練樣本容量\(N\)

SMO算法:SMO算法是一種啟發式算法,基本思路是:如果所有變量的解都滿足此最優化問題的KKT條件,那么解就得到了。否則,選擇兩個變量,固定其它變量,針對這兩個變量構建一個二次規划問題。這個二次規划問題關於這兩個變量的解應該更接近原始二次規划問題的解,因為這會使得原始二次規划問題的目標函數變得更小。重要的是,這時子問題可以通過解析方法求解,就可以大大提高計算速度。

子問題有兩個變量,一個是違反KKT條件最嚴重的那個,另一個由約束條件自動確定。如此,SMO算法將原問題不斷分解為子問題並對子問題求解,進而達到求解原問題的目的。

整個SMO算法包括兩個部分:求解兩個變量二次規划的解析方法和選擇變量的啟發式方法。

兩個變量二次規划的求解方法
假設選擇的兩個變量是\(\alpha_1, \alpha_2\),其它變量\(\alpha_i(i =3,4, .., N)\)是固定的。於是SMO的最優化問題\((7.98)-(7.100)\)的子問題可以寫成

\[\min_{\alpha_1, \alpha_2} W(\alpha_1, \alpha_2) = \frac{1}{2} K_{11} \alpha_1^2 + \frac{1}{2} K_{22} \alpha_2^2 + \\ y_1 y_2 K_{12} \alpha_1 \alpha_2 - (\alpha_1 + \alpha_2) + y_1 \alpha_1 \sum_{i=3}^N y_i \alpha_i K_{i1} + y_2 \alpha_2 \sum_{i=3}^N y_i \alpha_i K_{i2} \tag{7.101} \]

\[s.t. \ \ \alpha_1 y_1 + \alpha_2 y_2 = -\sum_{i=3}^N y_i \alpha_i = \zeta \tag{7.102} \]

\[0 \leqslant \alpha_i \leqslant C, \ \ i=1,2 \tag{7.103} \]

其中\(\zeta\)是常數,目標函數式\((7.101)\)中省略了不含\(\alpha_1, \alpha_2\)的常數項。

由於只有兩個變量,約束可以用二維空間中的圖形表示。

假設問題\((7.101)-(7.103)\)的初始可行解為\(\alpha_1^{old}, \alpha_2^{old}\)。最優解為\(\alpha_1^{new}, \alpha_2^{new}\)。並且假設在沿着約束方向未經剪輯時\(\alpha_2\)的最優解為$ \alpha_2^{new, unc}$。

由於\(\alpha_2^{new}\)需滿足不等式約束\((7.103)\),所以最優值\(\alpha_2^{new}\)的取值范圍必須滿足條件

\[L \leqslant \alpha_2^{new} \leqslant H \]

其中,\(L\)\(H\)\(\alpha_2^{new}\)所在的對角線段端點的界。

如果\(y1 \neq y2\),則

\[L = \max(0, \alpha_2^{old} - \alpha_1^{old}), \ \ H = \min(C, C+\alpha_2^{old} - \alpha_1^{old}) \]

如果\(y1 = y2\),則

\[L = \max(0, \alpha_2^{old} + \alpha_1^{old} - C), \ \ H = \min(C, \alpha_2^{old} + \alpha_1^{old}) \]

先沿着約束方向未經剪輯(即未考慮不等式約束\((7.103)\))時\(\alpha_2\)的最優解$ \alpha_2^{new, unc}\(;然后再求剪輯后的\)\alpha_2\(的解\)\alpha_2^{new}$。我們用定理來敘述這個結果,然后再加以證明。

為了敘述簡單,記

\[g(x) = \sum_{i=1}^N \alpha_i y_i K(x_i, x) + b \]

\[E_i = g(x_i) - y_i = \sum_{j=1}^N \alpha_j y_j K(x_j, x_i) + b - y_i \]

\(i=1,2\)時,\(E_i\)為函數\(g(x)\)對輸入\(x_i\)的預測值與真實輸出\(y_i\)之差。

定理7.6:最優化問題\((7.101)-(7.103)\)沿着約束方向未經剪輯時的解是

\[\alpha_2^{new, unc} = \alpha_2^{old} + \frac{y_2(E_1 - E_2)}{\eta} \]

\[\eta = K_{11} + K_{22} - 2K_{12} = ||\phi(x_1) - \phi(x_2)||^2 \]

經剪輯后\(\alpha_2\)的解是

\[\alpha_2^{new} = \left\{\begin{matrix} H, & \alpha_2^{new, unc}> H \\ \alpha_2^{new, unc}, & L \leqslant \alpha_2^{new, unc} \leqslant H \\ L, & \alpha_2^{new, unc} < L \end{matrix}\right.\]

\(\alpha_2^{new}\)求得\(\alpha_1^{new}\)

\[\alpha_1^{new} = \alpha_1^{old} + y_1 y_2 (\alpha_2^{old} - \alpha_2^{new}) \]

證明:引進記號

\[v_i = \sum_{j=3}^N \alpha_i y_i K(x_i, x_j) = g(x_i) - \sum_{j=1}^2 \alpha_i y_i K(x_i, x_j) - b \]

目標函數寫成

\[W(\alpha_1, \alpha_2) = \frac{1}{2} K_{11} \alpha_1^2 + \frac{1}{2} K_{22} \alpha_2^2 + y_1 y_2 K_{12} \alpha_1 \alpha_2 \\ - (\alpha_1 + \alpha_2) + y_1 v_1 \alpha_1 + y_2 v_2 \alpha_2 \tag{7.110} \]

\(\alpha_1 y_1 = \zeta - \alpha_2 y_2\)\(y_j^2 = 1\),可將\(\alpha_1\)表示為

\[\alpha_1 = (\zeta - y_2 \alpha_2) y_1 \]

代入\((7.110)\)得到只含\(\alpha_2\)的目標函數

\[W(\alpha_2) = \frac{1}{2} K_{11} (\zeta - \alpha_2 y_2)^2 + \frac{1}{2} K_{22} \alpha_2^2 + y_2 K_{12} (\zeta - \alpha_2 y_2) \alpha_2 \\ - (\zeta - y_2 \alpha_2) y_1 - \alpha_2 + y_1 v_1 (\zeta - y_2 \alpha_2) y_1 + y_2 v_2 \alpha_2 \]

\(\alpha_2\)求導數

\[\frac{\partial W}{\partial \alpha_2}=K_{11} \alpha_2 + K_{22} \alpha_2 - 2 K_{12} \alpha_2 - K_{11} \zeta y_2 + K_{12} \\+ y_1 y_2 - 1 - v_1 y_2 + y_2 v_2 \]

另其等於0,將$\zeta = \alpha_1^{old} y_ 1 + \alpha_2^{old} y_ 2 \(和 \)\eta = K_{11} + K_{22} - 2K_{12}$代入,得

\[\alpha_2^{new, unc} = \alpha_2^{old} + \frac{y_2(E_1 - E_2)}{\eta} \]

得證。

變量的選擇方法
SMO算法在每個子問題中選擇兩個變量優化,其中至少一個變量是違反KKT條件的。
(1)第一個變量的選擇
SMO稱選擇第1個變量的過程為外層循環。外層循環在訓練樣本中選取違反KKT條件最嚴重的樣本,並將其對應的變量作為第1個變量。具體地,檢查訓練樣本點是否滿足KKT條件,即

\[\alpha_i = 0 \Leftrightarrow y_i g(x_i) \geqslant 1 \\ 0 < \alpha_i < C \Leftrightarrow y_i g(x_i) = 1 \\ \alpha_i = C \Leftrightarrow y_i g(x_i) \leqslant 1\]

檢驗過程中,外層循環首先遍歷所有滿足\(0 < \alpha_i < C\)的樣本點,即在間隔邊界上的支持向量點,檢測它們是否滿足KKT,如果這些點都滿足KKT,那么遍歷整個訓練集,檢驗它們是否滿足KKT。

(2)第二個變量的選擇
SMO稱選擇第2個變量的過程為內部循環。選取的標准是希望\(\alpha_2\)有足夠大的變化。由於\(\alpha_2^{new}\)是依賴於\(|E_1 - E_2|\)的,為了加快計算速度,一種簡單的做法是選擇\(\alpha_2\),使其對應的\(|E_1 - E_2|\)最大。因為\(\alpha_1\)已定,\(E_1\)也確定了。如果\(E_1\)為正,那么選擇最小的\(E_i\)作為\(E_2\);如果\(E_1\)為負,那么選擇最大的\(E_i\)作為\(E_2\)。為了節省計算事件,將所有\(E_i\)值保存在一個列表中。

在特殊情況下,如果內層訓練通過以上方法選擇的\(\alpha_2\)不能使目標函數有足夠的下降,那么采用以下啟發式規則繼續選擇\(\alpha_2\)

遍歷在間隔邊界上的支持向量點,依次將其對應的變量作為\(\alpha_2\)試用,直到目標函數有足夠的下降。若找不到合適的\(\alpha_2\),那么遍歷訓練數據集;若仍找不到合適的\(\alpha_2\),則放棄第1個\(\alpha_1\),再通過外層訓練尋求另外的\(\alpha_1\)

(3)計算閾值\(b\)和差值\(E_i\)
在每次完成兩個變量的優化后,都要重新計算閾值\(b\)

在每次完成啷個變量的優化后,還需要更新對應的\(E_i\)值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM