支持向量機是一種二分類模型,它的目的是尋找一個超平面來對樣本進行分割,分割的原則是間隔最大化,最終轉化為一個凸二次規划問題來求解。
模型包括以下幾類:
-
當訓練樣本線性可分時,通過硬間隔最大化,學習一個線性可分支持向量機;
-
當訓練樣本近似線性可分時,通過軟間隔最大化,學習一個線性支持向量機;
-
當訓練樣本線性不可分時,通過核技巧和軟間隔最大化,學習一個非線性支持向量機;
- 序列最小最優化算法 $SMO$;
1. 核函數
支持向量機通過某非線性變換 $\phi(x)$,將輸入空間映射到高維特征空間。舉一個例子:設輸入空間是二維的,在該空間中取兩個向量
$$v_{1} = (x_{1}, y_{1}) \\
v_{2} = (x_{2}, y_{2})$$
假如映射關系為
$$\phi(x,y) = \left ( x^{2}, \sqrt{2}xy, y^{2} \right )$$
函數的輸入是二維的向量,輸出是三維向量,也就是說這個函數完成了一個升維的操作。
$$\left (x_{1},y_{1} \right ) \; \overset{\phi(x,y)}{\rightarrow} \; \left ( x_{1}^{2}, \sqrt{2}x_{1}y_{1}, y_{1}^{2} \right ) \\
\left (x_{2},y_{2} \right ) \; \overset{\phi(x,y)}{\rightarrow} \; \left ( x_{2}^{2}, \sqrt{2}x_{2}y_{2}, y_{2}^{2} \right )$$
如果我們用神經網絡來描述這個映射,網絡結構可以長成下面這個樣子:
在這個網絡中,輸入層是 $2$ 維的,輸出層是 $3$ 維的。神經網絡也具有非線性擬合能力,其擬合能力顯然高於非線性 $SVM$。
但是一般情況下這個映射函數是非常復雜的,很難寫出它的具體表達式,它們映射到的高維空間的維數也比上面舉的例子(三維)高得多,
甚至是無窮維的。於是引入核函數 $K(v_{1},v_{2})$,它是我們給定的,它的自變量是原始輸入空間的向量。規定核函數必須滿足條件:
$$K(v_{1}, v_{2}) = \left \langle \phi(v_{1}), \phi(v_{2}) \right \rangle$$
$\phi(v_{1}), \phi(v_{2})$ 是 $v_{1},v_{2}$ 映射到高維空間后對應的向量,即規定核函數等於向量映射到高維空間后的內積,這個等式隱含着一個從低維空間
到高維空間的映射關系 $\phi$,一般解不出來且滿足條件的映射不唯一。
對於最初的例子,給定核函數為 $K(v_{1},v_{2}) = \left \langle v_{1},v_{2} \right \rangle^{2}$,那么它滿足如下等式
$$\left \langle v_{1},v_{2} \right \rangle^{2} = \left \langle \phi(v_{1}), \phi(v_{2}) \right \rangle \\
\Rightarrow x_{1}y_{1} + x_{2}y_{2} = \left \langle \phi(v_{1}), \phi(v_{2}) \right \rangle$$
映射到三維空間的可能解有:
1)$\phi(x,y) = \left ( x^{2}, \sqrt{2}xy, y^{2} \right )$
2)$\phi(x,y) = \frac{1}{\sqrt{2}}\left ( x^{2} - y^{2}, 2xy, x^{2} + y^{2} \right )$
2. 正定核
這些核函數是如何找到的?亦或者給定一個函數,有什么方法可以判定其是否可作為核函數?按 $1$ 中講的,對於一個核函數 $K(v_{1},v_{2})$,
假如我們能找到一個映射 $\phi(x)$,使得
$$K(v_{1}, v_{2}) = \left \langle \phi(v_{1}), \phi(v_{2}) \right \rangle$$
但上面也說了,這個映射函數很不好找,那么還有沒有其它的辦法判斷一個給定的函數能不能作為核函數?
正定核的充要條件:
1)函數 $K(v_{1},v_{2})$ 是對稱函數,即
$$K(v_{1},v_{2}) = K(v_{2},v_{1})$$
2)對於輸入空間中的任意 $m$ 個向量 $x_{i},i = 1,2,...,m$,其對應的 $Gram$ 矩陣是半正定的。$Gram$ 矩陣定義為
$$K = \big[ K(x_{i},x_{j}) \big]_{m \times m}$$
給定的函數如果滿足上面兩個條件,那么它就可以作為核函數。這是另外一個判定核函數的方法。也就是說,我們按照這個充要條件構造
出來的函數必定也是滿足核函數基本要求的,即:
$K(v_{1}, v_{2}) = \left \langle \phi(v_{1}), \phi(v_{2}) \right \rangle$ $\Leftrightarrow$ $Gram$ 矩陣半正定且 $K$ 滿足對稱性。
下面我們將證明這個結論。
1)先證明從左到右成立:假設已知了 $K(v_{1}, v_{2}) = \left \langle \phi(v_{1}), \phi(v_{2}) \right \rangle$,因為是求內積,所以對稱性是顯而易見的。那么我們怎么推導
出 $Gram$ 矩陣半正定呢?根據半正定的定義,任選一個 $m$ 維非 $0$ 向量 $c$(這個向量和輸入空間是沒有關系的)有
$$c^{T}Kc = \begin{bmatrix}
c^{(1)} & c^{(2)} & \cdots & c^{(m)}
\end{bmatrix}\begin{bmatrix}
K_{11} & K_{12} & \cdots & K_{1m} \\
K_{21} & K_{22} & \cdots & K_{2m} \\
\vdots & \vdots & \ddots & \vdots \\
K_{m1} & K_{m2} & \cdots & K_{mm}
\end{bmatrix}\begin{bmatrix}
c^{(1)} \\
c^{(2)} \\
\vdots \\
c^{(m)}
\end{bmatrix} \\
= \sum_{i = 1}^{m}\sum_{j = 1}^{m}c^{(i)}c^{(j)}K_{ij}
= \sum_{i = 1}^{m}\sum_{j = 1}^{m}c^{(i)}c^{(j)}\phi(x_{i})^{T}\phi(x_{j}) \\
= \sum_{i = 1}^{m}c^{(i)}\phi(x_{i})^{T} \sum_{j = 1}^{m}c^{(j)}\phi(x_{j}) \\
= \left (\sum_{i = 1}^{m}c^{(i)}\phi(x_{i}) \right )^{T} \left (\sum_{j = 1}^{m}c^{(j)}\phi(x_{j}) \right ) \\
= \left \langle \sum_{i = 1}^{m}c^{(i)}\phi(x_{i}), \sum_{j = 1}^{m}c^{(j)}\phi(x_{j}) \right \rangle \\
= \left \| \sum_{i = 1}^{m}c^{(i)}\phi(x_{i}) \right \|^{2} \geq 0$$
2)證明從右往左成立:反推暫時不太會,將來補上。
3. 核技巧在支持向量機中的應用
用線性分類方法求解非線性分類問題分為兩步:首先使用一個變換將原空間的數據映射到新空間;然后再新空間里用線性分類學習方法從訓練數據中學習
分類模型。求解線性可分問題的目標函數為
$$L(\alpha) = \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_{i}\alpha_{j}y_{i}y_{j}(x_{i}^{T}x_{j}) -\sum_{i=1}^{n}\alpha_{i}$$
此時 $x_{i},x_{j}$ 都是經過映射后的高維空間中的向量,要在這個新的高維空間中求解出一個超平面,使樣本點被正確分類。
觀察式子可知,$x_{i}^{T}x_{j}$ 就等於核函數,所以目標函數可以寫成如下形式
$$L(\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}$$
所謂核技巧,就是指我們可以直接計算 $K(x_{i},x_{j})$(核函數 $K$ 是已知的,根據充要條件可以構造),而不需要真正的去找一個 $\phi(x)$(通常是很難找的)。
也就是說,我們並不關心低維到高維的映射 $\phi$ 是什么樣子的,我們只需要構造一個函數 $K$,使得該函數可以表示為映射后空間里數據的內積,這樣就可以了。
求解出來的超平面也是位於高維空間的。