# Asynchronous Methods for Deep Reinforcement Learning

Asynchronous Methods for Deep Reinforcement Learning

我们提出了一个概念上简单和轻量级的深度强化学习框架,它使用异步梯度下降来优化深度神经网络控制器。我们提出了四种标准强化学习算法的异步变体(asynchronous variants),并表明并行actor-learners对训练有稳定作用,允许所有四种方法成功训练神经网络控制器。

表现最好的方法,即actor-critic的异步变体,在Atari领域超过了目前的最先进水平,而在单个多核CPU而不是GPU上的训练时间仅为一半。此外,我们表明,异步actor-critic法在各种连续运动控制问题以及使用视觉输入导航随机3D迷宫的新任务上都取得了成功。

1. Introduction

深度神经网络提供了丰富的表征,可以使强化学习(RL)算法有效地执行。然而,以前人们认为简单的在线RL算法与深度神经网络的结合从根本上是不稳定的。相反,人们提出了各种解决方案来稳定算法(Riedmiller,2005;Mnih等人,2013;2015;Van Hasselt等人,2015;Schulman等人,2015a)。

这些方法有一个共同的想法:在线RL代理遇到的观察数据序列是非平稳的,在线RL更新是强相关的。通过将agent’s数据存储在经验重放存储器(experience replay memory)中,the data can be batched(Riedmiller,2005;Schulman等人,2015a)或从不同的时间步长中随机采样(Mnih等人,2013;2015;Van Hasselt等人,2015)。以这种方式对内存进行聚合,可以减少非平稳性, and decorrelates updates,但同时也将这些方法限制在off-policy强化学习算法上。

基于经验回放(experience replay)的深度RL算法在诸如Atari 2600等挑战性领域取得了前所未有的成功。然而,经验回放有几个缺点:它在每个真实的互动(per real interaction)中使用更多的内存和计算;而且它需要off-policy学习算法,可以从旧政策产生的数据中更新。

在本文中,我们为深度强化学习提供了一个非常不同的范式。我们在环境的multiple instances异步地并行执行多个agent,而不是经验重放。这种平行性也将代理的数据装饰(decorrelates)成一个更稳定的过程,因为在任何给定的时间步长,parallel agents将经历各种不同的状态。这个简单的想法使得更大范围的基本政策性RL算法,如Sarsa、n-step方法和actor-critic方法,以及off-policy RL算法,如Q-learning,可以使用深度神经网络进行稳健有效地应用。

我们的并行强化学习范式也提供了实际的好处。以前的深度强化学习方法在很大程度上依赖于专门的硬件,如GPU(Mnih等人,2015;Van Hasselt等人,2015;Schaul等人,2015)或大规模分布式架构(Nair等人,2015),而我们的实验在一台带有标准多核CPU的机器上运行。

当应用于各种Atari 2600领域时,在许多游戏上,异步强化学习取得了更好的结果,时间远远少于以前基于GPU的算法,使用的资源远远少于大规模分布式方法。所提出的方法中最好的是asynchronous advantage actorcritic(A3C),它还掌握了各种连续运动控制任务,以及学会了纯粹从视觉输入探索3D迷宫的一般策略。我们认为,A3C在二维和三维游戏、离散和连续行动空间上的成功,以及它训练前馈和递归代理的能力,使它成为迄今为止最普遍和最成功的强化学习代理。

2. Related Work

(Nair等人,2015)的通用强化学习架构(Gorila)在分布式环境中进行强化学习代理的异步训练。在Gorila中,每个进程都包含一个在自己的环境副本中行动的角色,一个单独的replay memory,以及一个从replay memory中采样数据并计算与策略参数有关的DQN损失梯度的learner(Mnih等,2015)。梯度被异步发送至中央参数服务器,该服务器更新模型的中央副本。更新后的策略参数以固定的时间间隔发送给 actor-learners。通过使用100个独立的角色学习进程和30个参数服务器实例,总共130台机器,Gorila能够在49个Atari游戏中大大超过DQN。在许多游戏中,Gorila达到了DQN所取得的分数,比DQN快20多倍。我们还注意到,(Chavez等人,2015)提出了一种类似的DQN并行化方式。

在早期的工作中,(Li & Schuurmans, 2011)将Map Reduce框架应用于线性函数近似的批量强化学习方法的并行化。并行化被用来加速大型矩阵操作,但没有用来并行化经验的收集或稳定学习。(Grounds & Kudenko, 2008)提出了一个Sarsa算法的并行版本,该算法使用多个独立的角色学习器来加速训练。每个角色学习者单独学习,并使用点对点通信定期向其他学习者发送权重发生重大变化的更新。

(Tsitsiklis, 1994)研究了异步优化环境下Q-learning的收敛特性。这些结果表明,只要过期的信息最终总是被丢弃,并且满足其他几个技术假设,当一些信息过期时,Q-learning仍然可以保证收敛。甚至更早,(Bertsekas,1982)研究了分布式动态编程的相关问题。

另一个相关的工作领域是进化方法,通过在多台机器或线程上分配fitness evaluations,这些方法通常可以直接并行化(Tomassini,1999)。这种并行的进化方法最近被应用于一些视觉强化学习任务。在一个例子中,(Koutník等人,2014)通过在8个CPU核心上并行进行fitness evaluations,为TORCS驾驶模拟器进化了卷积神经网络控制器。

3. Reinforcement Learning Background

我们考虑标准的强化学习设置,即agent在若干离散的时间步骤中与环境E互动。在每个时间步骤t,agent收到一个状态 s t s_t st,并根据其策略 π π π 从一些可能的actions A中选择一个action a t a_t at,其中 π π π 是一个从状态 s t s_t st到action a t a_t at的映射。作为回报,agent收到下一个状态 s t + 1 s_{t+1} st+1,并收到一个标量奖励 r t r_t rt。这个过程一直持续到代理人达到一个terminal state,之后这个过程重新开始。回报 R t = Σ k = 0 ∞ γ k r t + k R_t=\Sigma ^∞_{k=0} γ^k r_{t+k} Rt=Σk=0γkrt+k是时间步骤t的总累积回报,贴现因子γ∈(0,1)。agent的目标是使每个状态 s t s_t st的预期收益最大化。

行动值 Q π ( s , a ) = E [ R t ∣ s t = s , a ] Q^π(s, a) = E [R_t|s_t = s, a] Qπ(s,a)=E[Rtst=s,a]是在状态s下选择行动a并遵循策略 π π π 的预期回报。最优价值函数 Q ∗ ( s , a ) = m a x π Q π ( s , a ) Q∗(s, a) = max_π Q_π(s, a) Q(s,a)=maxπQπ(s,a)给出了任何政策都能实现的状态s和行动a的maximum action value。同样,策略π下的状态s的价值被定义为 V π ( s ) = E [ R t ∣ s t = s ] V_π(s)=E [R_t|s_t = s] Vπ(s)=E[Rtst=s],它只是从状态s跟随策略π的预期回报。

在基于价值的model-free强化学习方法中,行动价值函数是用一个函数近似器来表示的,如神经网络。让Q(s, a; θ)是一个具有参数θ的approximate动作值函数。 θ的更新可以来自各种强化学习算法。这种算法的一个例子是Q-learning,其目的是直接逼近最佳action value函数。 Q ∗ ( s , a ) ≈ Q ( s , a ; θ ) Q^∗(s, a) ≈ Q(s, a; θ) Q(s,a)Q(s,a;θ)。在one-step Q-learning中,通过迭代最小化损失函数序列来学习作用值函数Q(s,a;θ)的参数θ,其中第i个损失函数定义为

在这里插入图片描述

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

我们把上述方法称为一步式Q-learning,因为它把 action value Q(s, a)向onestep return r + γ m a x a ′ Q ( s ′ , a ′ ; θ ) r+γ max_{a'} Q(s', a'; θ) r+γmaxaQ(s,a;θ)更新。使用一步法的一个缺点是,奖励r只直接影响到导致奖励的状态动作对s,a的值。其他状态行动对的值只通过更新的值Q(s, a)间接地受到影响。这可能会使学习过程变得缓慢,因为需要许多更新来传播奖励到相关的前面的状态和行动。

在n步Q-learning中,Q(s, a)朝着定义为 r t + γ r t + 1 + . . . + γ n − 1 r t + n − 1 + m a x a γ n Q ( s t + n , a ) r_t + γr_{t+1} + ... + γ^{n-1} r_{t+n-1} + max_a γ^nQ(s_{t+n}, a) rt+γrt+1+...+γn1rt+n1+maxaγnQ(st+n,a)的n步回报更新。这导致一个单一的奖励r直接影响到前面n个状态动作对的值。这使得传播奖励到相关状态动作对的过程可能更有效率。

与基于价值的方法相比,基于策略的modelfree方法直接将策略π(a|s; θ)参数化,并通过对 E [ R t ] E[R_t] E[Rt]进行通常是近似的梯度上升来更新参数θ。这种方法的一个例子是威廉姆斯(1992)提出的REINFORCE系列算法。

标准REINFORCE在 ∇ θ l o g   π ( a t ∣ s t ; θ ) R t ∇_θ log\ π(a_t|s_t; θ)R_t θlog π(atst;θ)Rt方向上更新政策参数θ,这是 ∇ θ E [ R t ] ∇_θE[R_t] θE[Rt]的无偏估计。通过从返回值中减去状态的学习函数( a learned function of the state) b t ( s t ) b_t(s_t) bt(st),即所谓的基线(Williams, 1992),可以减少这个估计值的方差,同时保持其无偏。由此产生的梯度是 ∇ θ l o g   π ( a t ∣ s t ; θ ) ( R t − b t ( s t ) ) ∇_θ log\ π(a_t|s_t; θ) (R_t - b_t(s_t)) θlog π(atst;θ)(Rtbt(st)).

对价值函数的学习估计通常被用作基线 b t ( s t ) ≈ V π ( s t ) b_t(s_t)≈V^π(s_t) bt(st)Vπ(st),导致策略梯度的方差估计低得多。当使用近似值函数作为基线时, R t − b t R_t−b_t Rtbt 可被视为对

处于状态 s t s_t st时的action a t a_t at 优势的估计(the quantity R t − b t R_t−b_t Rtbt used to scale the policy gradient can be seen as an estimate of the advantage of action a t a_t at in state s t s_t st),或 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^π(a_t,s_t) Qπ(at,st)的估计, b t b_t bt V π ( s t ) V^π(s_t) Vπ(st)的估计。这种方法可以被视为一种 actor-critic体系结构,其中策略π是actor,基准 b t b_t bt是critic(Sutton&Barto,1998;Degris等人,2012)。

4. Asynchronous RL Framework

我们现在提出了one-step Sarsa、one-step Q-learning、n步Q-learning和advantage actor-critic的多线程异步变体。设计这些方法的目的是为了找到能够可靠地训练深度神经网络策略的RL算法,并且没有大量的资源需求。虽然底层的RL方法有很大的不同,actor-critic是一种 on-policy policy search method,而Q-learning是一种 off-policy的基于价值的方法,但考虑到我们的设计目标,我们使用了两个主要的想法来使所有四个算法变得实用。

首先,我们使用异步 actor-learners,类似于Gorila框架(Nair等人,2015),但我们没有使用单独的机器和参数服务器,而是在一台机器上使用多个CPU线程。将 learners 保持在一台机器上,消除了发送梯度和参数的通信成本,使我们能够使用Hogwild! (Recht等人, 2011)式的更新进行训练。

第二,我们观察到,多个actors learners 并行运行时,可能会探索环境的不同部分。此外,人们可以明确地在每个actor-learner中使用不同的 exploration policies,以最大限度地提高这种多样性。通过在不同的线程中运行不同的 exploration policies,多个actor-learner并行应用在线更新对参数所做的整体改变可能比a single agent应用在线更新在时间上的相关性要小。因此,我们不使用 replay memory,而是依靠采用不同探索策略的并行行为体来执行DQN训练算法中由experience replay放承担的稳定作用。

除了稳定学习之外,使用多个并行的actor-learners也有多种实际好处。首先,我们获得了训练时间的减少,这与parallel actor-learners的数量大致成线性关系。其次,由于我们不再依赖经验回放来稳定学习,我们能够使用Sarsa和actor-critic这样的on-policy强化学习方法来稳定地训练神经网络。现在我们描述一下我们的单步Q-learning、单步Sarsa、n步Q-learning和优势actor-critic的变种。

在这里插入图片描述

Asynchronous one-step Q-learning: 我们的Q-learning变体的伪代码,我们称之为异步单步Q-learning,在算法1中显示。每个线程都与自己的环境副本互动,并在每一步计算Q-learning损失的梯度。在计算Q-learning损失时,我们使用一个共享的、缓慢变化的目标网络,正如在DQN训练方法中提出的那样。在应用梯度之前,我们还在多个时间段内积累梯度,这与使用minibatches相似。这减少了多个actor learners相互覆盖更新的机会。在多个步骤中累积更新也提供了一些能力来交换计算效率和数据效率。

最后,我们发现,给每个线程一个不同的探索策略有助于提高鲁棒性。以这种方式为探索增加多样性,通常也会通过更好的探索来提高性能。虽然有许多可能的方式使探索政策不同,但我们尝试使用 ϵ − \epsilon- ϵ贪婪的探索,每个线程定期从一些分布中取样。

好的探索来提高性能。虽然有许多可能的方式使探索政策不同,但我们尝试使用 ϵ − \epsilon- ϵ贪婪的探索,每个线程定期从一些分布中取样。

Asynchronous one-step Sarsa: 异步单步Sarsa算法与算法1中给出的异步单步Q-learning算法相同,只是它对Q(s, a)使用了不同的目标值。单步Sarsa使用的目标值是 r + γ Q ( s ′ , a ′ ; θ − ) r+γQ(s', a'; θ^-) r+γQ(s,a;θ),其中 a ′ a' a是在状态 s ′ s' s中采取的行动(Rummery & Niranjan, 1994; Sutton & Barto, 1998)。我们再次使用一个目标网络和多个时间段积累的更新来稳定学习。

猜你喜欢

转载自blog.csdn.net/weixin_37958272/article/details/121571640