联系方式: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+γmaxa′Q(s′,a′;θ−i)

Target Q=r+\gamma\max_{a'} Q (s',a';\theta_{i}^-)其中 θ−i \theta_{i}^-是TargetNet的参数。

在DDQN中,先用MainNet找到 maxa′Q(s′,a′;θi) \max_{a'}Q(s',a';\theta_{i}) 的Action( θi \theta_i是MainNet的参数),再去TargetNet中找到这个Action的Q值以构成Target Q值,这个Q值在TargetNet中不一定是最大的,因此可以避免选到被高估的次优Action。最终要学习的Loss Function为:

L(θ)=E[(TargetQ−Q(s,a;θi))2]

L(\theta)=E[(TargetQ-Q(s,a;\theta_i))^2]

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),表示静态的状态环境本身具有的价值;下路代表依赖状态的动作优势函数 A(a) A(a) (advantage function),表示选择某个Action额外带来的价值。最后这两路再聚合再一起得到每个动作的Q值。

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

公式:
状态价值函数表示为

V(s;θ,β)

V(s;\theta,\beta)
动作优势函数表示为

A(s,a;θ,α)

A(s,a;\theta,\alpha)
动作Q值为两者相加

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;\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+γ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]深度强化学习综述_刘全等


深度强化学习——Dueling-DDQN相关推荐

  1. 读后感和机翻《人类因果迁移:深度强化学习的挑战》

    研究朱松纯FPICU体系的第1篇文章 <Human Causal Transfer: Challenges for Deep Reinforcement Learning>CogSci 2 ...

  2. 深度强化学习-D3QN算法原理与代码

    Dueling Double Deep Q Network(D3QN)算法结合了Double DQN和Dueling DQN算法的思想,进一步提升了算法的性能.如果对Doubel DQN和Duelin ...

  3. 深度强化学习DRL训练指南和现存问题(D3QN(Dueling Double DQN))

    目录 参数 iteration episode epoch Batch_Size Experimence Replay Buffer经验回放缓存 Reward discount factor或gamm ...

  4. ROS开发笔记(10)——ROS 深度强化学习dqn应用之tensorflow版本(double dqn/dueling dqn/prioritized replay dqn)

    ROS开发笔记(10)--ROS 深度强化学习dqn应用之tensorflow版本(double dqn/dueling dqn/prioritized replay dqn) 在ROS开发笔记(9) ...

  5. 17种深度强化学习算法用Pytorch实现(附链接)

    来源:新智元 本文约1300字,建议阅读5分钟. 本文为你介绍一个用PyTorch实现了17种深度强化学习算法的教程和代码库,帮助大家在实践中理解深度RL算法. [ 导读 ]深度强化学习已经在许多领域 ...

  6. openssl 添加自定义算法_GitHub:用PyTorch实现17种深度强化学习算法

    [新智元导读]深度强化学习已经在许多领域取得了瞩目的成就,并且仍是各大领域受热捧的方向之一.本文推荐一个用 PyTorch 实现了 17 种深度强化学习算法的教程和代码库,帮助大家在实践中理解深度 R ...

  7. 百度正式发布PaddlePaddle深度强化学习框架PARL

    去年,斯坦福大学神经生物实验室与 EPFL 联合举办了一场强化学习赛事--人工智能假肢挑战赛(AI for Prosthetics Challenge),希望将强化学习应用到人体腿部骨骼仿真模拟模型的 ...

  8. Rainbow: 结合深度强化学习的改进

    Rainbow: Combining Improvements in Deep Reinforcement Learning 论文地址:https://arxiv.org/abs/1710.02298 ...

  9. 基于深度强化学习的机器人运动控制研究进展 | 无模型强化学习 | 元学习

    1.基于深度强化学习的机器人运动控制研究进展 1.1 深度强化学习 1.1.1 强化学习简介: 强化学习(Reinforcement Learning, RL)利用试错机制与环境进行交互,旨在通过最大 ...

最新文章

  1. P3159 [CQOI2012]交换棋子(费用流)
  2. 深度学习(十四)——Softmax详解, 目标检测, RCNN
  3. Microwindows及基于Nano-X的简单程序开发
  4. IOS中NSUserDefaults的用法(轻量级本地数据存储)
  5. java微信开发API解析(二)-获取消息和回复消息
  6. 何使用ultraiso软碟通制作u盘启动盘(转载)
  7. linux 自启动脚本顺序,(linux开机启动脚本的顺序.doc
  8. 解决 django 中 mysql gone away 的问题
  9. 1007. 素数对猜想 (20)
  10. 数据分析-学术前沿趋势分析-论⽂数据统计
  11. NYNU开学大作战之补番真开心
  12. PM2.5数据的清洗,汇总与制作散点图(含源数据链接)
  13. AutoIt教程资源汇总
  14. Prometheus监控以及告警配置
  15. get和post详解
  16. 想运营好拼多多店铺,做好产品规划必不可少!
  17. 前端开发:使用JS正则表达式校验邮箱和手机号的方法,安卓面试题最新2020
  18. matlab R2013a 生成exe 脱离matlab开发环境运行
  19. 正交设计——实战【转】
  20. 最新华农c语言教材答案,华农C语言题目及答案完整版

热门文章

  1. Linux搭建Steam饥荒服务器教程 — Linux GSM方式
  2. left join on详解
  3. 东南大学计算机保研预报名,我是一个保研成功的幸运儿,分享我的五个方法—东南大学保研经验...
  4. 多种方式解决兔子繁殖问题
  5. QSqlDatabase: QMYSQL driver not loaded ,QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QO
  6. Butter Knife 黄油刀
  7. 升级windows media player 到 wmp11
  8. Python+locust性能测试(一),进军高阶测试......
  9. 计算机毕业设计Java宠物交易平台(源码+系统+mysql数据库+lw文档)
  10. 项目管理案例分析有哪些?