OwenZhu's Blog

TensorFlow Agents:基于TensorFlow的高效批处理增强学习

2017/09/17 Share

TensorFlow Agents:基于TensorFlow的高效批处理增强学习

原文: Hafner, D., Davidson, J., & Vanhoucke, V. (2017). TensorFlow Agents: Efficient Batched Reinforcement Learning in TensorFlow. ArXiv:1709.02878 [Cs]. Retrieved from http://arxiv.org/abs/1709.02878

谷歌大脑的研究人员开发出了TensorFlow Agents:基于TensorFlow的并行增强学习框架;他们还提出了BatchPPO:邻近策略优化算法(proximal policy optimization algorithm, PPO)的一种高效实现。作者希望通过开源TensorFlow Agents加速未来该相关领域的研究。

简介

统一整合TensorFlow中的增强学习智能体接口能够保证开发者高效地开发新的算法。开发者能够简单地重用一些常用的算法框架并轻松地对其进行更改。

作者指出,该项目最主要的目标是让开发者能够轻松地实现新的算法并快速地进行训练。与仿真算法和更新梯度相比,之前许多增强学习方法更多地将大量时间花费在与环境的交互上。在仿真算法和环境时主要存在两个瓶颈:神经网络的前向传播和对环境的探索。为了解决上诉问题,研究人员并行仿真了多个环境,同时为批数据操作的算法结合了不同环境中的观察结果。

相关工作

作者简单介绍了PPO的背景知识(该论文链接附在文末),并通过TensorFlow Agents框架实现了它。该项目是在OpenAI Gym的基础上进行拓展并提供了接口,允许研究者能够结合多个Gymd的环境并且分步进行。

并行

大多数情况下,增强学习算法的瓶颈在于搜集环境中的事件。在这个过程中,有两组耗费时间的计算:前向传播和分步实行在每个环境中。第一,我们并行了神经网络的前向传播,通过智能体计算向量化从一批发现结果产生一批动作;第二,我们并行地对环境进行模拟。TensorFlow的session不足以实现我们的目标,许多Python的环境被全局解释器锁(Global Interpreter Lock)严格限制。我们对每一个环境分别孵化了对应的一个进程,所有的CPU核心都可以并行地对环境分步处理。

尽管并行了前向传播和环境模拟,但是我们并不允许快速处理的环境比其更快以至于脱离了同步。这保证了算法的实现简单而高效。当在CPU上进行训练,这一实现也能够利用上所有有效的资源;当使用GPU时,该系统也能够在满载的CPU和GPU上来回切换。

实验

为了展示框架的性能,我们在MuJoCo上的控制任务上训练了BatchPPO算法。我们的智能体使用了两个神经网络,一个用于从当前的发现中计算平均的行动,另一个提供了状态值的估计。我们同样实现了RNN网络,但是发现RNN普遍学习缓慢,最终结果却相差无几。

结语

我们提出了一种全新的基于Tensorflow实现的框架,能够并行增强学习算法,包括了BatchPPO,一种高效的PPO的实现。将我们的框架提供给公众希望能够加速未来增强学习的研究,并且为未来新的算法实现提供强有力的框架。在未来,定制化的环境可以通过向量化的方式实现,很大可能就整合在TensorFlow里,对并行硬件产生影响而不产生额外的进程间通信开销。

PPO算法原文:

Schulman, J., Wolski, F., Dhariwal, P., Radford, A., & Klimov, O. (2017). Proximal Policy Optimization Algorithms. ArXiv:1707.06347 [Cs]. Retrieved from http://arxiv.org/abs/1707.06347

CATALOG
  1. 1. TensorFlow Agents:基于TensorFlow的高效批处理增强学习
    1. 1.1. 简介
    2. 1.2. 相关工作
    3. 1.3. 并行
    4. 1.4. 实验
    5. 1.5. 结语