推荐论文:
https://arxiv.org/pdf/1312.5602.pdf
http://files.davidqiu.com//research/nature14236.pdf
1. DQN算法
1.1 流程
1.2 核心
DQN算法是 Deep Neural Netw 与 Q-Learning 的一种融合,所以算法思想是一致的。
- DQN出现的原因是什么?
在 Q-Learning算法 中,是采用表格的形式记录Q值,那么当Q表很大时这种方式显然是不方便的,相反用神经网络来预测Q值就显得十分有利。 - DQN的三要素:
(1)神经网络计算Q值;
(2)Experience Replay(经验回放池);
(3)Fixed q_targets(暂时冻结 q_targets 参数)。 - 为什么使用 Experience Replay?
Q learning算法 是一种 off-policy 离线学习法,它能学习当前经历着的,也能学习过去经历过的,甚至是学习别人的经历。那么如何学习之前的经历呢? 记忆库(Experience Replay)!
DQN 使用记忆库=学习之前的经历,所以每次 DQN 更新的时候,我们都可以随机抽取一些之前的经历进行学习。随机抽取这种做法既打乱了经历之间的相关性,也使得神经网络更新更有效率.。 - 为什么要暂时冻结 q_targets 参数?
暂时冻结 q_targets 参数是一种切断相关性的机理,如果使用 fixed Q-targets,我们就会在 DQN 中使用到两个结构相同但参数不同的神经网络,预测 Q 估计 的神经网络具备最新的参数,而预测 Q现实 的神经网络使用的参数则是很久以前的。(注:避免网络权重和TD target具有很强的相关性) - 为什么要使用两个结构一样(参数不同)的深度神经网络?
我认为这是理解 DQN算法 的一个重要问题,先推荐一篇博客:Improvements in Deep Q Learning。
简单来说就是,固定住q_targets,使得训练目标在训练过程中不偏移,这样q_predicts会更快收敛。
1.3 注意
-
如何理解DQN中的 Q现实 与 Q估计
可以从两个角度进行理解。(1)其实是与 Q Learning算法 中的一样,就是 Q现实 的计算与转换到下一状态的奖励与处于下一状态的采取最大值动作的Q值有关。(2)在DQN中,Q值的计算是由神经网络实现的,Q现实与Q估计是由两个结构相同但参数不同的网络实现的,其中Q估计是时刻更新的,而Q现实使用的是很久以前的参数,是冻结的(其实与Q Learning异曲同工)。这样做的目的是什么,请读者思考一下?(切断相关性) -
Q现实与Q估计神经网络计算loss时的对齐问题,由于计算loss时得是对应action的Q值作差,但是两个神经网络计算出来的结果并不是采取了相同的action,因此直接对矩阵作差达不到计算loss的目的。