BFGS算法

一種求解無約束非線性優化問題的疊代算法

數值優化中, Broyden–Fletcher–Goldfarb–Shanno(BFGS)算法是一種求解無約束非線性優化問題的迭代算法[1]和相關的Davidon–Fletcher–Powell算法類似,BFGS算法通過利用曲率信息對梯度進行預處理來確定下降方向。曲率信息則是通過維護一個使用廣義的割線法逐步近似的關於損失函數Hessian矩陣來獲得。

算法

從起始點 和初始的Hessian矩陣 ,重複以下步驟, 會收斂到優化問題的解:

  1. 通過求解方程 ,獲得下降方向 
  2.  方向上進行一維的優化(線搜索),找到合適的步長 。如果這個搜索是完全的,則  。在實際應用中,不完全的搜索一般就足夠了,此時只要求 滿足Wolfe條件
  3.  ,並且令 
  4.  
  5.  

 表示要最小化的目標函數。可以通過檢查梯度範數  判斷收斂性。如果 初始化為 ,第一步將等效於梯度下降,但接下來的步驟會受到近似於Hessian矩陣 的調節。

拓展閱讀

參考文獻

  1. ^ Fletcher, Roger, Practical Methods of Optimization 2nd, New York: John Wiley & Sons, 1987, ISBN 978-0-471-91547-8