【大规模深度强化学习(一) 】深度强化学习中的异步方法(A3C)_asynchronous methods for deep reinforcement learni-程序员宅基地

技术标签: 顶会期刊论文阅读笔记  人工智能  

  • 论文题目:Asynchronous Methods for Deep Reinforcement Learning

论文标题及作者信息

所解决的问题?

  在强化学习算法中agent所观测到的data是非平稳和强相关( non-stationarystrongly correlated)。通过设置memory的方式可以减少非平稳性和解耦轨迹之间的相关性,但是这样会限制这些方法只能去使用off-policyRL算法,并且会增加额外的运算。

  作者主要是通过多个智能体并行地采样数据,以一种更加平稳的处理方式(more stationary process,传递梯度参数) 来解耦智能体数据采样数据之间的相关性,并且可以使用on-policy的策略。

背景

  在此之前也有一些研究,比如The General Reinforcement Learning Architecture (Gorila)中:actor与环境互动采样(多台电脑),将数据放入replay memory中,learnerreplay memory中获取数据,并计算DQN算法所定义的Loss梯度,但是这个梯度并不用于更新learner的参数,梯度信息被异步地分发到参数服务中心(central parameter server),去更新一个中心模型的副本,更新完的policy参数在隔固定步数发送到actor中去。(learnertargetcentral parameter server所更新的参数更新learner)。流程图如下所示:

Gorila网络结构

  还有一些研究将Map Reduce framework 引入用于加快矩阵运算,(并不是加快采样)。也还有一些工作是learner之间通过通讯共享一些参数信息。

所采用的方法?

  作者所使用的方法与Gorila框架的方法类似,但是并没有用多台机器和参数服务器(parameter server),而是使用一个多线程的GPU在单台机器上运行,每一个线程上都有一个learner,它们采样的数据就更加丰富了,多个learner online更新最后汇总梯度,其实也是相当于切断了数据之间的关联性。因此作者没有使用replay memory而是对每个learner使用不同的exploration policy,因此这种方法也可以使用on-policy的强化学习算法,比如sarsa这种。将其用于Q-Learning算法的话,可以得到如下单线程learner伪代码:

 one-step Q-learning算法伪代码

  对于actor-critic框架,单线程learner伪代码如下所示:

A3C算法伪代码

取得的效果?

  所需的计算资源更小,使用一个multi-core CPU就可以进行训练。比较了在Nvidia K40 GPU上训练的DQN算法的学习速度和在五个Atari 2600游戏上使用16个CPU核心训练的异步方法:

实验结果对比

  还有一些什么鲁棒性地分析可以参考原文,这里就不说了,在讨论部分作者强调了,并不是说experience replace不好,把其引入进来可能效果会改进采样效率,可能会使得效果更好。

论文小节

  整个网络中有多个local worker,一个global worker。多个local worker异步更新,更新完的参数传到global worker中去。local worker采样到新的样本之后,在更新之前需要把global worker中的参数拉取过来之后再进行更新,更新之后再传到global worker中去。

  这种方式只能是CPU层面的并行,之后的A2C,同步版本的,每一个worker仅采集数据,然后集中起来通过GPU进行更新,只传数据。

所出版信息?作者信息?

  这篇文章是ICML2016上面的一篇文章。第一作者Volodymyr MnihToronto大学的机器学习博士,师从Geoffrey Hinton,同时也是谷歌DeepMind的研究员。硕士读的Alberta大学,师从Csaba Szepesvari

Volodymyr Mnih

参考链接

  1. The General Reinforcement Learning Architecture (Gorila) of (Nairetal.,2015) performs asynchronous training of reinforcement learning agents in a distributed setting. The gradients are asynchronously sent to a central parameter server which updates a central copy of the model. The updated policy parameters are sent to the actor-learners at fixed intervals.
  • 参考文献:Nair, Arun, Srinivasan, Praveen, Blackwell, Sam, Alcicek, Cagdas, Fearon, Rory, Maria, Alessandro De, Panneershelvam, Vedavyas, Suleyman, Mustafa, Beattie, Charles, Petersen, Stig, Legg, Shane, Mnih, Volodymyr, Kavukcuoglu, Koray, and Silver, David. Massively parallel methods for deep reinforcement learning. In ICML Deep Learning Workshop. 2015.
  1. We also note that a similar way of parallelizing DQN was proposed by (Chavez et al., 2015).
  • 参考文献:Chavez, Kevin, Ong, Hao Yi, and Hong, Augustus. Distributed deep q-learning. Technical report, Stanford University, June 2015.
  1. In earlier work, (Li & Schuurmans, 2011) applied the Map Reduce framework to parallelizing batch reinforcement learning methods with linear function approximation. Parallelism was used to speed up large matrix operations but not to parallelize the collection of experience or stabilize learning.
  • 参考文献:Li, Yuxi and Schuurmans, Dale. Mapreduce for parallel reinforcement learning. In Recent Advances in Reinforcement Learning - 9th European Workshop, EWRL 2011, Athens, Greece, September 9-11, 2011, Revised Selected Papers, pp. 309–320, 2011.
  1. (Grounds & Kudenko, 2008) proposed a parallel version of the Sarsa algorithm that uses multiple separate actor-learners to accelerate training. Each actor learner learns separately and periodically sends updates to weights that have changed significantly to the other learners using peer-to-peer communication.
  • 参考文献:Grounds, Matthew and Kudenko, Daniel. Parallel reinforcement learning with linear function approximation. In Proceedings of the 5th, 6th and 7th European Conference on Adaptive and Learning Agents and Multi-agent Systems: Adaptation and Multi-agent Learning, pp. 60– 74. Springer-Verlag, 2008.

扩展阅读

  基于value estimationcritic方法。广泛应用于各种领域,但有一些缺点使它的应用受到局限。如 :

  1. 难以应用到随机型策略(stochastic policy)和连续的动作空间。
  2. value function的微小变化会引起策略变化巨大,从而使训练无法收敛。尤其是引入函数近似(function approximation,FA)后,虽然算法泛化能力提高了,但也引入了bias,从而使得训练的收敛性更加难以保证。

  而基于actor方法通过将策略参数化,从而直接学习策略。这样做的好处是与前者相比拥有更好的收敛性,以及适用于高维连续动作空间及stochastic policy。但缺点包括梯度估计variance比较高,且容易收敛到非最优解。另外因为每次梯度的估计不依赖以往的估计,意味着无法充分利用老的信息。

  但对于AC算法来说其架构可以追溯到三、四十年前。 最早由Witten在1977年提出了类似AC算法的方法,然后Barto, SuttonAnderson等大牛在1983年左右引入了actor-critic架构。但由于AC算法的研究难度和一些历史偶然因素,之后学界开始将研究重点转向value-based方法。之后的一段时间里value-based方法和policy-based方法都有了蓬勃的发展。前者比较典型的有TD系的方法。经典的Sarsa, Q-learning等都属于此列;后者比如经典的REINFORCE算法。之后AC算法结合了两者的发展红利,其理论和实践再次有了长足的发展。直到深度学习(Deep learning, DL)时代,AC方法结合了DNN作为FA,产生了化学反应,出现了DDPGA3C这样一批先进算法,以及其它基于它们的一些改进和变体。可以看到,这是一个先分后合的圆满故事。

我的微信公众号名称:小小何先生
公众号介绍:主要研究分享深度学习、机器博弈、强化学习等相关内容!期待您的关注,欢迎一起学习交流进步!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39059031/article/details/104572749

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签