提出

Adam(Adaptive Moment Estimation)算法是由 Diederik P. Kingma 和 Jimmy Ba 在 2014 年提出的。这一算法的详细描述和原理可以在论文《Adam: A Method for Stochastic Optimization》中找到,该论文最初是在 2014 年 12 月 22 日提交到 arXiv 的,并且后来在 2015 年的 ICLR 会议上发表

Adam 算法结合了 AdaGrad 算法和 RMSProp 算法的优点,通过计算梯度的一阶矩估计和二阶矩估计来为不同的参数设计独立的自适应性学习率,从而实现更高效的网络训练

AdaMax 论文中也提到 AdaMax 作为算法的一个变种,它在某些情况下可能对特定问题进行更有效的优化

Adam 算法的原理

Adam(Adaptive Moment Estimation)优化器是一种用于深度学习中的自适应学习率优化算法。它结合了 AdaGrad 算法和 RMSprop 算法的优点,通过计算梯度的一阶矩估计(均值)和二阶矩估计(未中心化的方差)来调整每个参数的学习率,从而实现自适应学习率

Adam 算法的关键特性包括:

  1. 动量(Momentum):类似于物理中的动量概念,它帮助算法在优化过程中增加稳定性,并减少震荡
  2. 自适应学习率:Adam 为每个参数维护自己的学习率,这使得算法能够更加灵活地适应参数的更新需求
  3. 偏差修正(Bias Correction):由于算法使用了指数加权移动平均来计算梯度的一阶和二阶矩估计,因此在初始阶段会有偏差。Adam 通过偏差修正来调整这一点,使得估计更加准确

更新规则如下:

  1. 初始化一阶矩估计(动量) 和二阶矩估计(梯度平方的移动平均) 为 0,以及时间步长
  2. 在每次迭代中,计算梯度
  3. 更新一阶矩估计 和二阶矩估计
  4. 计算偏差修正的一阶矩估计 和二阶矩估计
  5. 更新参数

其中, 是学习率, 是为了数值稳定性而添加的小常数(例如 ), 是超参数,通常分别设为 0.9 和 0.999

Adam 算法的主要特点

Adam 算法因其在多种深度学习任务中的有效性和效率而受到广泛欢迎,尤其是在处理大规模数据集和复杂模型时。然而,它也有一些潜在的问题,比如可能在某些情况下发散。为了解决这个问题,研究者提出了一些改进的算法,如 Yogi 等

在实际应用中,通常需要根据具体问题调整超参数 ,学习率 ,以及 以达到最佳性能