无法使用 Tensorflow 使我的带有 LSTM 层的 A3C 工作

Can't get my A3C with LSTM layer using Tensorflow to work

我最近尝试实现我自己版本的 A​​synchronous Advantage Actor-Critic (A3C) 深度强化学习方法,因为我无法在中找到其他 A3C 实现网络才能正常工作。问题是我的版本也没有收敛......所以,我真的很感激任何帮助来确定问题。代码位于此处:https://github.com/MatheusMRFM/A3C-LSTM-with-Tensorflow。我正在使用 Open AI 健身房环境中的 Pong 游戏训练该方法。这是我所做的:

我的代码总是最终收敛到一个策略,即桨总是向上移动或总是向下移动(不是两者)。一定有一些愚蠢的细节我错过了,但我找不到。欢迎任何帮助!

其实我已经找到问题所在了。正如我所想,只是一个简单的细节把一切都搞砸了:在我的代码和我在 post 中提到的所有其他代码中,策略损失函数使用输出的策略的 softmax 日志网络。为了避免 Nan 结果(如果策略有一个 0 关联到至少一个操作),我向策略添加了一个小值(在我的代码中,这是在 Network.py 的第 180 行中完成的)。看起来这个小值(1e-8)毕竟不是那么小,而且它在扰乱策略损失函数。我最终使用了 1e-13 然后它起作用了。我在 VizDoom 环境(与 Arthur Juliani 的版本中使用的地图相同)中进行了测试,它在大约 6k 集内收敛。

希望对遇到类似问题的人有所帮助。我将很快更新我的 GitHub 帐户中的代码。