简介
Double DQN的出现,是为了解决DQN和Q-Learning等学习算法中的过高估计。
论文参考这里
代码参考这里(by莫烦大神)
思想
传统DQN学习过程如下:过高估计存在于对Q(s',a')的预测。传统的思想是用一个evaluate网络来计算Q(s,a),再用一个target网络来直接计算Q(s',a'),从而求出最大值。(你想啊,s'就不服了,凭什么我不能用evaluate网络计算呢?,这就诞生了下面的double dqn)。
Double dqn说:在计算Q(s',a')的时候,将s'输入evaluate网络,得到Q(s',a'),然后选出来最大的那个a'' = argmaxQ(s',a''),再将s'输入target网络计算得到Q(s',a''),将Q(s',a'')用来当作label进行更新。(如果你对dqn熟悉的话,相信你最多读上两遍这段话,就知道double dqn的做法了)。
结果
当然就是一定程度减小了过高估计,代码运行结果如下: