拉格朗日乘子法原理:等式約束和不等式約束KKT條件

拉格朗日乘子法是尋找函數在一組約束下的極值方法。

1、等式約束

形式:(x是d維向量)

min f(x)

s.t. h(x) = 0.

寫成如下形式:

min f(x)+lambda*h(x)(lambda爲參數)

s.t. h(x) = 0.

發現兩者是等價的。

記:拉格朗日函數L(x,lambda) = f(x)+lambda*h(x).

發現約束條件h(x)=0,其實就是對拉格朗日函數L(x,lambda)關於lambda求偏導等於0得到,略去該約束,繼而原約束優化問題就轉化成了對拉格朗日函數L(x,lambda)的無約束優化問題(即令L關於x和lambda的偏導等於0求解)。

幾何解釋:

原目標函數f(x)取得最小化點x*時,可以得到如下結論:

a.約束曲面上的任意點x,該點的梯度正交於約束曲面;

b.在最優點x*,目標函數在該點的梯度正交於約束曲面(可以反正:若目標函數梯度與約束曲面不正交,則總可以在約束曲面上移動該點使目標函數進一步減小)。

所以,在最優點x*,梯度f(x*)和h(x*)的方向相同或相反,即存在lambda!=0,使:

▽f(x*)+lambda*▽h(x*)=0.        (1式)

定義拉格朗日函數:L(x,lambda) = f(x)+lambda*h(x).

令L(x,lambda)對x的偏導數等於0,得到1式;令L(x,lambda)對lambda的偏導數等於0,得到約束條件h(x)=0。於是,原約束優化問題轉化爲無約束優化問題。

 

2、不等式約束

形式:

min f(x)

s.t. g(x) <= 0.

同樣定義拉格朗日函數L(x,lambda) = f(x)+lambda*g(x).

此時,首先看目標函數f(x)在無約束條件下的最優點,顯然要麼在g(x)<=0的區域內,要麼在g(x)>0的區域內。

f(x)在無約束條件下的最優點g(x)<=0區域內,則約束條件g(x)<=0不起作用(即可直接求min f(x),得到的結果必然滿足g(x)<=0),相當於lambda=0;

f(x)在無約束條件下的最優點不g(x)<=0區域內,則f(x)在約束條件下的最優點必然在g(x)<=0區域邊界,即在邊界g(x)=0上。此類情形類似於等式約束,但此時梯度f(x*)▽g(x*)的方向相反(梯度方向是函數值增大最快的方向),即存在lambda>0,使▽f(x*)+lambda*▽g(x*)=0

整合上述兩種情形,必有lambda*g(x) = 0。所以原不等式約束問題就轉化爲:

min L(x,lambda)

s.t. g(x)<=0,

lambda>=0,

lambda*g(x)=0.

上面的約束條件即爲KKT條件。

微信交流
多謝打賞

參考資料:周志華《機器學習》

參考博文:拉格朗日乘子法及KKT條件證明

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章