经验回放 (Experience Replay) 是强化学习中的一个重要技巧,可以提高稳定性和样本效率。
具体来说,经验回放将智能体与环境每一次交互产生的四元组 存储在经验回放缓存 (Replay Buffer) 中。缓存中只保留最近的 条数据,当缓存满时,新的数据会覆盖最旧的数据。在训练时,智能体从缓存中随机采样一批数据,用于更新神经网络参数。
经验回放的优势在于:
- 打破了序列的相关性,从而提高了稳定性。在智能体收集策略时,相邻的两个四元组具有很强的关联性,这会导致神经网络的训练不稳定。从经验回放中采样的数据的相关性较小,可以提高训练的稳定性。
- 通过重复利用历史数据,提高了样本效率。
需要注意的是,并不是所有强化学习方法都可以与经验回放结合。缓存中的经验是由过时的行为策略收集的,不同于当前行为策略或目标策略。经验回放通常与离策略算法结合,例如DQN。
优先经验回放
优先经验回放 (Prioritized Experience Replay) 是经验回放的一种改进版本,通过优先级采样来提高样本效率。具体来说,优先经验回放会根据每个经验的重要性来调整采样概率,重要性通常由 TD 误差的绝对值来衡量。这意味着评估误差越大,重要性越高,被采样的概率越大。
缓存中 TD 误差的更新
在具体实现中,缓存中的 TD 误差 是使用多步之前的过时的估计器计算的。我们当然不可能在每次更新时都重新计算所有的 TD 误差。在每次取出样本后,我们需要计算这部分样本 TD 误差以进行梯度更新,该 TD 误差恰好可以用来更新这些样本的优先级。
对于 TD 误差 ,有两种常见的抽样方式:
- ,其中 是一个很小的常数,用于确保每个经验都有一定的概率被采样
- 对 进行降序排列,然后
由于抽样是非均匀的,需要通过学习率上的调整来保证梯度更新是无偏的。样本 上的学习率 可以被调整为
其中 是全局学习率, 是缓存中的经验数量, 是一个超参数。
高抽样概率和低学习率的作用抵消了吗?
有的读者可能会问,如果样本 很重要,那么它的高抽样概率与低学习率是否会抵消,导致优先经验回放实际上并没有起到作用?实际上并不是,因为下面两种情况并不是等价的:
- 设置学习率为 ,计算一次梯度并更新一次参数
- 设置学习率为 ,计算十次梯度并更新十次参数
在第二种情况下,梯度的方向可能会有所不同,因为参数在每次更新后都会发生变化。