强化学习不良环境中的神经网络优化器

人工智能 强化学习 优化
2021-11-17 08:20:57

https://stackoverflow.com/questions/36162180/gradient-descent-vs-adagrad-vs-momentum-in-tensorflow

在这里,漂亮的 gif 图像解释了不同的算法是如何接近根的。不幸的是,gif 中的环境过于简单,而实际案例的环境要复杂得多。此外,在强化学习中,由于事情是动态的,因此在足够困难的环境中,解决方案应该每时每刻都在变化。

我的问题是,在这种动态变化的环境中,哪种优化器最适合强化学习?Adadelta 不应该超出局部最小值,所以我们是否必须使用 SGD 或 Adadelta 进行探索启发式?请详细告诉我你的想法。

1个回答

过去几年深度强化学习研究中最常用的优化器可能是 ADAM(或其AMSGrad 变体,在大多数框架(如 keras/tensorflow/pytorch 等)中,可以通过在构建 ADAM 时设置amsgrad标志来使用True优化器,我相信通常也已经True默认设置为)。这是一个较新的优化器,未包含在您链接到的可视化中。

RMSProper 也仍然很受欢迎,并且可能有一些争论认为它可能更适合于非平稳学习问题(我们通常在 RL 中遇到这种情况,我们的学习目标往往是非平稳的,因为代理会调整其行为时间)。

所有这些更“花哨”的优化器,通常包括某种形式的动量项,实际上对于优化不平滑的损失“景观”特别有用。想象一下,你的损失景观看起来像一座高山,我们希望优化器一直“滑行”下来。现在假设山的一侧总体趋势是向下的,但是向下的过程中有很多小颠簸,这不是一座平坦的山。与没有动量项的常规 SGD 优化器相比,具有动量项的更花哨的优化器更有可能“跳过”这些颠簸。这是因为,当遇到一点点颠簸时,局部梯度可能会指向错误的方向,但动量项会“记住”