DQN 神经网络
学习资料:
要点¶
接着上节内容, 这节我们使用 Tensorflow (如果还不了解 Tensorflow, 这里去往 经典的 Tensorflow 视频教程) 来搭建 DQN 当中的神经网络部分 (用来预测 Q 值).
两个神经网络¶
为了使用 Tensorflow 来实现 DQN, 比较推荐的方式是搭建两个神经网络, target_net
用于预测 q_target
值, 他不会及时更新参数. eval_net
用于预测 q_eval
, 这个神经网络拥有最新的神经网络参数. 不过这两个神经网络结构是完全一样的, 只是里面的参数不一样. 在这个短视频里, 能找到我们为什么要建立两个不同参数的神经网络.
神经网络结构¶
因为 DQN 的结构相比之前所讲的内容都不一样, 所以我们不使用继承来实现这次的功能. 这次我们创建一个 DeepQNetwork
的 class, 以及他神经网络部分的功能. 下次再说强化学习的更新部分.
创建两个网络¶
两个神经网络是为了固定住一个神经网络 (target_net
) 的参数, target_net
是 eval_net
的一个历史版本, 拥有 eval_net
很久之前的一组参数, 而且这组参数被固定一段时间, 然后再被 eval_net
的新参数所替换. 而 eval_net
是不断在被提升的, 所以是一个可以被训练的网络 trainable=True
. 而 target_net
的 trainable=False
.
如果想一次性看到全部代码, 请去我的 Github