深度强化学习——Dueling-DDQN

https://blog.csdn.net/u013236946/article/details/73161586

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

联系方式:860122112@qq.com


  深度双Q网络(DDQN)和基于竞争构架Q网络(Dueling-DQN)都是DQN的改进版本,前者是对DQN训练算法的改进,后者是对DQN模型结构的改进。


一、DDQN

论文(Hasselt等人)发现并证明了传统的DQN普遍会过高估计Action的Q值,而且估计误差会随Action的个数增加而增加。如果高估不是均匀的,则会导致某个次优的Action高估的Q值超过了最优Action的Q值,永远无法找到最优的策略。作者在他2010年提出的Double Q-Learning的基础上,将该方法引入了DQN中。具体操作是对要学习的Target Q值生成方式进行修改,原版的DQN中是使用TargetNet产生Target Q值,即TargetQ=r+γmax a ′  Q(s ′ ,a ′ ;θ − i ) TargetQ=r+γmaxa′Q(s′,a′;θi−)Target Q=r+\gamma\max_{a'} Q (s',a';\theta_{i}^-)其中θ − i  θi−\theta_{i}^-是TargetNet的参数。

在DDQN中,先用MainNet找到 max a ′  Q(s ′ ,a ′ ;θ i ) maxa′Q(s′,a′;θi)\max_{a'}Q(s',a';\theta_{i}) 的Action(θ i  θi\theta_i是MainNet的参数),再去TargetNet中找到这个Action的Q值以构成Target Q值,这个Q值在TargetNet中不一定是最大的,因此可以避免选到被高估的次优Action。最终要学习的Loss Function为: 
L(θ)=E[(TargetQ−Q(s,a;θ i )) 2 ] L(θ)=E[(TargetQ−Q(s,a;θi))2]L(\theta)=E[(TargetQ-Q(s,a;\theta_i))^2] 
TargetQ=r+γQ(s ′ ,max a ′  Q(s ′ ,a ′ ;θ i );θ − i ) TargetQ=r+γQ(s′,maxa′Q(s′,a′;θi);θi−)TargetQ = r+\gamma Q (s',\max_{a'} Q(s',a';\theta_i);\theta_{i}^-) 
除此之外,其他设置与DQN一致。实验表明,DDQN能够估计出更准确出Q值,在一些Atari2600游戏中可获得更稳定有效的策略。

Loss Function 的构造流程图 


二、Dueling-DQN

在许多基于视觉的感知的DRL任务中,不同的状态动作对的值函数是不同的,但是在某些状态下,值函数的大小与动作无关。根据以上思想,Wang等人提出了一种竞争网络结构(dueling network)作为DQN的网络模型。

先来看结构

如上图所示,第一个模型是一般的DQN网络模型,即输入层接三个卷积层后,接两个全连接层,输出为每个动作的Q值。

而(第二个模型)竞争网络(dueling net)将卷积层提取的抽象特征分流到两个支路中。其中上路代表状态值函数 V(s) V(s)V(s),表示静态的状态环境本身具有的价值;下路代表依赖状态的动作优势函数 A(a) A(a)A(a) (advantage function),表示选择某个Action额外带来的价值。最后这两路再聚合再一起得到每个动作的Q值。 


这种竞争结构能学到在没有动作的影响下环境状态的价值 V(s) V(s)V(s)。如下图,在训练过程中,上下两行图表示不同时刻,左右两列表示属于 V(s) V(s)V(s) 和 A(a) A(a)A(a),(通过某种方法处理后)图中红色区域代表 V(s) V(s)V(s) 和 A(a) A(a)A(a) 所关注的地方。V(s) V(s)V(s) 关注于地平线上是否有车辆出现(此时动作的选择影响不大)以及分数;A(a) A(a)A(a) 则更关心会立即造成碰撞的车辆,此时动作的选择很重要。 


公式: 
状态价值函数表示为 
V(s;θ,β) V(s;θ,β)V(s;\theta,\beta) 
动作优势函数表示为 
A(s,a;θ,α) A(s,a;θ,α)A(s,a;\theta,\alpha) 
动作Q值为两者相加 
Q(s,a;θ,α,β)=V(s;θ,β)+A(s,a;θ,α) Q(s,a;θ,α,β)=V(s;θ,β)+A(s,a;θ,α)Q(s,a;\theta,\alpha,\beta) = V(s;\theta,\beta)+A(s,a;\theta,\alpha) 
其中 θ θ\theta 是卷积层参数,β β\beta 和 α α \alpha 是两支路全连接层参数。 
而在实际中,一般要将动作优势流设置为单独动作优势函数减去某状态下所有动作优势函数的平均值 
Q(s,a;θ,α,β)=V(s;θ,β)+(A(s,a;θ,α)−1|A| ∑ a ′  A(s,a ′ ;θ,α)) Q(s,a;θ,α,β)=V(s;θ,β)+(A(s,a;θ,α)−1|A|∑a′A(s,a′;θ,α))Q(s,a;\theta,\alpha,\beta) = V(s;\theta,\beta)+(A(s,a;\theta,\alpha)-\frac{1}{|A|}\sum_{a'}A(s,a';\theta,\alpha)) 
这样做可以保证该状态下各动作的优势函数相对排序不变,而且可以缩小 Q 值的范围,去除多余的自由度,提高算法稳定性。 

论文中dueling net结合了DDQN以及优先级采样(Prioritized Experience Replay)的训练方式。

Prioritized Experience Replay 
简单来说,经验池中TD误差(r+γmax a ′  Q(s ′ ,a ′ ;θ − )−Q(s,a;θ) r+γmaxa′Q(s′,a′;θ−)−Q(s,a;θ)r+\gamma\max_{a'}Q(s',a';\theta^-)-Q(s,a;\theta))绝对值越大的样本被抽取出来训练的概率越大,加快了最优策略的学习。

实验证明,Dueling-DDQN估计的值函数更加精确。在频繁出现 agent 采取不同动作但对应值函数相等的情形下,Dueling-DDQN优势最明显。


  参考文献 
  [1]Deep Reinforcement Learning with Double Qlearning 
  [2]Dueling Network Architectures for Deep Reinforcement Learning 
  [3]深度强化学习综述_刘全等
--------------------- 
作者:草帽B-O-Y 
来源:CSDN 
原文:https://blog.csdn.net/u013236946/article/details/73161586 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值