拉格朗日乘子法


拉格朗日乘子法 (Lagrange multipliers)是一種尋找多元函數在一組約束下的極值的方法.通過引入拉格朗日乘子,可將有 d 個變量與 k 個約束條件的最優化問題轉化為具有 d + k 個變量的無約束優化問題求解。本文希望通過一個直觀簡單的例子盡力解釋拉格朗日乘子法和KKT條件的原理。


以包含一個變量一個約束的簡單優化問題為例。

如圖所示,我們的目標函數是$f(x)={x^2} + 4x - 1$,討論兩種約束條件$g(x)$:

(1)在滿足$x \le -1$ 約束條件下求目標函數的最小值;

(2)在滿足 $x \ge -1$約束條件$g(x)$下求目標函數的最小值。

\[\begin{array}{*{20}{l}}
{\mathop {\min }\limits_x f(x) = {x^2} + 4x - 1}\\
\begin{array}{l}
(1) s.t. x + 1 \le 0\\
(2) s.t. -x - 1 \le 0
\end{array}
\end{array}\]

 

我們可以直觀的從圖中得到,

對於約束(1)使目標值$f(x)$最小的最優解是$x=-2$;

對於約束(2)使目標值$f(x)$最小的最優解是$x=-1$。

下面我們用拉格朗日乘子來求解這個最優解。

當沒有約束的時候,我們可以直接令目標函數的導數為0,求最優值。可現在有約束,那怎么邊考慮約束邊求目標函數最優值呢?最直觀的辦法是把約束放進目標函數里,由於本例中只有一個約束,所以引入一個朗格朗日乘子$\lambda$,構造一個新的函數,拉格朗日函數$h(x)$,

\[h(x) = f(x) + \lambda g(x) \]

該拉格朗日函數$h(x)$最優解可能在$g(x) <0$區域中,或者在邊界$g(x) =0$上,下面具體分析這兩種情況,

當$g(x) <0$時,也就是最優解在$g(x) <0$區域中, 對應約束(1)$x \le -1$的情況。此時約束對求目標函數最小值不起作用,等價於$\lambda = 0$,直接通過條件$\nabla f(x*) = 0$,得拉格朗日函數$h(x)$最優解$x=-2$。

當$g(x) =0$時,也就是最優解在邊界$g(x) =0$上,對應約束(1)$x \ge -1$的情況。此時不等式約束轉換為等式約束,也就是在$\lambda>0$、約束起作用的情況下,通過求$\nabla f(x*) + \lambda \nabla g(x*)=0$,得拉格朗日函數$h(x)$最優解$x=-1$。

所以整合這兩種情況,必須滿足$\lambda g(x)=0$

因此約束$g(x)$最小化$f(x)$的優化問題,可通過引入拉格朗日因子轉化為在如下約束下,最小化拉格朗日函數$h(x)$,

\[\left\{ {\begin{array}{*{20}{c}}
{g(x) \le 0}\\
{\lambda \ge 0}\\
{\lambda g(x) \ge 0}
\end{array}} \right.\]

上述約束條件成為KKT條件。

該KKT條件可擴展到多個等式約束和不等式約束的優化問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM