最優化算法【牛頓法、擬牛頓法、BFGS算法】


一、牛頓法

對於優化函數\(f(x)\),在\(x_0\)處泰勒展開,

\[f(x)=f(x_0)+f^{'}(x_0)(x-x_0)+o(\Delta x) \]

去其線性部分,忽略高階無窮小,令\(f(x) = 0\)得:

\[x=x_0-\frac{f(x_0)}{f^{'}(x_0)} \]

得牛頓法迭代公式:

\[x^{k+1}=x^k-\frac{f(x^k)}{f^{'}(x^k)} \]

對於最優化問題
令導數等於零,得最優解,所以迭代公式為

\[x^{k+1}=x^k-\frac{\nabla f(x^k)}{\frac{\partial^2f(x^k)}{\partial x_i\partial x_j}} \]

即:

\[x^{k+1}=x^k-H_k^{-1}\nabla f(x^k) \]

其中\(H_k\)為Hesse矩陣,表示函數二階偏導數矩陣
上述方法每次迭代都需要求Hesse矩陣,比較復雜

二、擬牛頓法

解決Hesse矩陣問題
對於優化函數的泰勒展開公式,求導數得:

\[\nabla f(x)=\nabla f(x^k)+H_k(x-x^k) \]

\(y_k=\nabla f(x^{k+1})-\nabla f(x^k)\),\(\delta_k=x^{k+1}-x^k\),則:

\[y_k=H_k\delta_k \]

通過上式,可以依靠之前的\(f(x^k),f(x^{k-1}),x^k,x^{k-1}\)的數據計算Hesse矩陣,具體算法有DFP算法,BFGS算法。

三、L-BFGS算法

由於BFGS算法存在存儲數據過多的問題,又提出了L-BFGS算法,來優化存儲數據

conclusion

本來打算上述算法逐一實現一下,做到這里,發現上述算法是逐漸優化的關系,L-BFGS算法是最好的版本,因此可以直接網上下載L-BFGS算法,
根據自己需要修改。

參考
牛頓法和擬牛頓法


免責聲明!

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



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