选择用于训练神经网络的优化器的准则


18

我已经使用神经网络已有一段时间了。但是,我经常遇到的一件事就是选择用于训练网络的优化器(使用反向传播)。我通常要做的只是从一个开始(例如标准的SGD),然后随机尝试其他一些。我想知道是否有更好的(且随机性较低)的方法来找到好的优化器,例如,从以下列表中查找:

  • SGD(有或没有动力)
  • 阿达达
  • 阿达格拉德
  • RMSProp
  • 亚当

我特别感兴趣的是,鉴于训练数据具有某些属性(例如,稀疏),是否有某种理论上的理由可以选拔另一个。我也可以想象某些优化器在特定领域比其他优化器工作得更好,例如,在训练卷积网络与前馈网络或分类与回归时。

如果你们中的任何人已经对如何选择优化程序制定了一些策略和/或直觉,那么我将非常感兴趣。此外,如果有一些工作提供了理论上的选择的依据,那就更好了。

Answers:


3

1)对于频繁更新的参数,AdaGrad对学习率的惩罚过于苛刻,而对于稀疏参数(不经常更新的参数),则提供了更高的学习率。在一些问题中,最关键的信息通常不经常出现但稀疏存在于数据中。因此,如果您要解决的问题是处理tf-idf等稀疏数据。Adagrad可能有用。

2)AdaDelta,RMSProp几乎可以在相似的行上运行,而Adadelta的唯一区别就是您不需要初始学习速率常数即可。

3)Adam结合了Adadelta和RMSprop的良好特性,因此在大多数问题上往往做得更好。

4)随机梯度下降是非常基本的,现在很少使用。一个问题是与之相关的整体学习率。因此,当参数处于不同比例时,效果不好,因为较低的学习速率会使学习变慢,而较高的学习速率可能会导致振荡。同样,随机梯度下降通常很难摆脱鞍点。Adagrad,Adadelta,RMSprop和ADAM通常可以更好地处理鞍点。具有动量的SGD可以加快优化速度,还有助于更好地逃避局部最小值。


2

我个人的方法是选择最新的优化器(即在同行评审期刊中最新发布的优化器),因为它们通常会在标准数据集上报告结果,或者超越最新技术水平,或者两者兼而有之。例如,当我使用Caffe时,我总是使用Adam(http://arxiv.org/abs/1412.6980)。


0
Nadam(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=None, schedule_decay=0.004)

就像Adam基本上是RMSprop与气势,Nadam是亚当RMSprop与涅斯捷罗夫势头。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.