1. 程式人生 > 實用技巧 >序列最小最優化(Sequential Minimal Optimization, SMO)演算法的推導、理解

序列最小最優化(Sequential Minimal Optimization, SMO)演算法的推導、理解

近期做了關於 SMO 演算法的彙報,對這個演算法理解了不少,也手推了一遍,記錄一下這個小小的勞動成果。
內容大多是彙報的 ppt 截圖,有需要的小夥伴可以去 下載,也可以給我留言,看到會回覆的。

文章目錄

前言

1998 年,John Platt 提出了序列最小最優化演算法 (SMO) 演算法用於訓練 SVM 分類器。SMO 演算法是一種啟發式演算法,其基本思路是:一次迭代只優化兩個變數而固定剩餘的變數。

在這裡插入圖片描述
SMO 要解如下凸二次規劃的對偶問題
在這裡插入圖片描述
其實就是訓練 SVM 分類器
在這裡插入圖片描述

演算法過程

在這裡插入圖片描述
精度 ϵ \epsilon ϵ指 KKT 條件的容錯率 toler。
部分 KKT 條件:
在這裡插入圖片描述
比如第二個條件,不要求嚴格等於 1 ,在容錯率範圍內都是可以接收的。原文內容如下:

在這裡插入圖片描述
SMO 演算法主要有兩個部分組成:

  1. 選取兩個 α \alpha α進行優化;
  2. 求解兩個 α \alpha α的解析解。

先說第二個內容

求解 α \alpha α的解析解

子問題

假設選擇的變數是 α 1 , α 2 \alpha_1,\alpha_2 α1,α2,其餘變數 α i ( i = 3 , ⋯   , N ) \alpha_i (i=3,\cdots,N)

αi(i=3,,N)是固定的,則 SMO 的最優化問題的子問題如下,其中 K ( x i , x j ) = K i j K(x_{i},x{j})=K_{ij} K(xi,xj)=Kij
在這裡插入圖片描述
首先分析約束條件,重新定義 α 2 \alpha_2 α2的取值範圍

取值範圍

根據約束條件得到 α 2 \alpha_2 α2的表示式,然後分情況討論,並根據 α 1 ∈ [ 0 , C ] \alpha_1 \in [0,C] α1[0,C]進行放縮

在這裡插入圖片描述
還可以將約束條件用圖形表示出來,也可以得到相同的結果

在這裡插入圖片描述

解析解

目標函式是含 α 1 n e w , α 2 n e w \alpha_1^{new},\alpha_2^{new}

α1new,α2new兩個變數的二次函式,為了方便求解,我們利用等式約束,將目標函式轉化成只含 α 2 n e w \alpha_2^{new} α2new的函式,然後求極小值,並與之前求得的取值範圍進行比較,確定 α 2 n e w \alpha_2^{new} α2new最終的表示式,最後根據等式約束也可以得到 α 1 n e w \alpha_1^{new} α1new.

將已知的量用 ν i \nu_i νi替換,其中
f ( x i ) = ∑ j = 1 N y j α j n e w K i j + b f(x_{i})=\sum_{j=1}^{N}y_{j}\alpha_{j}^{new}K_{ij}+b f(xi)=j=1NyjαjnewKij+b
在這裡插入圖片描述
下一步轉化成只含 α 2 n e w \alpha_{2}^{new} α2new的函式

在這裡插入圖片描述
對目標函式求導,並令其等於 0 0 0

在這裡插入圖片描述
定義一些等式,使表示式更簡潔

在這裡插入圖片描述
得到的極值點不一定在 α 2 n e w \alpha_{2}^{new} α2new的取值範圍裡,所以需要剪輯,則最終的 α 1 n e w , α 2 n e w \alpha_{1}^{new},\alpha_{2}^{new} α1new,α2new的表示式如下

在這裡插入圖片描述

更新 b , E i b,E_{i} b,Ei

根據 KKT 條件得到相應的等式,然後求解就可以了。

在這裡插入圖片描述
在這裡插入圖片描述
之前一直不明白當 α i \alpha_{i} αi都在邊界上時 b n e w b^{new} bnew的取值為什麼要取中點,試著推導,恍然大悟 。

在這裡插入圖片描述
可以看出,當四種 y i y_{i} yi的情況放在一起時, b n e w b^{new} bnew只能取中點。
其他在邊界的情況也可以推匯出相同的結論,同時關於 b n e w b^{new} bnew其他情況的取值也清晰了。

選取 α 1 , α 2 \alpha_{1},\alpha_{2} α1,α2

在這裡插入圖片描述
多次遍歷 α i ∈ [ 0 , C ] \alpha_{i}\in[0,C] αi[0,C]的樣本點,個人的理解是因為:根據 KKT 條件,這時
在這裡插入圖片描述
這樣的樣本點很容易違背 KKT 條件,對它們進行判斷更新可以加快求解速度。

在這裡插入圖片描述
SMO 演算法的理論推導就到這裡了,最後貼一下李航老師《統計學習方法》裡的演算法流程。

在這裡插入圖片描述
在這裡插入圖片描述

演算法實現

關於演算法的實現,可以參考
支援向量機|SMO演算法實現
如有錯誤,請指正,謝謝

參考資料

[1] 李航. 統計學習方法[M]. 清華大學出版社, 2012.
[2]https://www.jianshu.com/p/436d429ce91b