machine-learning - 最佳强化学习器优化器

标签 machine-learning reinforcement-learning

我正在为机器人应用程序运行 SAC 强化学习器,并取得了一些相当不错的结果。我选择强化学习的原因之一是在现场学习的能力,例如适应机械变化,例如磨损的轮胎或车轮稍微不对齐。

我的强化学习器在启动时会恢复上次保存的权重和重播缓冲区,因此每次打开它时都不需要重新训练。然而,我担心的一个问题是优化器。

自 ADAM 以来,优化器已经取得了长足的进步,但我读到的所有内容和我看到的所有 RL 代码示例似乎仍然使用具有固定学习率的 ADAM。我想利用优化器的一些进步,例如一个周期 AdamW.然而,单周期优化器似乎不适合连续的现实世界强化学习问题:我认为它对于初始训练/校准来说非常好,但我预计较低的最终学习率会对机械变化 react 太慢。

我的一个想法可能是采用单周期方法进行初始训练,如果错误发生变化表明某些内容发生了变化,则触发较小的单周期重新启动(也许重新启动的大小可以基于误差变化的大小)。

是否有人尝试过使用 ADAM 以外的优化器来进行强化学习,或者对处理此类问题有任何建议?

最佳答案

强化学习与传统的监督学习有很大不同,因为训练数据分布随着策略的改进而变化。用优化术语来说,目标函数可以说是非平稳。因此,我怀疑您的直觉可能是正确的——“单周期”优化器在您的应用程序中运行一段时间后会表现不佳。

我的问题是,Adam 出了什么问题?通常,优化器的选择对于深度强化学习来说是一个小细节;探索策略、算法超参数或网络架构等其他因素往往对性能产生更大的影响。

尽管如此,如果您确实想尝试其他优化器,您可以尝试使用 RMSProp、Adadelta 或 Nesterov Momentum。然而,我的猜测是,如果有的话,您会看到渐进的改进。也许寻找更好的超参数与 Adam 一起使用会更有效地利用时间。

<小时/>

编辑:在我最初的回答中,我声称特定优化器的选择对于强化学习速度并不重要,泛化也不是。我想添加一些讨论来帮助说明这些观点。

考虑一下大多数深度策略梯度方法的运作方式:它们从环境中采样经验轨迹,估计返回,然后执行一个或多个梯度步骤来改进参数化策略(例如神经网络)。重复此过程直到收敛(达到局部最优策略)。

为什么我们必须不断地从环境中汲取新的经验?因为我们当前的数据只能在用于收集该数据的策略参数周围的小信任区域内提供合理的一阶近似。因此,每当我们更新策略时,我们都需要采样更多数据。

可视化这一点的一个好方法是考虑 MM algorithm 。在每次迭代中,都会根据我们现在拥有的数据和随后最大化的数据构建替代目标。每次,我们都会更接近真正的最优值,但我们接近它的速度仅取决于我们构造的代理项的数量 - 而不是我们用来最大化每个代理项的特定优化器。 Adam 可能会以比 RMSProp 更少的梯度步骤最大化每个代理,但这不会影响代理的学习速度(相对于环境样本)。它只是减少了您需要进行的小批量更新的数量。

MM Algorithm

SAC 比这稍微复杂一些,因为它以离策略的方式学习 Q 值并使用经验回放进行更新,但总体思路是成立的。可实现的最佳策略取决于重放内存中的当前数据;无论我们使用哪种优化器,我们都需要从环境中采样大致相同数量的数据才能收敛到最优策略。

那么,如何制定更快(样本效率更高)的策略梯度方法?你需要从根本上改变强化学习算法本身。例如,PPO几乎总是比 TRPO 学得更快,因为 John Schulman 和合著者发现了一种不同的、经验上更好的方法来生成策略梯度步骤。

最后,请注意这里没有泛化的概念。我们有一个想要优化的目标函数,一旦我们优化了它,我们就已经尽可能地解决了任务。这就是为什么我怀疑 "Adam-generalizes-worse-than-SGD"这个问题实际上与 RL 无关。

关于machine-learning - 最佳强化学习器优化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59833217/

相关文章:

python - 如何使用 Keras 手动更新权重

python - OpenAI Gym - 如何打造独热观察空间?

machine-learning - 决策树完整性和未分类数据

image-processing - 如何测量用于图像检索的 Fisher 矢量之间的距离?

python - 可视化决策树: IndexError: list index out of range

python - 使用 Tensorflow 策略梯度训练乒乓球游戏代理的问题

machine-learning - Q 值无限增加,在 Q-Learning 中重复相同操作后循环奖励的结果

equation - 带策略的状态值和状态 Action 值 - 带策略的贝尔曼方程

python - CNN 对猫/狗图像二元分类的准确度并不比随机分类好

machine-learning - 使用 HIdden Markov 模型进行预测