深度学习优化算法大全系列7:NAdam,算法选择,调参

Posted bitcarmanlee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习优化算法大全系列7:NAdam,算法选择,调参相关的知识,希望对你有一定的参考价值。

1.NAdam集大成

前面我们讲Adam的时候,提到Adam是Adaptive+Momentum。更前面的时候,我们还提到Nesterov,如果把Nesterov跟Adam结果,就是我们最后的集大成者NAdam。

class Nadam(Optimizer):
  """Nesterov Adam optimizer.

  Much like Adam is essentially RMSprop with momentum,
  Nadam is Adam RMSprop with Nesterov momentum.

  Default parameters follow those provided in the paper.
  It is recommended to leave the parameters of this optimizer
  at their default values.

  Arguments:
      lr: float >= 0. Learning rate.
      beta_1/beta_2: floats, 0 < beta < 1. Generally close to 1.
      epsilon: float >= 0. Fuzz factor. If `None`, defaults to `K.epsilon()`.
  """

  def __init__(self,
               lr=0.002,
               beta_1=0.9,
               beta_2=0.999,
               epsilon=None,
               schedule_decay=0.004,
               **kwargs):
    super(Nadam, self).__init__(**kwargs)
    with K.name_scope(self.__class__.__name__):
      self.iterations = K.variable(0, dtype='int64', name='iterations')
      self.m_schedule = K.variable(1., name='m_schedule')
      self.lr = K.variable(lr, name='lr')
      self.beta_1 = K.variable(beta_1, name='beta_1')
      self.beta_2 = K.variable(beta_2, name='beta_2')
    if epsilon is None:
      epsilon = K.epsilon()
    self.epsilon = epsilon
    self.schedule_decay = schedule_decay
...

tensorflow中Nadam源码,开篇两句话就揭示了本质:
1.Adam的本质是带动量的RMSprop。
2.Nadam是带Nesterov动量的Adam RMSprop。

β 1 , β 2 \\beta_1, \\beta_2 β1,β2等参数与Adam的含义与数值都是一致的。

2.如何选择优化算法

1.如果数据稀疏,一般自适应算法比较好,比如AdaGrad, AdaDelta, RMSProp, Adam等。
2.一般来说,Adam会是一个不错的选择。
3.可以在训练初始阶段,采用Adam提升收敛速度,后期在切换到SGD进行调优。

参考文献

https://zhuanlan.zhihu.com/p/32338983

以上是关于深度学习优化算法大全系列7:NAdam,算法选择,调参的主要内容,如果未能解决你的问题,请参考以下文章

深度学习优化算法大全系列6:Adam

深度学习优化算法大全系列5:AdaDelta,RMSProp

[人工智能-深度学习-15]:神经网络基础 - 常见优化器Optimizer及其算法 - 梯度下降法系列

深度学习笔记:SGDMomentumRMSpropAdam优化算法解析

深度学习笔记:SGDMomentumRMSpropAdam优化算法解析

深度学习系列经典博客收藏