RECURRENT EXPERIENCE REPLAY IN DISTRIBUTED REINFORCEMENT LEARNING (R2D2)

R2D2采用了分布式框架和LSTM,作为model-free方法在Atari上实现了SOTA的效果。文章的主要贡献在于两个点:一是讨论了一下加入RNN之后对于强化学习的MDP时间序列训练方法的问题;另一个是自身的分布式较大规模训练框架。


1. Introduction

RL最早的成功是利用replay buffer来提高数据效率并堆叠固定数量的连续帧来克服Atari 2600游戏中的部分可观性。但是,随着向越来越困难,部分可观的领域的发展,对更高级的基于内存的表示的需求增加,需要更多的原则性解决方案,如递归神经网络(RNNs)。 在RL中使用LSTM的方法已被广泛采用,以克服部分可观性。

在本文中,我们研究了具有经验重播的RNN训练。 我们有三个主要贡献。

  • 首先,我们表明经验重播对参数滞后的影响,从而导致表示的漂移和循环状态陈旧。 这在分布式训练环境中可能会加剧,并最终导致训练稳定性和性能下降。
  • 其次,我们通过经验重放对RNN训练的几种方法的效果进行了实证研究,从而减轻了上述影响。
  • 第三,我们介绍了一种agent,该agent整合了这些发现,在Atari-57上取得了重大进展,并与DMLab-30上的技术水平相匹配。

据我们所知,我们的方法,R2D2,是第一个使用单一网络架构和固定超参数集实现这一点的算法。

2. BACKGROUND

2.1. REINFORCEMENT LEARNING

定义部分可观马尔科夫决策过程的元组 ( S , A , R , T , Ω , O ) (S,A,R,T,\Omega,O) (S,A,R,T,Ω,O)

  • S S S是状态集合;
  • A A A是行为集合;
  • R : S × A R:S\times A R:S×A是奖励函数;
  • T : S × A T:S\times A T:S×A是状态转换函数;
  • Ω \Omega Ω是agent可能接收到的观测的集合;
  • O O O是观察函数,将状态(未观察到)映射到观察值上的概率分布。

在这里插入图片描述

2.3. THE RECURRENT REPLAY DISTRIBUTED DQN AGENT

本文提出了算法R2D2,并用它来研究递归状态、经验重放和分布式训练之间的相互作用。R2D2与Ape-X最为相似,它建立在优先级分布式重放和n-step double Q-learning(n=5)的基础上,由大量actors(通常为256)产生经验,并由单个学习者从成批重放的经验中学习。与Ape-X一样,我们使用dueling network architecture,但在卷积堆栈之后提供一个LSTM层。

与常规的transition tuples ( s , a , r , s ′ ) (s,a,r,s') (s,a,r,s)不同,我们在重播中存储固定长度(m = 80)的 ( s , a , r ) (s,a,r) (s,a,r)序列,相邻序列彼此重叠40个时间步长,并且永远不会越过episode边界。 训练时,我们在相同状态序列上同时展开online and target networks,以生成价值估算和目标。

在这里插入图片描述
R2D2中的优先回放与其他方法不同,我们在序列上混合使用了绝对n步TD误差的 δ i \delta_i δi的最大值和平均值: p = η max ⁡ i δ i + ( 1 − η ) δ ˉ p=\eta\max_i\delta_i+(1-\eta)\bar{\delta} p=ηmaxiδi+(1η)δˉ。我们设置 η \eta η和优先级指数为0.9。这种更具侵略性的方案是由于我们的观察结果而得出的,即对长序列进行平均往往会洗掉大的错误,从而压缩优先级的范围并限制了优先级选择有用经验的能力。

3. TRAINING RECURRENT RL AGENTS WITH EXPERIENCE REPLAY

为了在部分可观的环境中获得良好的性能,RL代理需要状态表示,该状态表示除了对其当前的观察之外,还对其状态动作轨迹的信息进行编码。 实现此目的的最常见方法是使用RNN(通常为LSTM)作为代理状态编码的一部分。 为了从重放中训练RNN并使其学习有意义的长期依赖关系,需要将整个状态动作轨迹存储在重放中并用于训练网络。 Hausknecht&Stone(2015)从重放的经验中比较了两种训练LSTM的策略:
在这里插入图片描述

  • 零开始状态策略的吸引力在于其简单性,它允许相对较短的序列进行独立的去相关采样,这对于神经网络的鲁棒优化非常重要。另一方面,它迫使RNN学习从非典型初始递归状态(“初始递归状态不匹配”)中恢复有意义的预测,这可能会限制RNN完全依赖其递归状态并学习利用长期时间相关性的能力。
  • 第二种策略避免了寻找合适初始状态的问题,但由于序列长度的变化和潜在的环境依赖性,会产生许多实际的、计算的和算法的问题,与随机抽样的经验元组训练相比,由于轨迹中状态的高度相关性,网络更新的方差更高。

Hausknecht&Stone(2015)观察到,在一组Atari游戏中,上述两种策略效果差异很小,因此选择了更简单的零启动状态策略。

  • 一种可能的解释是,在某些情况下,如果允许一定数量的“burn-in”步骤,RNN趋向于收敛到一个更“typical”的状态,因此在足够长的序列上从一个坏的初始递归状态恢复。
  • 我们还假设,虽然零启动状态策略在大多数完全可观察的Atari域中可能足够,但它阻止了递归网络在更为关键的记忆域(例如在DMLab上)学习实际的长期依赖性。

为了解决这些问题,我们提出并评估了从随机采样的重放序列中训练递归神经网络的两种策略,它们可以单独使用或组合使用:

  • Stored state:
    在回放中存储递归状态,并在训练时使用它初始化网络。这在一定程度上弥补了零启动状态策略的不足,但是它可能会受到“representational drift”的影响,导致“recurrent state staleness”,因为由足够旧的网络生成的存储递归状态可能与由较新版本生成的典型状态大不相同。
  • Burn-in:
    通过仅将重播序列的一部分用于网络展开并产生启动状态,从而允许网络有一个“burn-in period”,而仅在序列的其余部分上更新网络。 我们假设这允许网络从不良的启动状态(零,或已存储但过时的状态)中部分恢复,并在需要产生准确的输出之前发现自己处于更好的初始状态。

在这里插入图片描述
在我们的所有实验中,我们将使用第2.3节中提出的代理架构,回放序列长度为m=80,可选的burn-in前缀为l=40或20步。我们的目的是评估representational drift和recurrent state staleness对网络训练的负面影响,以及不同的训练策略如何减轻它们。为此,我们将比较使用这些策略之一展开时网络在采样重播序列上产生的Q值和在每个步骤使用真实存储的重复状态时产生的Q值(参见图1a,显示了隐藏状态的不同来源)。

定义 o t , . . . , o t + m o_t,...,o_{t+m} ot,...,ot+m为回放的观测序列, h t , . . . , h t + m h_t,...,h_{t+m} ht,...,ht+m为存储的递归状态, h t + 1 = h ( o t , h t ; θ ) h_{t+1}=h(o_t,h_t;\theta) ht+1=h(ot,ht;θ)为递归状态, q ( h t ; θ ) q(h_t;\theta) q(ht;θ)为RNN输出的Q值向量。隐藏状态写为 h ^ t \hat{h}_t h^t,在训练期间使用并根据上述策略之一进行初始化( h ^ t = 0   o r   h ^ t = h t \hat{h}_t=0\ or\ \hat{h}_t=h_t h^t=0 or h^t=ht)。 h ^ t + i = h ( o t + i − 1 , h ^ t + i − 1 ; θ ^ ) \hat{h}_{t+i}=h(o_{t+i-1},\hat{h}_{t+i-1};\hat{\theta}) h^t+i=h(ot+i1,h^t+i1;θ^) o t , . . . , o t + l + m − 1 o_t,...,o_{t+l+m-1} ot,...,ot+l+m1和参数为 θ ^ \hat{\theta} θ^的网络得到。由此,可以看出 Δ Q \Delta Q ΔQ计算的是使用两种hidden-state的更新方式带来的所计算Q值的差值。 θ \theta θ θ ^ \hat{\theta} θ^的差别在于前者是用于产生动作,后者用于训练,不使用 q ( h t ; θ ) q(h_t;\theta) q(ht;θ) q ( h t ^ ; θ ^ ) q(\hat{h_t};\hat{\theta}) q(ht^;θ^)来做差比较是因为二者本来就不同,而都使用 θ ^ \hat{\theta} θ^就能表明二者仅因为训练方式不同的差异。

在这里插入图片描述
在图1b中,可以看出,零开始状态启发式方法会导致递归状态陈旧性对网络输出的严重影响。 在RNN有时间从非典型初始状态恢复后,与第一个序列状态相比,对于最后一个序列状态,此影响大大降低,但是对于零状态,这里的陈旧性的影响仍然比存储状态策略严重得多。纯零状态启发式的另一个潜在缺点是,它防止代理强烈依赖其递归状态并利用长期的时间依赖性。

burn-in策略本身可以部分缓解重播序列初始部分的陈旧性问题,而对后期序列状态的Q值差异没有显著影响。从经验上讲,这转化为显著的性能改进,如图1c所示。这本身是值得注意的,因为纯零状态与burn-in策略之间的唯一区别在于,后者在网络未接收更新的状态前缀上展开网络。我们观察到这不是由于展开长度本身不同引起的(即,在长度为l + m的序列上没有burn-in的零状态策略总体上表现较差)。我们假设burn-in的好处在于,它防止了零状态初始化后最初几个时间步中初始输出的高度不准确所导致的RNN参数的“破坏性更新”。

另一方面,从Q值差异的角度来看,存储状态策略在缓解状态陈旧性方面总体上更加有效,这也导致了经验性能的更清晰和更一致的改进。最后,这两种方法的结合一致地在最后的序列状态上产生最小的差异和最健壮的性能增益。

References:

[1] ICLR2019:R2D2

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值