联系方式:860122112@qq.com

DQN(Deep Q-Learning)可谓是深度强化学习(Deep Reinforcement Learning,DRL)的开山之作,是将深度学习与强化学习结合起来从而实现从感知(Perception)到动作( Action )的端对端(End-to-end)学习的一种全新的算法。由DeepMind在NIPS 2013上发表1,后又在Nature 2015上提出改进版本2。

一、DRL

原因:在普通的Q-learning中,当状态和动作空间是离散且维数不高时可使用Q-Table储存每个状态动作对的Q值,而当状态和动作空间是高维连续时,使用Q-Table不现实。

通常做法是把Q-Table的更新问题变成一个函数拟合问题,相近的状态得到相近的输出动作。如下式,通过更新参数 θ \theta 使Q函数逼近最优Q值

Q(s,a;θ)≈Q′(s,a)

Q(s,a;\theta)\approx Q'(s,a)而深度神经网络可以自动提取复杂特征,因此,面对高维且连续的状态使用深度神经网络最合适不过了。

DRL是将深度学习(DL)与强化学习(RL)结合,直接从高维原始数据学习控制策略。而DQN是DRL的其中一种算法,它要做的就是将卷积神经网络(CNN)和Q-Learning结合起来,CNN的输入是原始图像数据(作为状态State),输出则是每个动作Action对应的价值评估Value Function(Q值)。

二、DL与RL结合的问题

  1. DL需要大量带标签的样本进行监督学习;RL只有reward返回值,而且伴随着噪声,延迟(过了几十毫秒才返回),稀疏(很多State的reward是0)等问题;
  2. DL的样本独立;RL前后state状态相关;
  3. DL目标分布固定;RL的分布一直变化,比如你玩一个游戏,一个关卡和下一个关卡的状态分布是不同的,所以训练好了前一个关卡,下一个关卡又要重新训练;
  4. 过往的研究表明,使用非线性网络表示值函数时出现不稳定等问题。

三、DQN解决问题方法

  1. 通过Q-Learning使用reward来构造标签(对应问题1)
  2. 通过experience replay(经验池)的方法来解决相关性及非静态分布问题(对应问题2、3)
  3. 使用一个CNN(MainNet)产生当前Q值,使用另外一个CNN(Target)产生Target Q值(对应问题4)

1、构造标签

前面提到DQN中的CNN作用是对在高维且连续状态下的Q-Table做函数拟合,而对于函数优化问题,监督学习的一般方法是先确定Loss Function,然后求梯度,使用随机梯度下降等方法更新参数。DQN则基于Q-Learning来确定Loss Function。

Q-Learning
有关RL的基础知识不再啰嗦,直接看Q-Learning的更新公式:

Q∗(s,a)=Q(s,a)+α(r+γmaxa′Q(s′,a′)−Q(s,a))

Q^*(s,a) = Q(s,a)+\alpha(r+\gamma \max_{a'}Q(s',a')-Q(s,a))
而DQN的Loss Function为

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

L(\theta)=E[(TargetQ-Q(s,a;\theta))^2]
其中 θ \theta 是网络参数,目标为

TargetQ=r+γmaxa′Q(s′,a′;θ)

TargetQ = r+\gamma \max_{a'}Q(s',a';\theta)

显然Loss Function是基于Q-Learning更新公式的第二项确定的,两个公式意义相同,都是使当前的Q值逼近Target Q值。

接下来,求 L(θ) L(\theta) 关于 θ \theta 的梯度,使用SGD等方法更新网络参数 θ \theta。

2、经验池(experience replay)

经验池的功能主要是解决相关性及非静态分布问题。具体做法是把每个时间步agent与环境交互得到的转移样本 (st,at,rt,st+1) (s_t, a_t, r_t,s_{t+1}) 储存到回放记忆单元,要训练时就随机拿出一些(minibatch)来训练。(其实就是将游戏的过程打成碎片存储,训练时随机抽取就避免了相关性问题)

3、目标网络

在Nature 2015版本的DQN中提出了这个改进,使用另一个网络(这里称为TargetNet)产生Target Q值。具体地, Q(s,a;θi) Q(s,a;\theta_{i}) 表示当前网络MainNet的输出,用来评估当前状态动作对的值函数; Q(s,a;θ−i) Q(s,a;\theta_{i}^-) 表示TargetNet的输出,代入上面求 TargetQ TargetQ 值的公式中得到目标Q值。根据上面的Loss Function更新MainNet的参数,每经过N轮迭代,将MainNet的参数复制给TargetNet。

引入TargetNet后,再一段时间里目标Q值使保持不变的,一定程度降低了当前Q值和目标Q值的相关性,提高了算法稳定性。

四、DQN算法流程

1、网络模型

输入的是被处理成灰度图的最近4帧 84×84 84\times84 图像,经过几个卷积层(没有池化层)后接两个全连接层,输出是所有动作的Q值。

2、算法伪代码

NIPS 2013版

Nature 2015版

2、算法流程图(2015版)

主要流程图

Loss Function 的构造

五、总结

DQN是第一个将深度学习模型与强化学习结合在一起从而成功地直接从高维的输入学习控制策略。

创新点:

  1. 基于Q-Learning构造Loss Function(不算很新,过往使用线性和非线性函数拟合Q-Table时就是这样做)。
  2. 通过experience replay(经验池)解决相关性及非静态分布问题;
  3. 使用TargetNet解决稳定性问题。

优点:

  1. 算法通用性,可玩不同游戏;
  2. End-to-End 训练方式;
  3. 可生产大量样本供监督学习。

缺点:

  1. 无法应用于连续动作控制;
  2. 只能处理只需短时记忆问题,无法处理需长时记忆问题(后续研究提出了使用LSTM等改进方法);
  3. CNN不一定收敛,需精良调参。

参考文献
[1]Playing Atari with Deep Reinforcement Learning
[2]Human-level control through deep reinforcement learning


深度强化学习——DQN相关推荐

  1. 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) ...

  2. 深度强化学习DQN网络

    DQN网络 DQN(Deep Q Networks)网络属于深度强化学习中的一种网络,它是深度学习与Q学习的结合,在传统的Q学习中,我们需要维护一张Q(s,a)表,在实际运用中,Q表往往是巨大的,并且 ...

  3. 深度强化学习——DQN算法原理

    DQN算法原理 一.DQN算法是什么 二.DQN训练过程 三.经验回放 (Experience Replay) 四.目标网络(Target Network) 1.自举(Bootstrapping) 2 ...

  4. 深度强化学习-DQN算法原理与代码

    DQN算法是DeepMind团队提出的一种深度强化学习算法,在许多电动游戏中达到人类玩家甚至超越人类玩家的水准,本文就带领大家了解一下这个算法,论文和代码的链接见下方. 论文:Human-level ...

  5. 深度强化学习DQN详解CartPole

    一. 获取并处理环境图像 本文所刨析的代码是"pytorch官网的DQN示例"(页面),用卷积层配合强化训练去学习小车立杆,所使用的环境是"小车立杆环境"(Ca ...

  6. 深度强化学习之迷宫DQN(NIPS 2015版)实践笔记——入门提升篇

    1. 背景 在「强化学习」(RL)领域,早期大部分成功的算法都依赖于人工提取特征,并结合线性的值函数或策略表示,算法的表现很大程度上取决于特征提取的质量,隐匿于机器学习中.近年来,「深度学习」(DL) ...

  7. 深度强化学习-Double DQN算法原理与代码

    深度强化学习-Double DQN算法原理与代码 引言 1 DDQN算法简介 2 DDQN算法原理 3 DDQN算法伪代码 4 仿真验证 引言 Double Deep Q Network(DDQN)是 ...

  8. 实战深度强化学习DQN-理论和实践

    全文共3061字,11张图,预计阅读时间15分钟. Q-Learning回顾 Q-learning 的 算法过程如下图所示: 在Q-learning中,我们维护一张Q值表,表的维数为:状态数S * 动 ...

  9. 深度强化学习系列(16): 从DPG到DDPG算法的原理讲解及tensorflow代码实现

    1.背景知识 在前文系列博客第二篇中讲解了DQN(深度强化学习DQN原理),可以说它是神经网络在强化学习中取得的重大突破,也为强化学习的发展提供了一个方向和基础,Sliver等人将其应用在Atari游 ...

最新文章

  1. centos 7 文档服务器,centos 7 web服务器
  2. centos7双网卡,一个连公网,一个连内网
  3. [shell基础]——sed命令
  4. zip伪加密做法及原理
  5. java 删除压缩zip文件_从ZIP存档中删除文件,而无需在Java或Python中解压缩 - java...
  6. android4.0支持m3u8格式,【报Bug】安卓下无法播放M3U8格式音频,报错
  7. java高分面试指南:java单例模式双重检查
  8. VMware ESXi版本回退
  9. 计算机毕业设计中民宿平台信息管理系统设计
  10. hdmi接口有什么用_科普一下:电脑显示器用什么接口好,主流接口有哪些?
  11. Jdk1.6.0+Tomcat6.0环境变量配置
  12. 删除数组中重复数字的算法
  13. 基于单片机的空气质量监测系统设计
  14. MATLAB识别实验,基于MATLAB的人脸识别系统实验报告.pdf
  15. 计算机动态评估英语阅读,【计算机教育论文】谈计算机动态评价模式同伴反馈有效性(共4305字)...
  16. R forcast auto arima用法
  17. Python之PIL图片操作
  18. ToolSettings app 实现系统本地升级
  19. 用爬虫收集网站公开数据丨Python爬虫实战系列(5)
  20. DolphinScheduler服务启停

热门文章

  1. 阿克曼车型运动解算——基于智能车竞赛C车模
  2. 计算机中级改进的具体措施,改进职高计算机教学的几点措施
  3. Meta-Learning之How to train your MAML
  4. 服务器协议和交换机怎么转换,服务器与交换机连接怎样配置
  5. 微信小程序自定义编译模式
  6. rfid射频前端的主要组成部分有_超高频RFID电子标签的组成
  7. radio男女选择取值
  8. 如何摆脱NAS中的振动和噪音
  9. 【Java学习笔记】2023_03_10Java基础
  10. Apache2.4 下载和安装 - Win10