SVM(二)从拉格朗日对偶问题到SVM
2.1 拉格朗日對偶(Lagrange duality)
???? 先拋開上面的二次規劃問題,先來看看存在等式約束的極值問題求法,比如下面的最優化問題:
????????
??? 目標函數是f(w),下面是等式約束。通常解法是引入拉格朗日算子,這里使用來表示算子,得到拉格朗日公式為
????????
??? L是等式約束的個數。
??? 然后分別對w和求偏導,使得偏導數等于0,然后解出w和。至于為什么引入拉格朗日算子可以求出極值,原因是f(w)的dw變化方向受其他不等式的約束,dw的變化方向與f(w)的梯度垂直時才能獲得極值,而且在極值處,f(w)的梯度與其他等式梯度的線性組合平行,因此他們之間存在線性關系。(參考《最優化與KKT條件》)
然后我們探討有不等式約束的極值問題求法,問題如下:
????????
??? 我們定義一般化的拉格朗日公式
??? 這里的和都是拉格朗日算子。如果按這個公式求解,會出現問題,因為我們求解的是最小值,而這里的已經不是0了,若將調整成很大的正值,最后的函數結果是負無窮。因此我們需要排除這種情況,我們定義下面的函數:
????
??? 這里的P代表primal。假設或者,那么我們總是可以調整和來使得有最大值為正無窮。而只有g和h滿足約束時,為f(w)。這個函數的精妙之處在于,而且求極大值。(只有ai=0,g(w)<0或者ai>0,g(w)=0值才會最大)
??? 因此我們可以寫作
????
??? 這樣我們原來要求的min f(w)可以轉換成求了。???
????
??? 我們使用來表示。如果直接求解,首先面對的是兩個參數,而也是不等式約束,然后再在w上求最小值。這個過程不容易做,那么怎么辦呢?
??? 我們先考慮另外一個問題
??? D的意思是對偶,將問題轉化為先求拉格朗日關于w的最小值,將和看作是固定值。之后在求最大值的話:
??? 這個問題是原問題的對偶問題,相對于原問題只是更換了min和max的順序,而一般更換順序的結果是Max Min(X) <= MinMax(X)。然而在這里兩者相等。用來表示對偶問題如下:
????
??? 下面解釋在什么條件下兩者會等價。假設f和g都是凸函數,h是仿射的(affine,)。并且存在w使得對于所有的i,。在這種假設下,一定存在使得是原問題的解,是對偶問題的解。還有另外,滿足庫恩-塔克條件(Karush-Kuhn-Tucker, KKT condition),該條件如下:
????
??? 所以如果滿足了庫恩-塔克條件,那么他們就是原問題和對偶問題的解。讓我們再次審視公式(5),這個條件稱作是KKT dual complementarity條件。這個條件隱含了如果,那么。也就是說,時,w處于可行域的邊界上,這時才是起作用的約束。而其他位于可行域內部(的)點都是不起作用的約束,其。這個KKT雙重補足條件會用來解釋支持向量和SMO的收斂測試。
??? 這部分內容思路比較凌亂,還需要先研究下《非線性規劃》中的約束極值問題,再回頭看看。KKT的總體思想是將極值會在可行域邊界上取得,也就是不等式為0或等式約束里取得,而最優下降方向一般是這些等式的線性組合,其中每個元素要么是不等式為0的約束,要么是等式約束。對于在可行域邊界內的點,對最優解不起作用,因此前面的系數為0。
2.2 線性可分
??? 重新回到SVM的優化問題:
????
??? 我們將約束條件改寫為:
????
??? 從KKT條件得知只有函數間隔是1(離超平面最近的點),對于在線上的點(),前面的系數,對于其他的不在線上的點(),極值不會在他們所在的范圍內取得,因此前面的系數,注意每一個約束式實際對應一個訓練樣本。
??? 看下面的圖:
??? 實線是最大間隔超平面,假設×號的是正例,圓圈的是負例。在虛線上的點就是函數間隔是1的點,那么他們前面的系數,其他點都是。這三個點稱作支持向量。構造拉格朗日函數如下: ???
????
??? 注意到這里只有沒有是因為原問題中沒有等式約束,只有不等式約束。
??? 下面我們按照對偶問題的求解步驟來一步步進行,
????
??? 首先求解的最小值,對于固定的,的最小值只與w和b有關。對w和b分別求偏導數。
????
????
??? 并得到
????
??? 將上式帶回到拉格朗日函數中得到,此時得到的是該函數的最小值(目標函數是凸函數)
??? 代入后,化簡過程如下:
?????
最后得到
???? 由于最后一項是0,因此簡化為
????
??? 這里我們將向量內積表示為
??? 此時的拉格朗日函數只包含了變量。然而我們求出了才能得到w和b。
??? 接著是極大化的過程,
??? 前面提到過對偶問題和原問題滿足的幾個條件,首先由于目標函數和線性約束都是凸函數,而且這里不存在等式約束h。存在w使得對于所有的i,。因此,一定存在使得是原問題的解,是對偶問題的解。在這里,求就是求了。
??? 如果求出了,根據即可求出w(也是,原問題的解)。然后
????
??? 即可求出b。即離超平面最近的正的函數間隔要等于離超平面最近的負的函數間隔。
??? 關于上面的對偶問題如何求解,將在SMO算法一章中來闡明。
??? 這里考慮另外一個問題,由于前面求解中得到
????
??? 我們通篇考慮問題的出發點是,根據求解得到的,我們代入前式得到
????
??? 也就是說,以前新來的要分類的樣本首先根據w和b做一次線性運算,然后看求的結果是大于0還是小于0,來判斷正例還是負例。現在有了,我們不需要求出w,只需將新來的樣本和訓練數據中的所有樣本做內積和即可。那有人會說,與前面所有的樣本都做運算是不是太耗時了?其實不然,我們從KKT條件中得到,只有支持向量的,其他情況。因此,我們只需求新來的樣本和支持向量的內積,然后運算即可。
2.3 線性不可分
我們之前討論的情況都是建立在樣例線性可分的假設上,當樣例線性不可分時,我們可以嘗試使用核函數來將特征映射到高維,這樣很可能就可分了。然而,映射后我們也不能100%保證可分。那怎么辦呢,我們需要將模型進行調整,以保證在不可分的情況下,也能夠盡可能地找出分隔超平面。
看下面兩張圖:
可以看到一個離群點(可能是噪聲)可以造成超平面的移動,間隔縮小,可見以前的模型對噪聲非常敏感。再有甚者,如果離群點在另外一個類中,那么這時候就是線性不可分了。
這時候我們應該允許一些點游離并在在模型中違背限制條件(函數間隔小于1)。我們設計得到新的模型如下(也稱軟間隔):
引入非負參數后(稱為松弛變量),就允許(1)某些樣本點的函數間隔小于1,即在最大間隔區間里面,(2)函數間隔是負數,即樣本點在對方的區域中。而放松限制條件后,我們需要重新調整目標函數,以對離群點進行處罰,目標函數后面加上的就表示離群點越多,目標函數值越大,而我們要求的是盡可能小的目標函數值。這里的C是離群點的權重,C越大表明離群點對目標函數影響越大,也就是越不希望看到離群點。我們看到,目標函數控制了離群點的數目和程度,使大部分樣本點仍然遵守限制條件。
模型修改后,拉格朗日公式也要修改如下:
這里的和都是拉格朗日乘子,回想我們在拉格朗日對偶中提到的求法,先寫出拉格朗日公式(如上),然后將其看作是變量w和b的函數,分別對其求偏導,得到w和b的表達式。然后代入公式中,求帶入后公式的極大值。整個推導過程類似以前的模型,這里只寫出最后結果如下:
此時,我們發現沒有了參數,與之前模型唯一不同在于又多了的限制條件。需要提醒的是,b的求值公式也發生了改變,改變結果在SMO算法里面介紹。先看看KKT條件的變化:
上面式子分別表明在兩條間隔線外的樣本點前面的系數為0,離群樣本點前面的系數為C,而支持向量(也就是在超平面兩邊的最大間隔線上)的樣本點前面系數在(0,C)上。通過KKT條件可知,某些在最大間隔線上的樣本點也不是支持向量,相反也可能是離群點。
總結
以上是生活随笔為你收集整理的SVM(二)从拉格朗日对偶问题到SVM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SVM(一) 问题的提出
- 下一篇: SVM(四)KSVM