最優化算法3.2【擬牛頓法-BFGS算法】


特點

相較於:
最優化算法3【擬牛頓法1】

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

\[B_{k+1}=B_k+\alpha\mu_k\mu_k^T+\beta\nu_k\nu_k^T \]

算法分析

將函數在\(x_{k+1}\)處二階展開:

\[f(x)=f(x_{k+1})+g_{k+1}^T(x-x_{k+1})+\frac{1}{2}(x-x_{k+1})^TG_{k+1}(x-x_{k+1}) \]

上式求導等於0,得:

\[g_k=g_{k+1}+G_{k+1}(x-x_{k+1}) \]

\(s_k=x_{k+1}-x_k\),\(y_k=g_{k+1}-g_k\),則:

\[G_{k+1}s_k\approx y_k \]

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

\[B_{k+1}s_k\approx y_k \]

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

\[B_{k+1}=B_k-\frac{B_ks_ks_k^TB_k}{s_k^TB_ks_k}+\frac{y_ky_k^T}{y_k^Ts_k} \]

由於Armijo准則不能完全保證求得hesse矩陣近似陣\(B_{k+1}\),正定,還需對校正公式進行修正

算法

輸入:梯度計算公式\(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_{k+1}=x_k+\alpha_kd_k\)

\(step3:由校正公式求B_{k+1}\)

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

reflect

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

reference

《最優化方法及其Matlab程序設計》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM