AdamW, LAMB: 大型预训练模型常用优化器

本文介绍了优化器的发展历程,重点分析了Adam、AdamW和LAMB的工作原理及其优缺点。AdamW解决了Adam的过拟合问题,LAMB则旨在加速大规模预训练模型的训练过程,尤其是在大batch size下保持梯度更新的精度。
摘要由CSDN通过智能技术生成

前言

按照时间上的迭代顺序,近些年神经网络先后出现了 Gradient Descent (GD)、Momentum、Adaptive Gradient (AdaGrad)、Root Mean Square prop (RMSprop)、Adaptive Moment estimation (Adam) 等优秀的优化器。到如今,大部分 NLP 预训练模型已不再使用这些方法,而是使用 Adam Weight Decay Regularization (AdamW) 和去年首度亮相的 Layer-wise Adaptive Moments optimizer for Batching training (LAMB)。为何最为传统的 GD,包括衍生的 stochastic GD、mini-batch GD 优化器已不再使用,下文会有详细的介绍。

Gradient Descent (GD)

梯度下降法是最为经典的凸优化优化器,思想也非常明确:通过 loss 反向传导计算参数的梯度,参数往哪个方向跑可以让 loss 下降,就让参数往哪个方向更新:
Δ W k = ∂ l o s s ∂ W k = ∂ l o s s ∂ Z n ∂ Z n ∂ Z n − 1 . . . ∂ Z k + 1 ∂ W k \Delta W_k=\frac{\partial loss}{\partial W_k}=\frac{\partial loss}{\partial Z_n}\frac{\partial Z_n}{\partial Z_{n-1}}...\frac{\partial Z_{k+1}}{\partial W_k} ΔWk=Wkloss=ZnlossZn1Zn...WkZk+1

W k ← W k − α Δ W k W_k\leftarrow W_k-\alpha \Delta W_k WkWkαΔWk

需要注意的是, W k W_k Wk 中的每一个浮点元素的梯度计算和梯度更新,相互之间是完全独立的,这对于理解梯度更新的机理非常重要。上式中, α \alpha α 为学习率,通常是一个固定的超参数,学习率越高,收敛越快。但需要注意控制范围。学习率过大,容易造成梯度跨过参数的局部最优点造成参数震荡;学习率过小,会导致训练过程过于漫长。为避免参数震荡,使用 GD 时,学习率通常设置在一个较低值,且训练的 batch_size 越大,学习率越低。梯度裁剪虽能一定程度上解决梯度震荡的问题,但由于输出的概率分布发生偏移,模型收敛也受到一定负面影响,因此需尽可能避免对梯度裁剪的依赖。

Adaptive Moment estimation (Adam)

为解决 GD 中固定学习率带来的不同参数间收敛速度不一致的弊端,AdaGrad 和 RMSprop 诞生出来,为每个参数赋予独立的学习率。计算梯度后,梯度较大的参数获得的学习率较低,反之亦然。此外,为避免每次梯度更新时都独立计算梯度,导致梯度方向持续变化,Momentum 将上一轮梯度值加入到当前梯度的计算中,通过某种权重对两者加权求和,获得当前批次参数更新的更新值。 Adam 结合了这两项考虑,既为每一个浮点参数自适应性地设置学习率,又将过去的梯度历史纳入考量:
m t = β 1 m t − 1 + ( 1 − β 1 ) Δ W m_t=\beta_1m_{t-1}+(1-\beta_1)\Delta W mt=β1mt1+(1β1)ΔW

v t = β 2 v t − 1 + ( 1 − β 2 ) Δ W 2 v_t=\beta_2v_{t-1}+(1-\beta_2)\Delta W^2 vt=β2vt1+

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值