1. 程式人生 > >斯坦福CS229機器學習筆記-Lecture8- SVM支援向量機 之核方法 + 軟間隔 + SMO 演算法

斯坦福CS229機器學習筆記-Lecture8- SVM支援向量機 之核方法 + 軟間隔 + SMO 演算法

作者:teeyohuang

本文系原創,供交流學習使用,轉載請註明出處,謝謝

宣告:此係列博文根據斯坦福CS229課程,吳恩達主講 所寫,為本人自學筆記,寫成部落格分享出來

          博文中部分圖片和公式都來源於CS229官方notes。

          CS229的視訊和講義均為網際網路公開資源

Lecture8

主要內容如下:

·Kernels (核方法)

·Soft Margin(軟間隔) –非線性可分的情況

·SMO algorithm

1.Kernels (核方法)

上一節課的最後我們已經推出了一些有用的結論:

這是我們探討核方法的出發點

假設我們現在有一個輸入屬性(input attribute)x,有時候我們會將這個x給對映到一組新的集合上去,

比如如下例子,採用特徵對映 (feature mapping)  φ:

我們把得到的這組新的量稱為 輸入特徵(input features)

這樣,如果我們想通過新的這組input features求解svm,只需要把之前講過程中的所有出現了x的地方用φ(x)代替就ok了。

假設現在有內積<x,z>,則直接將其寫為<φ(x) φ(z)>,我們將這個內積定義為一個核:

一般φ(x)的維度都比較高,直接把φ(x)計算並表示出來顯得很複雜,但是計算K(x,z)的複雜度一般要低一些,所以往往不必把φ(x)或者φ(z)顯示地表達出來。舉個例子說明:

下面看另一個核的例子,如果φ(x)和φ(z)很接近,那麼它們的內積就比較大,也就是說期望核的值K(x,z)比較大;如果它們彼此遠離,甚至接近正交,那麼它們的內積K(x,z)就會比較小,甚至於接近0。所以我們可以認為核函式K(x,z)能夠在一定程度上測定φ(x)和φ(z)的相似性,或者說x和z的相似性。比如下面這個核函式:

如果x和z接近的話,值就會接近1;反之x和z相隔很遠的話,值會接近0

那麼我們能夠在SVM中用到這個核嗎?對於這個具體的例子來說,是可以的,這個核其實被稱作Gaussian kernel,實際上對應了一個無限維度的對映函式φ。

        但是問題來了,我們該如何判定一個核函式

K是否合法(有效)呢?換句話說,我們能否找到一個合適的特徵對映函式φ使得K =  <φ(x) φ(z)> 對於當前問題的所有x和z都成立。如果根本都找不到一個合適的φ,說明我們無法從x,z構建出這樣一個核函式!

              實際上有一個結論,給出了函式K是合法的核的充分必要條件

①先來看必要條件

        假設現在已知K是一個合法的核函式,對應著一個對映函式φ。

現在,考慮包含了m個點的有限集合(不一定非得是訓練集) :

使得有一個m x m大小的矩陣K,的元素 Kij  =  K(x(i), x(j)).

這樣的一個矩陣K被稱為 kernel matrix(核矩陣)

根據基本的數學知識,內積是可交換的,即<φ(x) φ(z)>  =  <φ(z) φ(x)>

那麼顯然,對於剛剛那個核矩陣來說,Kij = Kji也就是說,K矩陣是對稱矩陣

接下來,對於任意一個向量z,φk(x)是φ(x)中的第k個值,有如下推導:

從而得知K是一個positive semi-definite matrix  ---半正定矩陣。

必要條件就為:如果K是一個合法的核函式,那麼K函式對應的K矩陣就一定是一個對稱的半正定矩陣

實際上,這個條件也是充分條件,使得K是一個合法的核,稱為Mercer kernel

Mercer定理:任何的半正定函式都可以作為核函式。

給出了判定一個核函式是否是合法的標準。

其實總結起來,核方法的作用就是將特徵對映到高維空間中去,所以也不侷限於SVM中應用,

2.L1 norm soft Margin

在這之前,我們探討的都是資料線性可分的情況,但是有時候資料是線性不可分的,如下圖左圖;

或者即便線性可分,但是分割函式並不理想,如下圖右圖:

所以我們就希望演算法對這些極端值不敏感,這樣就相當於儘量忽略這些極端值,那麼剩下的大部分樣本就還是線性可分的。

這些極端值無法滿足間隔大於等於1的約束條件,所以我們對每個樣本點再引入一個鬆弛變數ξi0,使得間隔函式加上鬆弛變數大於等於1.即約束條件變為:

如果某個樣本的函式間隔為 1- ξi的話,我們就應該對損失函式增加一個代價:Cξi。 所以最終的損失函式和約束條件如下:

損失函式中多出來的那部分代價想表達的意思是,最小化這部分代價意味著更少的樣本點,會需要加上這個ξ才能滿足函式間隔大於1;試想,如果ξ是一個極大的數的話,那麼光憑藉ξ的值就能滿足約束條件了,那麼我們的函式間隔那部分就沒有意義了,所以希望ξ這部分代價能取的儘量的小。C是一個常數,用來控制這部分的權重而已。

如果說我們之前講的線性可分的資料的SVM可以被稱為 線性可分支援向量機,那麼這裡對於線性不可分的資料,但是卻近似線性可分(比如只有極個別的極端值,)的資料,是能夠通過軟間隔來學習出線性SVM的,可稱為 線性支援向量機。

同樣可以寫出它的拉格朗日乘式,

具體的詳細的推導過程我們就不細講了,參考Lecture7中的詳細推導步驟,這裡直接給出對偶結果:

我們會發現這個對偶問題與Lecture7中解決線性可分SVM中的對偶問題相比,只是對於αi的約束多了一個:αi≤C,

但要主要的是對於b的計算公式需要進行修改。同時KKT dual-complementarity(對偶互補條件)為:

要想解決這個對偶問題,就會講到下面的SMO演算法

3.SMO algorithm (sequential minimal optimization)順序最小優化演算法

座標上升法:

       先來看一個無約束優化問題:

W是引數α的函式,現在我們先不考慮有關SVM的任何東西,這就是個單純的優化問題。我們在前面已經就講過兩種優化方法,梯度上升和牛頓方法,可以用來解決這個問題,但是這次提出一個新的方法:座標上升法:

可以看到在演算法的最內層迴圈中,我們固定除了αi的其餘所有引數,然後對於引數αi最大化整個函式,最內層按照α1、α2、α3…的迴圈(也可以選擇其他更復雜的順序)。

這裡朋友們要注意的是 在算argmax,而不是max,

就是說我們這裡求的不是函式的最大值,而是使函式能取得最大值的引數αi的最大值

座標上升演算法是一個相當高效的演算法,執行過程見下圖:

圖中的橢圓是我們想要優化的一個二次函式的輪廓。座標上升演算法的初始點為(2,-2),圖中描點的路徑是到達全域性最大的路徑。在每一步,座標上升演算法平行地沿著一個軸運動,一次僅有一個變數被優化。簡單的說,就是固定x求能使得函式值最大的y,再固定y求能使函式值最大的x,如此迴圈……

瞭解了座標上升演算法之後,我們再來看之前提到的對偶問題:

對於這個對偶問題,我們確實需要求解一系列的αi,那麼我們能直接使用座標上升演算法嗎?

答案是不行!

因為約束條件中的第二個條件所限制,以α1為例:如果想固定除了α1以外的所有其它α是不能做到的,因為:

即因為它們的和是一個固定值,如果固定了其餘m-1個引數,那麼這一個引數也就被固定了。所以不能直接使用座標上升演算法。

但是,如果我們同時更新兩個引數,固定其餘m-2個引數可否呢?這樣其實就可以了,因為這兩個引數自己有自己調整的內部空間。

這就是SMO演算法,過程如下:

SMO是一個高效的演算法的關鍵原因是,更新αi,αj可以被高效地計算

可以簡單的推導一下:

現在固定除了α1,α2 之外的其餘m-2個α,那麼就會得到一個新的約束:

因為右側被固定,就是一個常數而已,改寫為:

畫出函式圖:

因為約束條件中0≤αi≤C,所以α1和α2必須存在於[0,C]×[0,C]的方形區域內,直線為:α1y(1)+α2y(2) = ζ,

與框形區域有兩個交點。

可知,固定α1時, α2需要落在[L,H]範圍內,否則無法滿足條件,此圖中L=0.

我們完全可以將α1寫作α2的函式:α1 = (ζ − α2y(2)) y(1).

那麼優化問題可以被寫為:

Y因為其他引數都被固定,所以這可以視為僅僅是一個關於α2的二次函式,如果我們先暫時不考慮α2的限制範圍,直接通過梯度方法求得最小值,那麼設這個值為:α2-new-unclipped

然後再對其進行截斷操作:

之後再把這個值代入優化函式中去求α1即可

我靠這篇博文終於寫完了,眼睛都要瞎了……