本文的目的是通过最大化正则化对数似然来优化一些参数。然后他们计算偏导数。然后作者提到他们使用 L-BFGS 优化方程,这是一种标准的准牛顿程序,用于优化许多变量的平滑函数(没有更多细节)。
它是如何工作的 ?
本文的目的是通过最大化正则化对数似然来优化一些参数。然后他们计算偏导数。然后作者提到他们使用 L-BFGS 优化方程,这是一种标准的准牛顿程序,用于优化许多变量的平滑函数(没有更多细节)。
它是如何工作的 ?
基本上将 L-BFGS 视为一种寻找目标函数(局部)最小值的方法,利用目标函数值和目标函数的梯度。但是,该级别的描述涵盖了除 L-BFGS 之外的许多优化方法。您可以在 Nocedal 和 Wright “数值优化,第 2 版” http://www.springer.com/us/book/9780387303031的第 7.2 节中阅读更多相关信息。https://en.wikipedia.org/wiki/Limited-memory_BFGS提供了关于 L-BFGS 的非常粗略的讨论。
一阶方法意味着使用梯度(一阶导数)(可能还有目标函数值),但不使用 Hessian(二阶导数)。例如,考虑梯度下降和最速下降等。
二阶方法意味着使用梯度和 Hessian(也可能是目标函数值)。二阶方法可以基于
“精确” Hessian 矩阵(或梯度的有限差分),在这种情况下,它们被称为牛顿方法或
Quasi-Newton 方法,通过施加“割线”(Quasi-Newton)条件,基于多次迭代的梯度差异来近似 Hessian。有许多不同的准牛顿方法,它们以不同的方式估计 Hessian。最受欢迎的一种是 BFGS。BFGS Hessian 近似既可以基于梯度的完整历史,在这种情况下称为 BFGS,也可以仅基于最近的 m 个梯度,在这种情况下称为有限记忆 BFGS,缩写为作为 L-BFGS。L-BFGS 的优点是只需要保留最近的 m 个梯度,其中 m 通常在 5 到 20 左右,这比存储完整的 n*(n+1)/2 个元素所需的存储要求小得多(三角形)Hessian 估计,如 BFGS 所要求的,其中 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 门轿车在性能或可靠性方面都相同。它只是优化算法的一个属性。