跳到主内容
快讯直播
AI智模界
AI 词典

二阶优化器(Shampoo / SOAP):用曲率换更少步数

一句话定义:二阶优化器(second-order optimizer)不只使用梯度,还利用“曲率”信息决定更新方向;Shampoo 和 SOAP 是它在大模型训练里的近似实现。

原理:SGD 和 Adam 像在雾里下山,只能感受脚下坡度。二阶方法还想知道“坡会不会变陡、哪个方向更平”。理想中,牛顿法用 Hessian 矩阵(Hessian)修正梯度:θ ← θ − H⁻¹g。它把狭长的椭圆山谷“拉圆”,所以同样步长能走得更准,更新步数更少。问题是神经网络动辄上亿参数,H 是 N×N 巨矩阵,存不下也算不起。

Shampoo 怎么省:它把每层权重看成矩阵 W(m×n),不构造整个 H,而是分别统计行方向协方差 L(m×m)和列方向协方差 R(n×n),再用 L^(-1/4) 和 R^(-1/4) 夹住梯度做缩放。直觉像给大楼调温:不逐个房间建模,先按楼层调、再按朝向调。它比 Adam 的逐元素缩放更能抓住“行列方向曲率不同”的结构。代价是 L、R 要做矩阵分解和求逆根,计算量随矩阵边长三次方增长。

SOAP 做了什么:它先对 Shampoo 的 L、R 做特征分解,得到一组“自然坐标轴”,把梯度投影进去,在里面跑 Adam,再投影回来。可以理解为:先用曲率把地形拉圆,再在圆碗里用 Adam 做稳、做细。它保留了 Shampoo 的方向信息,又借了 Adam 的稳定性。具体实现与默认超参以官方代码和论文为准。

方法主要信息每步开销适合场景
SGD/Adam梯度、逐元素历史低大模型默认配置
L-BFGS历史梯度近似曲率中中小规模、全批量
Shampoo行/列协方差预条件高,需矩阵分解/求逆根想省更新步数
SOAPShampoo 特征基 + Adam更高追求稳定与收敛效率

和相邻概念的区别:Adam 的“二阶矩”只是每个参数自己的历史平方,不跨参数;L-BFGS 是拟牛顿法(quasi-Newton),用历史梯度差近似 Hessian 逆,随机小批量下常不稳;K-FAC 也做 Kronecker 近似,但按层近似 Fisher 信息。Shampoo/SOAP 的共同点是用梯度统计构造结构化预条件子,并尽量适配大模型并行。

实际意义:二阶优化器卖的是“样本效率”——用更少更新步数达到目标,但每步更贵、显存更高、通信更复杂。是否划算,取决于瓶颈是算力、显存、通信还是收敛速度。对普通职场人,可以把它理解成:优化器在“每步便宜但步数多”和“每步昂贵但步数少”之间做取舍。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。