目录

  • 1、神经网络和强化学习的差异对比
  • 2、DQN(Depp Q-Network)算法
    • 2.1神经网络来近似价值函数
    • 2.2经验回放
    • 2.3使用两个网络
  • 3、总结

在前面的学习中,我们主要是学习强化学习这一内容,强化学习具有很好的决策能力,但是在很多的实际任务中,我们不仅仅需要我们的算法有决策能力还要有很好的感知能力。而在现在的机器学习中,深度学习就具有很好的感知能力,并且在很多的方面得到了应用。那如果把他们的各自的优点结合起来是不是就能很好的解决我们的问题了呢。因此深度强化学习就诞生了。深度强化学习能够同时发挥深度学习的表征优势和强化学习的决策优势,为求解更为复杂的大规模决策控制问题提供了可能。这一章我们就来学习深度强化学习。

1、神经网络和强化学习的差异对比

神经网络时典型的监督学习方法,需要大量的标签数据训练预测和分类模型。相对于深度学习,强化学习训练过程缺乏直接的监督信号,其主要基于与环境交互的过程获得大量奖励和状态信号,并基于反馈信号对学习过程进行调整以获得最优的行动策略。所以两者在训练数据、学习过程等方面存在着明显的差异。主要体现在下面这三个方面:

(1)深度学习具有固定的监督信号(标签),而强化学习缺乏监督信号且只有环境反馈的奖励信号。除此之外,奖励自身存在噪声、延迟、和稀疏性等问题。
(2)深度学习的监督信号一般是独立同分布的,但是强化学习的动作和状态分布之间存在着相关性,即序列上的相邻状态或动作之间相互影响。
(3)深度学习的网络结构可以用于刻画非线性的函数关系,但是在实际任务中,采用非线性的深度学习网络结构表示值函数时,可能会导致强化学习算法的损失值波动甚至损失函数无法收敛。
也因为上述这些问题,融合强化学习和深度学习存在巨大的困难和挑战,但是下面我们要讲的DQN(deep Q-network)就很好的融合了这两种算法。

2、DQN(Depp Q-Network)算法

DQN算法是Google DeepMind团队在2013年提出来的第一个深度强化学习算法,并在2015年得到了很好的完善。在Atrari游戏中,DQN取得了惊人的实战表现,并由此引发了研究深度强化学习的热潮。

深度强化学习算法是把神经网络与前面讲的Q-learning算法相结合,利用神经网络对图像的强大的表征能力,把视频帧数据作为强化学习中的状态,并作为神经网络模型的输入;随后神经网络模型输出每个动作对应的价值(Q值),得到要执行的动作。

回顾前面讲的深度学习和强化学习的差别,我们想要把他们相互融合在一起肯定就要解决这些个问题,下面我们一个一个来解决。

2.1神经网络来近似价值函数

前面我们有提到用函数近似来逼近值函数,在这里我们用神经网络来逼近。因为神经网络在处理高维的状态空间和动作空间时更加有效。基于深度学习构建针对强化学习任务的价值网络用于求解价值函数。既然用神经网络来逼近,那肯定就需要去更新价值网络中的权重参数,用神经网络的方法就是要构建一个损失函数,这里对应于强化学习中的目标函数。而神经网络只有输入值和输出值,所以我们把状态信息s和奖励信息r输入价值网络,输出Q值,从而得到损失函数L(θ)。有了损失函数就可以很方面的对价值网络的权重参数进行迭代更新。

这里的损失函数L(θ)是通过Q-learning算法得到的,回顾之前的Q-learning算法的更新公式:

通过上式我们可以得到DQN的损失函数为:
L(θ)=E[(TargetQ−Q(s,a,θ))2]L(θ) = E[(TargetQ - Q(s,a,θ))^2]L(θ)=E[(TargetQ−Q(s,a,θ))2]
其中,θ为神经网络模型的权重参数。目标Q值,即TargetQ为:
TargetQ=r+γmaxa′Q(s′,a′,θ)TargetQ = r+ γmax_{a'}Q(s',a',θ)TargetQ=r+γmaxa′​Q(s′,a′,θ)

通过上式得到DQN的损失函数之后,可直接采用梯度下降算法对神经网络模型损失函数L(θ)的权重参数θ进行求解。

2.2经验回放

前面说因为深度学习的样本数据之间是独立同分布的,但是在强化学习中样本往往是关联的、非静态的,如果使用关联的数据进行深度神经网络训练,会导致模型难以收敛、损失值持续波动等问题。

所以DQN引入了经验回放机制:把每一时间步个体和环境交互得到的经验样本数据存储到经验池中,当需要进行网络训练时,从经验池中随机抽取小批量的数据进行训练。通过引入经验回放,一方面可以较为容易的对奖励数据进行备份;另一方面,随机的从经验池中抽取小批量的数据有助于解决数据之间的相关性和非静态分布等情况,使得网络更加容易收敛。(当然这里的存储池其实是电脑里的存储空间)

其中,每一个经验样本都是以一个五元组(s,a,r,s’,T)的形式进行存储的。这个五元组表示个体在状态s下执行动作a,到达新状态s’,并获得相应的奖励r。其中T为布尔类型,表示新的状态s’是否为终止状态。
环境每执行一步,个体把执行该步所获得的经验存储在经验池,在一般执行4步之后(原论文中使用4次作为预测网络的更新频次),个体从经验池中随机的抽取小批量经验样本数据。

2.3使用两个网络

在原始的Q-learning算法中,预测Q值和目标Q值使用了相同的参数模型dong,当预测Q值增大时,目标Q值与会随之增大,这在一定程度上增加了模型震荡和发散的可能性。
所以在这里用来两个神经网络模型,一个是预测网络,另一个是目标网络。
预测网络是用来评估当前状态动作对的价值函数。
目标函数用于生产前面所讲的目标价值(TargetQ)。
算法根据损失函数的更新公式来更新网络中的参数,每经过n轮迭代后,将预测网络中的参数复制给目标网络中的参数。通过引入目标函数,使得一段时间内目标Q值保持不变,并在一定程度上降低了预测Q值和目标Q值的相关性,死的训练时损失值震荡发散的可能性降低,从而提高了算法的稳定性。

3、总结

通过上面的解决办法很好的解决了深度学习和强化学习不能很好融合的问题,但是并不能说他们之间的融合很完美,还会有很多的问题。还需要我们不断的探索,慢慢完善才能逐渐的解决更复杂的问题。
下一篇我们学习深度确定性策略

下一章:深度确定性策略

参考文章:https://www.cnblogs.com/pinard/p/9714655.html

RL(十三)深度Q网络(DQN)相关推荐

  1. 通过深度Q网络DQN构建游戏智能体

    目录 什么是深度Q网络(DQN) DQN的基本结构 DQN的关键技术 用Python和Gym实现DQN 算法优化 1. 网络结构优化 2. 训练策略优化 3. 超参数优化 欢迎来到我的博客,今天我们将 ...

  2. 【EasyRL学习笔记】第六章 DQN 深度Q网络(基本概念)

    文章目录 一.深度Q网络的引入 1.1 传统表格型方法的缺点 1.2 引入深度Q网络 二.状态价值函数 2.1 基于蒙特卡洛的方法 2.2 基于时序差分的方法 2.3 两方法对比 2.4 举例说明 三 ...

  3. 第七章 深度强化学习-深度Q网络系列1(Deep Q-Networks,DQN)

    获取更多资讯,赶快关注上面的公众号吧! 文章目录 第七章 深度强化学习-深度Q网络 7.1 学习目标 7.2 深度学习和强化学习的区别 7.3 DQN原理 7.4 DQN算法 7.4.1 预处理 7. ...

  4. 【强化学习】双深度Q网络(DDQN)求解倒立摆问题 + Pytorch代码实战

    文章目录 一.倒立摆问题介绍 二.双深度Q网络简介 三.详细资料 四.Python代码实战 4.1 运行前配置 4.2 主要代码 4.3 运行结果展示 4.4 关于可视化的设置 一.倒立摆问题介绍 A ...

  5. 【EasyRL学习笔记】第八章 针对连续动作的深度Q网络

    文章目录 一.连续动作 二.方案1:对动作进行采样 三.方案2:梯度上升 四.方案3:设计网络架构 五.方案4:不使用深度Q网络 六.习题 一.连续动作 深度 Q\mathrm{Q}Q 网络其实存在一 ...

  6. 【EasyRL学习笔记】第七章 深度Q网络进阶技巧(Double-DQN、Dueling-DQN、Noisy-DQN、Distributional-DQN、Rainbow-DQN)

    文章目录 一.双深度Q网络(DDQN) 二.竞争深度Q网络(Dueling DQN) 三.优先级经验回放 四.在蒙特卡洛方法和时序差分方法中取得平衡 五.噪声深度Q网络(Noisy DQN) 六.分布 ...

  7. 强化学习_07_DataWhale深度Q网络进阶技巧

    习题 7-1 为什么传统的深度Q 网络的效果并不好?可以参考其公式Q(st, at) = rt + maxa Q(st+1, a) 来描述. 因为实际上在做的时候,我们要让左边的式子跟目标越接近越好. ...

  8. 【强化学习】Deep Q Network深度Q网络(DQN)

    1 DQN简介 1.1 强化学习与神经网络 该强化学习方法是这么一种融合了神经网络和Q-Learning的方法,名字叫做Deep Q Network. Q-Learning使用表格来存储每一个状态st ...

  9. 【强化学习】竞争深度Q网络(Dueling DQN)求解倒立摆问题 + Pytorch代码实战

    文章目录 一.倒立摆问题介绍 二.竞争深度Q网络简介 三.详细资料 四.Python代码实战 4.1 运行前配置 4.2 主要代码 4.3 运行结果展示 4.4 关于可视化的设置 一.倒立摆问题介绍 ...

最新文章

  1. [转]国内各大互联网公司相关技术站点2.0版 (集合腾讯、阿里、百度、搜狐、新浪、360等共49个)...
  2. 12.6 Nginx安装 12.7 默认虚拟主机 12.8 Nginx用户认证 12.9 Nginx
  3. oracle 表类型变量的使用
  4. SAP云平台上的502 Bad Gateway错误
  5. 咋安装redhatlinux镜像在哪下载_Windows7正版系统安装教程
  6. php 将数据库导出为csv,php – 将数据库转换为CSV并将文件保存到服务器上的文件夹 - 程序园...
  7. VideoLan 0.8.6b test 1
  8. Netty工作笔记0049---阶段内容梳理
  9. NumPy 算术函数
  10. 取石子游戏(斐波那契博弈)
  11. Jmeter怎么连接数据库
  12. html短竖线符号,word竖线符号
  13. uni-app:自定义vue模板
  14. 软件工程专业和网络工程专业的区别
  15. 算法之迪杰斯特拉算法
  16. 真实有效解决Open browser failed!! Please check if you have installed the browser correctly!
  17. 小木虫刻意隐瞒伪化生学科现状,劝人入坑,天打雷劈!
  18. 大数据面试题汇总(含数仓)
  19. 前端使用prettier格式化规范
  20. 英语四级考试计算机游戏,四级你过了吗电脑版

热门文章

  1. 给定一个大小为 *n* 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 *⌊ n/2 ⌋* 的元素。
  2. 《操作系统》期末考试试卷2
  3. c语言入门-5-字符串
  4. 为什么UUID是唯一的
  5. 关于java转义字符\解析。
  6. registration.setOrder
  7. 在Ubuntu上搭建DDNS动态域名解析服务
  8. Unity Navigation
  9. 龙光集团布局广州,以龙光·天皓为业主拾起温度
  10. jQuery之日期选择器