博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Playing Atari with Deep Reinforcement Learning 学习笔记
阅读量:3936 次
发布时间:2019-05-23

本文共 3934 字,大约阅读时间需要 13 分钟。

论文笔记

一.基本信息

标题:Playing Atari with Deep Reinforcement Learning
时间:
出版源:
领域分类:AI Deep Reinforcement Learning
论文概述:
本篇论文提出了将深度学习和强化学习结合起来的模型,利用强化学习成功地从高维感官输入中学习控制策略的深度学习模型,该模型是用Q-learning的变体训练的卷积神经网络,其输入是原始像素,输出是估计未来奖励的估值函数。通过作者此方法训练的神经网络来玩7个Atari 2600游戏,我们发现,它在6款游戏上的表现优于之前所有的方法,并在其中3款游戏上超过了人类专家。
研究背景
问题定义:

Our goal is to create a single neural network agent that is able to successfully learn to play as many of the games as possible.

一方面,强化学习在从视觉和语言等高维感官输入中学习如何控制agent是存在一定困难的。大多数成功的RL,都依赖基于人工特征的策略或者值函数。显然,这使得学习算法的效果在很大程度上依赖于特征的标注质量。
另一方面,深度学习在视觉和语音领域取得了极大的成就,神经网络在提取高维特征方面有着极大的优势,在此方面使用神经网络来结合强化学习看起来是一种很自然的技术。
所以说,作者想要将深度学习与强化学习结合起来,使得强化学习能够直接从高维数据来学习到游戏操作策略

难点:

第一:迄今为止,大多数成功的深度学习应用程序都需要大量的手工标记训练数据。

第二:RL算法必须能够从频繁稀疏、噪声和延迟的标量奖励信号中学习。监督学习中:输入与目标之间是直接联系的。因此,action与reward之间的延迟(可能长达数千步)是个棘手的问题。
第三:大多数深度学习算法假设数据样本是独立的,而在强化学习中,通常会遇到高度相关的序列。
第四:在RL中,随着算法不断学习新的action,“agent根据action探索得到的数据”的分布也会发生变化。这对于“假设一个固定的底层分布”的深度学习来说是有问题的。

相关工作:

此前已经有人提出过将深度学习和增强学习相结合的方法了。TD-gammon算法将Q-Learning与一个单隐层的神经网络相结合,但是并不具备通用性,并且人们发现model-free方法与非线性拟合相结合很容易造成Q-Network不收敛。目前,神经网络主要被用于为环境建模,为估值函数建模和为奖赏建模。

另外一个与我们相似的工作是使用神经拟合Q-learning (NFQ)。它使用的批更新具有“每次迭代的计算成本都与数据集的大小成正比”这一特点。它使用纯视觉输入,首先使用深度自动编码器来学习任务的低维度表示,然后将NFQ应用到这个低纬度表示中。

Q-Learning算法学习:

强化学习通过Agent与环境的交互来不断学习最优的策略,Agent的目标就是获取最大奖赏。
定义在时刻未来能获得的回报为:,即回报随着时间会有一定的衰减。
最优的动作-值函数为:。
比较基本的方法是采用动态规划的方法计算最优的Q值,因为序列符合MDP,我们得到如下的迭代公式:

带迭代次数趋于无穷时,Q逼近与Q*。

然而这种方法在实际应用中是完全不可行的,因为每个序列的值函数是单独估计的,没有任何普遍性。另外,当状态-动作空间太大时,使用Q-Table更新是不现实的。所以通常的做法是把Q值的更新看作是一个函数拟合问题,通过参数拟合来逼近最优函数:。如果我们想要拟合一个非线性函数,那么神经网络无疑是非常合适的选择。利用SGD算法最小化损失函数:来训练。这种算法是无模型的,而且是off-policy的,因为它通过e-greedy来选择动作。

二.创新方法

  1. 本文通过使用一个CNN网络和Q-Learning算法结合的方法来解决这些问题,采用随机梯度下降的优化算法,同时采用了一种名为experience replay mechanism的经验重播机制方法来解决数据分布不均衡的问题。
  2. DQN采用了经验回放机制,将的经验存入一个固定大小的数据集中,之后的训练中随机从经验池中选区minbatch个数据集用于训练。因为数据选取的随机性而有效避免了训练样本高度相关性的问题,解决了训练问题,同时,经验的每一步都可能用于许多权重更新,从而提高数据效率。 并且,通过使用经验重放,在许多以前的状态下对行为分布进行平均,避免参数的振荡或发散,避免陷入糟糕的局部最小值。同时算法仅保存最新的N个经验样本解决了内存问题。
    3.算法流程:

3.1. 初始化经验池D

3.2. 随机初始化网络权重
3.3 对于每一个episode,获取预处理的图像输入
3.4. 根据e-greedy算法,选择下一次的动作。计算下一帧图形和reward
3.5. 将得到的数据存入经验池D
3.6. 从经验池中随机选取数据,计算网络的输出y
3.7. 使用SGD(随机梯度下降)算法来更新网络的权重

四.实验

实验对象:

我们已经在七款流行的雅达利游戏上做了实验——Beam Rider, Breakout,Enduro, Pong, Q*bert, Seaquest, Space Invaders.我们在所有7款游戏中使用了相同的网络架构、学习算法和超参数设置。

要探究的问题:

探究这种方法让agent学习玩雅达利游戏的效果,与以往的RL方法以及人类游戏专家比是否能够玩得更好。

实验结果:

结论:

DQN在7个Atari 2600游戏上的得分有6个胜过了以往最好方法,有3个游戏超过了人类专家。
五.结论
作者的总结:

本文介绍了一种新的用于强化学习的深度学习模型,并展示了它对雅达利2600游戏机学习复杂控制策略的能力。我们还提出了一种在线Q-learning算法的变体,它将随机的minibatch与replay memory相结合,以方便RL的深层网络训练。我们的方法没有对网络架构或超参数进行调整,在测试的7个游戏中有6个得到了最优秀的结果。其中在有3个游戏中效果超过了人类游戏专家。

自己的评价:

看完这篇论文后,我再一次认同我之前的观点,我们在某一个领域学到的知识,要把学到的知识融会贯通,应用到以后碰到的问题上。即知识的迁移和融会贯通很重要。

作者在强化学习中碰到的一些无法解决的问题,采用深度学习的思路来解决,当然作者也考虑到了两者不适用的地方,所以对于模型方便进行了一定的改进。比如文中所采用的Experience Replay 方法使得数据满足独立分布,并且打破了数据之间的关联性。使得能够较好的把深度学习和强化学期运用到一起。并且作者提出想法后,通过做实验的方法论证了,自己的方法能够取得一个很好地效果。优于目前已有的一些方法。

改进的方案:

对于改进的方案来说,我有几个设想:

第一:从作者的解决方案来看,其实作者想到的就是从高维的图像数据入手,先用一个cnn再用Q-learning来进行训练。这样来看cnn主要提取出了图像中重要的信息,然后再用Q-learning的方式来获得一个很好的策略。但是这样忽视了一点,即我们玩游戏也是一个连续的过程,即前一步的操作,或者是前k帧的操作之间的联系。所以我觉得可能在cnn网络模型之后再加上一层rnn的模型,进行一个过往信息的汇总,然后再将信息进行Q-learning的操作。可能这样做,考虑到时间维度上图片之间的信息。能够让机器获得更多的信息,进而学到更好的效果。

第二:这个改进的点不是我自己想出来的。也是我之前学习q-learning就了解到。我们可以采用一种叫Fixed Q-targets的机制。如果使用 fixed Q-targets, 我们就会在 DQN 中使用到两个结构完全相同但参数不同的神经网络 (有时差), 预测 Q 估计的神经网络 (evaluate net) 具备最新的参数, 而预测Q 现实的神经网络 (target net) 使用的参数则是很久以前的。这种方法一定程度降低了当前Q值和目标Q值的相关性,提高了算法稳定性。

第三:同样在别人的文章的思想下,对于experience replay 这个方法来说,随机的抽取过去的数据,没有区分它们之间的重要性,这样做的效率会比较低,可以考虑 prioritized sweeping的解决方案,也就是不再是完全随机抽取,而是考虑到不同数据之间的重要性,然后再做一个抽取操作。

参考链接:

https://blog.csdn.net/qq_30615903/article/details/80744083
https://www.jianshu.com/p/3bd1eba0a0f7
https://zhuanlan.zhihu.com/p/137880325
https://www.cnblogs.com/hhh5460/p/10154874.html
https://blog.csdn.net/weixin_40523230/article/details/83142223//翻译
https://blog.csdn.net/qq_37141382/article/details/88309771//笔记
https://juejin.im/post/6844903985611014152#heading-7
https://zhuanlan.zhihu.com/p/97856004

你可能感兴趣的文章
优秀开源项目(持续更新)
查看>>
SpringMVC项目报javax.validation.ValidationException: Unable to create a Configuration, because no Bean
查看>>
git常用命令
查看>>
vue实现动态添加行(并计算合计,小计)
查看>>
springboot工程在使用docker,nginx做转发时候提示400
查看>>
SpringCloud(Finchley.SR2) Eureka注册时候提示Cannot execute request on any known server
查看>>
SpringCloud (Finchley.SR2)整合hystrix dashboard 提示Unable to connect to Command Metric Stream.
查看>>
subclipse使用详解
查看>>
oracle分配权限 学习笔记--转载
查看>>
storm入门教程 第四章 消息的可靠处理
查看>>
Storm入门教程 第二章 构建Topology
查看>>
Apache Kafka
查看>>
firefox快捷键
查看>>
linux下vi命令大全
查看>>
MongoDB主要知识
查看>>
c3p0详细配置
查看>>
EHCache的使用
查看>>
Java分布式事务
查看>>
JAVA操作MongoDB
查看>>
SOLR的一些错误
查看>>