文章結構如下:
1: 等式約束優化問題
2: 不等式約束優化問題
3: 一個例子
注:本文來自臺灣周志成老師《線性代數》及其博客
Karush-Kuhn-Tucker (KKT)條件是非線性規劃(nonlinear programming)最佳解的必要條件。KKT條件將Lagrange乘數法(Lagrange multipliers)所處理涉及等式的約束優化問題推廣至不等式。在實際應用上,KKT條件(方程組)一般不存在代數解,許多優化算法可供數值計算選用。這篇短文從Lagrange乘數法推導KKT條件並舉一個簡單的例子說明解法。
1: 等式約束優化問題
給定一個目標函數 ,我們希望找到 ,在滿足約束條件 的前提下,使得 有最小值。這個約束優化問題記爲
爲方便分析,假設 與 是連續可導函數。Lagrange乘數法是等式約束優化問題的典型解法。定義Lagrangian函數
其中 稱爲Lagrange乘數。Lagrange乘數法將原本的約束優化問題轉換成等價的無約束優化問題
計算 對 與 的偏導數並設爲零,可得最優解的必要條件:
其中第一式爲定常方程式(stationary equation),第二式爲約束條件。解開上面 個方程式可得 的stationary point 以及 的值(正負數皆可能)。
2: 不等式約束優化問題
接下來我們將約束等式 推廣爲不等式 。考慮這個問題
約束不等式 稱爲原始可行性(primal feasibility),據此我們定義可行域(feasible region) 。假設 爲滿足約束條件的最佳解,分開兩種情況討論:
(1) ,最佳解位於 的內部,稱爲內部解(interior solution),這時約束條件是無效的(inactive);
(2) ,最佳解落在 的邊界,稱爲邊界解(boundary solution),此時約束條件是有效的(active)。
這兩種情況的最佳解具有不同的必要條件。
(1)內部解:在約束條件無效的情形下, 不起作用,約束優化問題退化爲無約束優化問題,因此駐點 滿足 且 。
(2)邊界解:在約束條件有效的情形下,約束不等式變成等式 ,這與前述Lagrange乘數法的情況相同。我們可以證明駐點 發生於 ,換句話說,存在 使得 ,但這裏 的正負號是有其意義的。因爲我們希望最小化 ,梯度 (函數 在點 的最陡上升方向)應該指向可行域 的內部(因爲你的最優解最小值是在邊界取得的),但 指向 的外部(即 的區域,因爲你的約束是小於等於0),因此 ,稱爲對偶可行性(dual feasibility)。
因此,不論是內部解或邊界解, 恆成立,稱爲互補鬆弛性(complementary slackness)。整合上述兩種情況,最佳解的必要條件包括Lagrangian函數 的定常方程式、原始可行性、對偶可行性,以及互補鬆弛性:
這些條件合稱爲Karush-Kuhn-Tucker (KKT)條件。如果我們要最大化 且受限於 ,那麼對偶可行性要改成 。
上面結果可推廣至多個約束等式與約束不等式的情況。考慮標準約束優化問題(或稱非線性規劃):
定義Lagrangian 函數
其中 是對應 的Lagrange乘數, $是對應 的Lagrange乘數(或稱KKT乘數)。KKT條件包括
注:感謝評論區 追夢的lin 提出,在使用KKT條件時需要滿足Regularity conditions (or constraint qualifications),維基在第三部分有了介紹:Karush-Kuhn-Tucker conditions 。比較常見的是Linearity constraint qualification (LCQ),即約束條件是仿射函數。
3: 一個例子
考慮這個問題
其中 爲實數。寫出Lagrangigan函數
KKT 方程組如下:
求偏導可得 且 ,分別解出 且 。代入約束等式 或 。合併上面結果,
最後再加入約束不等式 或 。底下分開三種情況討論。
(1) :不難驗證 滿足所有的KKT條件,約束不等式是無效的, 是內部解,目標函數的極小值是 。
(2) :如同1, 滿足所有的KKT條件, 是邊界解,因爲 。
(3) :這時約束不等式是有效的, ,則 且 ,目標函數的極小值是 。
4: 參考文獻
周志成:《線性代數》,國立交通大學出版社