理解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

牛顿法在最优解附近具有二次收敛速度,效率极高。然而,它存在两个致命缺陷:

  1. 计算成本高 :需要计算 n x n 的Hessian矩阵并求解线性方程组 H_k p_k = -∇f_k,对于高维问题,计算量巨大。
  2. 稳定性问题 :只有当 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 更新公式,它同时满足割线条件并具备其他优良性质。

其核心特性包括:

  1. 保持正定性 :BFGS更新公式被巧妙地设计成,如果当前矩阵 B_k 是正定的,并且满足曲率条件 s_kᵀ y_k > 0,那么更新后的矩阵 B_{k+1} 也一定是正定的。这从根本上解决了牛顿法的稳定性问题,确保算法始终产生下降方向。
  2. 最小化变化原则 :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。它是一个高度精巧的系统,其设计目标是在可接受的计算成本下,尽可能地逼近牛顿法的收敛效率,同时通过内在机制保证算法的稳定性和鲁棒性

它通过割线条件 从迭代历史中学习函数的局部曲率,通过更新公式 保持近似矩阵的正定性,再结合线搜索来确保每一步的有效性和稳定性。

相关推荐
异构算力老群群6 小时前
2025 爆火!海市蜃楼优化算法 MSO(Mirage Search Optimization):物理灵感 + 数学建模 + 实战代码,一文吃透前沿群智能算法
数学建模·启发式算法·优化算法·进化计算·海市蜃楼优化算法·群智能优化
88号技师8 天前
2025年7月一区SCI优化算法-Logistic-Gauss Circle optimizer-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
88号技师1 个月前
2025年8月SCI-汉尼拔·巴卡优化算法Hannibal Barca optimizer-附Matlab免费代码
开发语言·人工智能·算法·数学建模·matlab·优化算法
88号技师1 个月前
【2025年10月一区SCI】改进策略:Trend-Aware Mechanism 趋势感知机制(TAM)-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
大千AI助手2 个月前
粒子群优化(PSO)算法详解:从鸟群行为到强大优化工具
人工智能·算法·优化算法·pso·粒子群优化
胖哥真不错3 个月前
数据集: TSPLIB旅行商问题-对称TSP数据集
大数据·机器学习·数据挖掘·优化算法·旅行商问题·tsplib·对称tsp数据集
88号技师3 个月前
2025年6月最新SCI-灰熊脂肪增长优化算法Grizzly Bear Fat Increase-附Matlab免费代码
开发语言·人工智能·算法·matlab·优化算法
88号技师4 个月前
2025年7月Renewable Energy-冬虫夏草优化算法Caterpillar Fungus Optimizer-附Matlab免费代码
开发语言·人工智能·算法·matlab·优化算法
88号技师4 个月前
2025年7月一区SCI-投影迭代优化算法Projection Iterative Methods-附Matlab免费代码
开发语言·人工智能·算法·机器学习·matlab·优化算法