理解BFGS算法
摘要
在无约束最优化领域,拟牛顿法(Quasi-Newton Methods),特别是BFGS算法,是应用最广泛、效果最显著的算法之一。其关键在于构造一个对Hessian矩阵的近似。那么,既然任何正定矩阵都能保证搜索方向是下降方向,为何还需要通过复杂的BFGS公式来构造这个近似矩阵?本文从理论层面剖析,说明BFGS算法设计的精髓不止于保证下降,更在于通过“割线条件”和正定性保持,实现对牛顿法的高效、稳定模拟,从而获得快速的收敛速度。
1. 下降方向的充分性与效率的矛盾
对于一个可微的目标函数 f(x),考虑迭代求解其最小值:
x_{k+1} = x_k + α_k p_k
其中 p_k 是搜索方向,α_k 是步长。为了保证函数值下降,搜索方向 p_k 需要满足下降条件,即与负梯度 -∇f_k 的夹角小于90度:
p_kᵀ ∇f_k < 0
在牛顿类方法中,搜索方向的一般形式为 p_k = -B_k⁻¹ ∇f_k,其中 B_k 是一个对称正定矩阵。在这种情况下,下降条件自动满足:
p_kᵀ ∇f_k = (-B_k⁻¹ ∇f_k)ᵀ ∇f_k = -∇f_kᵀ B_k⁻¹ ∇f_k < 0
因为正定矩阵的逆矩阵也是正定的。
最简单的选择是令 B_k 为单位矩阵 I,此时 p_k = -∇f_k,这便是最速下降法。然而,实践证明,最速下降法虽然保证每一步都下降,但收敛效率往往很低。特别是在目标函数等高线呈狭长椭圆形的“病态”问题中,最速下降法会走出低效的“之”字形路径。
这揭示了一个矛盾:保证方向是下降的是算法有效的基础,但这对于算法的效率是远远不够的。 优化的目标是寻找一个“高质量”的搜索方向,以最少的迭代次数逼近最优解。
2. 效率的标杆:牛顿法及其固有缺陷
优化算法效率的理论标杆是牛顿法。它通过构建目标函数在 x_k 点的二阶泰勒展开式来近似 f(x):
f(x_k + p) ≈ f(x_k) + ∇f_kᵀ p + ½ pᵀ H_k p
其中 H_k = H(x_k) 是函数在 x_k 点的真实Hessian矩阵。通过对这个二次模型求极小值(令其关于 p 的导数为零),得到牛顿方向:
p_k^N = -H_k⁻¹ ∇f_k
牛顿法在最优解附近具有二次收敛速度,效率极高。然而,它存在两个致命缺陷:
- 计算成本高:需要计算
n x n的Hessian矩阵并求解线性方程组H_k p_k = -∇f_k,对于高维问题,计算量巨大。 - 稳定性问题:只有当
H_k是正定矩阵时,牛顿方向才能保证是下降方向。在优化过程中,H_k可能是不定的(如在鞍点附近)甚至是负定的,此时牛顿法会失效或走向极大值。
3. 拟牛顿法的关键:割线条件与Hessian近似
拟牛顿法是在不计算真实Hessian矩阵的前提下,构造一个近似矩阵 B_k,使其能够模拟牛顿法的优良特性,同时规避其缺陷。
这个近似的核心约束来自于割线条件 (Secant Condition)。考虑梯度 ∇f(x) 的一阶泰勒展开:
∇f(x_{k+1}) - ∇f(x_k) ≈ H_k (x_{k+1} - x_k)
定义位移向量 s_k = x_{k+1} - x_k 和梯度变化向量 y_k = ∇f_{k+1} - ∇f_k,上式可写为:
y_k ≈ H_k s_k
拟牛顿法将此近似关系升级为一个必须满足的条件,施加在下一个Hessian近似矩阵 B_{k+1} 上:
B_{k+1} s_k = y_k
割线条件的意义在于:它要求新的近似矩阵 B_{k+1} 必须能够准确地反映最近一次迭代步 s_k 所引起的梯度变化 y_k。这相当于利用 (s_k, y_k) 这一对最新的、从真实函数中采样到的曲率信息,来校准我们对Hessian矩阵的估计。它让 B_k 不再是一个任意的正定矩阵,而是一个不断学习和吸收真实函数几何特性的动态模型。
4. BFGS算法:兼顾效率与稳定性
BFGS (Broyden-Fletcher-Goldfarb-Shanno) 算法提供了一个极为成功的 B_k 更新公式,它同时满足割线条件并具备其他优良性质。
其核心特性包括:
- 保持正定性:BFGS更新公式被巧妙地设计成,如果当前矩阵
B_k是正定的,并且满足曲率条件s_kᵀ y_k > 0,那么更新后的矩阵B_{k+1}也一定是正定的。这从根本上解决了牛顿法的稳定性问题,确保算法始终产生下降方向。 - 最小化变化原则:BFGS更新可以被推导为:在所有满足割线条件的对称矩阵中,寻找一个与当前
B_k“最接近”的矩阵。这保证了历史累积的曲率信息不会被轻易丢弃,使得近似过程更加平滑和稳定。
5. 算法的完整框架:线搜索的必要性
无论是牛顿法还是BFGS,p_k 都只是一个搜索方向。一个完整的算法必须通过线搜索 (Line Search) 来确定一个合适的步长 α_k。
线搜索在线搜索过程中,通常要求 α_k 满足Wolfe条件,这不仅能保证函数值有“足够的”下降,还能确保曲率条件 s_kᵀ y_k > 0 成立。这个条件对于BFGS算法至关重要,因为它是维持 B_k 正定性的前提。
因此,线搜索扮演了双重角色:
- 对于牛顿法:它是“安全刹车”,防止因二次模型与真实函数偏差过大而导致的迭代失败。
- 对于BFGS:它既是“安全刹车”,也是维持算法稳定性的“必要条件”,确保了Hessian近似矩阵的正定性得以传递。
| 特性 | 标准牛顿法 (带线搜索) | BFGS (拟牛ton法) |
|---|---|---|
| Hessian信息 | 真实的 H(x_k),精确但昂贵且可能非正定 | 近似的 B_k,廉价且通过设计保证正定 |
| 核心约束 | 基于二阶泰勒展开的局部二次模型 | 满足割线条件 B_{k+1}s_k = y_k |
| 方向稳定性 | 依赖 H(x_k) 的正定性 | 只要 s_kᵀy_k > 0 即可保证正定性 |
| 步长确定 | 线搜索 (必需) | 线搜索 (必需) |
| 收敛速度 | 二次收敛 (快) | 超线性收敛 (较快) |
结论
BFGS算法的精髓,并非简单地寻找一个能保证下降的正定矩阵 B_k。它是一个高度精巧的系统,其设计目标是在可接受的计算成本下,尽可能地逼近牛顿法的收敛效率,同时通过内在机制保证算法的稳定性和鲁棒性。
它通过割线条件从迭代历史中学习函数的局部曲率,通过更新公式保持近似矩阵的正定性,再结合线搜索来确保每一步的有效性和稳定性。
