拉格朗日乘子法(Lagrange Multiplier)? 和 KKT(Karush-Kuhn-Tucker)? 條件是求解約束優化問題的重要方法,在有等式約束時使用拉格朗日乘子法,在有不等約束時使用 KKT 條件。當然,這兩個方法求得的結果只是必要條件,只有當目標函數是凸函數的情況下,才能保證是充分必要條件。
拉格朗日乘子法
基本的拉格朗日乘子法(又稱為拉格朗日乘數法),是一個最優化問題,就是求函數 f(x1,x2,...) 在 g(x1,x2,...)=0 的約束條件下的極值的方法。其主要思想是引入一個新的參數 λ (即拉格朗日乘子),將約束條件函數與原函數聯系到一起,使能配成與變量數量相等的等式方程,從而求出得到原函數極值的各個變量的解。
方法:
假設需要求極值的目標函數?(objective function) 為 f(x,y) ,約束條件為 φ(x,y)=M 。
設 g(x,y)=M-φ(x,y) ,定義一個新函數F(x,y,λ)=f(x,y)+λg(x,y) ,則用偏導數方法列出方程:
?F/?x=0
?F/?y=0
?F/?λ=0
求出 x,y,λ 的值,代入即可得到目標函數的極值。
KKT條件
優化問題中既包含等式約束和不等式約束是最復雜也最常見的模型。問題的建模為:
對于等式約束,可以引入拉格朗日乘子進行轉換。我們著重看下不等式約束。
我們定義不等式約束下的拉格朗日函數?L,則?L?表達式為:
?
求出的極值點?x??滿足 KKT 條件:?
注意:f(x),g(x) 都是凸函數。
參考:機器學習——最優化問題:拉格朗日乘子法、KKT條件以及對偶問題 - 多發Paper哈 - 博客園 (cnblogs.com)