趋近智
牛顿法表明,通过Hessian矩阵引入曲率信息可以显著加快收敛到最小值。然而,牛顿法在大规模机器学习中的实际应用常常受阻,原因是每次迭代中构建和求逆Hessian矩阵会带来计算上的沉重负担。对于一个有N个参数的模型,Hessian是一个N×N矩阵,需要O(N2)的存储空间,并且通常需要O(N3)的计算量来求逆。当N达到百万或十亿级别时,这就完全不可行了。
这时,拟牛顿法就派上用场了。它们提供了一个巧妙的折中方案:在无需明确计算、存储或求逆Hessian矩阵的情况下,保持与二阶信息相关的超线性收敛优势。其主要理念是,仅利用连续的梯度评估和参数更新信息,逐步构建Hessian矩阵的近似,或更常见地,其逆矩阵的近似。
拟牛顿法不是直接计算∇2f(xk),而是维护一个矩阵Bk来近似Hessian ∇2f(xk),或一个矩阵Hk来近似逆Hessian (∇2f(xk))−1。那么更新步骤看起来与牛顿法相似,但使用了近似:
实际使用中通常更倾向于使用矩阵Hk,因为它避免了在每一步中求解一个线性系统,取而代之的是一个简易的矩阵-向量乘法。步长αk通常通过线搜索过程确定,确保目标函数有足够的下降。
近似Bk或Hk如何从一次迭代更新到下一次?其要点在于割线条件(也称为拟牛顿条件)。
我们来定义两次迭代之间参数和梯度的变化:
sk=xk+1−xk yk=∇f(xk+1)−∇f(xk)回顾微积分可知,对于二次函数,Hessian将梯度的变化与位置的变化关联起来:∇f(xk+1)−∇f(xk)=∇2f(xk+1−xk)。拟牛顿法对下一次近似Bk+1施加了类似的关系。我们要求新的近似能正确地将刚迈出的步长(sk)映射到观察到的梯度变化(yk):
Bk+1sk=yk(Hessian近似的割线条件)等价地,如果我们近似逆Hessian Hk,条件变为:
Hk+1yk=sk(逆Hessian近似的割线条件)这个条件采用了来自最新步骤的现成梯度信息(yk)和参数变化(sk),对更新后的近似施加一个约束。它有效结合了关于函数沿方向sk的曲率信息。
割线条件提供了一个约束,但它不能唯一确定整个矩阵Bk+1或Hk+1。不同的拟牛顿法源于在满足割线条件的同时如何更新矩阵的不同选择。通常,更新被表述为向当前近似添加一个低秩修正:
Bk+1=Bk+ΔBk Hk+1=Hk+ΔHk更新项(ΔBk或ΔHk)的具体形式定义了特定的算法。常用的方法旨在:
源于这些原则的最成功且普遍使用的更新公式是**Broyden–Fletcher–Goldfarb–Shanno (BFGS)**更新,我们将在下一节中具体阐述。其内存效率高的变体,有限内存BFGS (L-BFGS),是用于大规模机器学习优化问题的主力算法。
从根本上说,拟牛顿法通过梯度差分逐次建立曲率信息,巧妙地避开了牛顿法的计算瓶颈。它们代表了一类效能高的算法,常常比一阶方法收敛快得多,尤其是在曲率起主要作用的问题上,同时避免了精确二阶途径所带来的过高成本。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造