1. 程式人生 > 實用技巧 >支援向量機

支援向量機

支援向量機

一、線性模型
圖1 線性可分情況

找一個平面,向上或向下評選移動該平面,使之擦過一些向量,將距離 \(d\) 定義為此平面的優化量度,使 \(d\) 儘可能的大,\(d\) 叫做間距(margin),擦過的向量叫做支援向量(support vectors),即$ B_8$ 和 \(A_5\)

設空間有 \(N\) 個向量 \(x_1,x_2,...x_N\),它們要麼屬於 \(c_1\) 類,要麼屬於 \(c_2\) 類。即,

\[y_i = \begin{cases} 1,& x_i \in c_1 \\ -1,& x_i \in c_2 \end{cases} \]

  • 優化問題

最小化(Minimize): \(\frac{1}{2}||\omega||^2\)

限制條件(Subject to):\(y_i[\omega^Tx_i+b]\geq 1(i=1,2,...N)\)

那麼優化問題為什麼要最小化 \(\frac{1}{2}||\omega||^2\) 呢?首先先了解兩個“事實”。

(1)若 \(\omega^T+b=0\) 表示一個平面,那麼 \(a\omega^T+ab=0\)\(a\in R^+\)(正實數) 的情況下表示的平面是同一個平面。

(2)點 \((x_0,y_0)\) 到平面 \(\omega_1x+\omega_2y+b=0\)

的距離 \(s=\frac{|\omega_1x_0+\omega_2y_0+b|}{\sqrt{\omega_1^2+\omega_2^2}}\),那麼根據推廣可知,向量 \(x_0\) 到超平面 \(\omega^Tx+b=0\) 的距離為 \(d=\frac{\omega^Tx_0+b}{||\omega||}(||\omega||=\sqrt{\omega_x^2+\omega_2^2+...+\omega_N^2})\)

我們可以用 \(a\) 去縮放 \((\omega,b)\rightarrow (a\omega,ab)\) ,使得 \(|\omega_*^Tx_0+b_*|=1\),那麼此時,間隔 \(d=\frac{1}{||\omega||}\)

,我們的目的是使得 \(d\) 儘可能的大,那麼根據距離公式,可以使 \(||\omega||^2\) 最小化(\(\frac{1}{2}\) 是為了求導方便,沒有實際意義)以達到目的。

擴充套件:上述優化問題是凸優化問題(也叫二次規劃),特點是要麼無解,要麼只有一個極值。定義為

(1)目標函式是二次項。

(2)限制條件是一次項。

二、非線性模型

線上性不可分的情況下,優化問題可以寫成:

最小化:\(\frac{1}{2}||\omega||+C\sum_{i=1}^{N}\delta_i\)

限制條件:(1)\(\delta_i\geq0\);(2)\(y_i[\omega^Tx_i+b]\geq 1-\delta_i(i=1,2,...,N)\)

注意:

(1)\(C\)是常數,是事先設定好的,為了平衡權重。\(\omega,b,\delta_i(i=1,2,...,N)\) 為待求變數。

(2)此優化問題(也是凸優化)對任意點集,無論是否線性可分都有解。

支援向量機處理非線性情況是通過將向量 \(x\) 對映到高維空間,再用線性方式去分開。通俗的說,在低緯空間線性不可分,那麼在高維有很大的概率能夠線性可分。例如異或問題是線性不可分的。

圖2 異或問題

​ 設 \(A=\left[\begin{matrix} 0\\ 0 \end{matrix} \right] \in c_1 ,\quad B=\left[\begin{matrix} 1\\ 1 \end{matrix} \right] \in c_1 ,\quad C=\left[\begin{matrix} 1\\ 0 \end{matrix} \right] \in c_2 ,\quad D=\left[\begin{matrix} 0\\ 1 \end{matrix} \right] \in c_2\) ,讓 \(x\) 通過 \(\varphi(x)\) 變換對映到高維空間。即

\[x=\left[ \begin{matrix} a\\b \end{matrix}\right] \Longrightarrow \varphi(x)=\left[\begin{matrix} a^2\\b^2 \\a\\b\\ab \end{matrix}\right] \]

那麼

\[\varphi(A)=\left[\begin{matrix} 0\\ 0\\0\\0\\0 \end{matrix} \right] \in c_1 ,\quad \varphi(B)=\left[\begin{matrix} 1\\ 1 \\1\\1\\1 \end{matrix} \right] \in c_1 ,\quad \varphi(C)=\left[\begin{matrix} 1\\ 0 \\1\\0\\0 \end{matrix} \right] \in c_2 ,\quad \varphi(D)=\left[\begin{matrix} 0\\ 1\\0\\1\\0 \end{matrix} \right] \in c_2 \]

那麼可以找到一組解使其線性可分,即

\[\omega_*=\left[\begin{matrix} -1\\-1\\-1\\-1\\6 \end{matrix} \right] \quad , \quad b=1 \]

代入式子可得如下式子,顯然線性可分。

\[\omega_*^T\varphi(A)+b = 1 \geq0\quad \omega_*^T\varphi(B)+b = 3\geq0 \quad \omega_*^T\varphi(C)+b = -1 <0 \quad \omega_*^T\varphi(D)+b = -1 < 0 \]

\(\varphi(x)\) 接近無限維度時,線性可分的概率會接近到1,對於此問題,只需要修改 SVM\(x\)\(\varphi(x)\) 即可。

最小化:\(\frac{1}{2}||\omega||+C\sum_{i=1}^{N}\delta_i\)

限制條件:(1)\(\delta_i\geq0\);(2)\(y_i[\omega^T\varphi(x_i)+b]\geq 1-\delta_i(i=1,2,...,N)\)

\(\varphi(x)\) 這會是一個非常複雜的式子。其實我們不需要知道 \(\varphi(x)\) 的顯示錶達也可以計算。我們只需要知道一個核函式(kernel function),即 \(k(x_1,x_2)=\varphi(x_1)^T\varphi(x_2)\) 就可以了。

  • 常用的核函式有如下:
名稱 表示式
線性核 \(k(x_i,x_j)=x_i^Tx_j\)
多項式核 \(k(x_i,x_j)=(x_i^Tx_j)^d\)
高斯核 $k(x_i,x_j)=exp(-\frac{
sigmoid核 \(k(x_i,x_j)=tanh(\beta x^T_ix_j +\theta)\)

\(Mercer's \quad Theorem\) :核函式 \(k(x_1,x_2)\) 可拆分為 \(\varphi(x_1)^T \varphi(x_2)\) 的充分條件為:對任意函式 \(\varphi(x)\) 滿足 :

\[(1)\quad k(x_1,x_2)=k(x_2,x_1)(交換律) \quad;\quad(2)\quad \forall c_i,x_i(x=1...N),\sum_{i=1}^{N}\sum_{j=1}^{N}c_ic_jk(x_i,x_j) \geq 0(半正定性) \]

  • 原問題(Prime Problem)與對偶問題(Dual Problem)

(1)原問題:

最小化(Minimize): \(f(\omega)\)

限制條件(Subject to): \(g_i(\omega) \le 0(i=1,2...K) \quad ;\quad h_i(\omega)=0(i=1,2,...M)\)

(2)對偶問題:

定義:\(L(\omega,\alpha,\beta) = f(w)+\sum_{i=1}^{K}\alpha_ig_i(\omega)+\sum_{i=1}^{M}\beta_i h_i(\omega)=f(\omega)+\alpha^Tg(\omega)+\beta^Th(\omega)\)

最大化(Maximize): \(\theta(\alpha,\beta) = inf_{定義域內所有的\omega}L(\omega,\alpha,\beta)\)

\((inf即求最小值,該式是在\alpha,\beta 固定下,遍歷\omega,求最小值)\)

限制條件(Subject to): $\alpha_i \ge 0(i=1,2,...K) $

(3)定理1:如果 \(\omega^*\) 是原問題的解,而 \(\alpha^*,\beta^*\) 是其對偶問題的解,則有 \(f(\omega^*) \ge \theta(\alpha^*,\beta^*)\)

證明:

\[\begin{aligned} \theta(\alpha^*,\beta^*) & = inf_{定義域內所有的\omega}L(\omega^*,\alpha^*,\beta^*)\\ &\le L(\omega^*,\alpha^*,\beta^*) \\ &=f(\omega^*)+\underbrace{\alpha^{*T}}_{\ge0} \underbrace{g(\omega^*)}_{\le0}+\beta^{*T}\underbrace{h(\omega^*)}_{=0} \\ &\le f(\omega^*) \end{aligned} \]

\(G = f(\omega^*) - \theta(\alpha^*,\beta^*) \ge0\) 叫原問題與對偶問題的間距(Duality Gap)。

注意:如果 \(f(\omega^*) = \theta(\alpha^*,\beta^*)\),必能推出對於所有的 \(i=1-K,\alpha_i^* = 0 或 g_i^*(\omega^*)=0\) ,此為 \(KKT\) 條件。

(4)定理2(強對偶定理):如果 \(g(\omega) = A\omega +b,h(\omega) = C\omega+d,f(\omega)\) 為凸函式,則 \(f(\omega^*) = \theta(\alpha^*,\beta^*)\),即間距為0。

凸函式定義是\(\forall \omega_1,\omega_2\),有 \(f(\lambda\omega_1+(1-\lambda)\omega_2)\le\lambda f(\omega_1)+(1-\lambda)f(\omega_2) \quad \lambda\in[0,1]\)

  • 支援向量機(原問題與對偶問題)

(1)原問題

最小化:\(\frac{1}{2}||\omega||-C\sum_{i=1}^{N}\delta_i\)

限制條件:(1)\(\delta_i\le0\);(2)\(1+\delta_i-y_i\omega^T\varphi(x_i)+y_ib\le 0(i=1,2,...,N)\)

(2)對偶問題

最大化 \(\theta(\alpha,\beta) = inf_{所有 \omega,\delta_i,b}\frac{1}{2}||\omega||^2-C\sum_{i=1}^{N}\delta_i+\sum_{i=1}^N\beta_i\delta_i+\sum_{i=1}^N\alpha_i[1+\delta_i-y_i\omega^T\varphi(x_i)+y_ib]\)

限制條件:(1)\(\alpha_i\ge0(i=1,2,...,N)\);(2)\(\beta_i\ge0(i=1,2,...,N)\)

現在的待求引數是 \(\omega ,\delta_i ,b\),對其求偏導,並等於0處取得最優值。

\[\begin{aligned} &\frac{\partial \theta}{\partial \omega} = \omega-\sum_{i=1}^{N}\alpha_i\varphi(x_i)y_i=0\Longrightarrow \omega=\sum_{i=1}^{N}\alpha_i\varphi(x_i)y_i \qquad (1) \\ &\frac{\partial \theta}{\partial \delta_i}=-C+\beta_i+\alpha_i=0\Longrightarrow \alpha_i+\beta_i=C \qquad (2) \\ &\frac{\partial \theta}{\partial b} = -\sum_{i=1}^N\alpha_iy_i=0\Longrightarrow\sum_{i=1}^N\alpha_iy_i =0\qquad(3) \end{aligned} \]

把(1)(2)(3)代入後的對偶問題為

最大化:

\(\theta(\alpha,\beta)=\sum_{i=1}^N-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^{N}y_iy_j\alpha_i\alpha_j\varphi(x_i)^T\varphi(x_j)=\sum_{i=1}^N-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^{N}y_iy_j\alpha_i\alpha_jk(x_i,x_j)\)

限制條件:

(1)\(0\le\alpha_i\le C(因為\beta_i\ge0且\beta_i=C-\alpha_i,所以 \alpha_i \le C,i=1,2,...,N)\)

(2)\(\sum_{i=1}^{N}\alpha_iy_i=0(i=1,2,...,N)\)

這也是一個二次規劃問題,解此問題時,由於 \(\varphi(x_i)^T\varphi(x_j)=k(x_i,x_j)\),我們只需要知道核函式,不需要知道 \(\varphi(x)\) 的具體表達。現在我們計算 \(\omega^T\varphi(x_i) +b\)

首先計算 \(\omega^T \varphi(x_i)\),根據(1)式子可得 \(\omega^T \varphi(x_i) = \sum_{j=1}^{N}y_j\alpha_j\varphi(x_j)^T\varphi(x_i)=\sum_{j=1}^{N}y_j\alpha_jk(x_j,x_i)\)

然後算 \(b\),根據KKT條件,對於所有 \(i(i=1,2...N)\)\(\alpha_i[1+\delta_i-y_i\omega^T\varphi(x_i)+y_ib] = 0\)\(\beta_i\delta_i = 0 \Longrightarrow(C-\alpha_i)\delta_i = 0\),如果對於某一個 \(i,\alpha_i \not=0,且\alpha_i \not=C\),則必有 \(\delta_i=0(由\beta_i\not=0推出)\)\(1+\delta_i-y_i\omega^T\varphi(x_i)+y_ib=0(由\alpha_i\not=0推出)\),因此 \(b\) 的值為

\[b=\frac{1-y_i\omega^T\varphi(x_i)}{y_i} =\frac{1-y_i\sum_{j=1}^N\varphi_jy_jk(x_i,x_j)}{y_i} \]

最後,我們可以對測試樣本 \(x\) 進行判斷,即

\[ \begin{cases} x\in c_1 ,如果\omega^T\varphi(x_i) +b=\sum_{j=1}^{N}y_j\alpha_jk(x_j,x_i)+\frac{1-y_i\sum_{j=1}^N\varphi_jy_jk(x_i,x_j)}{y_i} \ge0 \\ x\in c_2 ,如果\omega^T\varphi(x_i) +b=\sum_{j=1}^{N}y_j\alpha_jk(x_j,x_i)+\frac{1-y_i\sum_{j=1}^N\varphi_jy_jk(x_i,x_j)}{y_i} <0 \\ \end{cases} \]