RL论文阅读【六】Rainbow: Combining Improvements in Deep Reinforcement Learning
1 motivation
这篇论文可以理解为把 DQN 的很多改进都用上了,之前 Dueling DQN 其实已经把 Double DQN 和 Prioritized replay 已经用上了,除此之外,Q-learning 还有一个改进是 Multi-step,后来又有人提出了 Distributional RL 和 Noisy net。然后这篇论文的思想就是把这些改进全结合到一起,做一个全能的网络。下面就分别介绍每个具体的改进和如何结合。
2 优化算法
其中 DDQN,Dueling DQN 和 Prioritized replay 之前都介绍过就不再分别介绍了。
DDQN:<>
Dueling DQN:<>
Prioritized replay:<>
下别分别介绍其他优化:
2.1 Multi-step learning
这个优化是 Q-learning 里面就有的东西,在之前我们计算 loss 时,是用的 TD(0) 的方法,i.e. reward 加下一个状态的 Q 作为 target 和 当前的 Q 做差。这样在 Q 值计算比较准确的时候是没有太大问题的,问题是在训练初期,Q 值预测非常不准确,导致 target 计算也相当不准确,所以可以认为初期的训练效果很差,很多时间都走在错的方向了。
那么想到的改进方法就很直观了,我们直接用真实的 target 就行了,也就是从当前状态一直到终止状态的轨迹上所有的 reward 求和作为当前状态 Q 的 target,但是有太长了,所以一种比较折中的方法,就是往前多走几步,但不走到终止状态。具体如下图:

2.2 Distributional RL
原来 DQN 输出的是一个 Q 值,但是实际上,一个状态的 Q 值应该是一个分布,某些值得概率比较大,某些值得概率比较小,所以分布式 RL 的做法就是不直接输出 Q 了,而是输出一个 Q 值得分布,如输出 100 单元表示将输出范围分为 100 份,每个值得大小表示该 Q 值得概率。
这里就直说一个思想,具体的更新方式以及 loss 的定义还是看论文吧。
2.3 Noisy net
这里也是说一个思想,改正的是 \epsilon - greedy 的方法,具体的动机我没太看明白,只是说 \epsilon - greedy 的方法在很多环境中需要进行很多的探索才能找到第一个 reward,但是没说为什么用 Noisy net 能解决。
该方法就是在权值上直接乘一个噪声,使得网络输出本来就含有一定的噪声。
2.4 算法融合
首先根据 Multi-step learning,double DQN 和 Distributional RL 把 loss 函数进行了更改。
然后根据该 loss 实现了 Prioritized replay
再根据 dueling DQN 和 Distributional RL 改了网络架构
3 测试结果


由第一个图可以看出 ranbow 的确是比每个网络效果都好很多。根据第二个图,看似 double 和 dueling 帮助不是特别大,其中的原因我觉得可能是 distribution 估计了分布,可能对于过拟合会有帮助,以及对 Q 值估计应该会更准确一些,所以削弱了两者的作用。
