LaProp先归一再累积动量,噪声下Adam会发散

LaProp: Separating Momentum and Adaptivity in Adam

Liu Ziyin, Zhikang T. Wang, Masahito Ueda

cs.LG, stat.ML

2020-02-12

东京大学提出LaProp,先用RMS归一梯度再累积动量,解开Adam里动量与自适应的耦合。噪声Rosenbrock在σ≥0.12时只有它能收敛,Breakout测试607对Adam的523。

这篇在解决什么

Adam 的更新是先对梯度做指数滑动平均,再用当前步的 RMS 去除。写到参数空间里,上一步攒下来的动量会被当前预条件器再乘一次,也就是 Ht^{-1} H{t-1}。一次病理大梯度,噪声、分布外样本或梯度爆炸,就能把已经攒好的方向抹掉。

这不是单纯的 β1、β2 没调好。μ 管分子上的动量,ν 管分母上的二阶矩,两者绑在一起。论文在 MNIST 上用两层 ReLU,μ=0.9、ν=0.7,Adam 直接发散,同一组超参下 LaProp 全程稳定。

方法

LaProp 把顺序反过来:先用当前 RMS 把这一步梯度归一,再对归一后的量做动量。参数空间里的动量不再被新的预条件器重加权,形式上就是动量项的预条件矩阵取单位阵。

每一步是:

cn、cm 是和 Adam 一样的偏差校正。超参数个数与 Adam 相同,Adam 的设置可以直接搬过来。推荐默认是 λ=4×10^{-4}、μ=0.8–0.9、ν=0.95–0.999、ε=10^{-15}。

这个顺序带来两个可复述的后果。第一,单步更新的模长永远不超过 1/sqrt(1-ν),上界只跟 ν 有关,跟 μ 无关;Adam 的上界只在 μ < sqrt(ν) 时存在,还带一个 μ/sqrt(ν) 的耦合因子。第二,ν→0 时 LaProp 退化成带动量的符号梯度;Adam 在 μ≠0 时,用当前 |gt| 去除历史动量,方差会发散。

凸问题上 regret 仍是 O(√T),和 SGD、Adam、AMSGrad 同阶。差别在证明的第三项:Adam 风格里的 1/((1-μ)(1-γ)) 被换成 1/(1-ν),γ=μ/√ν 这条限制也就没了。LaProp 对任意 ν∈[0,1) 都有界。

结果

设置指标LaPropAdam
噪声 Rosenbrock, σ≥0.12最长 10000 步内能否收敛不能
IWSLT14 de-en, 最大学习率 3×10^{-4}, 无 warmup训练是否掉进坏极小继续找更好解卡住
Rainbow DQN, Breakout 测试最佳模型得分607.3±47.6522.9±40.6
IMDB 情感, 无标签噪声, ν=0相对 Adam/AMSGrad 最优设置准确率约高 10 个百分点对照基线

风格迁移任务上,LaProp 在扫过的 ν 范围内平均 regret 最低,最优 ν 是 0.4,Adam 只在 ν 较大时才稳。MNIST 上 500 层和 1000 层、宽度 256 的全连接 ReLU 网络,LaProp 能用更大的学习率,训练损失降得更快。RoBERTa(base) 在完整英文维基上只跑了前 2×10^4 步,LaProp 更快,并且可以关掉 warmup。CIFAR-10 的 ResNet-20 在常用 (μ,ν) 区域两者持平;μ 明显大于 ν 时 Adam 会出现 NaN,LaProp 不受影响。

为什么重要

对训练代码来说,这是一个 drop-in 替换:同样四个超参,实现就是先除 RMS 再做动量。噪声大、训练一开始就不稳、或者想把 ν 往小拧去逼近符号梯度时,这篇给出了 Adam 拧不动的原因。RL 和深层全连接这种容易炸的场景,数字也站得住。

它仍然是渐进改进。2021 年之后 AdamW 还是默认,这篇没有在大规模预训练上跑完,也没有证明最终泛化一定更好。CIFAR 常用区域两者差不多,稳定任务上你未必能感到差别。值得跟进的是机制:动量应该活在参数更新空间,还是活在原始梯度空间。

局限与存疑

作者自己写明,对真正优势的理解还需要更多实验。RoBERTa 实验只覆盖前 2×10^4 次更新,不到一个 epoch。IWSLT 的无 warmup 优势高度依赖学习率:改成 10^{-4} 时 Adam 也不再卡住,改成 10^{-3} 时两者差别变小。凸 regret 证明沿用了 Adam 系常见假设(s{t+1}/λ{t+1} 单调),没有给出非凸保证。IMDB 上 ν=0 泛化最好,和训练后期应把 ν 调大的建议方向相反,论文没有把这条张力收束成可操作的调度。代码已公开,但后续社区采用度不在这篇的评估范围内。

术语

原文与代码

社区讨论

相关论文

全部论文解读