1. 程式人生 > >機器學習方法篇(12)------拉格朗日乘子法

機器學習方法篇(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條件我下節再講,敬請期待。

結語

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

face