1. 程式人生 > >SVM支援向量機-拉格朗日乘子與對偶問題(1)

SVM支援向量機-拉格朗日乘子與對偶問題(1)

對於支援向量機,我們首先要關注的幾個點就是間隔超平面支援向量,再深入的話就是對偶問題拉格朗日對偶問題,凸優化,和 KKT條件,我們先從基本的間隔,超平面,支援向量說起。

1.SVM基礎模型

給定訓練集D={(x1,y1),(x2,y2)...(xn,yn)},yi∈{-1,1},例如下面圖中的點,藍線左上方的6個點對應1類,右下方的6個點對應-1類,基於資料分類的思想,如果我們想把兩類資料分開,顯然藍線不是唯一的選擇,我們有無數條直線可以選擇將兩類資料點分開,這些劃分資料的直線我們統稱為劃分超平面,但是這麼多劃分超平面,我們的目標是要尋找最優的劃分超平面

直觀上看,我們應該找兩類樣本間最“正”的劃分超平面,就像圖中藍線所示,因為該超平面對訓練樣本的區域性擾動“抗干擾性”最好,也就是說,這個劃分超平面所產生的分類效果是最好的,對未見的例子的泛化能力也最強。

                           

在樣本空間中,超平面可以通過線性方程來描述:

                                                                        

其中w=(w1,w2,w3...,wd)為法向量,決定了超平面的方向,b為位移項(截距項),決定了超平面與原點之間的距離,顯然,劃分超平面可被法向量w和位移b決定,下面將該平面記為(w,b),則樣本中任意x到超平面(w,b)的距離為:

                                                                       


假設超平面能將樣本正確分類,即對於(xi,yi)∈ D,若yi=+1,則,

                                                                                 若yi=-1,則.

這裡我們令:

                                                                                             (式1.1)   

即距離超平面正向距離大於1判定為1類別,距離超平面負向距離大於1的判定為-1類別。如上圖所示,標記紅圈的四個點使等式成立,他們也被稱為“支撐向量”(support vector),兩個異類支援向量到超平面的距離之和:

                                                                        

稱為“間隔”.

支援向量機的目標就是找到具有“最大間隔”的劃分超平面,也就是要找滿足(式1.1)中的w和b,使得距離γ最大,即:

                                                               

                                                       s.t.   

為了最大化間隔,僅需最大化,等價於最小化,所以上式可改寫為:

                                                              

                                                      s.t.                           (式1.2)

這就是SVM最基礎的模型。

2.拉格朗日乘子法與對偶問題

我們希望求解式(式1.2)得到最大間隔劃分超平面對應的模型:

                                                                            

其中w,b是模型引數,這裡我們使用拉格朗日乘子法得到其對偶問題,從而高效的求出結果,下面就看一下什麼是拉格朗日乘子法和對偶問題。

1)lagrange乘子法

拉格朗日乘子法是一種尋找多元函式在一組約束下的極值的方法,通過引入拉格朗日乘子,可將有d個變數與k個約束條件的優化問題轉換為具有d+k個變數的無約束優化問題。

考慮一個優化問題,假設x為d維,欲尋找x的某個取值,是目標函式f(x)最小且滿足g(x)=0的約束,從幾何角度看,該問題的目標是在由方程g(x)=0,確定的d-1維曲面上(因為g(x)=0的約束,在d-1個數據確定後,可以通過函式得到最後一個數據,所以是d-1維,類似於概率統計裡的自由度)尋找使目標函式f(x)最小化的點,此時不難得出結論:

                                ·對於約束曲面上的任意點x,該點的梯度正交於約束曲面

                                ·對於最優點,目標函式在該點的梯度正交於約束曲面

由此可知,在最優點,梯度的方向必相同或相反,即存在λ≠0使得:

                                                                                           (式2.1)

λ稱為拉格朗日乘子,定義拉格朗日函式:

                                                                                             (式2.2)    

對(式2.2)函式求導即得到(式2.1),於是原約束問題可轉化為對拉格朗日函式L(x,λ)的無約束問題。

2)KKT條件


拉格朗日乘子法的幾何意義即在等式g(x)=0或在不等式約束g(x)≤0下最小化目標函式f(x),紅色曲線表示g(x)=0構成的曲面,陰影部分的紫色即為g(x)<0的部分.

情況1 g(x)<0 :

g(x)<0時,對f(x)求極值相當於閉區間求極值,最值點即為極值點,令λ=0,直接對f求梯度即可得到極值。

情況2 g(x) = 0 :

g(x) = 0時,說明極值點在邊界取到,即g(x)<0內的點值都大於邊界,梯度的定義是向函式值增加最快的方向,所以f的梯度與g的梯度相反,從而存在常數λ>0,使得:

                                                            

綜合情況1和情況2,我們得到KKT條件:

                                                                    

通俗意義理解KKT條件的話就是目標函式在約束條件下取得極值的充要條件,也就是目標函式在約束條件下取得極值時對應的x,λ必須滿足KKT條件,反之亦然。

3)多約束問題推廣

將上述做法推廣到m個等式約束和n個不等式約束,且可行域非空的優化問題。

                                                                        

                                            s.t.                 

引入拉格朗日乘子λ=(λ1,λ2,...,λm).T , u=(u1,u2,...,un).T, 相應的拉格讓日函式為:

                                                    

由不等式約束引入KKT條件(j=1,2,...,n):

                                                                            

一個優化問題可以從兩個角度考察,即主問題和對偶問題,對於優化問題而言,常通過將拉格朗日乘子L(x,λ,u)求導並令為0,來獲得對偶函式的表達形式。下面就看一下支援向量機如何通過拉格朗日乘子法轉化為對偶問題,從而求解最優超平面。

3.支援向量機的對偶問題解決

先看一下支援向量機的目標函式與約束函式:

                                                                    

                                                            s.t.           

對每條約束新增拉格朗日乘子αi≥0,則該問題的拉格朗日函式可寫為:

                                                           

其中α=(α1,α2,...,αm),令L(w,b,α)對w和b求偏導為0可得(此處涉及到矩陣求導):

                                                                 

                                                                 

將上式帶入拉格讓日函式中w和b消去:

                                                  

                                                                   

                                                                   

                                                                    

從而得到對偶問題:

                                                                 

                                                         s.t    .

                                                                  

解出α後,通過

                                                                   

即可得到w,b的求解通過任一支援向量即可求出,因為在支援向量處,滿足,現在我們已經求出w,xi,yi也已知,所以也可以順利求出b,這樣引數w,b全部求出,我們的最優超平面也就被w和b所限定。根據 上文多約束推廣的KKT條件,推出支援向量機優化問題的KKT條件:

                                                                       

總結:

通俗來講,對偶問題就是使求解更加高效且目標函式值不變,通過先消去w,b,得到關於α的函式,然後單獨計算 α,通過得到的α反求w,b,最後獲得超平面的引數,相比於先對α的不等式約束進行計算,對偶的方式使得計算更加便捷。另外KKT條件就是在約束下求得目標函式極值時αi滿足的條件,只有滿足了kkt條件,才算是滿足了目標函式和約束函式,因此之後介紹的計算迭代演算法也是基於KKT條件,通過不斷修改不滿足KKT條件的α,使其滿足KKT條件,從而求出目標函式的最優值。下篇文章將主要推導一種計算w和b的高效演算法-SMO演算法,看看實際中如何通過對偶問題公式推出α,從而由α推出w和b.本文主要參考西瓜書,有問題歡迎大家交流~