【发布时间】:2017-03-19 05:19:18
【问题描述】:
我一直在尝试使用“深度 Q 学习”构建一个模型,其中我有大量动作 (2908)。在使用标准 DQN 取得了一些有限的成功之后: (https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf),我决定做更多的研究,因为我认为行动空间太大而无法进行有效的探索。
然后我发现了这篇论文:https://arxiv.org/pdf/1512.07679.pdf,他们使用了actor-critic 模型和策略梯度,然后我发现:https://arxiv.org/pdf/1602.01783.pdf,他们使用策略梯度来获得比 DQN 整体更好的结果。
我发现一些网站在 Keras 中实施了策略梯度,https://yanpanlau.github.io/2016/10/11/Torcs-Keras.html 和 https://oshearesearch.com/index.php/2016/06/14/kerlym-a-deep-reinforcement-learning-toolbox-in-keras/ 但是我对它们的实施方式感到困惑。在前者中(当我阅读论文时),似乎不是为参与者网络提供输入和输出对,而是为所有权重提供梯度,然后使用网络对其进行更新,而在后者中他们只是计算一个输入-输出对。
我是不是把自己弄糊涂了?我只是应该通过提供输入输出对并使用标准的“拟合”来训练网络,还是我必须做一些特别的事情?如果是后者,我该如何使用 Theano 后端呢? (以上示例使用 TensorFlow)。
【问题讨论】:
-
不放入状态动作对的一个原因是如果你有大量的动作会花费很长时间。相反,让网络一次预测所有动作的值然后在此之后进行动作选择通常很有用
标签: python deep-learning theano keras q-learning