【强化学习】Prioritized Experience Replay(2016)

RL最简单的形式是,在单独的更新后就立刻丢弃掉到来的数据。伴随而来的有2个问题:

  1. 强相关的更新打破了随机梯度下降算法的假定
  2. 一些少见的experience可能会在之后有用

经验回放解决了2个问题:

  1. 通过融合一些近期的经验有可能打破相关性
  2. 一些少见的经验会被重复用到

这篇文章主要研究与所有的transition被均匀回放相比,哪种transition被回放可以是的经验回放更加有效。之前有研究表示,一些转换并不是立刻对agent有效的,而是在agent能力增加后才变得有效。经验回放将agent从经历确定顺序的经验中解放出来,优先回放则是将agent从经历的转换频率相同中解放出来。

这种优先性可能会导致多样性的损失,这个可以用随机优化来解决。
也会引入bias(?),这个可以用important sampling来修正。

TD error提供了一个衡量有限性的方式,本文的方法是用了针对model-free RL的一个相似优先算法(?)

TD error已经被用作一个优先机制来确定该关注的地方,例如选择探索地点的时间或者要选择的是什么特征。

监督学习中,有很多处理数据集不均衡的方法,例如re-sampling,under-sampling和over-sampling等(?)。最近有篇论文将re-sampling引入到deep RL的experience replay中,它将经验分为两个部分,一个为了正奖励,一个为了负奖励,如何从两部分中分别选择固定部分去回放。这个办法仅仅适用于存在正负经验的情况。

PRIORITIZED REPLAY

回放机制往往考虑到2个问题:存储哪些经验和选择哪些经验去回放。这篇论文主要解决后者:最有效的利用回放经验来学习

prioritizing with TD-error
优先回放的核心是transition的重要性应该怎么被衡量。表面上看理想的标准应该是智能体可以从一个transition中学到东西的多少,然而这个不能被直接得到,所以可以用transition的TD error来做替代。TD-error表示了transition的unexpected的程度,具体来说,是价值和下一步估计的距离程度,这个方法对于在线RL算法例如SARSA和Q-learning这种已经计算出TD-error的来说是尤其合适的。TD-error在一些情况下可能是poor的估计,例如当奖励存在噪声。

这个算法将上个TD-error随着每个transition存在replay memory中。新的transition到达的时候没有已知的TD-error,所以我们把这些transition放在最大优先处,为了保证所有的经历可以被回放最少一次。

Stochastic Prioritization

然而greedy TD-error(为什么叫greedy)优先存在一些问题。

  1. 为了避免费时的在整个replay memory中横扫,TD-error仅仅更新被回放的transition。后果就是有着低的TD-error的transition可能在很长时间不会被回放。
  2. 对于噪声是敏感的(例如当奖励是随机的情况下),当估计误差作为噪声源头出现的时候,情况会被恶化。
  3. greedy优先主要关注那些误差衰减慢的经验,意味着哪些在最开始又着高误差的transition可以被频繁回放(中途td-error不更新?)从而会形成过拟合。

定义采样transition i的概率为:
在这里插入图片描述
P_i是transition i的有限性,elpha表示多大的优先性被用到。Elpha=0就相当于一般的均匀采样。
1.proportional variant
在这里插入图片描述
是一个小的正数,为了防止出现当error为0的情况下,transition不会被选中。
2.Rank-based variant
在这里插入图片描述
rank(i) 是当replay memory被存储时transition i的排序。

第二种情况可能更加鲁棒,因为它对输出不敏感。(但是代码里面都是第一种方法)和均匀采样相比,两种情况都会导致速度增加。

proportional variant是不同的,它是基于sum-tree结构(每个节点都是子节点的总和,priorities作为leaf nodes)。

【强化学习】Prioritized Experience Replay(2016)_第1张图片

Annealing the bias

在随机更新下的expected value的估计依赖于和它的期望又着相同的分布的更新(??)。优先回放引入了bias,是因为它以一种不被控制的形式改变了分布,因此改变了将要收敛到的结果(即使策略和状态的分布是固定的)。因此可以用important-sampling(IS)weights来修正bias:
在这里插入图片描述
为了确保稳定性,通常通过1/max_i (w_i) 归一化权重。

在强化学习场景中,训练后期接近收敛的过程中,更新的无偏低特征是非常重要的,因为进程一直是高度不稳定的。假设一个小的bias可以被忽略,因此探索了随着时间变化,IS的大小修正的影响。实验过程中线形的将beta从初始状态beta_0增加到1。Beta的变化和alpha是相关的。在增加优化样本的同时又修正了它。

Is还有一个优点,当在非线性函数拟合器(eg:dnn)中和prioritized replay结合的时候,大步长可能是不利的,因为梯度的first-order(?)更新仅仅是局部可靠的,所以需要用更小的步长。在本文替代的方法中,priorization可以确保高error的transitions被回放多次,同时IS修正减小了梯度的大小。

你可能感兴趣的:(强化学习)