數值最佳化

拉格朗日乘子(Lagrange multiplier)

/ luh-GRAHNZH /

你想登上山丘的最高點,但有道圍籬把你限制在一條固定的路徑上行走。你能到達的頂點,是路徑與山丘等高線相切之處——沿路徑移動不再讓你更高的地方。拉格朗日乘子正是找到這種受約束峰頂(與谷底)的優雅記帳技巧,它把「留在圍籬上」翻譯成一條關於梯度的乾淨方程。

考慮在約束 g(x) = 0(圍籬)下最小化 f(x)。在受約束最佳點,你無法靠沿約束曲面移動來減小 f——這恰好發生在 f 的梯度與 g 的梯度平行時:grad f = lambda * grad g,其中純量 lambda 就是拉格朗日乘子。等價地,定義拉格朗日函數 L(x, lambda) = f(x) - lambda * g(x);令它(對 x 與 lambda)的梯度為零,就還原出 grad f = lambda * grad g 連同約束 g(x) = 0。於是一個 n 變數、單一約束的受約束問題,變成一個 (n+1) 變數的無約束駐點問題——乘子 lambda 是強制約束成立的那個額外未知數。有多個約束時,每個約束各配一個乘子。

撇開機制不談,乘子有個優美的意義:lambda 是影子價格(shadow price)——它衡量若把約束放鬆一丁點,f 的最佳值會改變多少(若 g(x) = c,則 d(最佳 f)/dc = lambda)。在經濟學它是資源的邊際價值;在物理學是約束力;在機器學習是正則化問題中的權衡權重。誠實的提醒:乘子條件在正則的受約束最佳點(約束梯度線性獨立、即一個「約束品性條件」)上是必要的,它定位的是駐點、而非保證的極小——你仍須檢查二階條件,且該方法要推廣到不等式,只能透過更廣的 KKT 條件,那裡的乘子帶有正負號限制。

在 x + y = 10 的約束下最大化 f(x, y) = x y。拉格朗日函數是 x y - lambda (x + y - 10);其駐點條件給出 y = lambda、x = lambda 與 x + y = 10,故 x = y = 5、lambda = 5。乘子 lambda = 5 也說:把預算放寬到 x + y = 11,最佳值約上升 5。

在最佳點,grad f 與 grad g 對齊;lambda 是權衡比率。

乘子條件僅在約束梯度線性獨立的正則最佳點(一個約束品性條件)上是必要的。它也只定位駐點——須以二階條件確認極小——而對不等式約束,你需要完整的 KKT 條件,那裡乘子必須非負。

又称
multipliershadow pricelambda乘數影子價格