【问题标题】:Can't get my A3C with LSTM layer using Tensorflow to work无法使用 Tensorflow 让我的带有 LSTM 层的 A3C 工作
【发布时间】:2017-12-09 03:26:21
【问题描述】:

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

  • 我的实现主要基于以下 A3C 实现:Arthur Juliani 的版本、Open AI 的 A3C 和 andreimuntean's version。我之所以选择这些实现,是因为它们清晰明了,而且根据原始 A3C 论文,一切似乎都是正确的;
  • 我正在使用如下网络:一组卷积层、一个全连接层、一个 LSTM 层,以及两个全连接层(一个用于策略,另一个用于值函数)。我已经测试了其他几种架构(更改 concolutional 层、移除第一个隐藏层、更改隐藏层和 LSTM 层的输出等。这些配置都不起作用......
  • 我尝试了 3 种不同的优化器:RMSPropOptimizerAdadeltaOptimizerAdamOptimizer。我还为每个人尝试了不同的学习率。不走运;
  • 我已经根据我查看的实现尝试了几个参数。

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

【问题讨论】:

  • Stackoverflow 不允许我发布更多链接,所以这里是 Arthur Juliani 版本的链接:medium.com/emergent-future/…
  • 我认为这个问题太宽泛了,我们可以真正帮助您完成您所提供的服务。也许添加一些关于策略、价值和熵损失如何随时间演变的图。如果你跳过 LSTM 部分,只使用一个 FFNN,它会起作用吗?

标签: asynchronous tensorflow deep-learning reinforcement-learning


【解决方案1】:

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

希望它可以帮助任何有类似问题的人。我将很快更新我的 GitHub 帐户中的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多