最優化演算法3 2 擬牛頓法 BFGS演算法

2022-03-15 07:27:40 字數 830 閱讀 8127

相較於:

最優化演算法3【擬牛頓法1】

bfgs演算法使用秩二矩陣校正hesse矩陣的近似矩陣\(b\),即:

\[b_=b_k+\alpha\mu_k\mu_k^t+\beta\nu_k\nu_k^t

\]將函式在\(x_\)處二階展開:

\[f(x)=f(x_)+g_^t(x-x_)+\frac(x-x_)^tg_(x-x_)

\]上式求導等於0,得:

\[g_k=g_+g_(x-x_)

\]令\(s_k=x_-x_k\),\(y_k=g_-g_k\),則:

\]近似矩陣需要滿足上述條件;

\]帶入上邊校正公式,化簡可得:

\[b_=b_k-\frac+\frac

\]由於armijo準則不能完全保證求得hesse矩陣近似陣\(b_\),正定,還需對校正公式進行修正

輸入:梯度計算公式\(gfun\),容許誤差:\(\epsilon\),初始值\(x_0\),初始正定矩陣\(b_0\),armijo準則需要的\(\delta\in(0,1),\sigma\in(0,0.5)\)

\(step0:求梯度g_k,if\, abs(g_k)<=\epsilon,break;輸出x_k\)

\(step1:解方程:b_kd=-g_k,求得迭代方向d_k\)

\(step2:利用armijo準則求迭代步長\alpha_k,x_=x_k+\alpha_kd_k\)

\(step3:由校正公式求b_\)

\(step4:令k=k+1;to\, step0\)

和之前的擬牛頓法比較,就是將校正矩陣由秩一矩陣換為秩二矩陣;

《最優化方法及其matlab程式設計》

最優化演算法3 擬牛頓法1

計算量大,每次都需要計算hesse矩陣,對於自變數維數較高的優化函式,計算量是相當大的 hesse矩陣可能存在不正定的問題,此時求得的迭代方向可能不是下降方向 為了解決上述問題,需要求hesse矩陣近似矩陣 b 將函式在 x 處二階展開 f x f x g t x x frac x x tg x x...

牛頓法與擬牛頓法學習筆記(四)BFGS 演算法

機器學習演算法中經常碰到非線性優化問題,如 sparse filtering 演算法,其主要工作在於求解乙個非線性極小化問題。在具體實現中,大多呼叫的是成熟的軟體包做支撐,其中最常用的乙個演算法是 l bfgs。為了解這個演算法的數學機理,這幾天做了一些調研,現把學習過程中理解的一些東西整理出來。目...

最優化演算法 牛頓法

牛頓搜尋演算法,參考edwin 最優化導論 7.5章節,演算法採用go語言實現。filename newton search.go author fredric date 2017.09.01 note 牛頓搜尋演算法 history package search import fmt math 根...