Adam 和 RMSprop优化算法
Adam 和 RMSprop 是两种广泛使用的优化算法,它们在处理非凸优化问题时,特别是在训练深度神经网络中,表现出优异的性能。这两种方法都利用了梯度的一阶矩(均值)和二阶矩(未平方的方差)来调整学习速率,但在细节实现上有所不同。下面是对这两种算法的详细介绍和对比:
RMSprop
RMSprop(Root Mean Square Propagation)是由 Geoff Hinton 提出的,主要是为了解决 Adagrad 算法学习率急剧下降的问题。RMSprop 通过引入衰减系数来调整历史梯度的累积方式,使其能够在训练过程中维持一个合适的、非递减的学习速率。
核心思想:
- 对每个参数使用不同的学习速率,这些学习速率是基于最近梯度的大小调整的。
- 计算梯度的均方根,并使用该值来调整每个参数的学习速率。
更新规则:
- v t = β v t − 1 + ( 1 − β ) ∇ θ J ( θ ) v_t = \beta v_{t-1} + (1 - \beta) \nabla_{\theta} J(\theta) vt=βvt−1+(1−β)∇θJ(θ)
- θ = θ − η v t + ϵ ∇ θ J ( θ ) \theta = \theta - \frac{\eta}{\sqrt{v_t + \epsilon}} \nabla_{\theta} J(\theta) θ=θ−vt+ϵη∇θJ(θ)
其中, v t v_t vt 是梯度平方的指数加权移动平均, β \beta β 通常设置为 0.9, η \eta η是初始学习速率, ϵ \epsilon ϵ是一个非常小的数,以避免除以零。
Adam
Adam(Adaptive Moment Estimation)结合了 Momentum 和 RMSprop 的思想,不仅考虑了梯度的一阶矩估计(即 Momentum),还考虑了二阶矩估计(即 RMSprop)。Adam 在实际应用中被证明是一种效果非常好的优化算法。
核心思想:
- 同时计算梯度的一阶矩和二阶矩的指数加权移动平均。
- 使用这些矩估计来调整每个参数的学习速率。
更新规则:
- m t = β 1 m t − 1 + ( 1 − β 1 ) ∇ θ J ( θ ) m_t = \beta_1 m_{t-1} + (1 - \beta_1) \nabla_{\theta} J(\theta) mt=β1mt−1+(1−β1)∇θJ(θ)
- v t = β 2 v t − 1 + ( 1 − β 2 ) ( ∇ θ J ( θ ) ) 2 v_t = \beta_2 v_{t-1} + (1 - \beta_2) (\nabla_{\theta} J(\theta))^2 vt=β2vt−1+(1−β2)(∇θJ(θ))2
- m t ^ = m t 1 − β 1 t \hat{m_t} = \frac{m_t}{1 - \beta_1^t} mt^=1−β1tmt
- v t ^ = v t 1 − β 2 t \hat{v_t} = \frac{v_t}{1 - \beta_2^t} vt^=1−β2tvt
- θ = θ − η v t ^ + ϵ m t ^ \theta = \theta - \frac{\eta}{\sqrt{\hat{v_t} + \epsilon}} \hat{m_t} θ=θ−vt^+ϵηmt^
其中, m t m_t mt 和 v t v_t vt 分别是一阶和二阶矩的估计, β 1 \beta_1 β1 和 β 2 \beta_2 β2 是衰减率,通常分别设置为 0.9 和 0.999。偏差修正步骤(通过 m t ^ \hat{m_t} mt^ 和 v t ^ \hat{v_t} vt^)是必须的,因为它们帮助校正在训练初期估计的低偏差。
总结
- RMSprop 是一个非常有效的、但相对简单的适应性学习率方法。
- Adam 在 RMSprop 的基础上增加了动量项,通常提供更好的稳定性。
- 在实际应用中,Adam 是更受欢迎的选择,因为它通常能够更快地收敛,尤其是在复杂的深度学习模型中。
在选择优化算法时,考虑具体问题的性质是很重要的,有时候可能需要通过实验来决定使用哪种算法。