DQN 思维决策
学习资料:
接着上节内容, 我们来定义 DeepQNetwork
的决策和思考部分.
代码主结构¶
定义完上次的神经网络部分以后, 这次我们来定义其他部分. 包括:
初始值¶
存储记忆¶
DQN 的精髓部分之一: 记录下所有经历过的步, 这些步可以进行反复的学习, 所以是一种 off-policy 方法, 你甚至可以自己玩, 然后记录下自己玩的经历, 让这个 DQN 学习你是如何通关的.
选行为¶
和之前的 QLearningTable
, SarsaTable
等一样, 都需要一个选行为的功能.
学习¶
最重要的一步来了, 就是在 DeepQNetwork
中, 是如何学习, 更新参数的. 这里涉及了 target_net
和 eval_net
的交互使用.
看学习效果¶
为了看看学习效果, 我们在最后输出学习过程中的 cost
变化曲线.
可以看出曲线并不是平滑下降的, 这是因为 DQN 中的 input 数据是一步步改变的, 而且会根据学习情况, 获取到不同的数据. 所以这并不像一般的监督学习, DQN 的 cost 曲线就有所不同了.
如果想一次性看到全部代码, 请去我的 Github
修改版的 DQN¶
最后提供一种修改版的 DQN 代码, 这是录制完视频以后做的, 这是将 q_target
的计算也加在了 Tensorflow 的 graph 里面. 这种结构还是有好处的, 作为学习样本的话, 计算结构全部在 tensorboard 上, 就更好理解, 代码结构也更好理解.
我只在原本的 DQN 代码上改了一点点东西, 大家应该可以很容易辨别. 修改版的代码在这.