我已经使用神经网络已有一段时间了。但是,我经常遇到的一件事就是选择用于训练网络的优化器(使用反向传播)。我通常要做的只是从一个开始(例如标准的SGD),然后随机尝试其他一些。我想知道是否有更好的(且随机性较低)的方法来找到好的优化器,例如,从以下列表中查找:
- SGD(有或没有动力)
- 阿达达
- 阿达格拉德
- RMSProp
- 亚当
我特别感兴趣的是,鉴于训练数据具有某些属性(例如,稀疏),是否有某种理论上的理由可以选拔另一个。我也可以想象某些优化器在特定领域比其他优化器工作得更好,例如,在训练卷积网络与前馈网络或分类与回归时。
如果你们中的任何人已经对如何选择优化程序制定了一些策略和/或直觉,那么我将非常感兴趣。此外,如果有一些工作提供了理论上的选择的依据,那就更好了。