Asynchronous Methods for Deep Reinforcement Learning-笔记

Asynchronous Methods for Deep Reinforcement Learning

深度强化学习的异步方法

0 摘要

我们为深度强化学习提出了一个概念上简单轻巧的框架,该框架使用异步梯度下降来优化深度神经网络控制器。我们提出了四种标准强化学习算法的异步变体,并表明并行actor学习器对训练具有稳定作用,允许所有四种方法成功地训练神经网络控制器。性能最优的方法是actor-critic的异步变体,它在单个多核CPU(而不是GPU)上以一半的时间进行训练,超越了Atari域上的当前技术水平。此外,我们证明了异步actor-critic在各种连续电机控制问题以及使用视觉输入导航随机3D迷宫的新任务中取得了成功。

1 介绍

深度神经网络提供了丰富的表征,可以使RL算法有效执行。但是,以前认为简单的在线RL算法与深度神经网络的组合从根本上来说是不稳定的。取而代之的是,已经提出了多种解决方案来稳定算法 (Riedmiller, 2005; Mnih et al., 2013; 2015; Van Hasselt et al., 2015; Schulman et al., 2015a)。这些方法有一个共同的想法:在线RL智能体遇到的观测数据的序列是不稳定的,并且在线RL更新是高度相关的。通过将智能体的数据存储在经验回放内存中,可以对数据进行批处理 (Riedmiller, 2005; Schulman et al., 2015a)或从不同的时间步骤随机采样 (Mnih et al., 2013; 2015; Van Hasselt et al., 2015)。以这种方式在内存上进行汇聚可减少非稳定性并去除更新相关性,但同时将方法限制为异策强化学习算法。

基于经验回放的深度RL算法在诸如Atari 2600这样具有挑战性的领域中取得了空前的成功。但是,经验回放有几个缺点:每次真正的交互都会使用更多的内存和计算量;并且需要异策学习算法,该算法可以从较旧的策略生成的数据中进行更新。

在本文中,我们为深度强化学习提供了非常不同的范例。代替经验回放,我们在环境的多个实例上异步并行执行多个智能体。这种并行性还将智能体的数据去相关到一个更平稳的过程中,因为在任何给定的时间步骤,并行智能体将经历各种不同的状态。这个简单的想法可以使用深度神经网络来鲁棒且有效地应用更多种类的基本同策RL算法,例如Sarsa,n步方法和actor-critic方法,以及异策RL算法 (例如Q学习)。

我们的并行强化学习范例也提供了实际的好处。以往的深度强化学习方法严重依赖于专用硬件,例如GPU(Mnih et al., 2015; Van Hasselt et al., 2015; Schaul et al., 2015)或大规模分布式架构 (Nair et al., 2015),我们的实验在一台带有标准多核CPU的计算机上运行。当将其应用于各种Atari 2600域时,在许多游戏中,异步强化学习可在比先前基于GPU的算法更少的时间内获得更好的结果并且所使用的资源比大规模分布的方法少得多。我们所提出的最优方法,异步优势actor-critic(A3C),还掌握了各种连续的电机控制任务,并学会了仅从视觉输入中探索3D迷宫的一般策略。我们相信,A3C在2D和3D游戏,离散和连续动作空间上的成功以及对前馈和循环智能体进行训练的能力使其成为迄今为止最通用且最成功的强化学习智能体。

2 相关工作

(Nair等人,2015年)的通用强化学习架构(Gorila)在分布式环境中对强化学习代理进行异步训练。在Gorila中,每个进程都包含一个在其自己的环境副本中起作用的参与者,一个单独的重播内存以及一个学习器,该学习器从重播内存中采样数据并计算DQN损耗的梯度(Mnih等,2015)。策略参数。渐变异步发送到中央参数服务器,该服务器更新模型的中央副本。更新后的策略参数以固定的时间间隔发送给参与者学习者。通过使用100个独立的actor-learner进程和30个参数服务器实例(总共130台计算机),Gorila能够在49款Atari游戏中显着胜过DQN。在许多游戏中,Gorila达到DQN的得分要比DQN快20倍以上。我们还注意到(Chavez 等人,2015)提出了一种类似的DQN并行化方法。

在更早的工作中,(Li&Schuurmans,2011)将Map Reduce框架应用于通过线性函数逼近并行化批处理强化学习方法。并行性用于加速大型矩阵运算,但不能并行化经验的收集或稳定学习。 (Grounds&Kudenko,2008)提出了Sarsa算法的并行版本,该算法使用多个独立的演员学习者来加速训练。每个参与者学习者分别学习,并使用对等通信将更新有重大变化的权重定期发送给其他学习者。

(Tsitsiklis,1994)研究了异步优化设置下Qlearning的收敛特性。这些结果表明,只要始终将过时的信息最终丢弃并满足其他一些技术假设,当某些信息过时时,仍然可以保证Q学习收敛。甚至更早地(Bertsekas,1982)也研究了分布式动态规划的相关问题。

工作的另一个相关领域是进化方法,通过将适应性评估分布到多个机器或线程上,通常很容易并行化(Tomassini,1999)。这种并行的进化方法最近已应用于一些视觉强化学习任务。在一个示例中(Koutník等,2014),通过并行地对8个CPU内核执行适应性评估,为TORCS驱动模拟器开发了卷积神经网络控制器。

3 强化学习背景

我们考虑标准的强化学习设置,其中智能体在多个离散时间步骤上与环境ε交互。在每个时间步骤 t,智能体接收状态st并根据其策略π从一组可能的动作A中选择一个动作at,其中π是从状态st到动作at的映射。作为回报,智能体接收下一个状态st+1并接收标量奖励rt。该过程继续进行,直到智能体达到终止状态,然后该过程重新启动。回报https://img2020.cnblogs.com/blog/1441092/202010/1441092-20201018214908977-982915746.png是带折扣因子γ ∈ (0, 1]的时间步骤 t 的总累积回报,智能体的目标是使每个状态st的期望回报最大化。

动作价值Qπ(s, a) = E[Rt|st = s, a]是在状态s和后续策略π中选择动作a的期望回报。最优价值函数Q*(s, a) = maxπ Qπ(s, a)给出状态s和任何策略均可得到的动作a的最大动作价值。类似地,策略π下状态s的价值被定义为V*(s) = E[Rt|st = s],并且仅仅是从状态s遵循后续策略π的期望回报。

在基于价值的无模型强化学习方法中,使用函数近似(例如神经网络)来表示动作价值函数。令Q(s, a; θ)是带有参数θ的近似动作-价值函数。θ的更新可以从各种强化学习算法中得出。这种算法的一个示例是Q学习,其目的是直接近似最优动作价值函数:Q*(s, a) ≈ Q(s, a; θ)。在单步Q学习中,通过迭代最小化一系列损失函数来学习动作价值函数Q(s, a; θ)的参数θ,其中第 i 个损失函数定义为

https://img2020.cnblogs.com/blog/1441092/202010/1441092-20201019153159996-504165261.png

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

我们将上述方法称为单步Q学习,因为它向单步回报r + γ maxa' Q(s', a'; θ)更新动作价值Q(s, a)。使用单步方法的一个缺点是,获得奖励 r 仅直接影响状态动作对s, a的价值引导奖励。其他状态动作对的价值仅通过更新后的价值Q(s, a)间接影响。这可能会使学习过程变慢,因为需要进行许多更新才能将奖励传播到相关的先前状态和动作。

一种更快地传播奖励的方法是使用n步回报(Watkins, 1989; Peng&Williams, 1996)。在n步Q学习中,朝定义为rt + γrt+1 + … + γn-1rt+n-1 + maxa γnQ(st+n, a)的n步回报更新Q(s, a)。这导致单个奖励 r 直接影响n个先前状态动作对的价值。这使得将奖励传播到相关状态-动作对的过程可能会更加有效。

与基于价值的方法相反,基于策略的无模型方法直接对策略π(a|s;θ)进行参数化,并通过对E[Rt]执行(通常是近似的)梯度上升来更新参数。这种方法的一个例子是由Williams (1992)提出的REINFORCE算法族。标准REINFORCE在https://img2020.cnblogs.com/blog/1441092/202010/1441092-20201019170553742-1526936572.png方向上更新策略参数θ,这是https://img2020.cnblogs.com/blog/1441092/202010/1441092-20201019170703364-603976817.png的无偏估计。通过从回报中减去状态bt(st)的已知函数(被称为基准),可以减少此估计的方差,同时保持其无偏。所得的梯度为https://img2020.cnblogs.com/blog/1441092/202010/1441092-20201019171224007-717668402.png

通常将学到的价值函数估计用作基准bt(st)≈Vπ(st),从而导致更低的策略梯度的方差估计。当近似价值函数用作基准时,用于缩放策略梯度的量Rt - bt可以视为状态st时动作at的优势估计,或者A(at, st) = Q(at, st) - V(st),因为Rt是对Qπ(at, st)的估计,而bt是对Vπ(st)的估计。可以将这种方法视为一种actor-critic结构,其中策略π是actor,基准bt是critic (Sutton&Barto, 1998; Degris et al., 2012)。

4 Asynchronous RL Framework

现在,我们介​​绍单步Sarsa,单步Q学习,n步Q学习和A2C的多线程异步变体。设计这些方法的目的是找到能够可靠地训练深度神经网络策略且无需大量资源的RL算法。尽管底层的RL方法有很大的不同,actor-critic是一种同策的策略搜索方法,而Q学习是一种异策的基于价值的方法,但根据我们的设计目标,我们使用两个主要思想使这四种算法切实可行。

首先,我们使用异步actor学习器,类似于Gorila框架 (Nair et al., 2015),但不是在使用单独的机器和参数服务器,而是在单个机器上使用多个CPU线程。将学习器放在一台机器上可以消除发送梯度和参数的通信成本,并使我们能够使用Hogwild! (Recht et al., 2011)样式更新进行训练。

其次,我们观察到,并行运行的多个actor学习器可能正在探索环境的不同部分。此外,可以在每个actor学习器中明确使用不同的探索策略,以最大化这种多样性。通过在不同的线程中运行不同的探索策略,并行应用在线更新的多个actor学习器对参数进行的总体改进在时间上的相关性可能比单个智能体在线应用的更新少。因此,我们不使用回放内存,而是依靠采用不同探索策略的并行actor来执行DQN训练算法中由经验回放承担的稳定角色。

除了稳定学习之外,使用多个并行的actor学习器具有多个实际好处。首先,我们减少了训练时间,训练时间大致与并行actor学习器数量成线性关系。其次,由于我们不再依赖经验回放来稳定学习,因此我们能够使用诸如Sarsa和actor-critic之类的策略强化学习方法来稳定地训练神经网络。现在,我们描述单步Q学习,单步Sarsa,n步Q学习和A2C的变体。

Asynchronous one-step Q-learning: 算法1中显示了我们的Q学习变体的伪代码(我们称之为异步单步Q学习),每个线程都与自己的环境副本交互,并在每一步计算Q学习损失的梯度。正如DQN训练方法中所提出的,我们使用共享且变化缓慢的目标网络来计算Q学习损失。在应用梯度之前,我们还会在多个时间步骤上累积梯度,这与使用小批量处理类似。这样可以减少多个actor学习器覆盖彼此更新的可能性。在几个步骤上累积更新还提供了一些权衡计算效率与数据效率的能力。

最后,我们发现为每个线程提供不同的探索策略有助于提高鲁棒性。以这种方式在探索中增加多样性通常也会通过更好的探索来提高性能。尽管有许多可能的方法可以使探索策略有所不同,但我们尝试使用ε-贪婪探索,并通过每个线程定期从某些分布中采样。

https://img2020.cnblogs.com/blog/1441092/202010/1441092-20201018215237752-655060999.png

Asynchronous one-step Sarsa: 异步单步Sarsa算法与算法1中给出的异步单步Q学习相同,只是它对Q(s, a)使用不同的目标价值。单步Sarsa使用的目标价值为r + Q(s', a'; θ-),其中a'是在状态s'下采取的动作(Rummery & Niranjan, 1994; Sutton & Barto, 1998)。我们再次使用目标网络,并在多个时间步骤上累积更新以稳定学习。

Asynchronous n-step Q-learning: 补充算法S2中显示了用于多步Q学习的变体的伪代码。该算法有些不寻常,因为它通过显式计算n步回报而在前向视图中运行,与资格迹(eligibility traces)等技术所使用的更常见的后向视图相反(Sutton&Barto, 1998)。我们发现,在使用基于动量的方法和时间反向传播训练神经网络时,使用前向视图更容易。为了计算单个更新,该算法首先使用其探索策略选择动作(最多tmax个步骤或直到达到终止状态)。自从上次更新以来,此过程导致智能体从环境中接收最多tmax奖励。然后,该算法为自上次更新以来遇到的每个状态-动作对计算n步Q学习更新的梯度。每个n步更新都使用可能的最长n步回报,从而对最近的状态进行一步更新,对第二近的状态进行两步更新,依此类推,总共进行tmax次更新。累积的更新将在单个梯度步骤中应用。

Asynchronous advantage actor-critic: 该算法(我们称之为A3C)维护策略π(at|st; θ)和价值函数V(st; θv)的估计。就像我们的n步Q学习的变体一样,我们的actor-critic的变体也在前向视图中运行,并且使用n步回报的相同组合来更新策略和价值函数。策略和价值函数在每tmax个动作之后或达到终止状态时更新。该算法执行的更新可以看作是https://img2020.cnblogs.com/blog/1441092/202010/1441092-20201019201744675-2113750582.png,其中A(st, at;θ,θv)是对优势函数https://img2020.cnblogs.com/blog/1441092/202010/1441092-20201019202103398-643027955.png的估计,其中k可能因状态而异,且以tmax为上限。该算法的伪代码在补充算法S3中提供。

与基于价值的方法一样,我们依靠并行的actor学习器和积累的更新来提高训练稳定性。请注意,尽管出于一般性考虑,策略的参数θ和价值函数的θv单独显示,但实际上我们总是共享某些参数。我们通常使用卷积神经网络,该神经网络对于策略π(at|st; θ)具有一个softmax输出,对于价值函数V(st; θv)具有一个线性输出,并且共享所有非输出层。

我们还发现,通过阻止过早收敛到次优确定性策略,可以将策略π的熵添加到目标函数中,从而改进了探索。该技术最初是由(Williams&Peng, 1991)提出的,他发现该技术在需要分层行为的任务中特别有用。包含熵正则项的完整目标函数相对于策略参数的梯度采用https://img2020.cnblogs.com/blog/1441092/202010/1441092-20201019211930511-1420252528.pnghttps://img2020.cnblogs.com/blog/1441092/202010/1441092-20201019211955808-1233070516.png,其中H是熵。超参数控制熵正则项的强度。

Optimization: 我们在异步框架中研究了三种不同的优化算法——具有动量的SGD,没有共享统计信息的RMSProp(Tieleman&Hinton, 2012)和具有共享统计信息的RMSProp。我们使用由下式提供的标准非中心RMSProp更新

https://img2020.cnblogs.com/blog/1441092/202010/1441092-20201019195543056-2007879472.png

其中所有操作均按元素执行。对Atari 2600游戏的子集进行的比较表明,在不同线程之间共享统计信息g的RMSProp变体比其他两种方法更鲁棒。有关方法和比较的全部详细信息,请参见补充第7节。

5 实验

我们使用四个不同的平台来评估建议框架的属性。我们使用Arcade学习环境(Bellemare等人,2012)执行大部分实验,该环境为Atari 2600游戏提供了模拟器。这是RL算法最常用的基准测试环境之一。我们使用Atari域与最新结果进行比较(Van Hasselt等人,2015; Wang等人,2015;Schaul等人,2015;Nair等人,2015; Mnih等人,2015) ,并对建议的方法进行详细的稳定性和可扩展性分析。我们使用TORCS 3D赛车模拟器进行了进一步的比较(Wymann等,2013)。我们还使用Mujoco和Labyrinth。 MuJoCo(Todorov,2015)是一个物理模拟器,用于评估具有接触动力学的连续电机控制任务中的代理。迷宫是一种新的3D环境,代理必须学习从视觉输入中随机生成的迷宫中寻找奖励。我们的实验装置的确切细节可以在第8节补充中找到。

5.1 Atari 2600 Games

我们首先在Atari 2600游戏的子集上展示结果,以证明新方法的训练速度。图1将在Nvidia K40 GPU上训练的DQN算法的学习速度与在五个Atari 2600游戏中使用16个CPU内核训练的异步方法进行了比较。结果表明,我们提出的所有四种异步方法都可以在Atari域上成功地训练神经网络控制器。异步方法的学习速度通常比DQN快,在某些游戏上学习速度明显快得多,而仅在16个CPU内核上进行训练。此外,结果表明,在某些游戏中,n步方法的学习速度比1步方法要快。总体而言,基于政策的优势行为者批评方法明显优于所有三种基于价值的方法。

然后,我们评估了57种Atari游戏的异步优势演员评论家。为了与Atari游戏的发展水平进行比较,我们在很大程度上遵循了(Van Hasselt et al。,2015)的训练和评估协议。具体来说,我们使用六个Atari游戏(Beamrider,Breakout,Pong,Q * bert,Seaquest和Space Invaders)进行搜索来调整超参数(学习率和梯度范数裁剪的数量),然后修复所有57个游戏的所有超参数。我们训练了与(Mnih等人,2015; Nair等人,2015; Van Hasselt等人,2015)相同的架构的前馈剂,以及在最终隐藏后具有额外256个LSTM细胞的循环剂层。我们另外使用最终网络权重进行评估,以使结果与原始结果具有可比性(Bellemare等,2012)。我们使用16个CPU内核对代理进行了为期4天的培训,而其他代理在Nvidia K40 GPU上进行了8至10天的培训。表1列出了由我们的代理商通过异步优势参与者评论家(A3C)以及当前的最新技术培训而获得的平均和中位数的人归一化分数。补充表S3显示了所有游戏的得分。在仅使用16个CPU内核而没有GPU的情况下,A3C在其他方法的训练时间的一半时间内,在57场比赛中的最新平均得分有了显着提高。此外,仅经过一天的训练,A3C就达到了人类决斗双DQN的平均人类标准化评分,几乎达到了Gorila的人类标准化中位数。我们注意到,Double DQN(Van Hasselt等人,2015)和Dueling Double DQN(Wang等人,2015)中提出的许多改进可以合并到这项工作具有类似的潜在改进。

5.2 TORCS赛车模拟器

我们还在TORCS 3D赛车游戏中比较了四种异步方法(Wymann等,2013)。 TORCS不仅比Atari 2600游戏具有更逼真的图形效果,而且还要求代理商学习其所控制汽车的动力。在每个步骤中,业务代表仅接收当前帧的RGB图像形式的视觉输入,以及与业务代表在其当前位置沿着轨道中心的速度成正比的奖励。我们使用的神经网络架构与补充部分8中指定的Atari实验中使用的神经网络架构相同。我们使用四种不同的设置进行了实验,其中代理控制有慢速赛车(有或没有对手机器人),以及代理有无快速机器人的快车。对手机器人。完整结果可在补充图S6中找到。 A3C是表现最好的代理,在大约12个小时的训练中,在所有四种游戏配置下,人类测试人员获得的分数大约达到了75%至90%。可以在https://youtu.be/0xo1Ldx3L5Q上找到显示A3C代理学习驾驶行为的视频。

5.3 使用MuJoCo物理模拟器进行连续动作控制

我们还检查了一组动作空间连续的任务。特别是,我们研究了一组具有接触动力学的刚体物理领域,其中的任务包括操纵和运动的许多示例。这些任务是使用Mujoco物理引擎模拟的。我们只评估了异步优势参与者批评算法,因为与基于值的方法不同,它很容易扩展到连续动作。在所有问题中,无论是使用物理状态还是像素作为输入,异步优势分析都可以在不到24小时的训练时间(通常不到几个小时)内找到好的解决方案。在以下视频https://youtu.be/Ajjc08-iPx8中可以看到我们的代理商学到的一些成功的政策。有关此实验的更多详细信息,请参见补充第9节。

5.4 迷宫

我们在称为Labyrinth的新3D环境中使用A3C进行了另一组实验。我们考虑过的特定任务涉及代理学习,以发现随机产生的迷宫中的奖励。在每个情节的开始,特工被放置在一个新的随机生成的迷宫中,迷宫由房间和走廊组成。每个迷宫都包含两种类型的对象,代理程序因发现苹果和门户而得到奖励。捡起一个苹果会得到1点奖励。进入一个传送门会得到10点奖励,然后在迷宫中一个新的随机位置重生代理,然后重新生成所有以前收集的苹果。剧集在60秒后终止,之后将开始新的剧集。代理程序的目的是在时限内收集尽可能多的点,而最佳策略是首先找到门户,然后在每次重生后重复返回该门户。该任务比TORCS驱动领域更具挑战性,因为特工在每个情节中都面临着一个新的迷宫,并且必须学习探索随机迷宫的一般策略。

我们仅使用84*84张RGB图像作为输入,就此任务训练了A3C LSTM代理。最终平均得分约为50,表明该代理仅使用视觉输入就学会了探索随机3D最大值的合理策略。 https://youtu.be/nMR5mjCFZCw上包含一个视频,其中显示了一位探员探索以前看不见的迷宫。

5.5 可伸缩性和数据效率

我们通过观察培训时间和数据效率如何随着并行参与者学习者数量的变化而分析了我们提出的框架的有效性。当并行使用多个工作程序并更新共享模型时,人们会希望在理想情况下,对于给定的任务和算法,要达到一定分数的训练步骤数将随着工作程序数的变化而保持不变。因此,优势将完全归因于系统在相同的挂钟时间量内消耗更多数据的能力,并可能改善了探索能力。表2显示了通过使用在七个Atari游戏中平均增加的平行演员学习者数量而实现的训练提速。这些结果表明,所有四个方法都通过使用多个工作线程实现了显着的加速,其中16个线程至少导致了一个数量级的加速。这证实了我们提出的框架与并行工作者的数量很好地匹配,从而有效地利用了资源。

令人惊讶的是,异步单步Q学习和Sarsa算法展现了超线性加速,这无法用纯粹的计算增益来解释。我们观察到,当使用更多的并行actor-learner时,一步方法(一步Q和一步Sarsa)通常需要较少的数据来获得特定分数。我们认为这是由于多线程减少一步法偏差所产生的积极影响。在图3中更清楚地显示了这些效果,图3显示了在五个Atari游戏中平均得分相对于不同数量的角色学习者和训练方法的训练框架总数的图,图4显示了平均得分的图反对挂钟时间。

6 总结和讨论

我们介绍了四种标准强化学习算法的异步版本,并表明它们能够以稳定的方式在各种域上训练神经网络控制器。我们的结果表明,在我们提出的框架中,通过基于价值和基于策略的方法,异策和同策的方法以及离散域和连续域,可以通过强化学习对神经网络进行稳定的训练。当使用16个CPU内核在Atari域上进行训练时,与在Nvidia K40 GPU上进行训练的DQN相比,所提出的异步算法的训练速度更快,其中A3C在一半的训练时间内超过了当前的最新水平。

我们的主要发现之一是,使用并行actor学习器更新共享模型对我们考虑的三种基于价值的方法的学习过程具有稳定作用。尽管这表明可以在没有经验回放的情况下进行稳定的在线Q学习,这在DQN中已用于此目的,但这并不意味着经验回放没有用。通过将经验回放结合到异步强化学习框架中,可以通过重用旧数据来大大提高这些方法的数据效率。反过来,这可能会导致在TORCS之类的领域中更快的训练时间,在该领域中与环境的交互比为我们使用的结构更新模型要昂贵得多。

将其他现有的强化学习方法或深度强化学习的最新进展与我们的异步框架结合在一起,可以为我们所提出的方法提供立即改进的许多可能性。虽然我们的n步方法通过直接使用校正的n步回报作为目标而在前向视图中起作用(Sutton&Barto, 1998),但更常见的是使用后向视图通过资格迹来隐式组合不同的回报(Watkins, 1989; Sutton&Barto, 1998; Peng&Williams, 1996)。A3C方法可以通过使用其他优势函数的估计方式(例如Schulman et al., 2015b的广义优势估算)进行改进。我们研究的所有基于价值的方法都可能受益于减少Q值高估偏差的不同方法(Van Hasselt et al., 2015; Bellemare et al., 2016)。另一个更具投机性的方向是尝试将最近在真正的在线TD方法上的工作(van Seijen et al., 2015)与非线性函数近似相结合。

除了这些算法改进之外,对神经网络结构的许多补充改进也是可能的。(Wang et al., 2015)的对偶架构通过在网络中包含状态价值和优势的独立流,可以产生更精确的Q值估计。(Levine et al., 2015)提出的空间softmax可以通过使网络更容易表示特征坐标来改进基于价值和基于策略的方法。

总结

这篇论文不是在算法上有创新,而是提出了一个新的算法框架。

首先我们看一下deepmind之前发表的Gorila(Gerneral Reinforcement Learning Architecture),这是基于异步的分布式的增强学习训练的框架,每个节点都有actor和自己完整的环境(包括replaymemory),还有learner用来采样、计算梯度(通常情况)。梯度是需要同步给集中的参数服务器的,参数服务器统一更新网络参数,然后周期性更新各个并行异步的环境。deepmind在用DQN算法训练Atari的49个游戏时,用了100个节点和30个参数服务器,总共130台机器。

A3C的算法框架也是沿袭Gorila,但是不使用单独的节点来做agent和参数服务器,而是用了多核cpu来跑,在一台机器节点上跑,显然节省了大量的通讯开销(梯度和网络参数更新的量是非常巨大的)和无锁的方式更新参数和训练。

而采用并行的不同的actors-learners就像在探索环境的不同部分,而且,每个人都可以采用不同的探索策略,这样的话能更全方位发现策略。通过不同的线程跑不同的探索策略,众多的actor-learners同时在线更新参数就像一个单独的agent更新一样,但是我们就不在需要replay memory和experience replay。

因此采用这种算法有多个好处,首先减少了训练时间,我们可以发现训练的时间和线程数目基本上是线性关系。其次因为不再依赖experience relay可以让我们采用基于on-policy的增强学习算法。

论文验证了多种增强学习的算法和框架的结合,包括one-step Sarsa,one-step Q-learning, n-step Q-learning, and advantage actor-critic,我们也可以通过这些算法来理解一下框架。

异步one-step Q-learning的算法流程:

该算法的核心思路是维护共享变量θ和θ-与独立变量dθ,通过多个线程各自独立与环境交互,更新独立变量,再累加更新共享变量。

具体地说,就是每个线程从自己的状态开始,按照共享网络参数θ或epsilon概率随机选择动作a,然后按照共享网络参数θ-制作s,a对应的Q值的Label,再用Label值和网络θ产生的输出值的平方误差求导赋值给独立变量dθ。这整个过程都是各线程独立执行的。这部分的计算量较大,多线程并发执行能够显著提高效率。

各线程的dθ累计到一定的次数t,就会给共享网络参数θ加锁,然后将自己的dθ更新到θ上,最后把自己的dθ清零,再次开始探索环境并累积dθ。而每个线程在每一步dθ更新完后,还会检查一下所有线程执行动作的总步数T是否达到一定程度。如果达到了,则该线程会将θ-加锁,并将θ复制给θ-。由于各个线程交替更新网络参数θ,而且每个线程所探索经历的状态也是分散的,所以天然地不用维护一个经验数据样本池再Sample了。

最后,可以看出这个算法是在类似于Doubel DQN基础上改的异步版本,维护了两个网络,解决了Label虚高的问题。略微不同的是,这里s状态的动作选择是θ网络,而生成标签时则完全是θ-,应该也是可行的。总之,Double网络的根本目的就是为了让Label值不要太高,所以有一个延迟更新的网络产生Label即可。

https://img2020.cnblogs.com/blog/1441092/202010/1441092-20201018215237752-655060999.png

n-step Q-learning算法流程:

n-step的异步框架与one-step没有什么不同。唯一的区别在于每个线程执行dθ更新时,不再是每一个动作都执行一次了。而是一次执行多个动作,每个动作也都会计算一个dθ,并进行累加,最后在达到一定步数后,一起更新到θ中。Label的制作也是采用延迟的offline网络θ-,但是要格外注意的是,这里每个线程有了一个独立的θ’,这个θ’是来自θ的复制,并在累积dθ的过程中,一直采用θ’替代θ的作用(选择动作)。那么,与one-step相比,在多步动作累积过程中,其动作选择是不受外界其他线程干扰的。也就是如果有线程更新了θ,不会影响到其他线程多步动作执行时对动作的选择。从理论上,我能想到的这么做的好处,就是使网络更加稳定,类似于SGD和BGD的区别,使得网络训练过程中不会过于震荡。从实验结果看,n-step的效果并不比one-step好很多,在部分数据集上可能收敛更快一点。

主角出场asynchronousadvantageactor-critic算法:

算法还是非常清楚的,基本就是以前的one-step Sarsa, one-step、Q-learning, n-step Q-learning, and advantage actor-critic和异步并行线程框架结合,但是多个线程跑起来,确实如前面所讲,性质和性能都会发生质的变化。

另外关于A3C算法有两点:一是在关于策略的目标函数中增加了策略的熵模型对局部收敛进行惩罚,增加了策略的探索性,具体细节可以相关论文。二是梯度更新采用RMSProp with shared statistics,公式如下:

看一下A3C效果:

关于A3C的效果测试论文还做了很多,另外还对效果进行了解释(主要是因为效果好的出乎想象),刷新了state-of-the-art。从最新的一些基于DRL的论文来看,主流都采用了A3C的算法。

Experience replay 有如下几个缺点:

  1. 每一次交互 都会耗费更多的内存和计算;

  2. 需要 off-policy 的学习算法从更老的策略中产生的数据上进行更新。

总结部分引用与:https://zhuanlan.zhihu.com/p/136823256

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加油当当

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值