Tensorflow 为什么keras SGD没有适当优化?

Tensorflow 为什么keras SGD没有适当优化?,tensorflow,machine-learning,optimization,keras,reinforcement-learning,Tensorflow,Machine Learning,Optimization,Keras,Reinforcement Learning,我正在开发一个强化学习代理。我已经弄清楚了结构和算法。目前我的目标是提高学习过程的稳定性。我将keras用于ML部分,并且使用adam优化器获得了很好的结果。下面是100次运行过程的图表(结果很好,但学习过程确实不稳定)。 我已经说过我想提高稳定性,所以我试着将优化器切换到SGD,结果是(我真的很困惑,因为它似乎越来越糟糕)。 一次运行和另一次运行之间的唯一区别是优化器。有什么想法导致这种行为吗?我没有足够的信息,但这种直觉可以解释你所看到的 虽然Adam有一个自适应步长,但SGD没有。这意味着

我正在开发一个强化学习代理。我已经弄清楚了结构和算法。目前我的目标是提高学习过程的稳定性。我将keras用于ML部分,并且使用adam优化器获得了很好的结果。下面是100次运行过程的图表(结果很好,但学习过程确实不稳定)。 我已经说过我想提高稳定性,所以我试着将优化器切换到SGD,结果是(我真的很困惑,因为它似乎越来越糟糕)。
一次运行和另一次运行之间的唯一区别是优化器。有什么想法导致这种行为吗?

我没有足够的信息,但这种直觉可以解释你所看到的

虽然Adam有一个自适应步长,但SGD没有。这意味着当步长太大时,SGD可能会在峡谷中开始反弹

这幅画属于下面的文章

如果步长保持不变,优化器将在“墙”之间保持跳跃。相反,Adam能够减小步长,从而获得更好的结果


如果您尝试减少SGD中的步长,可能会得到更好的结果,但是,所需的迭代次数会增加。

为什么优化会因此变得更糟?我不理解你的建议,但如果是这样的话,我会得到一个缓慢但实际的改善,相反,我所经历的是模型精度的不断下降。无论如何,我将尝试以某种方式减少SGD中的de步长,并观察结果。