乐趣区

L-BFGS算法介绍

本文由作者林洋港授权网易云社区发布。
一、L-BFGS 是什么 L -BFGS 是解无约束非线性规划问题最常用的方法,具有收敛速度快、内存开销少等优点,在机器学习各类算法中常有它的身影。简单的说,L-BFGS 和梯度下降、SGD 干的同样的事情,但大多数情况下收敛速度更快,这点在大规模计算中很重要。下图是深度学习 Autoencoder 模型不同优化方法的比较。

二、L-BFGS“之前”的那些方法
这里的“之前”并不是说 L -BFGS 问世之前就已经存在的方法,而是指为了更好的理解 L -BFGS 需要了解的其他方法。无约束问题定义:

我们先从泰勒展开开始,这可以说是本文介绍的所有方法的基础。f 在的一阶泰勒展开为

二阶泰勒展开为

去掉最后的余项,得到

2.1 最速下降法(Gradient descent)
CD 算法的一个前提条件就是 f 在连续可微,并且在处的导数不为 0。由公式 1 可知当第二项 <0 时 f 的值将下降。由 Cauchy-Schwartz 不等式可得
为最速下降方向。因此迭代公式为

满足
2.2 牛顿法(Newton method)
由于 f 的极值点就是满足 f 的导数为 0,根据公式 2,得到

假设 Hesse 矩阵可逆,由上式可得牛顿法迭代公式

牛顿法具有二次终止性的特点,即经过有限次迭代必达到极小点。例如,对于二次凸函数

A 是对称正定矩阵,取任意初始点,根据公式 3 有
显然经过 1 次迭代即达到极值点。
但牛顿法要求 f 二次连续可微,并且 Hesse 矩阵满足可逆和正定两个条件;同时,牛顿方向不一定每次迭代都是下降方向。
阻尼牛顿法是牛顿法的修正,与牛顿法的区别是迭代公式增加了牛顿方向上的一维搜索,即
其中
是一维搜索得到的步长,满足

2.3 拟牛顿法(Quasi-Newton Method)
牛顿法每次迭代都需要计算处的 Hesse 矩阵的逆,同时 Hesse 矩阵也不一定是正定的。人们又提出了拟牛顿法,其基本思想是用不包含二阶导数的矩阵来近似 Hesse 矩阵的逆。将 f 在处展开成 2 阶泰勒级数并取近似,即

设 Hesse 矩阵可逆,可得
设近似矩阵为根据上述,必须满足
公式 7 称为拟牛顿条件。的不同构造方法,决定了不同的拟牛顿方法。
当时 n 阶对称正定矩阵时,满足牛顿条件的也必须是 n 阶对称正定矩阵。因此的一般构造策略为:取为任意 n 阶对称正定矩阵(通常为单位矩阵 I),然后通过下式求出

称为校正矩阵。
DFP 算法将校正矩阵定义为:
至此,根据公式 4、5、6、7、10、11 可以由得出并且不需要每次迭代计算 Hesse 矩阵。
BFGS 算法用矩阵近似公式 8 中的 Hesse 矩阵,从而得到
将 q 与 p 互换,分别取代由 DFP 公式可以得到

令,从而得到 BFGS 公式:

从公式 11 和公式 12 可以看出,拟牛顿法每次迭代只需要根据前次迭代的即可以计算出,不需要求出 Hesse 矩阵的逆。
2.4 L-BFGS(limited-memory BFGS)
BFGS 算法中每次迭代计算需要前次迭代得到的矩阵,该矩阵的存储空间至少为 N(N+1)/2,N 为特征维数,对于高维的应用场景,需要的存储空间将是非常巨大的。L-BFGS 的基本思想就是通过存储前 m 次迭代的少量数据来替代前一次的矩阵。令 y =q,s=p,公式 12 可以改写成

公式 13 展开并取前 m 项的近似,可得

由于 ρ、V、s、y 这些变量都最终可以由 q、p 两个向量计算得到,因此,我们只需存储最后 m 次的 q、p 向量即可算出加上对角阵 H0,总共需要存储 2 *m+ 1 个 N 维向量(实际应用中 m 一般取 4 到 7 之间的值,因此需要存储的数据远小于 Hesse 矩阵)。
注:公式 4 中步长的确定需要使用一维搜索,顾名思义,一维搜索就是沿着直线方向寻找使得目标函数值最小的参数值。一维搜索具体又分为精确一维搜索和非精确一维搜索,具体可参看相关文献。
三、其他相关方法由于 L -BFGS 是建立在目标函数的 2 阶泰勒展开基础上的,其前提条件就是函数的 2 阶导不为 0。在机器学习中一般如果用 L2 正则都是可以满足这个条件的。如果用的是 L1 正则,则目标函数可能出现 2 阶导为 0 的情况。对于使用 L1 正则的情况,可以使用 OWL-QN 方法(Orthant-Wise Limited-memory Quasi-Newton),它是基于 L -BFGS 修改的。
据说百度首创了 Shooting 算法,收敛速度比 L -BFGS 快得多,目前还不知道怎么做的。

此外,Chih-Jen Lin(LIBSVM 作者)提出的信赖域牛顿方法(Trust Region Newton Method),其收敛速度也比 L -BGFS 快,他开发的另一个针对大规模线性分类的软件 LIBLINEAR 用的就是这种优化方法。

此外,Chih-Jen Lin(LIBSVM 作者)提出的信赖域牛顿方法(Trust Region Newton Method),其收敛速度也比 L -BGFS 快,他开发的另一个针对大规模线性分类的软件 LIBLINEAR 用的就是这种优化方法。
免费领取验证码、内容安全、短信发送、直播点播体验包及云服务器等套餐
更多网易技术、产品、运营经验分享请访问网易云社区。
文章来源:网易云社区

退出移动版