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. iphone获取当前流量信息

    通过读取系统网络接口信息,获取当前iphone设备的流量相关信息,统计的是上次开机至今的流量信息. 代码 悦德财富:https://yuedecaifu.com 1 2 3 4 5 6 7 8 9 1 ...

  2. (转)js函数参数设置默认值

    原文:http://www.cnblogs.com/RightDear/archive/2013/06/26/3156652.html js函数参数设置默认值   php有个很方便的用法是在定义函数时 ...

  3. fix eclipse gc overhead limit exceeded in mac

    fix eclipse gc overhead limit exceeded: 在mac上找不到eclipse.ini文件编辑内存限制,在eclipse安装目录右击eclipse程序,选“显示包内容” ...

  4. hdu 2056

    ps:    - -惭愧...是套用一个大神的计算方法来做的.....下面是代码 代码: #include "stdio.h"#include "stdlib.h&quo ...

  5. 解决:Android编译源码根目录下/system/vold后,通过push命令将编译生成的vold文件push至system/bin下无法正常开机

    这段时间由于工作需要,在对android根目录下/system/vold进行修改编译的时候,在通过adb命令将vold文件push至/system/bin目录下,adb reboot重启手机却发现一直 ...

  6. BZOJ 3260 跳

    YY一下发现答案基本上就是(n+1)+ΣC(n+i,i),其中i=1...m. 然后发现后面每一项可以递推,只要处理1..m的逆元就好了. 这题很容易爆long long,每一步都要取模. #incl ...

  7. susy 学习之进阶

    由于现在对susy的教程有限,只有官网指南性质的文档,然后就是w3cplus对她的翻译,所以我从零安装susy并调试项目到与从github上克隆susy项目同时进行,主要是为了参考susy放在git上 ...

  8. codeforces 707D-(DFS+bitset)

    题目链接:http://codeforces.com/contest/707/problem/D 根据询问建立一棵树然后DFS. #include<bits/stdc++.h> using ...

  9. EnterpriseLibrary4 自己封装程序集实现log打印

      注意:1)要引用响应的程序集,必须是41的          2)配置文件 using Microsoft.Practices.EnterpriseLibrary.Common.Configura ...

  10. Unity3D ShaderLab 使用BlinnPhong高光类型

    Unity3D shaderLab 使用BlinnPhong高光类型 上一篇我们实现了自定义高光类型,这一篇,我们说Blinn高光,它是另一种计算和估算高光更高效的方式,它是通过视线防线和光线方向,所 ...