有没有人能够通过他们的 DDPG 实现来解决 OpenAI 的铁杆双足步行者?

人工智能 强化学习 张量流 开放式 健身房
2021-11-02 16:51:37

正如问题所暗示的那样,我正在尝试使用 OpenAI 的DDPG 算法来解决OpenAI 的硬核版本的健身房双足步行机。

下面是我最近尝试的性能图,包括超参数,以及我所做的其他一些尝试。我意识到它已经使用其他自定义实现解决了(也在 Tensorflow 中仅使用密集层,而不是卷积),但我似乎不明白为什么使用 OpenAI 的 DDPG 实现似乎很难解决?谁能指出我可能出错的地方?非常感谢您的帮助!

最新尝试的表现: DDPG 性能 - Bipedal Walker Hardcore v2

  • 平均分:大约-75到-80
  • Env 交互:约 840 万(约 2600 个 epoch)
  • 批量:64
  • 回放内存:1000000
  • 网络:512、256(输入激活 relu,输出激活 tanh)
  • 所有其他输入保留为默认值

类似的实验产生了相似的分数(或更少),包括:

  • (400,300)(256,128)(128,128,128)的网络大小
  • epoch 数量从500一直到100000
  • 重放内存大小一直到5000000
  • 批量大小32、64、128256 _ _
  • 以上所有,DDPGTD3

非常感谢您的帮助!这将不胜感激!

3个回答

你可能很感兴趣知道 v2 激光雷达追踪中存在一个错误,使代理认为有幻像,有时会与自己的腿相交:

https://github.com/openai/gym/pull/1789

发现这个错误让我对任何解决了 BipedalWalkerHardcore-v2 的人印象更加深刻 - 来自激光雷达的观察结果似乎不一致且不正确,返回最远的命中结果而不是最近的命中结果。

...

在修复之前 - 激光雷达追踪地面,并击中坑的一侧,让代理在坑前有一个“幻影峡谷”的印象,只有在它接近坑时才会出现: https://i.imgur。 com/XKPnRTR.png

...

修复后 - 激光雷达被地形停止,即使后面有另一个物体:https ://i.imgur.com/Gg8B5BD.png

...

在对文档进行了三次检查之后——我提交了一个小调整(对于应该被忽略的对象返回 -1 而不是 1)——现在看起来腿被正确地忽略了,并且在所有情况下跟踪都是准确的!

...

在我看来,BipedalWalkerHardcore-v2 的解决方案不仅学会了处理复杂的环境,而且领先一步,能够处理复杂的环境和幻觉,导致他们在最轻微的立方体提示下跳跃,并且即使在他们脚下看不到地面时也能继续奔跑,更多地依赖触摸传感器而不是激光雷达,或者可能识别出真坑和“假坑”之间“形状”的差异(一个真正的坑)坑有地板)

截至 2020 年 1 月 31 日,已通过这些修复将 BipedalWalkerHardcore-v2 升级到 BipedalWalkerHardcore-v3。

您现在可能想尝试重新培训您的代理!(虽然它仍然是一个难以解决的环境)

为了解释为什么 DDPG 不能解决它,虽然有 bug,但 BipedalWalkerHardcore-v2solvable:这个问题的解决方案和环境本身一样坑坑洼洼。例如,要学会跳过环境中的一个坑,智能体必须执行一系列复杂的动作,这些动作很难随机发现。每次失败时,它都知道靠近坑很可能会导致巨大的惩罚,并且为了最大化它的奖励,通常会使用像 DDPG 这样的幼稚方法保持静止,因为这样做的奖励更高而不是再次尝试并掉入坑中。简而言之,原版 DDPG 缺乏足够的探索能力,无法在收敛到不靠近坑之前找到所需的一系列复杂动作。更不用说它需要学习成功的所有其他事情。

在已解决该问题的极少数已发布示例中,有一个使用了进化策略——一种无梯度的方法,基本上尝试了数百万个策略并对其进行评估,以及一种定制的 A3C 方法,专为解决这一特定环境而量身定制。两者都有很高的计算和样本要求。我根据经验说话,因为我个人使用 RL 探索算法解决了这个环境,该算法可以推广到其他环境,在单个 cpu 上在 4 小时内解决它,并且可以与任何非策略 RL 算法一起使用,但不幸的是我无法由于 IP 与我工作的公司一起发布它。

TLDR;普通 DDPG 解决它的机会非常小。

我一直在为双足硬核使用 TD3 实现。它在大约 300 个时期(https://github.com/QasimWani/policy-value-methods )内解决了简单版本(v2 和 v3 )。我一直在为硬核训练它,即使在大约 1200 集之后,它也没有接近收敛。你最终解决了吗,如果是,你最终使用了什么算法?干杯,Q。

我们最近的工作通过使用前瞻性演员的想法解决了这个问题。

我们使用神经网络在给定当前状态和当前动作的情况下预测下一个状态。然后在考虑未来状态的价值的情况下将其插入演员训练中。我们在 TD3 上使用我们的想法并制作了一个新的算法 TD3-FORK,它在短短四个小时内就解决了这个问题。https://github.com/honghaow/FORK/tree/master/BipedalWalkerHardcore