第 10 题:二阶优化方法(L-BFGS)在推荐中的可行性分析,与一阶方法的精度-效率权衡?
题目
二阶优化方法(L-BFGS)在推荐中的可行性分析,与一阶方法的精度-效率权衡?
完整讲解
一、L-BFGS 简述
L-BFGS 是拟牛顿法:用历史梯度与步长近似 Hessian 的逆,更新方向为 $d = -H^{-1} \nabla$,步长再线搜。优点:收敛步数少、对条件数差的病态问题更稳;缺点:每步要存若干组 $(s,y)$ 并做递推,单步成本高于 SGD/Adam,且对非凸、大规模、随机问题不如一阶+小 batch 灵活。
二、在推荐中的可行性
- 规模:推荐模型参数量大(Embedding 数十亿维 + 稠密层),全量 Hessian 不可行;L-BFGS 只存低维近似,但每步仍要算全梯度(或大 batch),数据与通信成本高。
- 非凸与随机:CTR/排序等非凸,且常用 mini-batch 随机梯度;L-BFGS 更适合光滑、确定性或大 batch 的优化,小 batch 下曲率估计噪声大,效果未必好。
- 稀疏与离散:大量 ID 特征、Embedding 稀疏更新;L-BFGS 通常按「全参数向量」更新,对稀疏结构不友好,实现复杂。
- 结论:全模型用 L-BFGS 在推荐里少见;更可行的是「稠密部分用 L-BFGS、Embedding 用一阶」或只在精排小模型/离线调参时尝试,且需大 batch、少步数。
三、精度-效率权衡
- 一阶(SGD/Adam):单步快、易扩展、适合分布式与稀疏;要更多步数、对病态问题收敛慢;效率高、精度靠步数堆。
- 二阶(L-BFGS):单步慢、需大 batch/全梯度;步数少、单步进展大;精度 per step 高、但总时间与实现成本高。
- 推荐实践:大规模训练几乎都用 Adam/AdaGrad + 学习率调度;少量场景(如小模型、离线超参、凸子问题)可试 L-BFGS,作为补充而非主方案。
面试要点
- L-BFGS:拟牛顿、近似 $H^{-1}$,收敛步数少但单步贵、需大 batch/全梯度。
- 推荐中:模型大、非凸、随机、稀疏;全模型 L-BFGS 不现实;可考虑稠密部分 L-BFGS 或离线小模型。
- 权衡:一阶效率高、易扩展;二阶单步精度高、总成本与实现难度大;推荐以一阶为主。
记忆要点
- L-BFGS:拟牛顿、步数少、单步贵、适合光滑/大 batch。
- 推荐:规模大、非凸、稀疏,全模型 L-BFGS 不现实;可局部或离线尝试。
- 精度-效率:一阶快、易扩展;二阶单步准、总成本高;推荐以一阶为主。