天天看点

Adam优化器的直觉

作者:新缸中之脑

Adam是一种梯度下降优化技术的算法。 当处理涉及大量数据或参数的大问题时,该方法非常有效。 它需要更少的内存并且效率更高。 直观上,它是“动量梯度下降”算法和“RMSP”算法的结合。

Adam优化器的直觉
推荐:用 NSDT设计器 快速搭建可编程3D场景。

1、Adam优化器简介

Adam 优化器涉及两种梯度下降方法的组合:

1、Momentum

该算法通过考虑梯度的“指数加权平均值”来加速梯度下降算法。 使用平均值可以使算法以更快的速度收敛到最小值。

Adam优化器的直觉

其中:

Adam优化器的直觉
  • mt = 时间 t [当前] 时的梯度聚合(最初,mt = 0)
  • mt-1 = 时间 t-1 时的梯度总和 [previous]
  • Wt = 时间 t 时的权重
  • Wt+1 = 时间 t+1 时的权重
  • αt = 时间 t 时的学习率
  • ∂L = 损失函数的导数
  • ∂Wt = 时间 t 时权重的导数
  • β = 移动平均参数(常量,0.9)

2、均方根传播 (RMSP)

均方根 prop 或 RMSprop 是一种试图改进 AdaGrad 的自适应学习算法。 它不像 AdaGrad 那样采用梯度平方的累积和,而是采用“指数移动平均值”。

Adam优化器的直觉

其中:

Adam优化器的直觉
  • Wt = 时间 t 时的权重
  • Wt+1 = 时间 t+1 时的权重
  • αt = 时间 t 时的学习率
  • ∂L = 损失函数的导数
  • ∂Wt = 时间 t 时权重的导数
  • Vt = 过去梯度的平方和。 [即 sum(∂L/∂Wt-1)](最初,Vt = 0)
  • β = 移动平均参数(常量,0.9)
  • ϵ = 一个小的正常数 (10-8)

Adam Optimizer 继承了上述两种方法的优点或积极属性,并在此基础上构建了更优化的梯度下降。

Adam优化器的直觉

在这里,我们控制梯度下降的速率,使其达到全局最小值时振荡最小,同时采取足够大的步长(步长),以便一路通过局部最小值障碍。 因此,结合上述方法的特点可以有效地达到全局最小值。

2、Adam优化算法的数学

代入上述两种方法中使用的公式,我们得到

Adam优化器的直觉
  • ϵ = 一个小的 +ve 常数,以避免 (vt -> 0) 时出现“除以 0”错误。 (10-8)
  • β1 & β2 = 上述两种方法中梯度平均值的衰减率。 (β1 = 0.9 & β2 = 0.999)
  • α——步长参数/学习率(0.001)

由于 mt 和 vt 都初始化为 0(基于上述方法),因此观察到它们有“偏向 0”的趋势,因为 β1 和 β2 ≈ 1。此优化器通过计算“偏向”来解决此问题 更正' mt 和 vt。 这样做也是为了在达到全局最小值时控制权重,以防止接近它时出现高振荡。 使用的公式是:

Adam优化器的直觉

直观上,我们在每次迭代后适应梯度下降,使其在整个过程中保持受控且无偏差,因此得名 Adam。

现在,我们采用偏差校正权重参数 (m_hat)t 和 (v_hat)t,而不是正常的权重参数 mt 和 vt 。 将它们代入我们的一般方程,我们得到

Adam优化器的直觉

3、Adam优化器的性能

基于先前模型的优势,Adam 优化器提供了比先前使用的模型更高的性能,并且在提供优化的梯度下降方面大幅优于它们。 下图清楚地描绘了 Adam 优化器如何在训练成本(低)和性能(高)方面大幅优于其他优化器。

Adam优化器的直觉

原文链接:http://www.bimant.com/blog/adam-optimizer-intuition/