在机器学习训练中,非凸损失函数优化往往面临梯度下降缓慢、鞍点卡住等难题。一阶方法如Adam虽高效,但忽略曲率信息导致局部收敛差。准牛顿法通过低秩近似Hessian逆矩阵,融合一二阶信息,实现超线性收敛,尤其适合中大规模非凸任务。本文聚焦BFGS与L-BFGS结合Wolfe线搜索的集成方案,强调工程落地参数与监控要点。
BFGS准牛顿法的核心机制
BFGS(Broyden-Fletcher-Goldfarb-Shanno)通过迭代更新Hessian逆近似( H_k ),搜索方向( p_k = -H_k g_k ),其中( g_k = \nabla f(x_k) )。更新公式为:
[
H_{k+1} = \left( I - \frac{s_k y_k^T}{y_k^T s_k} \right) H_k \left( I - \frac{s_k y_k^T}{y_k^T s_k} \right) + \frac{s_k s_k^T}{y_k^T s_k}
]
其中( s_k = x_{k+1} - x_k ),( y_k = g_{k+1} - g_k )。初始( H_0 = I ),若满足曲率条件( y_k^T s_k > 0 ),则保持正定,确保下降方向。
在非凸ML优化中,直接用精确梯度易受噪声影响。证据显示,BFGS在Logistic回归等任务中迭代次数减半,但高维下( O(d^2) )存储不可行。L-BFGS通过有限历史(最近m对( s, y ))两循环计算方向:
- 前向循环:缩放累积( \alpha_i = \frac{s_i^T r_{i-1}}{y_i^T s_i} ),( r_0 = g_k ),( r_i = r_{i-1} - \alpha_i y_i )。
- 后向循环:( p = H_k g_k \approx \left( \gamma_m s_m + q_m \right) ),逐层展开。
L-BFGS内存仅( O(m d) ),m=5-20适合ML。
Wolfe线搜索确保全局鲁棒性
准牛顿依赖可靠步长( \alpha_k )。Wolfe条件结合Armijo充分下降与曲率保证:
- Armijo:( f(x_k + \alpha p_k) \leq f(x_k) + c_1 \alpha g_k^T p_k ),( c_1 = 10^{-4} )。
- 强曲率:( g(x_k + \alpha p_k)^T p_k \geq c_2 g_k^T p_k ),( c_2 = 0.9 \)。
回溯实现:初始( \alpha=1 ),若不满足Armijo,( \alpha \leftarrow \rho \alpha ),( \rho=0.5 )。曲率失败时弱化或固定步长。在ML小批量训练,梯度噪声大,用弱Wolfe(仅Armijo+弱曲率)或非单调搜索容忍波动。
数值证据:在Rosenbrock函数,Wolfe确保BFGS全局收敛,即使初始点差。研究表明,不严格Wolfe下,BFGS期望收敛。
ML训练循环集成与可落地参数
在PyTorch/TensorFlow循环中集成:
def lbfgs_step(model, loss_fn, data_loader, m=10, max_iter=20):
optimizer = LBFGS(model.parameters(), lr=1, max_iter=max_iter, history_size=m)
def closure():
optimizer.zero_grad()
loss = compute_loss(model, data_loader)
loss.backward()
return loss
optimizer.step(closure)
关键参数:
- m=10:平衡内存与精度,小任务m=5,大模型m=20。
- c1=1e-4, c2=0.9, ρ=0.5:标准值,调c2=0.1-0.5抗噪声。
- max_line_search_iter=20:防无限回溯。
- batch_size=256-1024:梯度平滑,动态调整。
- 初始H0缩放:( \gamma = \frac{s^T y}{||y||^2} I ),加速初期。
监控清单:
- 曲率检查:( y^T s > 10^{-8} ||y|| ||s|| ),否则跳过更新,用H_k=I重置。
- 损失平台:若5迭代Δloss<1e-6,切换Adam预热。
- Hessian谱:trace(H g)/||g||^2监控曲率失真>10跳过。
- 早停:||g||<1e-4或patience=50。
- 日志:迭代loss/||g||/α/更新成功率。
风险规避:
- 噪声梯度:小批量+裁减(0.1-1.0),oLBFGS变体滤波。
- 非凸鞍点:结合Adam热身10%迭代,后准牛顿;或SR1允许不定H。
- 内存峰值:m动态,GPU offload历史。
- 并行:Horovod/MP分布式,每步all-reduce g。
实证:在CIFAR-10 CNN,L-BFGS+Wolfe比Adam快30%收敛,精度+0.5%。“L-BFGS结合梯度裁剪和动态批次成为更稳健的选择。”
大规模下,集成Spark/分布式如PELS加速线搜索。回滚:若失败,fallback SGD。
资料来源:Numerical Optimization (Nocedal & Wright);CSDN准牛顿全局收敛分析;arXiv随机准牛顿ML论文。