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

2022-03-15 07:27:41 字數 838 閱讀 6448

計算量大,每次都需要計算hesse矩陣,對於自變數維數較高的優化函式,計算量是相當大的;

hesse矩陣可能存在不正定的問題,此時求得的迭代方向可能不是下降方向;

為了解決上述問題,需要求hesse矩陣近似矩陣\(b\)

將函式在\(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\),則:

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

為了使得迭代計算簡單,可以設計,使用秩1矩陣更新\(b\)

\[b_=b_k+e_k

\]取\(e_k=\alpha \mu_k\mu_k^t\)

經過計算可以得出hesse矩陣逆矩陣近似矩陣迭代公式:

\[h_=h_k+\frac

\]輸入:梯度計算公式\(gfun\),容許誤差:\(\epsilon\),初始值\(x_0\),初始化hesse陣逆矩陣

\(step0:求梯度g_k,if\, abs(g_k)<\epsilon,break; \quad else \, to\, step 1;\)

\(step1:d_k=-h_kg_k;\quad x_=x_k+\alpha d_k; \quad to\, step2;\)

\(step2:求g_ \quad 求h_ \quad to\, step3;\)

\(step3:k=k+1 \quad to\, step0;\)

主要思路:設計使用秩1矩陣更新hesse矩陣,節省了計算二階導數的計算量;同時保證了其正定性;

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

相較於 最優化演算法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 ...

最優化演算法 牛頓法

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

最優化演算法 牛頓法

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