ML優化拉格朗日與KKT

拉格朗日乘子法

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

基本的拉格朗日乘子法就是求函數f(x1,x2,...)g(x1,x2,...)=0 的約束條件下的極值的方法。主要思想是將約束條件與原函數聯繫在一起,使能配成與變量數量相等的等式方程,從而求得原函數極值的各個變量的解。


例子:假設需要求極值的目標函數爲f(x) ,約束條件爲ϕ(x,y)=M

g(x,y)=Mϕ(x,y) ,定義一個新函數F(x,y,λ)=f(x,y)+λg(x,y)

求偏導:

Fx=0Fy=0Fλ=0

求出x,y,λ 的值,代入即可得到目標函數的極值。


機器學習中的拉格朗日乘子法,一般用於求解約束優化問題的方法,當目標函數是凸函數時,求解最小值,使用拉格朗日乘子法求得的局部最優解就是全局最優解。類似的,在凹函數中,求得的最大值,局部最大解就是全局最大解。

在沒有約束條件下,直接使用求導取指即可,但是有了約束條件後,就不能這樣任意的小了,需要首先滿足約束條件之後再求解。

在二維空間中求解,假設約束條件是一個曲線:這裏寫圖片描述

環線是目標函數的取值的等高線,需要緊貼約束線來滿足約束條件求得理想值。

圖中可以很清晰的看出來,與約束條件相切的等高線正合適。至於其他的與約束條件曲線相切的都不能考慮,因爲這種取值一部分是符合約束條件的,一部分不能滿足約束條件。

曲線相切,實際上就是法線向量平行,同方向或者反方向。最優解處,f和g的斜率平行。也就是說,存在一個非零實數與其中一個斜率相乘,等於另外一個曲線的斜率。這個實數稱之爲λ ,或者λ 隨便啦

[f(x,y)+λ(g(x,y)c)]=0

一旦求出λ的值,將其套入下式,易求在無約束極值和極值所對應的點。

F(x,y)=f(x,y)+λ(g(x,y)c)

新方程F(x,y) 在達到極值時與f(x,y) 相等,因爲F(x,y) 達到極值時g(x,y)c 總等於零。

定義拉格朗日函數:L(x,λ)=f(x)+λg(x) 將其對x 的偏導數xL(x,λ) 置零即得式子f(x)+λg(x)=0 ;同時對λ 的偏導數λL(x,λ) 置零即得約束條件g(x)=0 。所以原約束問題轉換成了對拉格朗日函數L(x,λ) 的無約束優化問題。

KKT

這裏寫圖片描述

KKT

現在考慮不等式g(x)0 ,如上圖,此時最優點x 或者在g(x)<0 也就是環形區域內;或者在g(x)=0 環形線上。

對於g(x)<0 的情況,約束g(x)0 不起作用,可以直接通過條件f(x)=0 來獲得最優點,這裏等價於將λ=0 之後求解xL(x,λ)=0

g(x)=0 的情況類似與上圖左側,但是有一些區別。在拉格朗日乘子中,約束條件g(x)f(x) 保持梯度平行即可,可就是說參數λ 無關正負;到了這裏,我們好好分析一下,假設兩者的梯度是同方向的,都是向外(就是環線區域外,相反方向當然也可以)。我們都知道,函數是按沿着梯度方向增大,所以f(x) 在區域外的值是大於區域內的值,也就是說,區域內的值是小值。我們的目標就是在約束條件下求minf(x) ,這裏區域內是滿足約束條件的,所以最優值顯然不在環線上取,而是在區域內取。如果我們非要在環線上取怎麼辦?兩個函數的梯度方向相反。這樣才符合我們的認知嘛,梯度相反,同一個方向一個變小一個變大,環線是臨界值,很符合人們的羅輯思維。

接着說不等式約束條件,整合上面的兩種情況:

  • g(x)<0 ,約束條件不起作用,使λ=0
  • g(x)=0 ,約束條件使得λ>0

所以必有λg(x)=0

KKT條件推出來了:

g(x)0;λ0;μjgj(x)=0;

推廣

推廣到多個約束,考慮有m個等式約束和n個不等式約束,優化問題

minxf(x)s.t.hi(x)=0  (i=1,...,m),gj(x)0  (j=1,...,n).

引入拉格朗日乘子λ=(λ1,λ2,...,λm)Tμ=(μ1,μ2,...,μn)T ,相應的拉格朗日函數爲

L(x,λ,μ)=f(x)+i=1mλihi(x)+j=1nμjgj(x)

引入的拉格朗日乘子條件與KKT條件爲:

hi(x)=0;λi0;gj(x)0;μj0;μjgj(x)=0.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章