用于深度强化学习的异步方法

发布于:2025-07-12 ⋅ 阅读:(48) ⋅ 点赞:(0)

温馨提示:
本篇文章已同步至"AI专题精讲" 用于深度强化学习的异步方法

摘要

我们提出了一个概念上简单且轻量的深度强化学习框架,该框架使用异步梯度下降来优化深度神经网络控制器。我们提出了四种标准强化学习算法的异步变体,并展示了并行的 actor-learner 对训练具有稳定作用,使得所有四种方法都能成功地训练神经网络控制器。表现最好的方法是 actor-critic 的异步变体,它在 Atari 环境中超越了当前的最先进方法,并且仅在一个多核 CPU(而非 GPU)上训练了一半的时间。此外,我们展示了异步 actor-critic 不仅在多种连续运动控制任务中表现良好,还能在一个基于视觉输入的随机三维迷宫导航新任务上成功学习。

1. 引言

深度神经网络提供了丰富的表示能力,使强化学习(RL)算法能够有效地执行。然而,以往认为将简单的在线强化学习算法与深度神经网络结合是从根本上不稳定的。为此,已有多种方法被提出用于稳定算法(Riedmiller, 2005; Mnih et al., 2013; 2015; Van Hasselt et al., 2015; Schulman et al., 2015a)。这些方法的共同理念是:在线强化学习智能体所遇到的观测数据序列是非平稳的,且在线强化学习更新之间高度相关。通过将智能体的数据存储在 experience replay memory 中,这些数据可以进行批处理(Riedmiller, 2005; Schulman et al., 2015a)或从不同时间步中随机采样(Mnih et al., 2013; 2015; Van Hasselt et al., 2015)。以这种方式聚合 memory 可以减少非平稳性并去相关更新,但同时也限制了只能使用 off-policy 的强化学习算法。

基于 experience replay 的深度强化学习算法在如 Atari 2600 等具有挑战性的环境中取得了前所未有的成功。然而,experience replay 存在一些缺点:每次真实交互使用更多的内存和计算资源;并且要求 off-policy 的学习算法以便从由旧策略生成的数据中进行更新。

在本文中,我们提出了一种完全不同的深度强化学习范式。我们不使用 experience replay,而是异步地在多个环境实例上并行执行多个智能体。该并行方式也使智能体的数据去相关,从而形成更平稳的过程,因为在任意时间步,不同的并行智能体将处于各种不同的状态。这一简单思想使得许多基础的 on-policy 强化学习算法(如 Sarsa、n-step 方法和 actor-critic 方法),以及 off-policy 强化学习算法(如 Q-learning),都能够通过深度神经网络稳健而有效地应用。

我们的并行强化学习范式还带来了实际上的好处。以往的深度强化学习方法严重依赖于诸如 GPU(Mnih et al., 2015; Van Hasselt et al., 2015; Schaul et al., 2015)等专用硬件,或依赖大规模分布式架构(Nair et al., 2015),而我们的实验仅使用带有标准多核 CPU 的单机即可运行。在应用于多个 Atari 2600 游戏中时,异步强化学习在很多游戏上都能获得更好的结果,并显著减少了训练时间,同时远少于前述基于 GPU 或大规模分布式方法所需的资源。在所提出的方法中,表现最好的 asynchronous advantage actor-critic(A3C)不仅掌握了多种连续运动控制任务,还能仅凭视觉输入学习到在三维迷宫中进行探索的一般策略。我们认为,A3C 在 2D 与 3D 游戏、离散与连续动作空间中的成功,以及其在前馈和循环神经网络智能体中的训练能力,使其成为迄今为止最通用且最成功的强化学习智能体。

2. 相关工作

(Gorila) 的 General Reinforcement Learning Architecture(Nair et al., 2015)在分布式环境中执行强化学习智能体的异步训练。在 Gorila 中,每个进程包含一个在其自身环境副本中运行的 actor,一个独立的 replay memory,以及一个 learner,learner 从 replay memory 中采样数据,并根据策略参数计算 DQN 损失(Mnih et al., 2015)的梯度。这些梯度会异步地发送到中心参数服务器,该服务器更新模型的中心副本。更新后的策略参数会在固定间隔发送给 actor-learner。通过使用 100 个独立的 actor-learner 进程和 30 个参数服务器实例,总共使用了 130 台机器,Gorila 在 49 个 Atari 游戏上显著优于 DQN。在许多游戏中,Gorila 达到 DQN 得分的速度比 DQN 快了 20 倍以上。我们还注意到,(Chavez et al., 2015)提出了一种类似的 DQN 并行化方式。

在早期工作中,(Li & Schuurmans, 2011)将 Map Reduce 框架应用于线性函数逼近下的 batch 强化学习方法并行化。并行性被用于加速大型矩阵运算,但并未用于并行采集经验或稳定学习过程。(Grounds & Kudenko, 2008)提出了 Sarsa 算法的并行版本,使用多个独立的 actor-learner 加速训练。每个 actor-learner 单独学习,并周期性地通过点对点通信将发生显著变化的权重更新发送给其他 learner。

(Tsitsiklis, 1994)研究了 Q-learning 在异步优化环境中的收敛性质。这些研究结果表明,只要过时信息最终总是被舍弃,并且满足若干技术性假设,Q-learning 在部分信息过时的情况下依然能保证收敛。更早的研究中,(Bertsekas, 1982)研究了相关的分布式动态规划问题。

另一个相关领域是进化方法,其通常可以通过将适应度评估分布到多个机器或线程上来实现并行化(Tomassini, 1999)。这类并行进化方法近年来已被应用于一些视觉强化学习任务。例如,(Koutník et al., 2014)通过在 8 个 CPU 核心上并行执行适应度评估,演化了适用于 TORCS 驾驶模拟器的卷积神经网络控制器。

3. 强化学习背景

我们考虑标准的强化学习设定,其中智能体与环境 ε \varepsilon ε 在若干离散时间步上进行交互。在每个时间步 t,智能体接收一个状态 s t s_t st,并根据其策略 π \pi π 从一组可能的动作 A A A 中选择一个动作 a t a_t at,其中 π \pi π 是一个将状态 s t s_t st 映射为动作 a t a_t at 的函数。作为回报,智能体会接收下一个状态 s t + 1 s_{t+1} st+1 并获得一个标量奖励 r t r_t rt。该过程持续进行,直到智能体达到一个终止状态,之后过程重新开始。回报

R t = ∑ k = 0 ∞ γ k r t + k R_t = \sum_{k=0}^{\infty} \gamma^k r_{t+k} Rt=k=0γkrt+k

是从时间步 t t t 开始累计的总回报,其中折扣因子 γ ∈ ( 0 , 1 ] \gamma \in (0, 1] γ(0,1]。智能体的目标是最大化从每个状态 s t s_t st 开始的期望回报。

动作价值函数 Q π ( s , a ) = E [ R t ∣ s t = s , a ] Q^\pi(s, a) = \mathbb{E}[R_t \mid s_t = s, a] Qπ(s,a)=E[Rtst=s,a] 表示在状态 s s s 下采取动作 a a a 并随后遵循策略 π \pi π 所获得的期望回报。最优价值函数 Q ∗ ( s , a ) = max ⁡ π Q π ( s , a ) Q^*(s, a) = \max_\pi Q^\pi(s, a) Q(s,a)=maxπQπ(s,a) 给出了在状态 s s s 和动作 a a a 下,所有策略中可达到的最大动作价值。类似地,在策略 π \pi π 下状态 s s s 的价值定义为 V π ( s ) = E [ R t ∣ s t = s ] V^\pi(s) = \mathbb{E}[R_t \mid s_t = s] Vπ(s)=E[Rtst=s],即从状态 s s s 出发遵循策略 π \pi π 所得到的期望回报。

在基于值的无模型强化学习方法中,动作价值函数通常通过函数逼近器(例如神经网络)来表示。设 Q ( s , a ; θ ) Q(s, a; \theta) Q(s,a;θ) 为带有参数 θ \theta θ 的近似动作价值函数。参数 θ \theta θ 的更新可以通过各种强化学习算法导出。其中一种算法是 Q-learning,它旨在直接逼近最优动作价值函数: Q ∗ ( s , a ) ≈ Q ( s , a ; θ ) Q^*(s, a) \approx Q(s, a; \theta) Q(s,a)Q(s,a;θ)。在一步 Q-learning 中,动作价值函数 Q ( s , a ; θ ) Q(s, a; \theta) Q(s,a;θ) 的参数 θ \theta θ 是通过迭代地最小化一系列损失函数来学习的,其中第 i i i 个损失函数定义如下:

L i ( θ i ) = E ( r + γ max ⁡ a ′ Q ( s ′ , a ′ ; θ i − 1 ) − Q ( s , a ; θ i ) ) 2 L _ { i } ( \theta _ { i } ) = \mathbb { E } \left( r + \gamma \operatorname* { m a x } _ { a ^ { \prime } } Q ( s ^ { \prime } , a ^ { \prime } ; \theta _ { i - 1 } ) - Q ( s , a ; \theta _ { i } ) \right) ^ { 2 } Li(θi)=E(r+γamaxQ(s,a;θi1)Q(s,a;θi))2

其中 s ′ s' s 是在状态 s s s 之后遇到的状态。

我们将上述方法称为一步 Q-learning,因为它将动作价值 Q ( s , a ) Q(s, a) Q(s,a) 更新为一步回报 r + γ max ⁡ a ′ Q ( s ′ , a ′ ; θ ) r + \gamma \max_{a'} Q(s', a'; \theta) r+γmaxaQ(s,a;θ)。使用一步方法的一个缺点是,获得的奖励 r r r 只会直接影响导致该奖励的状态-动作对 ( s , a ) (s, a) (s,a) 的价值。其他状态-动作对的值仅通过更新后的 Q ( s , a ) Q(s, a) Q(s,a) 间接受到影响。这可能导致学习过程缓慢,因为需要许多次更新才能将奖励传播到相关的前序状态和动作。

传播奖励更快的一种方式是使用 n 步回报(Watkins, 1989;Peng & Williams, 1996)。在 n 步 Q-learning 中, Q ( s , a ) Q(s, a) Q(s,a) 被更新为 n 步回报: r t + γ r t + 1 + ⋯ + γ n − 1 r t + n − 1 + max ⁡ a γ n Q ( s t + n , a ) . r _ { t } + \gamma r _ { t + 1 } + \cdots + \gamma ^ { n - 1 } r _ { t + n - 1 } +\begin{array} { r } { \operatorname* { m a x } _ { a } \gamma ^ { n } Q ( s _ { t + n } , a ) . } \end{array} rt+γrt+1++γn1rt+n1+maxaγnQ(st+n,a).

这使得单个奖励 r r r 可以直接影响前 n n n 个状态-动作对的价值。这使得奖励传播到相关状态-动作对的过程潜在上更加高效。

与基于值的方法不同,基于策略的无模型方法直接对策略 π ( a ∣ s ; θ ) \pi(a \mid s; \theta) π(as;θ) 进行参数化,并通过对 E [ R t ] \mathbb{E}[R_t] E[Rt] 进行梯度上升(通常是近似的)来更新参数 θ \theta θ。这种方法的一个例子是 Williams(1992)提出的 REINFORCE 系列算法。标准的 REINFORCE 方法沿如下方向更新策略参数 θ \theta θ

∇ θ log ⁡ π ( a t ∣ s t ; θ ) R t \nabla_\theta \log \pi(a_t \mid s_t; \theta) R_t θlogπ(atst;θ)Rt

这是 ∇ θ E [ R t ] \nabla_\theta \mathbb{E}[R_t] θE[Rt] 的无偏估计。通过从回报中减去一个关于状态的学习函数 b t ( s t ) b_t(s_t) bt(st)(称为 baseline,Williams, 1992),可以在保持无偏性的同时降低该估计的方差。得到的梯度为:

∇ θ log ⁡ π ( a t ∣ s t ; θ ) ⋅ ( R t − b t ( s t ) ) \nabla_\theta \log \pi(a_t \mid s_t; \theta) \cdot (R_t - b_t(s_t)) θlogπ(atst;θ)(Rtbt(st))

估计值函数的学习结果通常作为 baseline 使用,即 b t ( s t ) ≈ V π ( s t ) b_t(s_t) \approx V^\pi(s_t) bt(st)Vπ(st),从而得到一个方差更低的策略梯度估计。当使用一个近似值函数作为 baseline 时,用于缩放策略梯度的量 R t − b t R_t - b_t Rtbt 可以被视为动作 a t a_t at 在状态 s t s_t st 下的优势(advantage)的估计,即:

A ( a t , s t ) = Q ( a t , s t ) − V ( s t ) A(a_t, s_t) = Q(a_t, s_t) - V(s_t) A(at,st)=Q(at,st)V(st)

因为 R t R_t Rt Q π ( a t , s t ) Q^\pi(a_t, s_t) Qπ(at,st) 的一个估计,而 b t b_t bt V π ( s t ) V^\pi(s_t) Vπ(st) 的一个估计。这种方法可以被看作是一种 actor-critic 架构,其中策略 π \pi π 是 actor,而 baseline b t b_t bt 是 critic(Sutton & Barto, 1998;Degris 等, 2012)。

4. 异步强化学习框架

我们现在介绍 one-step Sarsa、one-step Q-learning、n-step Q-learning 以及 advantage actor-critic 的多线程异步变体。设计这些方法的目标是寻找能够可靠地训练深度神经网络策略、且不需要大量资源的强化学习算法。虽然这些底层的强化学习方法差异较大,其中 actor-critic 是一种 on-policy 的策略搜索方法,而 Q-learning 是一种 off-policy 的基于值的方法,我们通过两个主要思路使这四种算法在我们的设计目标下都变得可行。

首先,我们使用异步的 actor-learner,类似于 Gorila 框架(Nair et al., 2015),但不是使用多台机器和一个参数服务器,而是使用一台机器上的多个 CPU 线程。将所有 learner 保持在同一台机器上可以消除发送梯度和参数的通信开销,并使我们能够使用 Hogwild!(Recht et al., 2011)风格的更新方式进行训练。

其次,我们观察到,同时运行的多个 actor-learner 很可能在探索环境的不同区域。此外,我们可以在每个 actor-learner 中显式使用不同的探索策略以最大化这种多样性。通过在不同线程中运行不同的探索策略,多个 actor-learner 并行进行在线更新所产生的参数更新总体上在时间上会比单个 agent 的在线更新相关性更低。因此,我们不使用 replay memory,而是依赖采用不同探索策略的并行 actor 来发挥 DQN 训练算法中 experience replay 所起的稳定作用。

在这里插入图片描述

除了稳定学习过程之外,使用多个并行的 actor-learner 还带来了多个实际上的好处。首先,训练时间大致上会随着并行 actor-learner 数量的增加而线性减少。其次,由于我们不再依赖 experience replay 来稳定学习过程,我们就能够以稳定的方式使用 on-policy 的强化学习方法(如 Sarsa 和 actor-critic)来训练神经网络。接下来我们将介绍我们提出的 one-step Q-learning、one-step Sarsa、n-step Q-learning 以及 advantage actor-critic 的变体。

异步 one-step Q-learning:我们提出的 Q-learning 变体称为异步 one-step Q-learning,其伪代码如算法 1 所示。每个线程与其自己的环境副本交互,并在每个步骤计算 Q-learning 损失的梯度。我们在计算 Q-learning 损失时使用了一个共享的、变化缓慢的目标网络,这一做法源于 DQN 的训练方法。我们还会在多个时间步上累积梯度后再应用,这类似于使用 mini-batch。这可以减少多个 actor-learner 相互覆盖更新的可能性。跨多个步骤累积更新也提供了一种在计算效率与数据效率之间进行权衡的手段。

温馨提示:
阅读全文请访问"AI深语解构" 用于深度强化学习的异步方法


网站公告

今日签到

点亮在社区的每一天
去签到