1. 程式人生 > >拉格朗日乘子法和KKT條件

拉格朗日乘子法和KKT條件

數值 想象 radi 如果 ont inf 解決 tex spa

1. 拉格朗日乘子(Lagrange Multiplier)法

假設函數z=f(x,y),求該函數的最小值,如果沒有約束條件,則可以表示為minf(x,y),要求出minf(x,y)很簡單,根據Fermat定理,分別對x和y求導數並讓其等於0,如果是凸函數,則求出來的點就是函數取得最小值的點,該點的函數值即f(x,y)的最小值。

如果有等式約束條件g(x,y)=c,g(x,y)=c為(x,y)平面上的一條曲線,想象f(x,y)的等高線下降,當等高線和g(x,y)=c有交點時,滿足約束條件,但肯定不是最優值,因為還可以繼續下降。只有當下降到f(x,y)和g(x,y)=c相切時,這時兩條曲線的切點處的f(x,y)的值才是最優值,如下圖所示。

技術分享

由上圖可知,在切點處,兩條曲線擁有共線的法向量,所以兩條曲線的梯度(Gradient)成正比,即技術分享,相當於把目標函數和約束條件寫成一個函數,然後對該函數求導等於0,即可求得最優值。如果約束條件有多個,方法也是一樣的。

所以,對於這類問題可以表示為:

技術分享

解決的方法是將目標函數和約束條件寫成一個式子:

技術分享

分別對xi求導數並讓其等於0,可求得最優值。

2. KKT條件

以上是等式約束,如果是不等式約束的話,問題變成了:

技術分享

可以想象,多個約束條件構成了一個區域,這個區域就是自變量的範圍。最優值肯定在這個區域的某一個頂點處取得,此時和這個頂點相關的約束條件等於0,和這個頂點不相關的約束條件(即不需要考慮的約束條件)不等於0。如下圖所示,g1(x)、g2(x)、g3(x)圍成了一個區域,最優值在g1(x)和g3(x)的交點處取得,此時g2(x)不需要考慮,則g1(x)和g3(x)的值為0,前面的系數可以不為0,g2(x)不為0,前面的系數必須為0。

技術分享

因此,同樣的可以把目標函數和約束條件寫成一個式子:

技術分享

對於技術分享,要麽b=0,要麽g(xi)=0,所以必須有技術分享

如果同時存在等式約束和不等式約束,則

技術分享

那麽最優值必須滿足以下3個條件:

(1) L對xi求導等於0;

(2)技術分享

(3)技術分享

以上就是KKT條件。

拉格朗日乘子法和KKT條件