Adam,AdamW,LAMB优化器原理与代码

本文介绍了深度学习中常用的优化器Adam、AdamW和LAMB的原理,包括它们的计算公式及代码实现。Adam结合了AdaGrad和RMSprop的优点,而AdamW解决了Adam优化器在L2正则化上的问题,LAMB则旨在解决大batch size训练时的收敛问题,允许更大的批量大小而不牺牲准确性。
摘要由CSDN通过智能技术生成

参考文献:
1.https://www.fast.ai/2018/07/02/adam-weight-decay/
2.https://arxiv.org/pdf/1904.00962.pdf
3.https://blog.csdn.net/weixin_43269174/article/details/106255084

前言

说到优化器,我们脑海中首先浮现的可能就是 Stochastic Gradient Descent (SGD)、Adaptive Gradient (AdaGrad)、Root Mean Square prop (RMSprop)、Adaptive Moment estimation (Adam) 等常用的老牌优化器。但是神经网络发展到了现在,大部分 NLP 预训练模型已不再使用这些方法,而是使用 Adam Weight Decay Regularization (AdamW) 和19年首度亮相的 Layer-wise Adaptive Moments optimizer for Batching training (LAMB)。这些新兴优化器的优点是什么呢?为什么如此受欢迎?这些网上已经有很多分析和解释了,这里不再说明,本文的重点就是Adam,AdamW,LAMB的计算公式和代码实现。

1 Adam

为解决 GD 中固定学习率带来的不同参数间收敛速度不一致的弊端,AdaGrad 和 RMSprop 诞生出来,为每个参数赋予独立的学习率。计算梯度后,梯度较大的参数获得的学习率较低,反之亦然。此外,为避免每次梯度更新时都独立计算梯度,导致梯度方向持续变化,Momentum 将上一轮梯度值加入到当前梯度的计算中,通过某种权重对两者加权求和,获得当前批次参数更新的更新值。 Adam 结合了这两项考虑,既为每一个浮点参数自适应性地设置学习率,又将过去的梯度历史纳入考量,其实现原理如下:
m t = β 1 ∗ m t − 1 + ( 1 − β 1 ) ∗ g t v t = β 2 ∗ v t − 1 + ( 1 − β 2 ) ∗ g t 2 m t ^ = m t / ( 1 − β 1 t ) v t ^ = v t / ( 1 − β 2 t ) θ t = θ t − 1 − α ∗ m t ^ v t ^ + ϵ m_t=\beta_1*m_{t-1}+(1-\beta_1)*g_t\\ v_t=\beta_2*v_{t-1}+(1-\beta_2)*g_t^2\\ \hat{m_t}=m_t/(1-\beta_1^t)\\ \hat{v_t}=v_t/(1-\beta_2^t)\\ \theta_t=\theta_{t-1}-\alpha*\frac{\hat{m_t}}{\sqrt{\hat{v_t}}+\epsilon} mt=β1mt1+(1β1)gtvt=β2vt1+(1β2)gt2mt^=mt/(1β1t)vt^=vt/(1β2t)θt=θt1αvt^<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值