拉格朗日函數轉換爲拉格朗日對偶函數
Why need
求極值,最簡單的方法還是對參數求導後讓一階導數等於0。先來試試對拉格朗日函數求極值,在這裏對參數向量和截距分別求偏導並且讓他們等於0。這個求導過程比較簡單:
由於兩個求偏導結果中都帶有未知的拉格朗日乘數αi,因此還是無法求解出ω和b,必須想出一種方法來求解拉格朗日乘數αi。幸運地是,拉格朗日函數可以被轉換成一種只帶αi,不帶ω和b的形式,這種形式被稱爲拉格朗日對偶函數。在對偶函數下,就可以求解出拉格朗日乘數,
然後帶入到上面推導出的(1)和(2)式中來求解ω和b。
Why can
對於任何一個拉格朗日函數,都存在一個與它對應的對偶函數g(α),只帶有拉格朗日乘數α作爲唯一參數。如果L(x,α)的最優解存在並可以表示爲minxL(x,α),並且對偶函數的最優解也存在並可以表示爲maxαg(α),則可以定義對偶差異(dual gap),即拉格朗日函數的最優解與其對偶函數的最優解之間的差值:
如果Δ=0,則稱L(x,α)與其對偶函數g(α)之間存在強對偶關係(strong duality property),可以通過求解其對偶函數的最優解來替代求解原始函數的最優解。強對偶關係存在的條件:這個拉格朗日函數必須滿足KKT(Karush-Kuhn-Tucker)條件(在優化理論中,KKT條件是非線性規劃(nonlinear programming)最佳解的必要條件):
這裏的條件其實都比較好理解。首先是所有參數的一階導數必須爲0,然後約束條件中的函數本身需要小於等於0,拉格朗日乘數需要大於等於0,以及約束條件乘以拉格朗日乘數必須等於0,即不同的取值下,兩者之中至少有一個爲0。當所有限制都被滿足,則拉格朗日函數L(x,α)的最優解與其對偶函數的最優解相等,就可以將原始的最優化問題轉換成爲對偶函數的最優化問題。
不難注意到,對於損失函數L(ω,b,α)而言,KKT條件都是可以操作的。如果能夠人爲讓KKT條件全部成立,就可以求解出L(ω,b,α)的對偶函數來解出α。
之前我們已經讓拉格朗日函數上對參數w和b的求導爲0,得到了式子:
並且在函數中,通過先求解最大值再求解最小值的方法使得函數天然滿足:
所以接下來,我們只需要再滿足一個條件:
這個條件其實很容易滿足,能夠讓的就是落在虛線的超平面上的樣本點,即支持向量。所有不是支持向量的樣本點則必須滿足αi=0。滿足這個式子說明,求解的參數ω和b以及求解的超平面的存在,只與支持向量相關,與其他樣本點都無關。現在KKT的五個條件都得到了滿足,就可以使用L(ω,b,α)的對偶函數來求解α了。
How
首先讓拉格朗日函數對參數ω和b求導後的結果爲0,本質是在探索拉格朗日函數的最小值。然後:
代入式(1)和式(2)有:
再次帶入式(1)則有:
令這兩個ω源於不同的特徵矩陣和標籤:
將矩陣相乘轉換爲內積形式:
函數Ld就是對偶函數(拉格朗日函數對參數ω和b求導後的結果爲0(即:L(ω,b,α)最小值)對應的函數)。對所有存在對偶函數的拉格朗日函數我們有對偶差異如下表示:
則對於L(ω,b,α)和Ld,我們則有:
推導Ld的第一步是對L(ω,b,α)求偏導並讓偏導數都爲0,所以求解對偶函數的過程其實是在求解L(ω,b,α)的最小值,所以公式又可以寫成:
這就是對偶函數與原始函數的轉化過程的由來。如此,只需要求解對偶函數的最大值,就可以求出α。最終,目標函數變化爲:
決策函數
到了這一步,我們就需要使用梯度下降,序列最小優化(SMO,Sequential minimal optimization)或者二次規劃(QP,quadratic programming)來求解α,數學的難度又進一步上升。考慮到這一過程對數學的要求已經遠遠超出了我們需要的程度,更是遠遠超出我們在使用sklearn時需要掌握的程度,如何求解對偶函數中的在這裏就不做講解了。
但需要知道,一旦求得了α值,我們就可以使用求導後得到的(1)式求解ω,並可以使用(1)式和決策邊界的表達式結合,得到下面的式子來求解b:
當求得特徵向量ω和b,就得到了決策邊界的表達式,也就可以利用決策邊界和其有關的超平面來進行分類了,決策函數就可以被寫作:
其中xtest是任意測試樣本, sign(h)是h>0時返回1,h<0時返回-1的符號函數。到這裏,完成了對SVM的第二層理解的大部分內容,瞭解了線性SVM的四種相關函數:損失函數的初始形態,拉格朗日函數,拉格朗日對偶函數以及最後的決策函數。熟練掌握以上的推導過程,對理解支持向量機會有極大的助益,也是對數學能力的一種完善。