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