Optimization Algorithms in Deep Learning

GD

SGD

Adam

Adam算法是随机梯度下降算法的扩展,通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率。算法结合了Momentum和RMSprop,同时借助指数平均(EMA)的思想来对偏差进行矫正

算法实现


  1. Initilize:

    • model parameters ωt , moving average of gradients m0=0, moving average of squared gradients v0=0


  2. for t = 1, ..., T -1 do

    • mt=β1mt1+(1β1)gt

    • vt=β2vt1+(1β2)gt2

    • m^t=mt/(1β1t)

    • v^t=vt/(1β2t)


    • Update parameters: ωt=ωt1αm^t/(v^t+ε)

    end for


其中,α是学习率,β1β2 分别是第一项和第二项动量的衰减系数,ε 确保分母不为0,通常取ε=108

AdamW

AdamW是对Adam的进一步拓展,其目是解决Adam的过拟合问题,具体是在参数更新(Update parameters)时引入前一时刻的参数(式(1)),其余部分与Adam算法保持相同。

(1)ωt=ωt1α(m^t/(v^t+ε)+λωt1)

其中, λ 是权重衰减系数,一般取0.005/0.01

LAMB

LAMB同样是Adam优化器的扩展,旨在解决在缩放不同层或参数的梯度更新时的局限性,使模型在进行大批量数据训练时,能够维持梯度更新的精度。LAMB在AdamW 的基础上对每一层的学习率使用Trust Ratio(式(2))进行放缩,其余部分则是与AdamW保持相同。

(2)trust_ratio=ϕ(ωt1m^t/(v^t+ε)+λωt1)(3)ωt=ωt1αtrust_ration(m^t/(v^t+ε)+λωt1)

其中,ϕ()是一个可选择的映射函数,一般选取ϕ(z)=z。但是LAMB只适用于大模型的预训练环节,其在batch_size<512时无法起到显著作用。