L-BFGS如何工作?


14

本文的目的是通过最大化正则对数似然来优化一些参数。然后他们计算偏导数。然后作者提到,他们使用标准准牛顿程序L-BFGS优化方程,以优化许多变量的平滑函数(没有更多细节)。

它是如何工作的 ?


3
什么纸 链接到纸张需要上下文。输入首字母缩写词的链接,例如L-BFGS并拼写出来:L-BFGS =内存有限的Broyden–Fletcher–Goldfarb–Shanno(BFGS)算法
Carl

1
zh.wikipedia.org/wiki/Limited-memory_BFGS有很多变体,其功能和性能可能有很大差异。
马克·L·斯通

嗨,谢谢马克先生:)我来看一下。该文件为cs.stanford.edu/people/jure/pubs/circles-tkdd14.pdf (等式6优化)
Abir

基本上,将L-BFGS视为一种利用目标函数值和目标函数梯度来找到目标函数(局部)最小值的方法。除了L-BFGS,该描述级别还涵盖了许多优化方法。您可以在springer.com/us/book/9780387303031的 7.2节中了解更多信息。
马克·L·斯通

1
BFGS是一种试图通过割线方法获得模仿二阶方法(牛顿)的一阶方法的方法
user795305 2015年

Answers:


28

基本上,将L-BFGS视为一种利用目标函数值和目标函数梯度来找到目标函数(局部)最小值的方法。除了L-BFGS,该描述级别还涵盖了许多优化方法。您可以在Nocedal和Wright的7.2节“数值优化,第二版”中了解更多信息,网址为http://www.springer.com/us/book/9780387303031https://en.wikipedia.org/wiki/Limited-memory_BFGS提供了有关L-BFGS的非常粗略的讨论。

一阶方法意味着使用了梯度(一阶导数)(可能还有目标函数值),但没有使用Hessian(二阶导数)。例如,考虑一下梯度下降和最陡下降。

二阶方法意味着使用了梯度和Hessian(可能还有目标函数值)。二阶方法可以基于

  1. “精确”黑森矩阵(或梯度的有限差分),在这种情况下,它们被称为牛顿法或

  2. 拟牛顿法,它通过施加“割线”(拟牛顿)条件,基于多次迭代中的梯度差来近似Hessian。拟牛顿法有很多不同的方法,它们以不同的方式估计黑森州的情况。最受欢迎的之一是BFGS。BFGS Hessian近似可以基于梯度的完整历史记录,在这种情况下称为BFGS,也可以仅基于最新的m个梯度,在这种情况下,称为有限内存BFGS,缩写为BFGS作为L-BFGS。L-BFGS的优点是仅需要保留最新的m个梯度,其中m通常在10到20之间,这比存储全部n所需的n *(n + 1)/ 2个元素要小得多。 BFGS要求的Hessian估算值的(三角形),其中n是问题维度。与(完整的)BFGS不同,Hessian的估计从不明确地形成或存储在L-BFGS中(尽管BFGS的某些实现仅形成并更新了Hessian近似的Choelsky因子,而不是Hessian近似本身);而是,在没有显式构成的情况下完成了用Hessian估计所需的计算。对于非常大的问题(当n非常大时),使用L-BFGS代替BFGS,但性能可能不如BFGS。因此,当可以满足BFGS的存储要求时,BFGS优于L-BFGS。另一方面,L-BFGS的性能可能不会比BFGS差很多。Hessian的估计永远不会明确地形成或存储在L-BFGS中(尽管BFGS的某些实现仅形成和更新Hessian近似的Choelsky因子,而不是Hessian近似本身);而是,在没有显式构成的情况下完成了用Hessian估计所需的计算。对于非常大的问题(当n非常大时),使用L-BFGS代替BFGS,但性能可能不如BFGS。因此,当可以满足BFGS的存储要求时,BFGS优于L-BFGS。另一方面,L-BFGS的性能可能不会比BFGS差很多。Hessian的估计永远不会明确地形成或存储在L-BFGS中(尽管BFGS的某些实现仅形成和更新Hessian近似的Choelsky因子,而不是Hessian近似本身);而是,在没有显式构成的情况下完成了用Hessian估计所需的计算。对于非常大的问题(当n非常大时),使用L-BFGS代替BFGS,但性能可能不如BFGS。因此,当可以满足BFGS的存储要求时,BFGS优于L-BFGS。另一方面,L-BFGS的性能可能不会比BFGS差很多。在没有明确构成的情况下,完成了用Hessian估计所需的计算。对于非常大的问题(当n非常大时),使用L-BFGS代替BFGS,但性能可能不如BFGS。因此,当可以满足BFGS的存储要求时,BFGS优于L-BFGS。另一方面,L-BFGS的性能可能不会比BFGS差很多。在没有明确构成的情况下,完成了用Hessian估计所需的计算。对于非常大的问题(当n非常大时),使用L-BFGS代替BFGS,但性能可能不如BFGS。因此,当可以满足BFGS的存储要求时,BFGS优于L-BFGS。另一方面,L-BFGS的性能可能不会比BFGS差很多。

即使在这种描述级别,也有许多变体。例如,这些方法可能是完全不受保护的,在这种情况下任何事情都会发生,并且即使在凸问题上,它们也可能不会收敛到任何事情。否则他们可以得到保障。受保护的方法通常基于信任区域或线搜索,并且旨在确保收敛。非常重要的是,仅知道一种方法是L-BFGS本身并不能告诉您使用了哪种类型的保护措施(如果有)。这就好比说一辆汽车是4门轿车-但当然并非所有4门轿车的性能或可靠性都相同。它只是优化算法的一个属性。


1
嗨,马克,我再次需要您的帮助,能否简单介绍一下牛顿法和准牛顿法之间的区别?谢谢
阿比尔(Abir)

3
牛顿法可以在算法的每次迭代中“精确地”或通过该迭代时梯度的有限差分来“通过草稿”计算黑森州矩阵。拟牛顿方法通过使用迭代之间的梯度差异。有许多不同的方法可以做到这一点,从而产生了各种不同的拟牛顿方法,例如BFGS,DFP,SR1等。通常,牛顿法在每次迭代时都需要大量的导数才能计算Hessian,而每次迭代的计算量要比准牛顿法大得多。
马克·L·斯通
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.