1 废话
这篇论文就是介绍我们常说的 Dueling DQN,在我心中一直以为和 Double DQN 是平行的两种技术,所以也没怎么想就看这篇论文了,但是看了才发现,原来这篇论文中提到了 Double DQN,而且可以应用于 Double DQN,而且同时还用到的 Prioritized replay,所以正确的阅读顺序应该是先看 Double DQN 和 Prioritized experience replay,但是影响不大了,这篇论文可以作为独立的一篇论文来看。
今天由于晚上打了一个多小时的电话,导致最后的实验部分没看完,先主要说下前面的吧。
2 Motivation
发表这篇论文的时候,大家已经把各种各样的深度学习的架构应用在了强化学习中,在这个方向已经不太好创新了,这篇作者结合DQN的特点,对网络结构进行创新。在很多应用场景,存在很多的状态不同的动作对应Q值几乎是一样的,如在 Atari 游戏 Enduro 中,如下图所示,由于前方没有车,所以不同的动作对 Q 值没有影响,在训练 DQN 时,当执行一个动作后我们会修正该动作对应的 Q 值,而其他的动作对应的 Q 值如何变化我们是不关心的, 但是若我们把 Q(S, A) 值分成 V(S) 和 A(A, S) 来看待,同时训练了 V 和 A,那么对 V 部分的训练同样适用于别的动作,比如下图这个例子,我们随便执行一个动作,修正的 V 值同样也适用于别的动作,所以这样收敛更快。而下图的实验也证明了这一点,V 的输出注意力集中在远处的道路与当前的得分,因为这与该状态的得分有关,而 A 没有什么特别关注的地方,因为前方没有车,所以当前执行什么动作是不影响未来得分的。
3 算法说明
(1)网络结构:如下图所示,上面为之前的DQN,就是CNN+全链接;下面是 Dueling DQN 的结构,就只是把最后一个隐藏层拆开成两部分呢了,分别输出 V 和 A,其中 V 只有一维,表示该状态的得分,A 和动作的维度是一样的,表示执行某个动作相对于该状态可以获得的额外得分。然后再由 V 和 A 通过公式计算得到和原来含义一样的 Q 值。
(2)V 和 A 的组合:文中讨论了两种组合方式,我这里就直介绍他们最终采用的方式,如下公式所示(懒得打公式了,直接上截图)。这里的 A 其实已经不是理论中的 A 了,每个 A 减去所有 A 的均值才是真正理论中的 A,因为 A 的期望是等于 0 的。
(3)算法:由于该论文改了网络结构,在测试时还着重说了下 Gradient Clip 的重要性,对于提升也有比较大的帮助,文中的gradient clipping norm 为 10。训练的方法和技巧其实是没有什么改变的,可以用 Double DQN,也可以用 Prioritized experience replay。Double DQN 打算明天开始看,同时也在下一篇博客中介绍。
4 结果说明
在第二节我已经介绍了一个简单的实验,为了证明 Dueling DQN的效果,论文还做了另外两个实验。
(1)第一个比较简单,在一个简单的实验环境中执行一个 policy evaluation task。这里有一句话我没太懂,还希望大神可以告诉我,文中是这么解释为什么做这个实验的:as it is devoid of confounding factors such as the choice of exploration strategy, and the interaction between policy improvement and policy evaluation。这里的策略采用 -greedy 根据 Q 选取动作,为0.001。使用 TD(0) 更新 Q 值,然后根据 Q 值选择动作,我的理解是这里同样用到了策略评估和策略升级,那么上边那句英文是什么意思呢?不过不影响对这个实验的理解。
原有环境是5个动作,通过增加静止(no-ops)动作来增加总的动作数目,为了验证之前的思想:很多动作的 Q 值是差不多的,一个一个更新很慢,Dueling 通过更新 V 来同时更新所有动作的 Q 值来加快收敛。实验结果如下图所示,纵坐标为Q值预测值与真实值的均方差,横坐标为迭代次数,也的确证明了可以加快收敛。
(2)实验二就是在 atari 游戏中中达到了 SOTA 的效果,我还没看完,就不细说了,反正效果超过了之前的就对了。