Paper Reading 4:Massively Parallel Methods for Deep Reinforcement Learning
来源:ICML 2015 Deep Learning Workshop
作者:Google DeepMind
创新点:构建第一个用于深度增强学习的大规模分布式结构
该结构由四部分组成:
- 平行的执行机构:生成新的动作
- 同时进行的学习机制:通过存储的经验来进行训练
- 分布式的神经网络:表达价值函数或策略
- 分布式的数据库系统:专门用于储存和管理经验数据
实验结果:
采用DQN算法应用于该体系结构后,在49个测试游戏中有41个的表现优于未使用分布式DQN的情况,并且整体训练时间得到缩短。
优点:
- 训练效果更好
- 训练时间更短
缺点:
并行分布式系统的主要显著缺点包括能源消耗大、建设成本高昂以及准入门槛过高。这些系统对普通技术员或技术人员都难以承担。
可改进之处:
在一定程度上需要对算法进行优化改进。例如,在传统DQN算法中通常仅针对单一的游戏进行训练的情况下(即一次只训练一个游戏),是否可以通过同时训练多个同一类型的游戏来提高算法效率?
详细分析:
Introduction 介绍
再看看这些介绍就有些冗长了:深度学习在视觉与语音处理领域取得了巨大成功的原因在于其能自动提取高层次特征。
目前强化学习巧妙地整合了深度学习的技术成果即Deep Q-Networks(DQN),这使得在Atari游戏等复杂环境中实现了突破。
值得探讨的问题是:
传统的DQN算法仅在单一计算设备上运行需要大量时间进行训练。
因此我们的目标是建立一个分布式架构以便更好地发挥当前计算资源的能力从而提高运算效率。
深度学习本身的特性就是能够实现并行计算。借助GPU的强大计算能力进行加速运算。在这一领域的主要研究方向是如何对大量数据集进行批处理训练,并显著提升模型性能。不管是谷歌还是百度等科技巨头都在致力于开发相关技术。
机会在于:还没有人做增强学习系统,所以,把DQN并行化显然值得一做!
在增强学习中存在一个显著特征:当agent与环境交互时会导致训练数据的经验分布发生变化;在实际操作中可以采用多线程的方式进行训练;这样做的好处在于显著提升了经验池的容量;此外,在实际操作中可以采用不同策略(policy)让各个agent积累各自的经验样本;这种机制不仅增加了系统的灵活性还让整个系统能够更好地适应多变的环境
即采用分布式架构的学习器(多个实例)基于不同的经验池进行学习,并动态更新网络参数。由此可知,在这种架构下各节点的学习器共享并处理着各自的参数集合。那自然会产生一个问题:所有节点共享的学习器最终如何统一其参数?
这是Google DeepMind的一项重要研究成果:全称是General Reinforcement Learning Architecture(Gorila),它代表通用增强学习架构,并展现出显著性能提升。
无论哪一个研究领域都是分阶段推进的。
无论是外行因热爱而进入该领域者,在缺乏指导的情况下仍可自主探索,则该如何才能赶上并找到适合的好切入点以及做出好成果呢?
然而,DRL领域所包含的内容实在过于广泛,任意一个与决策及控制相关的主题都可以在此基础上展开.But we want to make it general!!
Related Work相关工作
这部分就是查阅文献研究以前的相关研究情况,并行RL的应用实例也是存在的。下面我会详细介绍一下他们的研究成果。
- Distributed multi-agent systems:分布式多智能体系统指的是多个智能体协同作用于同一个环境,在相互协作的过程中实现共同目标。因此,在算法设计上往往更注重高效的团队协作机制以及全局性行为策略的构建。
- Concurrent reinforcement learning:并发增强学习即一个智能体在并行运行中分别处理各自独立的环境(如多维状态空间),其核心目标是探索最优策略以最大化累积奖励。
当前的方法与之前不同,并非仅旨在通过采用并行计算来提高单智能体问题的效率。
MapReduce框架:不清楚是什么意思去阅读论文吧?它主要依赖于线性函数近似方法。
目前最接近的解决方案是采用并行策略的Sarsa算法,在多个计算节点上独立运行各自的智能体及其对应的环境模型,并通过定期同步更新共享的关键参数以协调行为的一致性。每个计算节点独立拥有一个智能体及其对应的环境模型,并执行基础线性Sarsa算法以实现基本的学习目标。通过定期同步更新共享的关键参数以协调行为的一致性,并特别关注那些更新频率最高的参数作为重点优化方向
与我提出的方法相比,在实现上有所突破之处在于允许客户端与服务器之间的通信,并且将这三个环节——动作执行、学习机制以及参数更新——能够相互独立开来。其中最为关键的是采用了深度学习技术作为支撑
Background
DistBelief
Google 的分布式深度学习系统主要包括以下两个方面的体现:其一为模型并行,在这一过程中各个独立学习器各自处理的任务模块被独立开发和优化;其二为数据并行,在这一过程中不同子集被分配至独立计算节点进行协同训练
DQN
在之前的文章中已分析,不再重复。
Gorila (General Reinforcement Learning)

上图即为Gorila的结构图,分成以下几部分:
- Actors 行为体:负责执行动作的选择机制。
- Gorilla系统包含多个独立的动作进程,在相同的环境中生成各自独特的操作序列。
- 每个行为体均会复制一份Q网络结构,并通过参数服务器实现周期同步更新。
- Experience replay memory 经验回放池:用于存储所有行为体的状态-操作-奖励信息库。
- 学习组件:从经验回放池中按批次采集数据样本。
- 研究生强化学习算法(如Deep Q-Networks):采用离线策略优化策略模型。
- 参数服务器节点:将计算出的梯度反向传播至各计算节点以更新模型参数。
- Parameter server 参数服务器:负责协调各计算节点间的模型参数同步与管理。
Gorila DQN

描述较为冗长。仅在算法框架中引入分布式策略以提升性能,并未对DQN方法本身进行任何修改。重点在于解决不同计算节点之间的参数同步与更新机制这一关键问题,并确保系统的稳定性。
实验
很显然的,分布式版本会比单机版的效果更好,两个原因:
- 训练时间相较于单机模式而言大幅缩短。
- 在参数更新策略方面与单机版本存在差异,在本实现中采用了异步并行的方式,并且其中每个机器上的参数更新内容各不相同。这种异步并行的方式可能会带来一定的性能影响。
- 但在此实现中采用了AdaGra而非传统的RMSProp算法
结果显示为尽管大多数游戏表现优异但仍有少数游戏效果略显不足
这也说明不同探索游戏空间的方式对游戏会产生较大的变化。
实际上,在DQN之后出现的一些改进方案也未能普遍提升各个游戏的表现水平。这也同样值得深入研究和分析
小结
Gorila是一个在大型规模下的分布式深度增强学习框架。虽然目前尚未开源。其学习过程与动作执行均采用了并行机制。通过采用了分布式经验池与神经网络均采用了分布式架构。通过采用 Gorila表明通过提升计算能力能够显著提高算法性能。进一步印证了即使在增加计算能力和训练时间的情况下深度学习的发展潜力依然巨大
