LARS优化器
介绍
LARS是基于SGD提出,适用于large batch size的优化器。
通过增大batch size来提高模型的训练速度,如果保持训练epoch不变,则训练的step会减少。弥补训练迭代次数不足的直接方法可以增大LR,当batch size增大k倍时,LR也增大k倍。但是较大的LR会导致网络泛化,特别是在训练的初始阶段。
优点
- 网络的每一层都有一个local LR,使得模型训练更稳定
- 通过权重范数控制更新的幅度,可以更好的控制训练速度
启发
- 论文提出“learning rate warm-up”来解决large batch size出现的问题
- 在训练前几个epoch,LR从一个较小值开始训练,增加到目标LR(k倍增长)
- 作者发现,在网络开始训练时,不同层的权重L2范数和对应梯度L2范数的比值(ratio)的差异很大
- 网络参数更新
- 对于较小的ratio,使用较大的LR可能导致 λ ∇ L ( w t ) \lambda\nabla L(w_t) λ∇L(wt)大于 w t w_t wt,从而导致模型不稳定,这也是warm-up方法有效的原因
- 作者认为,每一层都有不同的ratio,那么,每一层都应该使用不同的LR,作者引入local LR,每一层的local LR不同,然后全局LR通过local LR进行更新
方法与实现
Local LR计算, η < 1 \eta<1 η<1表示一次更新是每层会改变参数的置信度trust
由于 η \eta η很小,对于较小的ratio,计算得到的Local LR也很小,参数更新比较稳定
参数更新, γ \gamma γ为全局学习率, l l l代表层数
引入Local LR的同时,对梯度的 l 2 l_2 l2进行了归一化,因此参数更新幅度不再依赖于梯度的大小,所以缓解梯度渐变消失和爆炸的问题。
拓展至SGD,包含weight decay的参数更新
伪代码
实验
作者以batch size512作为batchline,将batch size增加到8k,使用LARS训练,达到了和512相当的效果
作者将warm-up和LARS结合,将batch size增加到32k,也能达到和256相当的效果