PRIORITIZED EXPERIENCE REPLAY

ICLR 2016

  经验回放使得 online reinforcement learning agent 能够记住并且回放过去的经验。在先前的工作中,从回放记忆中随机的采样 experience transitions。但是,这种方法简单的在同一频率 回放 transitions,而不管其意义。本文提出了一种方法能够实现优先回放,能够更加高频的回放重要的 transitions,从而实现更加高校的学习。我们在 DQN 上使用优先经验回放,取得了更加有效的结果。

  online RL agent 当观察到一系列的经验时,增量的更新其参数。最简单的形式,即:在更新之后,他们立刻扔掉到来的数据。这种做法有两个问题:

  a. 强烈的相关更新操作破坏了许多流行的 基于随机梯度的算法;

  b. 快速的忘记可能稀缺的经验,但是后面可能还要用得上这个经验。

  Experience Replay 解决了上述问题:在一个 回放单元中存储 experience,通过混合或多或少的最近的经验来更新就有可能破坏 temporal correlation,rare experience 将会被用来不止一次更新。这就被用在 NIPS2013 和 Nature 2015的论文中,特别地,DQN 利用一个大的滑动窗口回放单元,随机的从中均匀采样,平均重复访问一个 transition 8次。总的来讲,experience replay 可以大量的降低需要去学习的经验,而是用更多的计算和更多的memory来替换--- which are often cheaper resources than the RL agent's interactions with its environment.

  : a transition 是 agent在环境中的一次交互的原子操作,即:$ (state S_{t-1}, action A_{t-1}, reward R_t, discount t, next state S_t)$.

  

  Prioritized Replay

  1. A Motivating Example

  设计这么一个优先回放功能,涉及到两个层次,即:选择哪些进行存储,另外就是选择哪些进行回放?本文主要是研究后者的,如何最有效的利用回放功能进行学习?

  如上图所示,本文给出了一个例子来充分的说明优先的潜在好处。引入了称为“Blind Cliffwalk”的环境,来示例说明当奖赏非常 rare的时候,探索所遇到的挑战。假设仅有 n 个状态,这个环境就要求足够的随机步骤知道得到第一个非零奖励;确切的讲,随机的选择动作序列就会有 $2^{-n}$的概率才能得到第一个非零奖赏。此外,最相关的 transitions 却藏在大量的失败的尝试当中。

  

  本文利用这个例子来 highlight 两个 agents的学习次数的不同。可以看到这两个 agent 都从同一个 回放单元中去获取Q-learning的更新,第一个agent 随机均匀的回放 transitions,第二个唤醒一个 oracle 来进行优先转移。这个 oracle 贪婪的选择使得在当前状态下最大化的降低全局损失的 transitions。从上图右侧的图可以看出,按照一定优化序列得到的转移 比 随机均匀采样要花费很少的尝试步骤,这明显的提升了训练的速度。

  2. Prioritizing TD-Error

  优先回放的一个中心成分是评判优先的准则:衡量每一个转移 transitions 的重要性。一个理想的标准是当前状态下,RL agent 能够学习到的量,也就是期望的学习过程。但是这个标准并不能直接访问到,一个比较合理的代理,能够表示重要性的另一个衡量是:一个 transitions 的 TD error $\delta$ 的规模,来表示该转移的惊奇度 或者 出乎意料的程度:How far the value is from its next-step bootstrap estimation. 这非常适合增量的,在线 RL 算法,比如:SARSA 或者 Q-learning,已经计算 TD-error 并且 更新和 $\delta$成比例的参数。但是有些情况下, TD-error 仍然是非常差的预测,例如:当奖励非常 noisy的时候。

  为了说明通过 TD-error 优先回放的有效性,我们对比了 uniform 和 oracle baselines 在 Blind Cliffwalk 上的“贪婪 TD-error prioritization”算法。该算法存储了在回放单元中每次转移之后,最后遇到的 TD error 。将最大绝对值 TD误差的转移从 memory 中进行回放。然后对该转移进行 Q-learning的更新,更新和 TD error 的权重。新的转移到来之后,没有已知的 TD-error,所以我们将其放到最大优先级的行列,确保所有的 experience 至少回放一次。

  关于这样做的好处,从下图可以看出, oracle 的做法可以极大的降低无用的尝试,加速了算法的执行速度。

  3. Stochastic Priorization

  然而,贪婪的 TD-error 优先 有几个问题:

  首先,为了避免在整个回放单元中扫描而带来的计算代价,TD 误差仅仅更新被回放的转移。这个带来的一个后果就是:带有低 TD error的转移在第一次访问时可能很长时间不会被回放(which means effectively never with a sliding window replay memory)。

  此外,对 noise spikes 非常敏感,bootstrapping 会加剧该现象,估计误差又会成为另一个噪声的来源。

  最终,贪婪优先集中于 一个小的经验子集,误差收缩的很慢,特别是使用函数估计的时候,意味着初始的高误差转移被经常回放。缺乏多样性使得该系统倾向于 over-fitting。

  

  为了解决上述问题,我们引入了一个随机采样的方法,该方法结合了 纯粹的贪婪优先 和 均匀随机采样。我们确保被采样的概率在转移优先级上是单调的,与此同时,确保最低优先级的转移的概率也是非零的。具体的,我们定义采样转移 i 的概率为:

  其中,pi 是转移 i 的优先级。指数 $\alpha$ 决定了使用多少优先级,当 $\alpha$ 等于 0 的时候是均匀的情况。

  第一种变体就是直接的,成比例的优先;

  第二种是间接的,基于排行的优先级,pi = 1/rank(i),其中 rank(i)是回放单元根据误差排行的转移 i 的排行。

  两个分布都是随着误差单调的,但是后者更鲁棒,因为其对离群点不敏感。两个变体相对均匀的baseline来讲都是有很大优势的,如上图右侧所示。

  4. Annealing The Bias

  利用随机更新得来的期望值的预测依赖于这些更新,对应其期望的同样的分布。优先回放引入了误差,因为它以一种不受控的形式改变了分布,从而改变了预测会收敛到的 solution(即使 policy 和 状态分布都固定)。我们可以用下面的重要性采样权重来修正该误差:

  在经典的强化学习的场景下,更新的无偏性是训练最后接近收敛最重要的部分,因为这个过程是高度非静态,由于变化的策略,状态分布和引导目标;我们假设小的偏差可以忽略。

  本文将优先回放和 Double Q-learning 相结合,就是将 均匀随机采样 替换为 本文提出的 随机优先和重要性采样方法,具体算法见下图:

  

  

  

论文阅读之:PRIORITIZED EXPERIENCE REPLAY的更多相关文章

  1. (zhuan) Prioritized Experience Replay

    Prioritized Experience Replay JAN 26, 2016 Schaul, Quan, Antonoglou, Silver, 2016 This Blog from: ht ...

  2. 强化学习中的经验回放(The Experience Replay in Reinforcement Learning)

    一.Play it again: reactivation of waking experience and memory(Trends in Neurosciences 2010) SWR发放模式不 ...

  3. 【深度强化学习】Curriculum-guided Hindsight Experience Replay读后感

    目录 导读 目录 正文 Abstract[摘要] Introduction[介绍] 导读 看任何一个领域的文章,一定要看第一手资料.学习他们的思考方式,论述逻辑,得出一点自己的感悟.因此,通过阅读pa ...

  4. 论文阅读(Xiang Bai——【PAMI2017】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition)

    白翔的CRNN论文阅读 1.  论文题目 Xiang Bai--[PAMI2017]An End-to-End Trainable Neural Network for Image-based Seq ...

  5. BITED数学建模七日谈之三:怎样进行论文阅读

    前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读. 大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进 ...

  6. 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  7. 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  8. Deep Reinforcement Learning for Dialogue Generation 论文阅读

    本文来自李纪为博士的论文 Deep Reinforcement Learning for Dialogue Generation. 1,概述 当前在闲聊机器人中的主要技术框架都是seq2seq模型.但 ...

  9. 论文阅读笔记 Word Embeddings A Survey

    论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...

随机推荐

  1. 苹果推送APNS自己总结

    开发状态服务器地址 gateway.sandbox.push.apple.com 2195 产品状态服务器地址 gateway.push.apple.com         2195 Developm ...

  2. 统计一段文字中出现频率最高的10个单词(c语言)

    注:这次使用C语言做的这个程序.个别不懂的地方和算法部分是请教的其他同学,交流并吸收,所以收获颇多! 在程序中每一个地方我都做了注释,方便同学之间交流.也让老师容易看.程序也有很多不足的地方,但限于本 ...

  3. 提交自己的插件包(package)

    安装 把下列命令粘贴到终端上: mkdir -p ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins; curl -L htt ...

  4. 《Java7中 下划线的新特性》

    //Java7引入了一个新功能:程序员可以在数值中使用下画线,不管是 //整形数值,还是浮点型数值,都可以自由地使用下划线.通过下划线 //分隔,可以更直观的分辨数值中到底有多少位. public c ...

  5. 模拟http或https请求,实现ssl下的bugzilla登录、新增BUG,保持会话以及处理token

    1.增加相应httpclient 需要的jar包到工程,如果是maven工程请在pom.xml增加以下配置即可: <dependency> <groupId>org.apach ...

  6. Windows 7下安装部署NodeJs

    第一步  安装NodeJs http://nodejs.org/download/ 下载windows版本的msi文件,双击进行安装即可.安装完毕,默认安装路径为C:\Program Files\no ...

  7. Inno Setup 在安装程序开始前和卸载程序开始前,检查并关闭运行的进程

    (2011-12-29 11:54:56) 转载▼ 标签: innosetup it 分类: 开发工具经验累积 Inno Setup在安装程序前,如果有使用的进程在运行,会有错误提示,而使得Insta ...

  8. [转]在Windows中配置Rsync同步

    在Windows中配置Rsync同步 Rsync是一款不错的文件免费同步软件,可以镜像保存整个目录树和文件系统,同 时保持原来文件的权限.时间.软硬链接.第一次同步时 rsync 会复制全部内容,下次 ...

  9. magento安装以及搬家的注意事项

    如果你的空间可以用ssh的话,你可以在官网的wiki Moving Magento To Another Server 中看到较为详细的搬家过程. 无论你的服务器是linux系统还是windows系统 ...

  10. 高级iOS开发工程师的面试题

    1:CALayer与UIView的区别是什么? 两者最大的区别就是:涂层不会直接渲染到屏幕上: UIView是iOS界面元素的基础,所有界面元素都是继承于它,他的本身全是由CoreAnimation来 ...