1 DQN的引入

  由于q_learning算法是一直更新一张q_table,在场景复杂的情况下,q_table就会大到内存处理的极限,而且在当时深度学习的火热,有人就会想到能不能将从深度学习中借鉴方法,将深度学习的方法应用到强化学习中。13年,谷歌的deepmind团队就发表了关于DQN算法的论文,促进了强化学习的发展,扩展了强化学习的应用场景。

2 将深度学习应用到强化学习的挑战

  将深度学习应用到强化学习上主要有两大挑战,下面具体说明这两种挑战是什么

2.1 第一个挑战是关于样本的分布:

  深度学习能够收敛的一大主要原因就是数据集要求独立同分布,只有数据集独立同分布,运用深度学习训练出来的模型才能更好的拟合数据集中潜在的模型,才能得到理想的结果。但是强化学习是从reward中学习,从一系列高度相关的状态中学习,而且强化学习中的智能体随着算法学习到新的行为,数据分布可能会发生改变,存在不能收敛的结果。想要将深度学习算法应用到强化学习中就必须解决强化学习的问题,切断状态的相关性,使数据集的分布稳定。

2.2 第二个挑战是关于学习的方式:

  深度学习是标准的监督式学习,在训练之前,想要训练得到的理想模型的目标就已经暗中存在,深度学习通过一次次的迭代,使算法收敛,寻到理想的模型。然而强化学习是从稀疏,有噪声,有延迟的标量的奖励信号中学习,想要将深度学习的算法应用用强化学习中就必须为强化学习设计每一步更新迭代的目标。

3 关于上述挑战的两个解决办法

3.1 解决样本分布问题

  谷歌deepmind的这篇论文中介绍了一种解决样本分布问题的方法:经验重放机制(repaly mechanism)。

  首先agent会被初始化一个状态s,将状态s输入到评价网络中(一个神经网络,后文介绍),输出每个动作的q值,agent通过q值和探索利用(exploration and exploitation)算法来选择在本状态执行的行动action,最后将s,action作用与环境中,环境会反馈给agent此状态执行action的reward和下一个状态s'。此时就到了一个序列(s, a, r, s'),其中s 为本次状态,a 为状态s时的执行的动作,r 为在状态s执行动作a环境反馈给agent的奖赏,s' 是下一个状态。一个序列(s , a, r, s')就构成了一个训练样本。

  首先规定经验池的大小为N,即只有N个最新的序列存在经验池中,大于N的序列会重头覆盖经验池中的样本。在每次更新神经网络参数时就用经验池中数据。

  经验池的存在,使高度相关的一系列的状态变成了一个个离散的数据样本,减小了训练的方差,同时使样本的分布趋于稳定,有利于算法的收敛,agent还能像人一样,可以从自己的历史经验中学习。

3.2 解决有监督问题

  为了解决强化学习和有监督学习的深度学习之间的矛盾,这篇论文中设计了两个神经网络,

  一个神经网络为预测网络:输入本次的状态,即样本序列中的第一个元素s,输出每个动作预测的q值,agent就是利用输出的每个动作的q值来决定本状态要执行的动作,本网络的参数随时更新。  

  另一个网络为评价网络:输入为下一个状态,即样本序列中的第四个元素s',输出为状态s'是每个动作的q值(q_next),然后利用贝尔曼方程(q_target=r+γ*max(q_next))计算出状态s时执行动作a的目标q值。

  评价网络的输出经过贝尔曼方程,计算结果的目标q值可作为预测网络的label,这样就解决了有监督的深度学习和没有监督的强化学习之间的矛盾。

  为了抑制状态之间相关性的问题,评价网络的参数并不会实时更新,在一定步数之后,预测网络会将自己的参数复制为评价网络。

4 算法流程

4.1 算法的整体逻辑

4.2 算法的学习逻辑

强化学习算法DQN的更多相关文章

  1. 一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm)

    一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm) 2017-12-25  16:29:19   对于 A3C 算法感觉自己总是一知半解,现将其梳理一下,记录在此,也 ...

  2. 【强化学习】DQN 算法改进

    DQN 算法改进 (一)Dueling DQN Dueling DQN 是一种基于 DQN 的改进算法.主要突破点:利用模型结构将值函数表示成更加细致的形式,这使得模型能够拥有更好的表现.下面给出公式 ...

  3. 强化学习算法Policy Gradient

    1 算法的优缺点 1.1 优点 在DQN算法中,神经网络输出的是动作的q值,这对于一个agent拥有少数的离散的动作还是可以的.但是如果某个agent的动作是连续的,这无疑对DQN算法是一个巨大的挑战 ...

  4. 强化学习(十二) Dueling DQN

    在强化学习(十一) Prioritized Replay DQN中,我们讨论了对DQN的经验回放池按权重采样来优化DQN算法的方法,本文讨论另一种优化方法,Dueling DQN.本章内容主要参考了I ...

  5. 强化学习(十七) 基于模型的强化学习与Dyna算法框架

    在前面我们讨论了基于价值的强化学习(Value Based RL)和基于策略的强化学习模型(Policy Based RL),本篇我们讨论最后一种强化学习流派,基于模型的强化学习(Model Base ...

  6. 强化学习Q-Learning算法详解

    python风控评分卡建模和风控常识(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005214003&am ...

  7. 强化学习(十五) A3C

    在强化学习(十四) Actor-Critic中,我们讨论了Actor-Critic的算法流程,但是由于普通的Actor-Critic算法难以收敛,需要一些其他的优化.而Asynchronous Adv ...

  8. 强化学习(十三) 策略梯度(Policy Gradient)

    在前面讲到的DQN系列强化学习算法中,我们主要对价值函数进行了近似表示,基于价值来学习.这种Value Based强化学习方法在很多领域都得到比较好的应用,但是Value Based强化学习方法也有很 ...

  9. ICML 2018 | 从强化学习到生成模型:40篇值得一读的论文

    https://blog.csdn.net/y80gDg1/article/details/81463731 感谢阅读腾讯AI Lab微信号第34篇文章.当地时间 7 月 10-15 日,第 35 届 ...

随机推荐

  1. Windows下文件检索的基本姿势

    要点 使用FindFirstFile和FindNextFile两个WindowsAPI,并配合链表或队列存储文件夹序列. C++源码(链表存储) #include <iostream> # ...

  2. Linux运维之系统性能瓶颈工具vmstat分析

    vmstat是一个很好用的检测系统性能工具,没有过多的参数,直接一个vmstat命令即可,不过我们一般加上-w表示宽格式输出.然后再附加上侦测时间即可 例如: vmstat 表示每3秒检测一次并输出系 ...

  3. 浅析Java虚拟机结构与机制[转]

    本文旨在给所有希望了解JVM(Java Virtual Machine)的同学一个概念性的入门,主要介绍了JVM的组成部分以及它们内部工作的机制和原理.当然本文只是一个简单的入门,不会涉及过多繁杂的参 ...

  4. 12.SolrCloud原理

    转载自http://blog.csdn.net/u011026968/article/details/50336709 内容涉及:SolrCloud的基础知识.架构.索引创建和更新.查询.故障恢复.负 ...

  5. NOIP模拟赛-2018.10.22

    模拟赛 今天第一节课是历史,当然是不可能上的,一来到机房发现今天高二考试... 老师说以后可能还要给高一考...那还不如现在跟着做好了,毕竟在学长学姐中垫底显得没那么丢人 这套题风格挺奇怪的...为什 ...

  6. PHP错误提示的关闭方法详解

    关闭PHP错误脚本提示是程序上线了必须做的一件事情,就是不管程序怎么报错我们都不能让错误日志在服务器上给大家看到,下面我来总结两种关闭PHP错误脚本提示的具体方法     最简单的办法就是直接在php ...

  7. ERC 725 and ERC 735 的实现及关系

    https://github.com/OriginProtocol/origin-playground 通过ERC 725 and ERC 735 的实现来说明它们到底是做什么的: 看了这个例子后才大 ...

  8. leetcode63—Unique Path II

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  9. dom阻止事件冒泡

    通常有两种事件流模型,一种是冒泡,一种是捕获.顾名思义,冒泡就是从内往外传播,捕获就是从外往里传播. 对于dom事件,就是这样的.比如,有两个父子div. <div id="pdiv& ...

  10. TensorFlow入门

    Win10下pycharm安装tensorflow: 1.安装git,这样就会有windows powerShell 2.安装python3.x,配置环境变量 3.安装pip,下载地址是:https: ...