機器學習方法篇(12)------拉格朗日乘子法

● 每週一言

不忘初心,方得始終。

導語

上一節講到SVM的優化公式,並提到SVM在強大的數學理論背景之下有着十分高效的訓練方法。本節就先講講其中的一個關鍵知識點——拉格朗日乘子法,爲之後深入講解SVM做準備。

拉格朗日乘子法

在機器學習中,模型的優化目標通常是最小化損失函數的值,即loss最小。從數學角度看,這類優化問題又可以分爲以下三種情況:
1. 無約束優化問題:min L(x);
2. 等式約束優化問題:min L(x);s.t. h_i(x) = 0,i =1, …, n;
3. 不等式約束優化問題:min L(x);s.t. g_i(x) <= 0,h_i(x) = 0,i =1, …, n。

如果是凸優化(簡單地說就是集合內任意連線均屬於該集合,SVM是凸優化問題),對於第一種情況,可以直接求導得出最優解。

對於帶等式約束的第二種情況,常用的求解方法就是本文要講的拉格朗日乘子法。這裏不妨借用一個例子來闡明什麼是拉格朗日乘子法。

有如下等式約束的凸優化問題,求解f的最小值:

fig1

如果不帶等式約束,f直接對x1、x2、x3求偏導等於0即可。而在有等式約束的條件下,拉格朗日乘子法的作用就是幫助我們去掉這些等式,具體方式爲把這些約束分別乘一個係數加到目標函數f當中去,如下圖所示:
fig2

這樣處理,既保證了兩個等式約束在不影響原函數值的情況下保持成立,又使優化問題變成了第一種不帶約束的情況。因此,可以直接f對x1、x2、x3求偏導,得到如下式子:
fig3

把上式的x1、x2和x3分別帶入兩個等式約束中,便得到一個關於α1和α2的二元一次方程組,求解得到α1 = −0.39,α2 = −1.63,再帶入上式就得到了x1、x2和x3的解。

不過,樸素的拉格朗日乘子法只能解決等式約束優化問題。對於第三種情況關於不等式的約束優化問題,需要使用拉格朗日乘子法的加強版——KKT條件。而SVM的優化問題正屬於這第三種情況。關於KKT條件我下節再講,敬請期待。

文中舉例來源:http://blog.csdn.net/on2way/article/details/47729419

結語

感謝各位的耐心閱讀,後續文章於每週日奉上,敬請期待。歡迎大家關注小鬥公衆號 對半獨白

face

發佈了91 篇原創文章 · 獲贊 113 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章