SVM家族簡史
故事要從20世紀50年代說起,1957年,一個叫做感知器的模型被提出,
1963年, Vapnik and Chervonenkis, 提出了最大間隔分類器,SVM誕生了。
1992年,Vapnik 將核方法用於SVM,使SVM可以處理線性不可分資料
1995年,Corts和Vapnik引入了軟間隔,允許SVM犯一些錯
最強版SVM出現了,它將各式武學集於一身,軟間隔、核方法、……,
1996年,SVR(support vector regression)誕生,svm家族又添一員,迴歸任務也不在話下。至此,SVM家族成為機器學習界頂級家族之一。關於SVM家族其他成員,可以參閱這裡。
SVM是什麼?
- 是一種監督學習分類演算法,可以用於分類/迴歸任務
- SVM目標:尋找最優分割超平面以最大化訓練資料的間隔
什麼是超平面?
- 在一維空間,超平面是一個點
- 二維空間,超平面是一條線
- 三維空間,超平面是一個平面
- 更多維空間,稱為超平面
什麼是最優分割超平面?
- 儘可能遠離每一個類別的樣本點的超平面
- 首先,可以正確的將訓練資料分類
- 其次,擁有更好的泛化能力
那麼如何找到這個最優超平面呢?根據間隔
什麼是間隔?
給定一個超平面,超平面到最近的樣本點之間的距離的2倍稱為間隔。
在最初的SVM中,間隔是一個強定義,即硬間隔,間隔之間不允許存在任何樣本。(當資料中存在噪音時,會產生一些問題,所以後來軟間隔被引入)
顯然,間隔B小於間隔A。可知:
- 如果超平面越接近樣本點,對應的間隔越小
- 超平面離樣本點越遠,間隔越大
所以最優超平面對應最大間隔,SVM就是圍繞著這個間隔展開,如何計算這個間隔????
感知機模型
感知機是什麼?
- 是一種二元線性分類器
- 利用梯度下降法對損失函式進行極小化,求出可將訓練資料進行線性劃分的分離超平面
感知機如何找到分離超平面?
-
定義目標函式,優化求解
對分類超平面 $ f(x_i)=w^\top x+b$
- 初始化 \(w\)
- 迴圈對每個樣本執行
- \(\mathbf{w} \leftarrow \mathbf{w}+\alpha \operatorname{sign}\left(f\left(\mathbf{x}_{i}\right)\right) \mathbf{x}_{i}\) 如果\(x_i\) 被誤分類
- 直到所有資料被正確分類
最大間隔
對感知機來說,後三個超平面都是對應的解。顯然最後一個是更優的解,但是感知機並不知道,SVM登場了。SVM說,既然間隔更大的超平面對應更優解,那我就計算間隔。
怎麼計算間隔?
可以用點到直線距離,對超平面
如何找到最優超平面?
超平面和間隔是直接相關的。
- 如果有一個超平面,可以根據樣本計算間隔
- 如果有兩個超平面界定了一個間隔,我們可以找到第三個超平面
所以 尋找最大間隔 = 尋找最優超平面
如何找到最大間隔?
step1: 需要有label的資料集
step2: 選擇兩個超平面劃分資料,並且超平面之間沒有資料
step3: 最大化兩個超平面之間的距離(即為間隔)
說起來很簡單,下面我們從數學角度看如何求解這一問題。
-
step1:資料集
樣本 \(x_i\),對應的label \(y_i\in \{-1,1\}\),含有 \(n\) 個樣本的資料集表示為 \(D\)
$ D={(x_i,y_i)∣x_i∈R^p,y_i∈{−1,1}}$
-
step2:選擇兩個超平面
假設資料 \(D\)是線性可分的
對於分類超平面 \(\bold w \cdot \bold x+b=0\) , 記為\(H_0\),選擇另外兩個超平面\(H_1,H_2\) ,滿足\(H_0\)到\(H_1\) 和 \(H_2\)等距,分別定義如下:
\[\bold w \cdot \bold x+b = \delta\\ \bold w \cdot \bold x+b = -\delta \]但是 \(\delta\) 是多少?不確定。為了簡化問題,我們假設 \(\delta=1\) ,為了確保兩個超平面之間沒有資料,必須滿足以下約束:
\[\bold w \cdot \bold x_i+b≥1,\qquad if \ y_i =1\\ \bold w \cdot \bold x_i+b≤−1,\quad if \ y_i=-1 \tag{1} \]將式(1) 兩邊同時乘以 \(y_i\):
\[\bold y_i(\bold w \cdot \bold x_i+b)\geq 1,\qquad for \ 1 \leq i \leq n\tag{2} \] -
step3: 最大化兩個超平面之間的距離
最大化兩個超平面之間距離,怎麼計算距離?怎麼最大化距離?
如何計算兩個超平面之間距離?
記 \(H_0,H_1\) 分別為 \(\bold w \cdot \bold x+b=1,\bold w \cdot \bold x+b=−1\)
假如 \(x_0\) 為線上的點,\(m\) 記為兩線間距離。我們的目標:求 $ m$
如果存在一個向量 \(\bold k\) , 滿足 \(||\bold k||=m\) ,同時垂直於 \(H_1\),我們就能在 \(H_1\) 找到對應的點 \(z_0\)。現在我們看看怎麼找這個點?
首先定義 \(\bold u = \frac{\bold w}{\bold{||w||}}\) 為 \(\bold w\) 的單位向量,單位向量模長等於1,即\(\bold{||u||}=1\)。對一個標量乘以一個向量得到的結果是向量,所以我們將 \(m\) 和單位向量 \(\bold{||u||}\) 的乘積記為\(\bold k\)。
\[\bold k = m\bold u=m \frac{\bold w}{\bold{||w||}} \]根據向量加法 \(\bold z_0 = \bold x_0 + \bold k\),如上圖。我們找到了\(\bold x_0\) 對應的 \(\bold {z_0}\)。現在
\[\bold w \cdot \bold{z_0}+b=1 \\ \bold w \cdot (\bold{x_0+k})+b=1 \\ \bold w \cdot (\bold{x_0}+m \frac{\bold w}{\bold{||w||}})+b=1 \\ \bold w \cdot \bold{x_0}+m \frac{\bold {w \cdot w}} {\bold{||w||}}+b=1 \\ \bold w \cdot \bold{x_0}+m \frac{\bold {||w||^2 }} {\bold{||w||}}+b=1 \\ \bold w \cdot \bold{x_0}+m {\bold{||w||}}+b=1 \\ \bold w \cdot \bold{x_0}+b=1-m {\bold{||w||}} \\ \]因為 \(\bold w \cdot \bold x_0+b=−1\),所以
\[-1 = 1-m {\bold{||w||}} \\ m {\bold{||w||}} = 2 \\ m = \frac{2}{\bold{||w||}} \tag{3} \]我們計算出了 \(m\) !!!兩個超平面之間的距離。
最大化間隔
上面我們只做了一件事,計算間隔。現在我們看看怎麼最大化它
顯然上述問題等價於:
\[minmize \ \bold{||w||} \\s.t.\quad y_i(\bold{w \cdot x_i}+b) \geq 1 \quad for \ i=1,2,\cdots,n\tag{4} \]求解上述問題,得到最優解,我們就找到了最優超平面。
最大間隔的數學解
再探問題(4),這是一個帶不等式約束的最優化問題,而且是 \(n\) 個約束(\(n\) 個點都需要滿足)。這個問題很頭疼,好吧。我們先偷個懶,如果是無約束問題怎麼求。
-
無約束問題最小化
對無約束問題,表示為 \(f(\bold w)=\bold{||w||}\),我們如何求函式 \(f\) 的區域性極小值?求導。
如果\(f\) 二階可導,在點 \(\bold x^*\) 滿足 \(\partial f(\bold x∗)=0, \partial^2f(\bold x^*)>0\),則在 \(\bold {x}^*\) 處函式取極小值。注意:\(\bold x\) 是一個向量,導數為0,對應每個維度皆為0。
對於無約束最小值為0,等式約束下最小值為4。
-
等式約束
-
單個約束
假如有等式約束問題如下
\[\begin{array}{ll} \underset{x}{\operatorname{minimize}} & f(x) \\ \text { subject to } & g(x)=0 \end{array} \]上面的問題相當於定義了一個可行域,使得解只能在可行域內。上圖中表示可行域只有一個點,因此問題很簡單。
-
多個約束
對於帶有多個等式約束的問題,所有的約束必須都滿足
\[\begin{array}{cl}\underset{\mathbf{x}}{\operatorname{minimize}} & f(\mathbf{x}) \\\text { subject to } & g(\bold x)=0 \\& h(\mathbf{x})=0\end{array} \]上述等式約束問題怎麼解?猜猜這是誰?
拉格朗日乘法
In mathematical optimization, the method of Lagrange multipliers is a strategy for finding the local maxima and minima of a function subject to equality constraints. (Wikipedia)
三步法:
- 對每個約束乘以拉格朗日乘子,構建拉格朗日函式 \(L\)
- 求拉格朗日函式梯度
- 令梯度 \(\nabla L(\mathbf{x}, \alpha)=0\)
為什麼拉格朗日乘法可以解等式約束問題?我們來看看
\[\begin{array}{ll}\underset{x, y}{\operatorname{minimize}} & f(x, y)=x^{2}+y^{2} \\\text { subject to } & g_{i}(x, y)=x+y-1=0\end{array} \]根據目標函式和約束函式,我們可以畫出等高線
將兩張圖合併到一起會發生什麼(黑色箭頭表示目標函式梯度方向,白色箭頭表示約束函式梯度方向)
回到約束函式 \(g(x,y)=x+y-1=0\),我們找一找它在哪,當\(x=0\) 時 \(y=1\),當 \(y=0\) 時\(x=1\),找到了,在這裡
發現什麼了?目標函式在約束函式處的梯度方向相同!它們相切了,而且只有一個點處的梯度方向完全相同,這個點就是目標函式在約束下的的極小值。
why?假如你處在上圖最上面的箭頭位置(值為 \(v\)),在約束條件下,只能在藍線上移動,你只能嘗試向左或者向右找到更小的值。ok,先嚐試向左走,發現值變大了(梯度方向也是左,梯度指向函式上升最快的方向),所以應該向右走,直到走到切點處。此時,發現無論向那個方向走,值都會變大,因此,你找到了極小值。
-
數學表示
如何表達在極小值處,目標函式和約束函式梯度方向相同
\[\nabla f(x, y)=\lambda \nabla g(x, y) \]乘 \(\lambda\) 幹啥?因為他們只是梯度方向相同,大小不一定相等。 \(\lambda\) 稱為拉格朗日乘子。
(注意 \(\lambda\) 如果是負數,兩個梯度方向變為平行,可以同時求極大極小值,見例1.)
現在我們知道拉格朗日乘法為什麼可以求等式約束問題,那怎麼求?
-
找到滿足\(\nabla f(x, y)=\lambda \nabla g(x, y)\) 的 \((x,y)\)
顯然,\(\nabla f(x, y) - \lambda \nabla g(x, y)=0\),定義函式 \(L\) 有:
\[L(x,y,\lambda ) = f(x,y)-\lambda g(x,y) \]求導:
\[\nabla L(x, y, \lambda)=\nabla f(x, y)-\lambda \nabla g(x, y) \]當導數為0時就找到了對應 \(f\) 和 \(g\) 梯度方向平行的點。
回到定義,拉格朗日乘法只能解決等式約束問題,那對下面的不等式約束問題怎麼辦?
-
-
不等式約束
\[\begin{array}{cl}\underset{\mathbf{x}}{\operatorname{minimize}} & f(\mathbf{x}) \\\text { subject to } & g(\bold x) \geq0\end{array} \]Don't worry! 總有辦法?
對不等式約束問題,同樣可以使用拉格朗日乘數,滿足如下條件:
\[\begin{aligned}&g(x) \geq 0 \Rightarrow \lambda \geq 0\\&g(x) \leq 0 \Rightarrow \lambda \leq 0\\&g(x)=0 \Rightarrow \lambda \text { is unconstrained }\end{aligned} \]為什麼呢?因為可行域。看圖就知道了,在等式約束部分\(x+y-1=0\) 時,可行域在直線上;當\(x+y-1 \geq 0\) 時,可行域在右上角,\(\lambda\) 大於0表示梯度方向指向可行域;同理可知小於等於的情況。然後和等式約束求解過程一樣就可以了。關於拉格朗日對約束問題例子,推薦閱讀[3].
我們在來看看對偶問題。
-
對偶問題
In mathematical optimization theory, duality means that optimization problems may be viewed from either of two perspectives, the primal problem or the dual problem (the duality principle). The solution to the dual problem provides a lower bound to the solution of the primal (minimization) problem. (Wikipedia)
“對偶問題是原問題的下界”,下界是啥??
給定一個部分有序集合 \(R\) ,如果存在一個元素小於或等於 \(R\) 的子集的每個元素,該元素就可以稱為下界。百度百科
舉個例子:
給定 \(R\) 的一個子集:\(S = \{2,4,8,12\}\)
1. 1 小於 $S$ 中每個元素, 1 可以是一個下界 2. 2 小於等於$S$ 中每個元素, 2 也可以是一個下界
由於 2 大於其他的下界,被稱為 下確界 (最大下界)。下界有無窮個,但最大下界是唯一的。
回到對偶問題
如果原問題是一個極小問題,對偶問題可以將其轉化為求極大問題。極大問題的解就對應原極小問題的下界。有點不解其意,繼續看?
上圖原問題是一個極小問題, \(P\) 是極小點。對偶問題是一個極大問題, \(D\) 是極大點。很明顯, \(D\) 是一個下界。 \(P-D\) 被稱為對偶間隔,如果 \(P-D>0\) 對應弱對偶性。如果 \(P-D=0\) 對應強對偶性。
-
回到SVM最優化問題
為了求解方便,將等式(4)改寫為凸二次型優化問題(convex quadratic optimization problem),
根據拉格朗日乘數法:
可以轉化為:
為什麼原問題變成極大極小問題了?這裡有多個解釋,直觀來看,我們要$ min \ \mathcal{L}(\mathbf{w}, b, \alpha)$ ,由於後一項 \(\alpha >0,y_{i}\left(\mathbf{w} \cdot \mathbf{x}_{i}+b\right)-1 \geq0\),正數減正數,後一項越大對應整體值越小。
求解上述極大極小問題,求導:
將(7)帶回到(6)
只剩下 \(\alpha\) 了, 根據Wolfe dual problem:
- KKT 條件
The KKT conditions are first-order necessary conditions for a solution of an optimization problem to be optimal
回到式(8),同乘 -1 轉化為極小問題
到此為止,我們只是給出了SVM最大間隔的目標函式,如何優化求解,引入軟間隔,核方法,敬請期待。
歡迎留言?
references:
[1] http://www.robots.ox.ac.uk/~az/lectures/ml/lect2.pdf
[2] https://www.svm-tutorial.com/
[3] http://www.engr.mun.ca/~baxter/Publications/LagrangeForSVMs.pdf