为什么keras SGD无法正确优化?

2023-03-22
前端之家小编收集整理的为什么keras SGD无法正确优化?内容,希望整理的这个开发编程问题为什么keras SGD无法正确优化?能够快速解决!

代码问题

我正在开发强化学习代理。我已经弄清楚了结构和算法。目前,我的目标是提高学习过程的稳定性。我在ML部分中使用了keras,并且在adam优化器中获得了不错的结果。这是100次运行过程的图表(效果不错,但学习过程确实不稳定)。

为什么keras SGD无法正确优化?

我已经说过我想提高稳定性,所以我尝试将优化器切换到SGD,这是结果(确实让我感到困惑,因为它似乎越来越差了)。

为什么keras SGD无法正确优化?

一个运行与另一个运行之间的唯一区别是优化程序。有什么想法导致这种行为吗?

问题答案

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

虽然Adam具有自适应步长,但SGD没有。这意味着,如果步长太大,则SGD可能会在山沟中弹起。

enter image description here

该图片属于以下文章https://blog.paperspace.com/intro-to-optimization-momentum-rmsprop-adam/

如果步长保持恒定,则优化器将在“墙”之间不断跳动。相反,Adam可以减小步长,从而获得更好的结果。

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

如果觉得前端之家所整理的内容很不错的话,欢迎点击下方分享按钮,转发给身边开发程序员好友。

编程问答


是否可以将 Python 程序转换为 C/C++? 我需要实现几个算法,我不确定性能差距是否足以证明我在 C/C++ 中执行它时所经历的所有痛苦(我不擅长)).我想写一个简单的算法,并根……
我想使用 NTT 进行快速平方(请参阅快速 bignum 平方计算),但即使对于非常大的数字……超过 12000 位.
C++ 标准在 3.3.2声明点\"中包含一个半著名的令人惊讶\"名称查找示例: int x = x; 这用自身初始化 x,它(作为原始类型)未初始化,因此具有不确定的值(假设它是一个自动变……
以下代码: myQueue.enqueue(\'a\'); myQueue.enqueue(\'b\'); cout << myQueue.dequeue() << myQueue.dequeue();
据我所知,写时复制不是在 C++11 中实现符合标准的 std::string 的可行方法,但是当它最近在讨论中出现时,我发现我自己无法直接支持这种说法.