论文链接:https://arxiv.org/pdf/1511.05952.pdf
经验回放(Experience replay)让在线强化学习代理记住和重复使用过去的经验。在之前的工作中,experience replay 是均匀随机取样。然而,这种方法不考虑样本的重要性。Prioritized DQN 使用了一个优先级经验的框架,以便更频繁地使用重要性高的样本,从而更有效地学习。
1)使用 TD 误差的优先级
回放的优先级的核心是衡量每个 transition 的重要性的标准。
这里使用 TD-error δ \delta δ 来规定优先学习的程度。如果 δ \delta δ 越大, 就代表我们的预测精度还有很多上升空间, 那么这个样本就越需要被学习,也就是优先级越高。通过存储 transition,及其每次回放更新得到的最新的 TD-error,将 TD-error 绝对值最大的 transition 从 memory 中进行回放。然后对该 transition 进行 Q-learning 的更新,并根据 TD-error,更新其优先级。而对于没有已知 TD-error 的新进入 memory 的 transition,将其放到最大优先级的行列,以确保所有的经验至少被回放一次。
2)随机优先级
然而,贪婪的 TD-error 优先级有几个问题:
- 为了避免对整个回放内存进行扫描,TD-error 只针对需要回放的 transitions 进行更新,这导致在第一次访问时,TD-error 较低的 transitions 可能在很长一段时间内不会回放。
- 对噪声峰值很敏感。
- 贪婪的 TD-error 优先级只关注经验的一个小子集,最初的高 TD-error 的 transitions 会频繁的重复出现,这种多样性的缺失容易使系统过拟合。
为了解决上面的问题,引入了随机抽样方法,介于贪婪优先级和均匀随机抽样之间。需要确保被采样的概率在 transition 优先级中是单调的,同时保证最低优先级的 transition 的概率是非零的 。定义采样 transition i 的概率为:
其中,
p
i
>
0
p_i>0
pi>0 表示 transition i 的优先级,指数
α
\alpha
α 决定使用多少优先级,等于 0 时对应均匀分布。
p i p_i pi 变量的有两种方法:
- 比例优先级: p i = ∣ δ i ∣ + ϵ p_i=|\delta_i| + \epsilon pi=∣δi∣+ϵ 。 ϵ \epsilon ϵ 用来防止 transitions 的 TD-error 为 0 后不再被回放。
- 基于排名的优先级: p i = 1 / r a n k ( i ) p_i=1/rank(i) pi=1/rank(i) 。rank(i) 是 transition 根据它的 ∣ δ ∣ |\delta| ∣δ∣ 在 replay memory 中的排名。这种方法对异常值更加不敏感,因此更为鲁棒。
3)消除偏差,引入重要性抽样
优先级回放引入了偏差,因为它以一种不受控制的方式改变了这种分布,因此改变了估计将收敛到的结果。通过使用重要性抽样(IS)权值来修正这种偏差:
Q-learning 算法更新中的
δ
i
\delta_i
δi 替换为
w
i
δ
i
w_i \delta_i
wiδi 。考虑稳定性,使用
1
/
m
a
x
i
w
i
1/max_iw_i
1/maxiwi 将其正则化。