联系方式:[email protected]
深度双Q网络(DDQN)和基于竞争构架Q网络(Dueling-DQN)都是DQN的改进版本,前者是对DQN训练算法的改进,后者是对DQN模型结构的改进。
论文(Hasselt等人)发现并证明了传统的DQN普遍会过高估计Action的Q值,而且估计误差会随Action的个数增加而增加。如果高估不是均匀的,则会导致某个次优的Action高估的Q值超过了最优Action的Q值,永远无法找到最优的策略。作者在他2010年提出的Double Q-Learning的基础上,将该方法引入了DQN中。具体操作是对要学习的Target Q值生成方式进行修改,原版的DQN中是使用TargetNet产生Target Q值,即
在DDQN中,先用MainNet找到 maxa′Q(s′,a′;θi) 的Action( θi 是MainNet的参数),再去TargetNet中找到这个Action的Q值以构成Target Q值,这个Q值在TargetNet中不一定是最大的,因此可以避免选到被高估的次优Action。最终要学习的Loss Function为:
在许多基于视觉的感知的DRL任务中,不同的状态动作对的值函数是不同的,但是在某些状态下,值函数的大小与动作无关。根据以上思想,Wang等人提出了一种竞争网络结构(dueling network)作为DQN的网络模型。
先来看结构
如上图所示,第一个模型是一般的DQN网络模型,即输入层接三个卷积层后,接两个全连接层,输出为每个动作的Q值。
而(第二个模型)竞争网络(dueling net)将卷积层提取的抽象特征分流到两个支路中。其中上路代表状态值函数 V(s) ,表示静态的状态环境本身具有的价值;下路代表依赖状态的动作优势函数 A(a) (advantage function),表示选择某个Action额外带来的价值。最后这两路再聚合再一起得到每个动作的Q值。
这种竞争结构能学到在没有动作的影响下环境状态的价值 V(s) 。如下图,在训练过程中,上下两行图表示不同时刻,左右两列表示属于 V(s) 和 A(a) ,(通过某种方法处理后)图中红色区域代表 V(s) 和 A(a) 所关注的地方。 V(s) 关注于地平线上是否有车辆出现(此时动作的选择影响不大)以及分数; A(a) 则更关心会立即造成碰撞的车辆,此时动作的选择很重要。
公式:
状态价值函数表示为
论文中dueling net结合了DDQN以及优先级采样(Prioritized Experience Replay)的训练方式。
Prioritized Experience Replay
简单来说,经验池中TD误差( r+γmaxa′Q(s′,a′;θ−)−Q(s,a;θ) )绝对值越大的样本被抽取出来训练的概率越大,加快了最优策略的学习。
实验证明,Dueling-DDQN估计的值函数更加精确。在频繁出现 agent 采取不同动作但对应值函数相等的情形下,Dueling-DDQN优势最明显。
参考文献
[1]Deep Reinforcement Learning with Double Qlearning
[2]Dueling Network Architectures for Deep Reinforcement Learning
[3]深度强化学习综述_刘全等