查看原文
其他

【综述专栏】Distributed Training:强化学习并行训练论文合集

在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。

作者:知乎—Firework

地址:https://www.zhihu.com/people/zhou-bo-54-20

最近组里在讨论接下来在强化学习这块的研究方向,在讨论之前,我们把强化学习各个子方向的论文都粗略过了一下,涉及到model-free/model-based/multi-agent/deep exploration/meta-learning/imitation learning/application/distributed training等方向。我想着当时查找阅读相关文章花费了不少精力,决定开个专栏把我看的论文给整理一遍,主要是为了让别的同学少走点弯路,也方便自己回顾。
本文讨论到的相关论文连接放在了https://github.com/PaddlePaddle/PARL/blob/develop/papers/archive.md#distributed-training上,后续会一直更新。


01

整体介绍
强化学习需要的数据量其实是相当大的,在15年DQN发布的时候,要复现论文指标得和游戏交互10000000步。这个数量级在持续增长,deepmind 在训练AlphaGo的时候也是使用了上百块GPU来训练数月。去年年底他们还在星际争霸2训练了多智能体的算法(multi-agent),一共有上千个agent,每个agent所学习的数据量相当于人类连续玩了数百年的数据量。整体而言,强化学习领域训练出效果更好的智能体需要更多的数据,这也就对我们算法的训练速度有了极大的要求。

02

论文整理
Asynchronous Methods for Deep Reinforcement Learning ICML 2016.
https://arxiv.org/pdf/1602.01783.pdf
Volodymyr Mnih, Adrià Puigdomènech Badia, Mehdi Mirza, Alex Graves, Timothy P. Lillicrap, Tim Harley, David Silver, Koray Kavukcuoglu
简述:这篇是RL领域最为经典的并行工作。作者通过多线程的方式来实现并行:每个线程有一份独立的policy参数以及一个游戏环境,这个policy会和环境交互产生数据来计算梯度。在跑每个episode之前,这个policy都会从parameter server上拉取最新的模型参数,然后在跑完每个episode之后计算梯度后把梯度刷到parameter server上。在当时看来,这个算法不仅能极大提升训练速度,而且效果也比当时的单机DQN版本好很多。作者提到说是由于每个线程的policy探索了不同的状态空间而提升了算法效果。
A2C ---- OpenAI
https://openai.com/blog/baselines-acktr-a2c/
简述:A3C发布之后,OpenAI跟进发表了A2C,主要的工作是把异步版本的A3C改造成A2C。并行计算到底采用同步还是异步的方式是一个存在争议的问题,两者并没有谁比谁绝对地好。但是近些年,并行计算这块在学术界更多研究的是同步计算,因为同步计算的逻辑更加清晰,可复现性有保障(参考Facebook18年发的1小时训练一个image net)。这个工作虽然只是在OpenAI的博客上面发表,没有正式投稿到会议中去,但是已经成为了A3C最为常用的一个分支。
GA3C: GPU-based A3C for Deep Reinforcement Learning NIPS 2016.
https://www.researchgate.net/publication/310610848_GA3C_GPU-based_A3C_for_Deep_Reinforcement_Learning
Iuri Frosio, Stephen Tyree Jason Clemons Jan Kautz
简述:A3C发布之后的另一个重要分支。原版的A3C是主打CPU这种低成本的计算方式的,但是在单个GPU上是不是就没法做并行了呢?不是的,作者通过单GPU + 多CPU的方式实现了并行,效果和原版的持平。
Distributed Prioritized Experience Replay ICLR 2018.
https://openreview.net/pdf?id=H1Dy---0Z
Dan Horgan, John Quan, David Budden, Gabriel Barth-Maron, Matteo Hessel, Hado van Hasselt, David Silver
简述:上面提到的A3C算法是Actor-Critic的算法并行,这边文章介绍的是在DQN这类Critic-only的算法上面做的并行工作。Critic-only算法的主要特点是通过一个Experience Replay Memory来持续收集数据以提升算法的稳定性(DQN里面提到的重要trick),这里作者是直接多个启动actor和环境做交互,产生的数据放在一个全局共享的Memory中去。为了提升效率,作者也采用了带优先级的memory。
IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures ICML 2018.
https://arxiv.org/abs/1802.01561
Lasse Espeholt, Hubert Soyer, Remi Munos, Karen Simonyan, Volodymir Mnih, Tom Ward, Yotam Doron, Vlad Firoiu, Tim Harley, Iain Dunning, Shane Legg, Koray Kavukcuoglu
简述:这是并行RL算法领域引用最为高的一篇文章。文章和以往做的工作不同,不仅仅有工程上实验效果的大幅提升,还做了理论的分析解决了on-policy与off-policy的训练差异问题,整体工作是相当solid的。作者同时启动了多个Actor和一个Learner,每个Actor都是包含整个policy参数的,负责和环境交互产生数据,Learner是负责训练参数还有同步参数给Actor的。这就有个问题了,参数同步会有无法避免的延迟,那这个就违背了On-policy算法的更新原则,作者提出了一种很好的方式解决这个问题,对有延迟的数据进行修正使得on-policy的训练方式可以继续进行。
Distributed Distributional Deterministic Policy Gradients ICLR 2018.
https://arxiv.org/pdf/1804.08617.pdf
Gabriel Barth-Maron, Matthew W. Hoffman, David Budden, Will Dabney, Dan Horgan, Dhruva TB, Alistair Muldal, Nicolas Heess, Timothy Lillicrap
简述:前面提到的文章主要是解决离散问题的并行加速,这篇文章是把DDPG改成并行版本的。在DDPG的基础上,作者把Critic里面的建模从一个均值的预估改成了对分布的预估(参考了distributional RL),不同的worker之间share同一个replay buffer,另外在更新的时候也是采用了N-step 的bootstrap方式(原DDPG是单步的bootstrap 更新方式)。
Emergence of Locomotion Behaviours in Rich Environments arXiv.
https://arxiv.org/abs/1707.02286
Nicolas Heess, Dhruva TB, Srinivasan Sriram, Jay Lemmon, Josh Merel, Greg Wayne, Yuval Tassa, Tom Erez, Ziyu Wang, S. M. Ali Eslami, Martin Riedmiller, David Silver
简述:介绍完DDPG的并行版本之后,我们来看下PPO的并行版本。首先建议大家看下这个视频,deepmind基于mujoco开发了一些有趣的挑战,看着视觉效果还是挺好的。这篇文章说实话改进不大,文章是采用同步的方式更新参数的(作者提到调研了异步,但是效果不好),然后PPO里面的Advantage计算则改成了N-step的计算,这一个和上一篇文章D4PG类似,另外就没有太多改进了。作者还指出通过并行计算,即便是很简单的reward设定方式也能让agent学习到很复杂的决策方式。
GPU-Accelerated Robotic Simulation for Distributed Reinforcement Learning CoRL 2018.
https://arxiv.org/abs/1810.05762
Jacky Liang, Viktor Makoviychuk, Ankur Handa, Nuttapong Chentanez, Miles Macklin, Dieter Fox
简述:英伟达在CoRL2018上发的一篇很有意思的文章。大家都想着用网络通讯增加worker数量的方法来提升整个并行框架的计算速度,Nvidia这时候跑出来呼吁大家直接用GPU做仿真就好,速度更快。论文里面是实现了mujoco版本的一些仿真器,有上万个仿真人同时在视频里面跑,看着是想当好玩的,强烈建议大家去看下这个视频。不过这个文章也是Nvidia用于秀GPU发的,代码并没有开源,仿真环境也没有开源,看看热闹就好。
Recurrent Experience Replay in Distributed Reinforcement Learning ICLR 2019.
https://openreview.net/pdf?id=r1lyTjAqYX
Steven Kapturowski, Georg Ostrovski, John Quan, Remi Munos, Will Dabney
简述:截止到目前(2019/08/19)在Atari游戏上的STOA效果,相对之前的IMPALA等并行工作提升幅度很大,无论是收敛速度还是最终效果(从图就可以看出来)。简单来说,这个工作就是Apex的RNN版本(Reviewer原话),两者都是有一个共享的RPM来收集不同worker的数据,然后通过off-policy算法来更新参数,不同的是这个文章是通过RNN来建模的。遗憾的是这个文章并没有开源代码,本来RNN的具体实现就有挺多trick,而且是RNN+并行这种实现结构,没有开源的话挺难让别人来follow他们的工作。
最后是一个表格的总结,具体的论文:https://github.com/PaddlePaddle/PARL/blob/develop/papers/archive.md#distributed-training
本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“综述专栏”历史文章


更多综述专栏文章,

请点击文章底部“阅读原文”查看



分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存