Adafactor: Adaptive Learning Rates with Sublinear Memory Cost

Shazeer N. and Stern M. Adafactor: Adaptive learning rates with sublinear memory cost. ICML, 2018.

本文介绍了一种 memory-efficient 的优化器: Adafactor.

符号说明

  • x, parameters;
  • Wx, a linear transformation, Rn×m

Adafactor

下面, 我们一步步介绍 Adafactor 对于 Adam 的修改.

Factored Second Moment Estimation

  • 一般的 Adam 的更新流程如下:

  • 一个比较重要的点是 一阶和二阶 的动量估计, 这个估计导致了 Adam 至少需要 2x 的参数的缓存.

  • 假设对于 linear transformation WRn×m, 它所对应的二阶动量为: VRn×m, 作者希望将他分解成两个低秩矩阵: RRn×k,SRk×m, 使得

    VRS.

  • 由于 V 是非负的, 所以作者更倾向于 nonnegative matrix factorization, 并利用泛化的 KL 散度—— I-divergence:

    d(p,q)=plogpqp+q

    作为度量.

  • 作者希望 R,S 能够满足:

    minRRn×k,SRk×mi=1nj=1md(Vij,[RS]ij)s.t.Rij0,Sij0.

  • 特别的, 作者证明了, 在 k=1 的情况下, 一定有:

    RS=V1m1nTV/1nTV1m,1:=(1,,1)R

    成立. 于是, 在这种情况下, 不失一般性的, 可以领:

    R=V1m,C=1TV.

  • 于是, 作者给出了如下的 Vt 的更新方案:

    Gt=ft(Wt1)Rt=β2Rt1+(1β2)(Gt21m)Ct=β2Ct1+(1β2)(1nTGt2)V^t=(RtCt/1nTRt)/(1β2t)Wt=Wt1αGt/(V^t+ϵ).

No Momentum

  • 为了进一步降低一阶动量的缓存, 作者直接令 β1=0, 即移除了一阶动量.

Out-of-Date Second Moment Estimator

  • 作者认为, 当模型变化特别快的时候, 二阶矩的估计很容易过时:

  • 如上图所示, 当我们用一个较大的 β2, 如果没有 warm-up (即模型缓慢更新) 阶段, 效果是特别差的.

  • 为了验证这一点, 作者统计:

    RMS(Ut)=RMSxX(uxt)=MeanxX(gxt2v^xt).

    作者认为, 如果训练是稳定的, RMS(Ut)1, 既然 Adam 的一个假设是:

    E[v^]=E[g2].

  • 如上图所示, β2 取得比较大的时候, 结果并不是这样的. 于是:

    Ut=Gt/V^tU^t=Ut/max(1,RMS(Ut)/d)Wt=Wt1αtU^t.

    即 Adafactor 会手动校准.

算法

  • Adafactor 对于 matrix:

  • Adafactor 对于 vector:

  • 默认的参数设置:

注: ρ 是人为设置的相对步长, 这里不多赘述了.

代码

[pytorch-optimizer]

posted @   馒头and花卷  阅读(96)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2023-09-11 Graph Construction and b-Matching for Semi-Supervised Learning
2022-09-11 On Sampled Metrics for Item Recommendation
2019-09-11 Deep Linear Networks with Arbitrary Loss: All Local Minima Are Global
点击右上角即可分享
微信分享提示