在上一篇文章我们提到了DQN还存在的问题:
1) 目标Q值的计算是否准确?全部通过max Q来计算有没有问题?
2) 随机采样的方法好吗?按道理不同样本的重要性是不一样的。
3) Q值代表状态,动作的价值,那么单独动作价值的评估会不会更准确?
相应的改进方法是Double DQN、Prioritised Replay DQN、Dueling DQN,下面我们将一一介绍这些方法。
Double DQN
在DDQN之前,基本上所有的目标Q值都是通过贪婪法直接得到的,无论是Q-Learning, DQN(NIPS 2013)还是 Nature DQN,都是如此,在 DQN(NIPS 2013)中,会出现Q值估计偏高的情形,因为这是一种off-policy的策略,我们每次在学习时,不是使用下一次交互使用的真实动作,而是使用当前策略认为的价值最大的动作,所以会出现对Q值的过高估计。而在Nature DQN中,我们也会面临同样的问题,因为我们选择下一时刻的动作以及计算下一时刻状态-动作Q值时,使用的都是target-net。
最初Thrun & Schwartz开始探讨该问题,证明了在使用函数逼近器时overestimation可能导致非最优解。之后van Hasselt发现即使用表格表示法的情况下,环境中的噪声也能导致overestimation,为了将动作选择和价值估计进行解耦,提出了解决方案Double Q-learning,在上一节里,Nature DQN对于非终止状态,其目标Q值的计算式子是:
在DDQN这里,其定义是将动作的选择和动作的评估分别用不同的值函数来实现,而在Nature DQN中正好我们提出了两个Q网络,其计算目标值yj的步骤可以拆分为两步:
1)先在当前Q网络中先找出最大Q值对应的动作,即