参考:https://blog.csdn.net/taoyafan/article/details/91909380
经验回放让在线强化学习agent记忆和重用过去的经验。在先前的研究中,经验转换是从重放记忆中均匀随机取样的。然而,这种方法只是简单地以最初经历的相同频率重放转换,而不管其重要性如何。在该论文中,他们开发了一个优先经验排序的框架应用在DQN算法中 ,研究应该优先安排哪些经验重放(以及如何这么做)使得agent更有效率地学习,并与原本的DQN算法在Atari 2600游戏内效果进行对比,结果表明采用优先经验回放会使算法表现更好。
在Prioritized Experience Replay之前DQN采用的是随机均匀采样的经验回放,进而用来进行TD目标的计算以及参数的更新;也就是说在经验回放池中所有的样本都是同等重要,不管这份样本对训练的实际效果如何,都是有相同的概率被取样。
但是可以发现,经验回放池中不同的样本其TD误差不同;而TD误差越大,则在反向传播中对网络权重的修改也会越大,TD误差越小,则对反向梯度的影响也越小;在DQN中,TD误差就是目标网络计算的目标Q值与当前网络计算的Q值之差。考虑到便于收敛,因此选择用TD误差来衡量每个样本的重要性,但论文也指出在某些情况下,TD误差可能是较差的估计。
首先说明,当使用优先经验重放时会造成两个问题:样本多样性丢失与引入偏差。
而论文也分别采用了两个方法:随机优先方式和重要性采样权重,来解决上述的问题。
这里先介绍贪婪优先采样方法(greedy TD-error prioritization),假设经验回放采用贪婪策略根据TD误差进行采样,即对经验回放池中的所有样本根据TD误差设置优先度,TD误差越大则优先度越高,然后在每次采样的时候选取优先度最大的N个样本;同时对每个最新获得的样本设置最大优先度,保证每个样本都能至少训练一次,在训练时再更新一批样本的TD误差。
贪婪的优先采样方法每次选择TD误差最大的样本,这会导致几个问题:
为了解决贪婪采样带来的上述问题,论文提出一种介于贪婪优先采样与随机均匀采样直接的随机优先采样方法,保证每个样本基于其优先度拥有一个不为零的采样概率,即使是最低优先度的样本。论文定义采样概率公式如下:
p i p_i pi为样本 i i i的优先度, α \alpha α决定使用多少优先级, α = 0 \alpha=0 α=0对应无优先抽样。
并且文中对样本优先度的表示提出了两个公式:
p i = ∣ δ i ∣ + ϵ p_i=\vert \delta_i \vert+\epsilon pi=∣δi∣+ϵ,其中 ϵ \epsilon ϵ作为正数来确保当 ∣ δ i ∣ \vert \delta_i \vert ∣δi∣为0时概率不为零。
该变式基于“sum-tree”数据结构实现,每个节点都是它的children的和,而优先度作为叶节点。(具体如何实现没看)
p i = 1 r a n k ( i ) p_i=\frac1{rank(i)} pi=rank(i)1, r a n k ( i ) rank(i) rank(i)是样本 i i i根据 ∣ δ i ∣ \vert \delta_i \vert ∣δi∣进行排序时的等级。在这种情况下,概率P为参数 α \alpha α的指数分布。
为了使复杂度不依赖于回放池大小N,有效地进行采样,该变式采用分层采样形式实现。首先将回放池根据优先度大小单调排序,并用具有k个等概率段的分段线性函数来近似累计概率密度函数将回放池分为k个等概率区间,运行时选取其中一段并均匀选取一个样本。当与minibatch结合时更为有效:选择k作为小批量的大小,并从每一段中选取一个样本;这样就可以采样到所有层次 ∣ δ i ∣ \vert \delta_i \vert ∣δi∣的样本。(可以理解为在速度与样本多样性之间的折中)
这两个变式都是对 ∣ δ i ∣ \vert \delta_i \vert ∣δi∣单调,但是后者相比要更加健壮,因为其对异常值不敏感
采用随机更新的期望值的估计依赖于那些更新和期望的分布相同,而优先重放改变了更新的分布,因此也改变估计最终收敛的的解,即引入偏差(bias);论文提出重要性采样(IS)权重的方法来纠正这一偏差,其中权重公式为:
w i = ( 1 N ⋅ 1 P ( i ) ) β w_i=(\frac1N \cdot \frac1{P(i)})^\beta wi=(N1⋅P(i)1)β
β = 1 \beta=1 β=1时可以完全补偿非均匀采样概率。
该权重 w i w_i wi通过将Q-learning更新公式中的 δ i \delta_i δi取代为 w i δ i w_i\delta_i wiδi起到修正作用;而出于稳定性考虑,论文选择用 1 max i w i \frac1{\max_i w_i} maxiwi1权重系数标准化,使得它们只能向下缩放更新。
在经典的强化学习场景中,更新的无偏性在训练结束接近收敛时最为重要,因为由于策略、状态分布、和自举目标的变化,该过程无论如何都是高度非平稳的。论文通过定义一个指数 β \beta β在结束时达到1的时刻表,来发挥重要性采样随时间的修正量的退火灵活性。实践上会从初始值 β 0 \beta_0 β0线性退火到1。
采用非线性参数逼近(如深度神经网络)与优先重放结合时,重要性采样还有另一个好处(看不太懂):
经验回放使得大部分与环境交互的操作可以由内存与计算来代替,降低了学习的代价。(优点)
proportional变式与rank-based变式在实验中效果相似,推测实验中进行的剪枝操作剪去了许多异常值,使得proportional效果没有降低。(理论层面作者认为rank-based效果要更好)
后续可研究方向:优先监督学习、off-policy的重放、对探索的反馈以及优先记忆。
总结:该论文提出一种提高经验回放效率的技术,并设计了能够拓展到大规模回放的实现,发现优先回放可以将速度提升为2倍。
疑问:回放的经验,其TD-error会改变吗?换句话说,如果一个经验回放多次,每次的TD-error都不一样吗?如果不一样,那么基于rank的优先回放在每轮抽样时都需要计算全部经验的TD-error?如果是,我认为该方法的代价就比想象中要大的多了。