从框架到经典方法,全面了解分布式深度强化学习DDRL

AI人工智能10个月前发布 ash
3,464 0
本文在回顾分布式

深度

强化学习


DDRL 基本框架的基础上,重点介绍了 IMPALA 框架系列方法。
AlphaGo 是一个在人机博弈中赢得众多职业

围棋

手的 agent 机器人。随着 AlphaGo 的突破,

深度

强化学习


(Deep Reinforcement Learning,DRL)成为一种公认的解决连续决策问题的有效技术。人们开发了大量算法来解决介于 DRL 与现实世界应用之间的挑战性问题,如探索与开发困境、数据低效、多 agent 合作与竞争等。在所有这些挑战中,由于 DRL 的试错学习机制需要大量交互数据,数据低效(data inefficiency)是最受诟病的问题。为了应对这一问题,受到分布式

机器学习

技术的启发,分布式

深度

强化学习


(distributed deep reinforcement learning,DDRL) 已提出并成功应用于

计算机视觉



自然语言处理

领域。有观点认为,分布式

强化学习



深度

强化学习


走向大规模应用、解决复杂决策空间和长期

规划

问题的必经之路。

一般来说,DRL agent 的训练包括两个主要部分:通过

策略网络


参数

驱动环境交互以生成数据,以及通过消耗数据更新

策略网络


参数

。这种结构化模式使得对 DRL 进行分布式化处理变得可行,并陆续研发出了大量 Distributed DRL (DDRL) 算法。此外,为了使 DDRL 算法能够利用多台机器,还需要解决几个工程问题,如机器通信和分布式存储,以及在保证算法优化

收敛

性的同时,尽可能地提升其中各个环节的效率。分布式

强化学习

是一个综合的研究子领域,需要

深度

强化学习


算法以及分布式系统设计的互相

感知

和协同。考虑到 DDRL 的巨大进步,我们有必要梳理 DDRL 技术的发展历程、挑战和机遇,从而为今后的研究提供线索。

近年来,分布式

强化学习

快速发展,关于分布式

强化学习

的架构、算法、关键技术等的研究论文众多。我们将分为两个 part 分别介绍 DDRL 的前世(经典方法)和今生(最新进展)。本文为 part 1,在回顾 DDRL 基本框架的基础上,重点介绍 IMPALA 框架系列方法,主要思路是:使用异步架构,在提升样本吞吐量的同时,引入一些 off-policy 修正。


1、基本框架介绍


目前已开发出大量 DDRL 算法或框架,其中具有代表性的有 GORILA、A3C、APEX、IMPALA、Distributed PPO、R2D2 、 Seed RL 等,在此基础上,我们梳理总结得出 DDRL 基本框架,如图 1 所示 [1]。

从框架到经典方法,全面了解分布式深度强化学习DDRL



图 1. DDRL 的基本框架



在 DDRL 研究中,通常使用框架代替算法或方法的表述,是因为这些

框架

并不针对特定的

强化学习

算法,它们更像是各种

强化学习

方法的

分布式框架

。一般来说,基本的 DDRL 主要有三个部分,它们构成了 single player single agent DDRL 方法:

  • 行动者(Actors):通过与环境互动产生数据(轨迹或梯度)。
  • 学习者(Learners):消耗数据(轨迹或梯度),执行

    神经网络


    参数

    更新。
  • 协调者(Coordinator):协调数据(

    参数

    或轨迹),控制 learner 和 actor 之间的通信。

具体来说,协调者(Coordinator)用于和环境交互产生数据的协调,其中包含环境本身(Env)和产生动作的行动者(Actors),以及使用这些数据进行训练的学习者(Learners),他们各自需要不同数量和类型的计算资源支持。而根据算法和环境类型的不同,又会有一些延伸的辅助模块,例如大部分 off-policy 算法都会需要数据队列(Replay Buffer)来存储训练数据,对于 model-based RL 相关的算法又会有学习环境 dynamics 的相关训练模块,而对于需要大量自我博弈(self-play)的算法,还需要一个中心化的 Coordinator 去控制协调各个组件(例如动态指定自己博弈的双方)。

协调者可以控制 learner 和 actor 之间的通信。例如,当协调者用于同步

参数

更新和拉取(由 actor 进行)时,DDRL 算法就是同步的。当

参数

更新和拉取(actor)没有严格协调时,DDRL 算法就是异步的。因此,可以根据协调者类型对 DDRL 算法进行基本分类。

  • 同步:全局策略

    参数

    的更新是同步的,策略

    参数

    的调用(由 actor 调用)也是同步的,即不同的 actor 共享相同的最新全局策略。
  • 异步:全局策略

    参数

    的更新是异步的,或者说策略更新(由 learner 进行)和拉动(由 actor 进行)是异步的,即 actor 和 learner 通常拥有不同的策略

    参数



利用图 1 中给出的基本框架,可以设计出 single player single agent 的 DDRL 算法(文献 [1] 中定义 player,即为分布式架构中的 agent,本文中以 agent 指代)。但是,当面对多个 agent 时,基本框架无法训练出可用的 RL agent。基于目前支持大型系统级

人工智能

的 DDRL 算法,如

AlphaStar

、OpenAI Five 和 JueWU,要构建多 agent DDRL,有两个关键要素必不可少,即 agent 合作和进化,如图 2 所示。

从框架到经典方法,全面了解分布式深度强化学习DDRL



图 2. single player(agent) single agent DDRL 到 multiple players(agents) multipleagents DDRL



基于多 agent

强化学习

算法,agent 合作模块用于训练多个 agents。一般来说,多 agent

强化学习

可以根据 agent 关系建模的方式分为独立训练和联合训练两类。

  • 独立训练:将其他学习 agent 视为环境的一部分,对每个 agent 进行独立训练。
  • 联合训练:将所有 agent 作为一个整体进行训练,同时考虑 agent 交流、奖励分配、集中训练与分布式执行等因素。

进化模块是为每个 agent 迭代而设计的,其他 agent 在同一时间学习,导致每个 agent 需要学习不止一代 agent,如

AlphaStar

和 OpenAI Five。根据目前主流的进化技术,进化可分为两种类型:

  • Self-play based:不同 agent 共享相同的

    策略网络

    ,agent 通过与自己过去的版本对抗来更新当前一代的策略。
  • Population-play based:不同的 agent 拥有不同的

    策略网络

    ,或称为 population,agent 通过与其他 agent 或 / 和其过去的版本对抗来更新其当前一代的策略。

最后,根据上述 DDRL 的关键要素,DDRL 的分类法如图 3 所示。

从框架到经典方法,全面了解分布式深度强化学习DDRL



图 3. 分布式

深度

强化学习


分类法 [1]




2、经典方法介绍


我们在这一章节中,重点回顾经典的分布式

强化学习

方法。这些方法多为前几年提出的,其性能与最新方法仍有差距,我们在 part1 中回顾这些经典方法,以了解分布式

强化学习

发展初期,重点在哪些方面对传统的

强化学习

以及分布式架构进行了改进。


2.1 Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architecture [2]

从框架到经典方法,全面了解分布式深度强化学习DDRL

IMPALA(Importance Weighted Actor-Learner Architecture)是

DeepMind

推出的一种异步分布式

深度

强化学习


架构,目的是让一个 Agent(single agent)学会多种技能(https://github.com/deepmind/lab/tree/master/game_scripts/levels/contributed/dmlab30)。相关内容发表在 ICML 2018 中。ICML 2018 是第 35 届国际

机器学习

会议,在斯德哥尔摩举办。ICML 2018 共有 2473 篇有效投稿,其中 618 篇被接收,接收率为 25.1%。

IMPALA 尝试利用单 agent 同时处理多个任务,其架构性能超越此前方法数倍,具有强大的可扩展性,同时也展示了积极的迁移性质。IMPALA 是典型的

异步架构

。与 IMPALA 架构同时提出的还有任务集合 DMLab-30。

2.1.1 IMPALA 介绍

从框架到经典方法,全面了解分布式深度强化学习DDRL



图 4. 左图:singer learner。每个 actor 生成轨迹并通过队列发送给 learner。在开始下一个轨迹之前,actor 会从 learner 那里获取最新的策略

参数

;右图:多个同步 learner。策略

参数

分布在多个同步工作的 learner 中



如图 4,在 IMPALA 架构中,每个 Actor 都拥有一个模型副本,Actor 发送训练样本给 Learner,Learner 更新模型之后,会将新模型发送给 Actor。在整个过程中,Actor 和 Learner 一直在异步运行中,即 Learner 只要收到训练数据就会更新模型,不会等待所有的 Actor;而 Actor 在 Learner 更新模型时依然在采样,不会等待最新的模型。显然,这样的运行方式会产生 off-policy 现象,即行为策略和目标策略不一致。在 IMPALA 中,作者在数学上推导出了一种严谨的修正方式:V-trace 算法。该算法显著降低了训练样本 off-policy 带来的影响。

行为策略(Behavior Policy)就是智能体用来和环境交互产生样本的策略;目标策略(Target Policy)就是根据行为策略产生的样本来不断学习和优化的策略,即训练完成最终用来使用的策略。

IMPALA 使用 actor critic 设置来学习策略 π 和基线函数 V^π。生成经验的过程与学习 π 和 V^π 的

参数

是分离的。该架构由一组重复生成经验轨迹(trajectory)的 actor 和一个或多个 learner 组成,learner 利用 actor 发送的经验来学习 off policy π。在每条轨迹开始时,actor 会将自己的本地策略 µ 更新为最新的 learner 策略 π,并在其环境中运行 n 步。n 步之后,actor 将状态、行动和奖励的轨迹 x_1、a_1、r_1、…… 、 x_n、a_n、r_n 以及相应的策略分布 µ(a_t|x_t) 和初始 LSTM 状态通过队列发送给 learner(典型 DRL agent 架构由卷积网络、LSTM、全连接层组成)。然后,learner 会根据从许多 actor 那里收集到的轨迹

批次

不断更新其策略 π。通过这种简单的架构,learner 可以使用 GPU 加速,actor 也可以轻松地分布在多台机器上。然而,在更新时,learner 的策略 π 有可能比 actor 的策略 µ 超前数次,因此 actor 和 learner 之间存在策略滞后。V-trace 可纠正这种滞后现象,在保持数据效率的同时实现极高的数据吞吐量。使用

强化学习

中经典的 actor-learner 架构,可提供与分布式 A3C 类似的容错能力,但由于 actor 发送的是观测数据而非

参数

/ 梯度,因此通常通信开销较低。

随着深度模型架构的引入,单个 GPU 的速度往往成为训练过程中的限制因素。IMPALA 可以与分布式 learner 集一起使用,高效地训练大型

神经网络



参数

分布在 learner 中,actor 从所有 learner 中并行检索

参数

,同时只向单个 learner 发送观察结果。IMPALA 使用同步

参数

更新,这对于在扩展到多台机器时保持数据效率至关重要。

GPU 和多核 CPU 从运行少量大型可并行运算而非大量小型运算中获益匪浅。由于 IMPALA 中的 learner 对整批轨迹执行更新,因此与 A3C 这样的 online agent 相比,它能够并行化更多的计算。举例来说,典型的 DRL agent 有一个卷积网络,然后是一个 LSTM,在 LSTM 之后是一个全连接输出层。IMPALA learner 通过将时间维度折叠到

批次

维度,将卷积网络并行应用于所有输入。同样,一旦计算出所有 LSTM 状态,它还会并行将输出层应用到所有时间步骤。这一优化将有效

批次

规模增加到数千次。通过利用网络结构依赖性和操作融合,基于 LSTM 的 agent 还能显著提高 learner 的速度。最后,还利用了

TensorFlow

中几种现成的优化方法,例如在进行计算的同时为 learner 准备下一批数据,使用 XLA(

TensorFlow

即时编译器)编译计算图的部分内容,以及优化数据格式以获得 cuDNN 框架的最高性能等。

2.1.2 V-trace 介绍

在解耦分布式 actor-learner 架构中,off policy 学习非常重要,因为 actor 生成行动与 learner 估计梯度之间存在滞后。为此,本文为 learner 引入了一种名为 V-trace 的 off policy actor-critic 方法。

首先,我们先介绍一些术语。我们考虑的是

马尔可夫决策过程

(Markov Decision Processes,MDP)中的 discounted infinite-horizon RL 问题,其目标是找到一个能使未来 discount reward 的预期总和最大化的策略 π:

从框架到经典方法,全面了解分布式深度强化学习DDRL

其中,γ 为 discount factor。r_t = r (x_t, a_t) 是时间 t 的奖励,x_t 是时间 t 的状态(初始化为 x_0 = x),a_t ∼ π(・|x_t) 是遵循策略 π 所产生的行动。Off policy RL 算法的目标是利用某种策略 µ(称为行为策略)生成的轨迹来学习另一种策略 π(可能与 µ 不同)(称为目标策略)的值函数 V^π。

考虑 actor 按照某种策略 µ 生成的轨迹。我们将 V (x_s) 的 n-steps V-trace 目标定义为:

从框架到经典方法,全面了解分布式深度强化学习DDRL
(1)

从框架到经典方法,全面了解分布式深度强化学习DDRL

从框架到经典方法,全面了解分布式深度强化学习DDRL

从框架到经典方法,全面了解分布式深度强化学习DDRL

其中,δ_t V 表示 V 的时间差,ρ_t 和 c_i 为截断重要度抽样 (IS)

权重

。在 on-policy 的情况下(当 π = µ 时),假设 c¯≥ 1,则所有 c_i = 1,ρ_t = 1,此时式 (1) 改写为:

从框架到经典方法,全面了解分布式深度强化学习DDRL

即 on-policy n-steps Bellman 目标。因此,在 on-policy 情况下,V-trace 简化为 on-policy n-steps Bellman 更新。这一特性(Retrace 并不具备)允许我们在 off-policy 数据和 on-policy 数据中使用相同的算法。

截断的 IS

权重

c_i 和 ρ_t 起着不同的作用。

权重

ρ_t 出现在 δ_t V 的定义中,并定义了该更新规则的 fixed point。在函数可以完美表示的情况下,这种更新的 fixed point(即所有状态下 V (x_s) = v_s)(δt V 的期望值等于零(在 µ 条件下))是某种策略 πρ¯ 的值函数 V^(π_ρ¯),其定义为:

从框架到经典方法,全面了解分布式深度强化学习DDRL

因此,当 ρ¯ 是无穷大时(即 ρ_t 没有截断),这就是目标策略的价值函数 V^π。然而,如果我们选择一个截断水平 ρ¯<∞,我们的 fix point 就是介于 µ 和 π 之间的策略 πρ¯ 的价值函数 V^(πρ¯)。在 ρ¯ 接近零的极限情况下,我们得到行为策略的价值函数 V^µ。π 和 µ 越不相似(越偏离策略),这个乘积的方差就越大。作者使用截断水平 c¯ 作为减少方差的技术。我们可以看到,截断水平 c¯ 和 ρ¯ 代表了算法的不同特征:ρ¯ 影响

收敛

到的价值函数的性质,而 c¯ 则影响

收敛

到该函数的速度。

备注 1. V-trace 目标可以递归计算:

从框架到经典方法,全面了解分布式深度强化学习DDRL

备注 2. 与 Retrace (λ) 一样,我们也可以在 V-trace 的定义中考虑额外的 discounting

参数

λ∈ [0, 1],方法是设置:

从框架到经典方法,全面了解分布式深度强化学习DDRL

在 on policy 情况下,当 n = ∞ 时,V-trace 简化为 TD (λ)。

在 on policy 的情况下,价值函数 V^µ(x_0) 相对于策略

参数

µ 的梯度为:

从框架到经典方法,全面了解分布式深度强化学习DDRL

从框架到经典方法,全面了解分布式深度强化学习DDRL

Q^µ(x_s, a_s) 表征策略 µ 在 (x_s, a_s) 位置的 state-action 值。这通常通过随机梯度上升来实现,该梯度上升在如下方向上更新策略

参数


从框架到经典方法,全面了解分布式深度强化学习DDRL
(4)

其中,q_s 是 Q^µ(x_s, a_s) 的估计值,并在某些行为策略下访问的状态 x_s 的集合上求平均值。现在,在我们考虑的 off-policy 设置中,可以使用正在评估的策略 π_ρ¯ 和行为策略 µ 之间的 IS

权重

,以更新方向中的策略

参数


从框架到经典方法,全面了解分布式深度强化学习DDRL

从框架到经典方法,全面了解分布式深度强化学习DDRL

其中,q_s 根据下一状态 x_s+1 下的 V-trace 估计 v_s+1 构建。作者使用 q_s 而不是 v_s 作为 Q value 目标的原因是,假设我们的值估计在所有状态下都是正确的,即 V=V^(π_ρ¯),那么我们有:

从框架到经典方法,全面了解分布式深度强化学习DDRL

为了减少策略梯度估计式 (4) 的方差,通常从 q_s 中减去状态相关的基线,例如当前值近似 V (x_s)。最后注意,式 (4) 估计 π_ρ¯ 的策略梯度,π_ρ¯ 是在使用截断级别时由 V-trace 算法评估的策略。然而,假设偏差 V^(π_ρ¯)=V^π 很小(如果 ρ¯ 足够大),那么我们可以期望 q_s 为我们提供 Q^π(x_s, a_s) 的良好估计。由此,作者推导出以下规范的 V-trace actor-critic 算法:

V-TRACE ACTOR-CRITIC ALGORITHM

考虑价值函数的

参数

表示 V_θ 和当前策略 π_ω。actor 遵循某些行为策略而生成轨迹 μ。v_s 由式 (1) 定义。在训练时间 s,通过对目标 v_s 的 2 次损失的

梯度下降

来更新值

参数

θ,即在如下方向:

从框架到经典方法,全面了解分布式深度强化学习DDRL

以及策略梯度方向上的策略

参数

ω:

从框架到经典方法,全面了解分布式深度强化学习DDRL

为了防止过早

收敛

,可以像在 A3C 中一样,沿着方向添加 entropy  bonus:

从框架到经典方法,全面了解分布式深度强化学习DDRL

整体更新是通过将这三个梯度相加来获得的,其中,三个梯度由适当的系数重新缩放。

2.1.3 实验分析

作者实验验证了 IMPALA 在多种设置下的性能。在数据效率、计算性能和 off-policy 校正的有效性方面,具体研究了在单个任务上训练的 IMPALA agent 的学习行为。在

多任务学习

方面,在新引入的 30 个

DeepMind

实验室任务集和 the Atari 学习环境的全部 57 个游戏上训练 agent— 每个 agent 在所有任务中都使用一组

权重

。在所有实验中,使用了两种不同的模型架构:一种是在策略和价值之前使用 LSTM 的浅层模型(如图 5(左)所示),另一种是更深层的残差模型(如图 5(右)所示)。

从框架到经典方法,全面了解分布式深度强化学习DDRL



图 5. 模型架构。左图:浅层架构,2 个卷积层,120 万个

参数

。右图:深层架构,15 个卷积层和 160 万个

参数




高吞吐量、计算效率和可扩展性是 IMPALA 的主要设计目标。为了证明 IMPALA 在这些指标上优于当前算法,作者比较了 A3C、batched A2C 变体和经过各种优化的 IMPALA 变体。在使用 GPU 的单机实验中,在前向传递中使用动态批处理,以避免多次批处理大小为 1 的前向传递。动态批处理模块由专门的

TensorFlow

操作实现,但在概念上与 A3C 中使用的队列类似。表 1 详细列出了采用图 5 中浅层模型的单机版和多机版的结果。在单机情况下,IMPALA 在这两项任务上都取得了最高性能,超过了所有 batched A2C 变体,也超过了 A3C。然而,在分布式多机设置中,IMPALA 才能真正展示其可扩展性。

从框架到经典方法,全面了解分布式深度强化学习DDRL



表 1. 图 5 所示的浅层模型在 seekavoid_arena_01(任务 1)和 rooms keys doors puzzle(任务 2)上的吞吐量。后者有长度可变的 episodes 和缓慢的 restarts。如果没有特别说明,batched A2C 和 IMPALA 使用的批处理大小为 32



图 6 给出了 IMPALA、A3C 和 batched A2C 与图 5 中浅层模型的比较。在所有 5 个任务中,batched A2C 或 IMPALA 都能获得最佳的最终平均奖励,而且在整个训练过程中,除了 seekavoid_arena_01 以外,它们在所有任务中都领先于 A3C。在 5 项任务中,IMPALA 有 2 项优于 synchronous batched A2C,同时吞吐量也高得多(见表 1)。作者假设,这种情况可能是由于 V-trace 偏离策略校正的作用类似于广义优势估计和异步数据收集,从而产生了更多样化的经验

批次


从框架到经典方法,全面了解分布式深度强化学习DDRL



图 6. 上行:在 5 个

DeepMind

实验室任务上进行单任务训练。每条曲线都是基于最终奖励的最佳 3 次运行的平均值。IMPALA 的性能优于 A3C。下行:不同超

参数

组合的稳定性,按不同超

参数

组合的最终性能排序。IMPALA 始终比 A3C 更稳定



IMPALA 的高数据吞吐量和数据效率使我们只需对训练设置做最小的改动,就能并行训练一个任务和多个任务。在多任务套件中,作者不在所有参与者上运行相同的任务,而是为每个任务分配固定数量的参与者。请注意,模型并不知道它是在哪个任务上进行训练或评估的。为了测试 IMPALA 在多任务环境中的性能,作者使用了 DMLab-30,这是一套基于

DeepMind

Lab 的 30 种不同任务。在该套件的众多任务类型中,包括带有自然地形的视觉复杂环境、带有基础语言的指令型任务、导航任务、认知任务和以脚本机器人为对手的第一人称标记任务。有关 DMLab-30 和任务的详细介绍,可访问 github.com/deepmind/lab 和 deepmind.com/dm-lab-30。作者将 IMPALA 的多个变体与分布式 A3C 实现进行了比较。除了使用基于群体训练(population based training,PBT)的 agent 外,所有 agent 都在相同范围内进行超

参数

扫描训练。作者报告的是 mean capped humannormalised score,其中每个任务的得分上限为 100%。使用 mean capped humannormalised score 强调了解决多个任务的必要性,而不是专注于在单一任务上成为 super human。对于 PBT,作者使用 mean capped humannormalised score 作为适应度函数,并调整熵成本、

学习率

和 RMSProp ε。

作者特别比较了以下 agent 变体:A3C,deep、分布式实现,由 210 个 worker(每个任务 7 人)组成的分布式实施系统,采用

深度残差网络

架构(图 5(右));IMPALA,浅层,210 个 actors;IMPALA,深层,150 个 actors,都只有一个 learner;IMPALA,deep,PBT,与 IMPALA,deep 相同,但额外使用 PBT 进行超<mark data-type=”concepts” data-id=”2e98
© 版权声明

相关文章

暂无评论

none
暂无评论...