RECURRENT EXPERIENCE REPLAY IN DISTRIBUTED REINFORCEMENT LEARNING (R2D2)
R2D2采用了分布式框架和LSTM,作为model-free方法在Atari上实现了SOTA的效果。文章的主要贡献在于两个点:一是讨论了一下加入RNN之后对于强化学习的MDP时间序列训练方法的问题;另一个是自身的分布式较大规模训练框架。
文章目录
- 1. Introduction
- 2. BACKGROUND
- 2.1. REINFORCEMENT LEARNING
- 2.3. THE RECURRENT REPLAY DISTRIBUTED DQN AGENT
- 3. TRAINING RECURRENT RL AGENTS WITH EXPERIENCE REPLAY
- References:
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)。
- SSS是状态集合;
- AAA是行为集合;
- R:S×AR:S\times AR:S×A是奖励函数;
- T:S×AT:S\times AT:S×A是状态转换函数;
- Ω\OmegaΩ是agent可能接收到的观测的集合;
- OOO是观察函数,将状态(未观察到)映射到观察值上的概率分布。
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=ηmaxiδ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,显示了隐藏状态的不同来源)。
定义ot,...,ot+mo_t,...,o_{t+m}ot,...,ot+m为回放的观测序列,ht,...,ht+mh_t,...,h_{t+m}ht,...,ht+m为存储的递归状态,ht+1=h(ot,ht;θ)h_{t+1}=h(o_t,h_t;\theta)ht+1=h(ot,ht;θ)为递归状态,q(ht;θ)q(h_t;\theta)q(ht;θ)为RNN输出的Q值向量。隐藏状态写为h^t\hat{h}_th^t,在训练期间使用并根据上述策略之一进行初始化(h^t=0orh^t=ht\hat{h}_t=0\ or\ \hat{h}_t=h_th^t=0 or h^t=ht)。h^t+i=h(ot+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+i−1,h^t+i−1;θ^)由ot,...,ot+l+m−1o_t,...,o_{t+l+m-1}ot,...,ot+l+m−1和参数为θ^\hat{\theta}θ^的网络得到。由此,可以看出ΔQ\Delta QΔQ计算的是使用两种hidden-state的更新方式带来的所计算Q值的差值。 θ\thetaθ和θ^\hat{\theta}θ^的差别在于前者是用于产生动作,后者用于训练,不使用q(ht;θ)q(h_t;\theta)q(ht;θ)和q(ht^;θ^)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
RECURRENT EXPERIENCE REPLAY IN DISTRIBUTED REINFORCEMENT LEARNING (R2D2)相关推荐
- DDPG:CONTINUOUS CONTROL WITH DEEP REINFORCEMENT LEARNING
CONTINOUS CONTROL WITH DEEP REINFORCEMENT LEARNING 论文地址 https://arxiv.org/abs/1509.02971 个人翻译,并不权威 T ...
- 看DeepMind如何用Reinforcement learning玩游戏
看DeepMind如何用Reinforcement learning玩游戏 说到机器学习最酷的分支,非Deep learning和Reinforcement learning莫属(以下分别简称DL和R ...
- 《DISTRIBUTED PRIORITIZED EXPERIENCE REPLAY》强化学习论文笔记
原文下载链接 abstract 本文提出了一种用于大规模深度强化学习的分布式架构,可以使agent能够从比以前数量级更多的数据上更有效地学习.该算法将行为与学习解耦,多个分布式actor与环境进行交互 ...
- 深度强化学习综述论文 A Brief Survey of Deep Reinforcement Learning
A Brief Survey of Deep Reinforcement Learning 深度强化学习的简要概述 作者: Kai Arulkumaran, Marc Peter Deisenroth ...
- 纯干货-5Deep Reinforcement Learning深度强化学习_论文大集合
本文罗列了最近放出来的关于深度强化学习(Deep Reinforcement Learning,DRL)的一些论文.文章采用人工定义的方式来进行组织,按照时间的先后进行排序,越新的论文,排在越前面.希 ...
- 18 Issues in Current Deep Reinforcement Learning from ZhiHu
深度强化学习的18个关键问题 from: https://zhuanlan.zhihu.com/p/32153603 85 人赞了该文章 深度强化学习的问题在哪里?未来怎么走?哪些方面可以突破? 这两 ...
- DQN-[Playing Atari with Deep Reinforcement Learning]
论文地址:https://arxiv.org/abs/1312.5602 Abstract 作者提出了第一个深度学习模型,成功地利用强化学习从高维感知输入中学习控制策略.该模型是一个卷积神经网络,用 ...
- Traffic light control using deep policy-gradient and value-function-based reinforcement learning
ISSN 1751-956X 作者:Seyed Sajad Mousavi1 , Michael Schukat1, Enda Howley 黄生词 蓝牛句 绿公式 红生涩 Abstract: Re ...
- 《Deep Reinforcement Learning for Autonomous Driving: A Survey》笔记
B Ravi Kiran , Ibrahim Sobh , Victor Talpaert , Patrick Mannion , Ahmad A. Al Sallab, Senthil Yogama ...
最新文章
- java序列化和RMI
- PSVR开发者需要了解的9件事
- Oralce中备份,还原数据库
- Permission denied (publickey). fatal: Could not read from remote repository.
- pycharm显示全部数据_PyCharm第一次安装及使用教程
- 互联网晚报 | 3月11日 星期五 |​ ​​商汤科技在深圳成立新公司,;微信支付电子小票上线...
- 【Java】深入剖析Java输入输出的那些细节
- 飞鸽传书就不去袭击你们了
- 有了这个告警系统,DBA提前预警不是难题
- mybatis_05动态SQL_if和where
- 剑指offer值二叉树的下一个结点
- Scala学习笔记(二)表达式和函数
- php 日期 星期_php日期如何转星期
- P2799国王的魔镜
- xrd连续扫描和步进扫描_XRD样品制备与分析
- win10电脑任务栏右侧小图标消失解决方法
- html网页设计的难点,在做设计与制作网页中主要难点是什么?
- 通过 purge_relay_logs 自动清理relaylog
- 给C盘减肥,让电脑飞一般速度
- r 选取从小到大的数据_r 选取表格的一列数据库