我一直在尝试使用"深度Q学习"来构建模型,其中我有大量的动作(2908).在使用标准DQN取得了一些有限的成功之后:(https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf),我决定做更多的研究,因为我认为动作空间太大了有效的探索.
然后我发现了这篇论文:https://arxiv.org/pdf/1512.07679.pdf,他们使用演员评论模型和政策渐变,然后引导我: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).
我一直在玩Keras的批量标准化.我想知道批量标准化是否也使神经网络的输入正常化.这是否意味着我不需要标准化我的网络输入并依靠BN来做到这一点?
我在Keras中有一个网络,其中有很多输出,但是,我的训练数据一次只能提供单个输出的信息。
目前,我的训练方法是对有问题的输入进行预测,更改我正在训练的特定输出的值,然后进行单批更新。如果我是对的,这与将所有输出的损失设置为零(除了我尝试训练的损失)相同。
有没有更好的办法?我尝试过权重设置,但我正在训练的所有输出都设置为零权重,但是没有给我期望的结果?
我正在使用Theano后端。
reinforcement-learning neural-network q-learning theano keras