卡羅需-庫恩-塔克條件(Karush-Kuhn-Tucker conditions)
/ Karush: KAR-oosh; Kuhn: koon; Tucker: TUK-er /
拉格朗日乘數把等式約束處理得很漂亮,但真實問題還帶著不等式:守住預算,讓量保持非負,不超過產能。卡羅需-庫恩-塔克條件,簡稱 KKT,是這類混合問題的最優點必須滿足的一階必要條件總集。它們是現代受約束最佳化的基石。
它有四個組成部分。穩定性:目標梯度被各約束梯度的加權和所平衡,grad f = sum of mu_i 乘 grad g_i 加上等式項——正是拉格朗日條件的推廣。原始可行性:該點確實服從全部約束。對偶可行性:不等式約束上的乘數符號正確(標準設置下為非負),因為單邊圍欄只能推、絕不能拉。還有互補鬆弛,最微妙的一條:對每條不等式,要麼約束起作用(緊繃,g = 0),要麼它的乘數為零——你不能讓一條鬆弛的約束仍然施力。互補鬆弛恰恰是起作用與否的代數表述。
KKT 是線性規劃、二次規劃、支持向量機、最優控制和經濟均衡模型背後的引擎。關鍵的誠實之處:KKT 條件作為最優的必要條件,僅在某個約束品性條件(起作用約束梯度的某種正則性)下成立,而且一般而言它們是必要而非充分的——一個點可以滿足 KKT 卻仍非最優。最大的例外是凸問題:在那裡,若約束良好,KKT 既必要又充分,任何 KKT 點都是全域最優。這正是凸性如此被看重的原因。
在 x 大於等於 1(寫作 g(x) = 1 - x 小於等於 0)下求 f(x) = x^2 的極小。KKT 穩定性給出 2x - mu = 0 且 mu 大於等於 0,互補鬆弛為 mu(1 - x) = 0。約束起作用:x = 1, mu = 2,即受約束極小。
互補鬆弛迫使約束要麼緊繃、要麼乘數為零——這裡約束是緊繃的。
在非凸問題中,KKT 點只是候選——是必要而非充分條件。只有對滿足約束品性的凸問題,滿足 KKT 才保證真正的全域最優。