數值最佳化

BFGS 法(BFGS)

/ B-F-G-S, spelled out /

BFGS 是最受歡迎的單一擬牛頓法——許多軟體程式庫最小化光滑函數時的預設選擇。它的名字堆疊了 1970 年各自獨立發現同一更新式的四個人:Broyden、Fletcher、Goldfarb、Shanno。其想法和所有擬牛頓法一樣:享受牛頓那種由曲率驅動的速度,同時只從梯度建構曲率,從不計算或儲存真正的海森矩陣。

BFGS 維護一個對逆海森矩陣的近似,稱之 M_k,於是步進就只是個矩陣乘向量 p = -M_k grad f(x_k)(不需解線性系統)。在以 s_k = x_{k+1} - x_k 移動並觀察梯度變化 y_k = grad f(x_{k+1}) - grad f(x_k) 之後,它套用 BFGS 更新——對 M_k 的一個秩二修正,能(甲)滿足割線方程 H s_k = y_k,且(乙)只要曲率條件 y_k^T s_k > 0 成立(Wolfe 線搜尋可保證),就可證明地讓 M_k 保持對稱正定。正定很重要,因為它確保 p 永遠是真正的下降方向。完整 BFGS 儲存整個 n×n 矩陣;它著名的變體限記憶 BFGS(L-BFGS)只存最近 m 對 (s_k, y_k)——通常 m = 5 到 20——並隱式重建那個矩陣乘向量,把記憶從 O(n^2) 降到 O(m n),於是能擴展到數百萬個變數。

BFGS 與 L-BFGS 無所不在:訓練邏輯迴歸與條件隨機場、擬合科學模型,以及任何梯度可得的光滑中大型最小化。它們只用一階導數就達到超線性收斂,穩健且幾乎不必調參。誠實的適用範圍:它們假設目標相當光滑、梯度可靠;它們並不是大規模深度學習訓練那種有雜訊、迷你批次、隨機目標的合適工具(那裡由 Adam 等 SGD 家族稱霸,因為割線更新的曲率估計會被梯度雜訊汙染)。但對確定性、全梯度的光滑問題,L-BFGS 往往是難以擊敗的方法。

要擬合一個有 50,000 個權重的邏輯迴歸模型,L-BFGS 只保留最近 10 對梯度差——約 1 MB——而非一個 50,000×50,000 的逆海森矩陣(20 GB,不可能)。它在數十次迭代內收斂,每次只幾個便宜的內積,遠快於樸素梯度下降、也遠輕於完整牛頓法。

L-BFGS 只存幾個向量、而非矩陣——在記憶預算內接近牛頓。

BFGS 在光滑、確定性、全梯度問題上表現出色,但用於迷你批次深度學習是錯的預設:隨機梯度雜訊會汙染割線曲率估計,使更新失常。對有雜訊的目標,標準是帶動量的 SGD 或 Adam,而非(L-)BFGS。

又称
Broyden-Fletcher-Goldfarb-Shanno methodL-BFGSlimited-memory BFGS限記憶 BFGS擬牛頓 BFGS