L-BFGS-B(Limited-memory Broyden–Fletcher–Goldfarb–Shanno )算法理解 —— 内存受限的拟牛顿法 —— 数值优化算法

本文主要讲下个人对数值优化算法中几种常见算法的理解。


什么是优化算法?

给出函数f(X),现在要求 min f(X) 时的X值,这就是最优化问题。


1. 共轭梯度法

方程:A*x=b,A矩阵为对称正定矩阵,b为向量,目标为求解出向量 x 。

个人认为共轭梯度法并不能被当做是一个真正的优化算法,因为共轭梯度法很难单独使用,而是作为其他优化算法的一个辅助使用,因为共轭梯度法只是求解方程组解的一种算法。


2. 最速下降法

最为常用的优化算法之一,如果接触过神经网络模型的话应该对这个算法最为了解,直白的说就是在每次优化时都沿着函数梯度的负方向。该方法是优化算法中当步运算量最小的算法,但是对于一些复杂的优化问题,如病态优化问题,很难获得较好的优化结果,因为最速下降法(梯度下降法)只是一阶优化算法,而不是二阶优化算法。


3. 牛顿法

牛顿法是二阶优化算法,也是最为常见的优化算法。牛顿法是二阶优化算法,每步优化都需要计算出原函数的二阶梯度矩阵,即Hession矩阵,并获得类似H*x=b的形式的方程,并进行求解,因此使用牛顿法时可以搭配共轭梯度法进行使用。


4. 拟牛顿法(DFP/BFGS)

牛顿法需要计算原函数的二阶导Hession矩阵,并解H*x=b方程,相当于求解 Hession 的逆矩阵,为此拟牛顿法对Hession矩阵的逆矩阵进行拟合近似,于是有 BH1,各种拟牛顿法就是在求解这个B矩阵,为此常见的拟牛顿法有DFP法和BFGS法。


5. 内存受限的拟牛顿法(L-BFGS)

拟牛顿法虽然避免了牛顿法求解Hession逆矩阵的复杂运算,但是即使通过计算近似矩阵B可以替代Hession逆矩阵,但是矩阵B也会占用大量的内存空间,如果优化变量的size为n,那么矩阵B的size就是nn,如果变量为1000000个,那么B矩阵中数字个数为10000001000000,因此为了避免因为内存无法存储B矩阵而导致无法计算的情况,于是有了内存受限的拟牛顿法(L-BFGS)。L-BFGS算法通过保留计算历史中的m个历史的变量值和一阶导数,来近似计算出B1b,因此内存中只需要存储mn大小的空间,而不是nn大小的空间,这里m为远小于n的值,如n=1000000,m=30。



总结:


牛顿法,最后需要求解的是 Hx=b,也就是x=H1b,难点在于求 H1以及存储矩阵H1


拟牛顿法,通过BH1,来解决对H1的复杂求解,但是没有解决对H1的存储问题,最终的求解形式为 x=Bb


内存受限的拟牛顿法,通过对最近历史中的m个变量值及其一阶导数的保存,并用此近似计算出Bb,直接求出近似的 x 解,由此解决 H1 矩阵和 B 矩阵难以存储的问题。



posted on   Angry_Panda  阅读(717)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2022-02-28 Ubuntu18.04终端alacritty安装及配置
2020-02-28 【转载】 NVIDIA Tesla/Quadro和GeForce GPU比较
2019-02-28 强化学习论文(Scalable agent alignment via reward modeling: a research direction)
2018-02-28 Centos7 服务 service 设置命令 systemctl 用法 (替代service 和 chkconfig)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示