我最近尝试使用我自己版本的 Asynchronous Advantage Actor-Critic(A3C)方法进行深度强化学习,因为我无法让网络中的其他A3C实现正常工作。问题是我的版本也没有融合......所以,我真的很感激任何帮助来确定问题。代码位于此处:https://github.com/MatheusMRFM/A3C-LSTM-with-Tensorflow。我正在使用来自Open AI健身房环境的Pong游戏训练该方法。这是我做的:
我的代码总是会收敛到一个策略,其中paddle总是向上移动或总是向下移动(而不是两者)。必须有一些我错过的愚蠢细节,但我找不到它。欢迎任何帮助!
答案 0 :(得分:0)
我实际上发现了问题所在。就像我想的那样,只是一个简单的细节搞砸了所有内容:在我的代码和我在帖子中提到的所有其他代码中,策略丢失函数使用网络输出的策略的softmax日志。为了避免Nan结果(如果策略的0与至少一个动作相关联),我在策略中添加了一个小值(在我的代码中,这是在Network.py的第180行中完成的)。似乎这个小的价值(1e-8)毕竟不是那么小,而且它正在搞乱政策损失功能。我最终使用1e-13然后工作了。我在VizDoom环境中进行了测试(在Arthur Juliani的版本中使用了相同的地图),它在大约6k集中融合。
希望它可以帮助任何有类似问题的人。我很快就会在GitHub帐户中更新我的代码。