擬牛頓法:修订间差异

来自testwiki
跳转到导航 跳转到搜索
imported>Wolfch
无编辑摘要
 
(没有差异)

2024年10月26日 (六) 23:14的最新版本

擬牛頓法是一種以牛頓法為基礎設計的,求解非線性方程組或連續最優化問題函數的零點極大、極小值算法。當牛頓法中所要求計算的雅可比矩陣Hessian矩陣難以甚至無法計算時,擬牛頓法便可派上用場。

搜索極值

與牛頓法相同, 擬牛頓法是用一個二次函數以近似目標函數f(x). f(x)的二階泰勒展開

f(xk+Δx)f(xk)+f(xk)TΔx+12ΔxTBΔx.

其中, f表示f(x)梯度, B表示Hessian矩陣𝐇[f(x)]的近似. 梯度f可進一步近似為下列形式

f(xk+Δx)f(xk)+BΔx.

令上式等於0, 計算出Newton步長Δx,

Δx=B1f(xk).

然後構造𝐇[f(x)]的近似B滿足

f(xk+Δx)=f(xk)+BΔx.

上式稱作割線方程組. 但當f(x)是定義在多維空間上的函數時, 從該式計算B將成為一個不定問題 (未知數個數比方程式個數多). 此時, 構造B, 根據Newton步長更新當前解的處理需要回歸到求解割線方程. 幾乎不同的擬牛頓法就有不同的選擇割線方程的方法. 而大多數的方法都假定B具有對稱性 (即滿足B=BT). 另外, 下表所示的方法可用於求解Bk+1; 在此, Bk+1於某些範數Bk盡量接近. 即對於某些正定矩陣V, 以以下方式更新B:

Bk+1=argminBBBkV.

近似Hessian矩陣一般以單位矩陣等作為初期值[1]. 最優化問題的解xk由根據近似所得的Bk計算出的Newton步長更新得出.

以下為該算法的總結:

  • Δxk=αBk1f(xk)
  • xk+1=xk+Δxk
  • 計算新一個疊代點下的梯度f(xk+1)
  • yk=f(xk+1)f(xk)
  • 利用yk, 直接近似Hessian矩陣逆矩陣Bk+11. 近似的方法如下表:
Method Bk+1= Hk+1=Bk+11=
Template:Link-en (IykΔxkTykTΔxk)Bk(IΔxkykTykTΔxk)+ykykTykTΔxk Hk+ΔxkΔxkTykTΔxkHkykykTHkTykTHkyk
Template:Link-en Bk+ykykTykTΔxkBkΔxk(BkΔxk)TΔxkTBkΔxk (IykΔxkTykTΔxk)THk(IykΔxkTykTΔxk)+ΔxkΔxkTykTΔxk
Template:Link-en Bk+ykBkΔxkΔxkTΔxkΔxkT Hk+(ΔxkHkyk)ΔxkTHkΔxkTHkyk
Broyden族 (1φk)Bk+1BFGS+φkBk+1DFP,φ[0,1]
Template:Link-en Bk+(ykBkΔxk)(ykBkΔxk)T(ykBkΔxk)TΔxk Hk+(ΔxkHkyk)(ΔxkHkyk)T(ΔxkHkyk)Tyk

與逆矩陣的關聯

f是一個二次函數,且Hessian矩陣B正定,總是希望由擬牛頓法生成的矩陣Hk收斂於Hessian矩陣的逆H=B1。這是基於疊代值更新最小 (least-change update) 的擬牛頓法系列的一個實例。[2]

實現

擬牛頓法是現在普遍使用的一種最優化算法, 存在多種-{zh-hans:编程;zh-hant:程式}-语言的實現方法。

參見

參考文獻