Q learning进阶:Double DQN和 Dueling DQN
1. Double DQN
DQN中很容易对Q-value的值过度估计。因为会倾向于选择表现好的当前action,往往这个action是过高估计的。
Double DQN中有两个Q函数,Q和Q’(Target network)
如果Q被过高估计,Q’很有可能不对它有过高估计,给予适当的值。
如果Q’被过高估计,Q也不会按照Q’选择action,两者相互有制约。
Double DQN很好的解决了对于Q值过高估计的问题,实验中,蓝色曲线是Double DQN的Q的值,与实际值更加接近。
2. Dueling DQN
一般的,Q-learning 的输出是Q值,但是Q值一直很不稳定,那么,如果把Q值拆开(里面有不稳定的部分和稳定的部分),是不对结果更加好呢?我们只改变一点网络架构:
V(s)的细小改变,会改变整个Q的结果。
3. “经历的重点”:Prioritized Reply
典型的Q-learning中,有experience buffer的模块,可以针对以前的经历进行离线学习。
但是经历非常多,有没有重点呢? 所有的记忆都是有用的吗?Prioritized Reply就是为我们解决这个问题。提升训练的质量。
较大的TD error的经历,很sample到的概率会相对比较高。
4. 平衡MC和TD:Multi-step
我们的思路是把一步的经历,做成多步的经历。
5. Noisy Net
Noisy Net 的概念几乎同时被openAI和Deepmind提出:
- 我们在action中加入noisy,其实就是 Epsilon Greedy(随机乱试)
- 我们在Parameters中加入noisy(有系统的试)
通过noise net 小狗更快的学会跑步
效果:from https://blog.openai.com/better-exploration-with-parameter-noise/
6. Q-函数的分布
我们以游戏控制为例:
7. Rainbow
rainbow 是Q-learning中的集大成者,论文地址是:https://arxiv.org/abs/1710.02298
8. Q-learning在连续动作中的应用
当 Action ? 是一个连续的向量
Solution 1:
从action中抽样出一个action集合,然后在里面选择Q值最大的
Solution 2:
使用梯度上升解决求Q值最大的问题
Solution 3 :设计一个网络,让求最大值的问题简单化
Solution 4 不要使用 Q-learning
本专栏图片、公式很多来自David Silver主讲的UCL-Course强化学习视频公开课和台湾大学李宏毅老师的深度强化学习课程,在这里,感谢这些经典课程,向他们致敬!