强化学习之DQN算法

强化学习之DQN算法DQN DeepQNetwork 是强化学习中一种强大的算法 DeepMind 团队凭借该算法 让计算机打败了人类围棋 刷新了人们对人工智能的认知 强烈推荐莫烦大神的强化学习入门课程 本文主要参考莫烦大神的课程进行总结 论文 PlayingAtari https arxiv org abs 1312 5602 参考

DQN,Deep Q Network,是强化学习中一种强大的算法,Deep Mind团队凭借该算法,让计算机打败了人类围棋,刷新了人们对人工智能的认知。强烈推荐莫烦大神的强化学习入门课程,本文主要参考莫烦大神的课程进行总结。

论文:《Playing Atari with Deep Reinforcement Learning》https://arxiv.org/abs/1312.5602

参考代码:https://github.com/DiaoXY/DQN_tf

一、概述

      现在的强化学习可以分为三类:policy gradient,value-base,Actor-Critic。其中DQN是value-base的代表,以DDPG为代表的Actor-Critic算法中既有value-base,也有policy网络。

      Policy gradient的强化学习方法,通过感官分析所处的环境, 直接输出下一步要采取的各种动作的概率, 然后根据概率采取行动,每个动作都有可能被选择。value-base的强化学习方法输出的是所有动作的价值,选择最高价值对应的动作。对于连续动作空间,policy gradient可以利用一个概率分布在连续动作中选取特定动作,而value-base方法更适合离散动作空间。Actor-Critic方法结合了上述两种方法的优势,设定actor基于概率做出动作,critic会对做出的动作给出动作的价值,actor会根据critic给出的评分来修改行为的概率,加速了policy gradient的学习过程。

二、Q-Learning

2.1 Q-Learning决策过程

存在一张状态动作准则表Q值表,每次选择动作时,参照该表来选择某状态下对应Q值最大的动作即可。例如下表,假设我们现在处在状态S1,动作a2的价值要比a1高,所以我们做出判断,选择动作a2,执行完动作a2后我们处在状态S2,重复上面的操作,选择S2对应Q值最大的动作,重复上述决策过程。

Q值表
状态/动作 a1 a2 。。。
S1 -1 2 。。。
S2 2 4 。。。
。。。 。。。 。。。 。。。

 

2.2 Q-Learning的更新

在上述过程中,处在状态S1时,由于Q(s1,a2)大于Q(s1,a1),所以执行动作a2后,获得对应的奖励 R,此时处于状态s2,这时开始更新用于决策的Q表,这个过程中我们并没有在实际中采取任何行为, 而是再想象自己在 s2 上采取了每种行为, 分别看看两种行为哪一个的 Q 值大, 比如说 Q(s2, a2) 的值比 Q(s2, a1) 的大, 所以我们把大的 Q(s2, a2) 乘上一个衰减值 gamma (比如是0.9) 并加刚刚到达状态S2时的奖励 R  , 我们将这个{R+gamma*Q(s2,a2)}作为我现实中 Q(s1, a2) 的值, 但是我们之前是根据 Q 表估计 Q(s1, a2) 的值. 所以有了现实和估计值, 我们就能更新Q(s1, a2) , 根据 估计与现实的差距, 将这个差距乘以一个学习效率 alpha 累加上老的 Q(s1, a2) 的值 变成新的值{新Q(s1,a2)=老Q(s1,a2)+alpha*(现实与估计的差距)}. 但时刻记住, 我们虽然用 maxQ(s2) 估算了一下 s2 状态, 但还没有在 s2 做出任何的行为, s2 的行为决策要等到更新完了以后再重新另外做. 这就是 off-policy 的 Q learning 是如何决策和学习优化决策的过程.。

强化学习之DQN算法

 

 

三、DQN算法

DQN是一种结合神经网络和Q-Learning的算法。在原始的Q-Learning方法中,采用表格的形式来存储每个状态对应各个动作的Q值,记为Q(s,a),如果所有的Q值都应采用表格的形式保存的话,那是一件非常耗时且占用内存的事情。所以我们希望通过函数的形式来计算Q值,因此采用机器学习中神经网络来完成Q值的计算,将状态和动作作为神经网络的输入,经过神经网络分析就可以得到该状态下的每个动作对应的Q值,然后按照Q-Learning方法的决策原则,选择拥有最大Q值的动作作为下一步的动作。

3.1 DQN中的神经网络训练

强化学习不同于深度学习中,有大量带有“正确答案”的标签的样本,所以在训练神经网络时,只能通过Q-Learning方法的reward来构造“标签”。采用双网络的结构,一个估计网络(当前训练的网络)产生当前Q值,即Q估计;一个目标网络产生目标Q值,即Q现实。则神经网络的目标就是使得Q现实与Q估计的差值最小。

强化学习之DQN算法

 

其中\theta表示估计网络中的网络参数,Q(s,a;\theta )表示估计网络中当前状态s的Q估计值,TargetQ表示目标网络中的目标Q值,计算如下

强化学习之DQN算法

\theta __表示目标网络参数,TargetQ表示目标网络产生的Q值,s’表示下一个状态,a’表示s’状态下对用最大Q值的动作。TargetQ对应的“标签”中的正确值,其实目标网络和估计网络的结构完全一样,不过蚕食更新速度不一样,目标网络中参数要比估计网络中的参数“旧”一点。通过Loss Function来训练更新当前网络,也就是估计网络的参数,经过N次迭代之后,将估计网络中的参数复制到目标网络中,因此目标网络在一段时间内的网络参数不会发生改变,可以有效地降低估计Q值与目标Q值的相关性,提高算法的收敛性。

3.2 Experience replay经验回放机制

DQN算法是一种off-policy的离线算法,可以学习过去经历过的经验。DQN设置了一个经验池,用于存放过期经历的一系列的状态、动作、奖励值和下一个状态,在每次DQN网络更新时,通过随机抽取(minibatch)的方式进行学习,不仅可以打乱经历间的相关性,还可以提高学习效率。

2013版DQN算法如下

强化学习之DQN算法

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233091.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c语言程序设计打卡系统,C语言程序设计报告书学生考勤系统设计.doc[通俗易懂]

    c语言程序设计打卡系统,C语言程序设计报告书学生考勤系统设计.doc[通俗易懂]设计题目:学生考勤系统设计设计方案:该系统能考察学生的出勤情况,所以包括每个班学生的全部信息。每个学生是一条记录,包括姓名﹑性别﹑学号,对应于某天某门课程的出勤情况等。该系统可模拟考勤过程,记录考勤结果,并能在课程结束后按照设定的考勤评分标准自动给出每个学生的考勤分数。其中,学生可在本系统在线请假以及查看学期内的上课出勤信息。在线请假中,学生可以随时查看到请假的详细进展情况。同时,学生可以查看本期…

    2025年6月12日
    2
  • for循环break和continue[通俗易懂]

    for循环break和continue[通俗易懂]for循环像while循环一样,for可以完成循环的功能。在Python中for循环可以遍历任何序列的项目,如一个列表或者一个字符串等。for循环的格式for临时变量in列表或者字符串等:循环满足条件时执行的代码demo1name=‘itheima’forxinname:print(x)运行结果如下:itheimademo2name=‘h…

    2022年5月3日
    83
  • 输油管的布置数学建模matlab,输油管布置的数学模型

    输油管的布置数学建模matlab,输油管布置的数学模型题研究—m⋯一一鼢|毳褥穰麓羧◎李银敏王作顺刘刚(广西贵港75130部队537100)【摘要】本论文研究了输油管线铺设最小费用问题,对问题1建立优化模型,运用函数极值理论及MATLAB软件求出最优解并给出了相应的铺设方案.首先我们运用机理分析说明公用管线必与铁路垂直,简化了问题,通过研究最一…

    2022年6月17日
    19
  • 华三交换机配置access命令_H3C交换机配置基本命令详解

    华三交换机配置access命令_H3C交换机配置基本命令详解H3C交换机配置基本命令详解随着移动互联网趋势加快以及智能终端的快速普及,WLAN应用需求在全球保持高速增长态势。下面是小编整理的关于H3C交换机配置基本命令详解,希望大家认真阅读!1、配置主机名[H3C]systemnameH3C2、配置console口密码#进入系统视图。system-view#进入AUX用户界面视图。[H3C]user-interfaceaux0#设置通过Con…

    2022年6月20日
    198
  • myeclipse svn插件失效

    myeclipse svn插件失效最近经常遇到这个问题,在myeclipse2016上安装svn插件是将site目录copy到dropins目录下,可能这样做会导致以后安装其他新插件时,svn插件会失效,解决方案如下:找到myeclipse安装目录下的configuration目录下的org.eclipse.update包,然后把它删除,重启myeclipse,svn就会重新出现了!麻烦 …

    2022年7月21日
    10
  • pycharm怎么初始化设置_pycharm安装之后的设置

    pycharm怎么初始化设置_pycharm安装之后的设置pycharm的初始设置恢复pycharmpycharm的配置信息是保存在用户目录下.PyCharm***.*目录下的,***.*表示当前使用的pycharm的版本号如果要回复pycharm的初始设置,可以按照以下步骤进行 关闭正在运行的pycharm 删除pycharm的配置信息目录 rm-r~/.PyCharm16.3 重新启动pycharm(选择没有配置信息选项 ) 选择许可协议新建/打开一个pychar

    2022年8月27日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号