深度学习中的Adam优化算法详解

Adam算法是一种自适应动量优化方法,常用于深度学习中的梯度下降。它结合了一阶矩和二阶矩的估计,通过校正一阶和二阶矩的偏置来平滑梯度更新,同时提供自适应学习率。Adam算法的优点包括梯度平滑过渡、环境感知能力和可解释的超参数。
摘要由CSDN通过智能技术生成

Adam论文https://arxiv.org/pdf/1412.6980.pdf

(一)、什么是Adam算法?
Adam(Adaptive momentum)是一种自适应动量的随机优化方法(A method for stochastic optimization),经常作为深度学习中的优化器算法。

(二)、Adam算法如何实现?
在这里插入图片描述
(1). 上图就是Adam优化算法在深度学习应用于梯度下降方法的详细过程,有一些参数要做出说明:

  1. t t t:更新的步数(steps)
  2. α \alpha α:学习率,用于控制步幅(stepsize)
  3. θ \theta θ:要求解(更新)的参数
  4. f ( θ ) f(\theta) f(θ):带有参数 θ \theta θ的随机目标函数,一般指损失函数
  5. g t g_t gt:目标函数 f ( θ ) f(\theta) f(θ) θ \theta θ求导所得梯度
  6. β 1 \beta_1 β1:一阶矩衰减系数
  7. β 2 \beta_2 β2:二阶矩衰减系数
  8. m t m_t mt:梯度 g t g_t gt的一阶矩,即梯度 g t g_t gt的期望
  9. v t v_t vt:梯度 g t g_t gt的二阶矩,即梯度 g t 2 g_t^2 gt2的期望
  10. m t ^ \hat{m_t} mt^ m t m_t mt的偏置矫正,考虑到 m t m_t mt在零初始值情况下向0偏置
  11. v t ^ \hat{v_t} vt^ v t v_t vt的偏置矫正,考虑到 v t v_t vt在零初始值情况下向0偏置

(2). 在上图的红色方框中显示了while循环实现了整个Adam算法在梯度下降中的优化过程:

  1. 更新steps
  2. 计算原目标函数 f ( θ ) f(\theta) f(θ)对参数 θ θ θ的梯度
  3. 计算梯度的一阶矩(first moment),即过往梯度与当前梯度的平均,类似平滑操作,如上图 m t m_t mt即是 s t e p s = t steps=t steps=t时的梯度一阶矩
  4. 计算梯度的二阶距(second moment),即过往梯度平方与当前梯度平方的平均,如上图 v t v_t vt即是 s t e p s = t steps=t steps=t时的梯度二阶矩
  5. 对一阶矩 m t m_t mt进行校正,因为 m t m_t mt初始值为0,所以它会向0偏置,这样处理后会减少这种偏置影响,具体计算公式为: m t ^ = m t / ( 1 − β 1 t ) \hat{m_t}=m_t/(1-\beta_1^t) mt^=mt/(1β1t),其中 β 1 t \beta_1^t β1t指的是 β 1 \beta_1 β1 t t t次方
  6. 对二阶矩 v t v_t vt进行校正,因为 v t v_t vt初始值为0,所以它会向0偏置,这样处理后会减少这种偏置影响,具体计算公式为: v t ^ = v t / ( 1 − β 2 t ) \hat{v_t}=v_t/(1-\beta_2^t) vt^=vt/(1β2t),其中 β 2 t \beta_2^t β2t指的是 β 2 \beta_2 β2 t t t次方
  7. 更新参数 θ t \theta_t θt,注意此时可将 α / ( v t ^ + ϵ ) \alpha/(\sqrt{\hat{v_t}}+\epsilon) α/(vt^ +ϵ)看成更新参数 θ t \theta_t θt的学习率, m t ^ \hat{m_t} mt^看成更新参数 θ t \theta_t θt的梯度

(三)、如何理解Adam算法中的一阶矩、二阶矩?
(1). 一阶矩( m t m_t mt)相当于 E ( g t ) E(g_t) E(gt),即当前梯度 g t g_t gt的期望,由于当下梯度梯度 g t g_t gt是随机采样得到的估计结果,因此更关注它在统计意义上的期望。

(2). 二阶矩( v t v_t vt)相当于 E ( g t 2 ) E(g_t^2) E(gt2),即当前梯度的平方 g t 2 g_t^2 gt2的期望,它们的物理意义是(考虑四种情况):

  1. ∣ ∣ m t ∣ ∣ ||m_t|| mt大且 v t v_t vt大时,说明梯度大且稳定,因为 ∣ ∣ m t ∣ ∣ ||m_t|| mt指的是当前梯度的均值的绝对值, v t v_t vt是平方求期望无正负抵消,得到的结果肯定为正,当 v t v_t vt很大时,说明过往大部分的梯度与当前梯度的绝对值都不会太小,若此时 ∣ ∣ m t ∣ ∣ ||m_t|| mt也很大,则说明过往梯度与当前梯度很少有正负抵消,即说明过往梯度与当前梯度一般会同号,导致求出的过往梯度与当前梯度的期望绝对值大,也即说明梯度更新相对稳定,过渡平滑,可以考虑成在梯度下降的过程中遇到一个明显的大坡,梯度下降方向明确。
  2. 当在 v t v_t vt很大而 ∣ ∣ m t ∣ ∣ ||m_t|| mt却很小时,则说明过往的大部分梯度和当前梯度的绝对值都很大,导致对 g t 2 g_t^2 gt2求期望的结果很大,但由于 ∣ ∣ m t ∣ ∣ ||m_t|| mt很小,则又说明过往的大部分梯度以及当前梯度一般不同号,正负相抵,求解出 g t g_t gt期望的绝对值 ∣ ∣ m t ∣ ∣ ||m_t|| mt自然会很小,这就说明此时梯度更新处于振荡状态,一会正,一会负,但由于 g t 2 g_t^2 gt2的期望 v t v_t vt很大,说明单个梯度的绝对值很大,可以考虑成可能是向下更新到一个局部的波谷,又进行一波反弹(可用Adam算法优化)。
  3. ∣ ∣ m t ∣ ∣ ||m_t|| mt很大而 v t v_t vt却趋于零时,这种情况不可能出现。
  4. ∣ ∣ m t ∣ ∣ ||m_t|| mt趋于零且 v t v_t vt也趋于零时,梯度趋于零,可能达到局部最低点,也可能走到一个极度平缓的平地,此时要避免陷入平原(plateau)(可用Adam算法优化)。

(四)、Adam算法有什么优点?

(1). 惯性保持:Adam算法记录了梯度的一阶矩,即过往所有梯度与当前梯度的平均,使得每一次更新时,上一次更新的梯度与当前更新的梯度不会相差太大,即梯度平滑、稳定的过渡,可以适应不稳定的目标函数。

(2). 环境感知:Adam记录了梯度的二阶矩,即过往梯度平方与当前梯度平方的平均,这体现了环境感知能力,为不同参数产生自适应的学习速率。

(3). 超参数,即 α \alpha α β 1 \beta_1 β1 β 2 \beta_2 β2 ϵ \epsilon ϵ具有很好的解释性,且通常无需调整或仅需很少的微调。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值