目录

Experience Replay

Experience Replay(经验回放)是 强化学习 中的一种训练方法,最早由 Lin 在 1992 年的论文《Self-Improving Reactive Agents Based on Reinforcement Learning, Planning and Teaching》中系统提出。其核心思想是:将 Agent 与环境交互产生的历史经验保存到一个 Replay Buffer 中,然后在训练时反复随机采样这些历史经验,而不是只使用当前时刻刚产生的数据。

Experience Replay 后来成为 DQN 等 深度强化学习 算法的重要组成部分。

基本思想

强化学习中的一次交互通常可以表示为:

(s, a, r, s')

其中:

* s:当前状态(State)。 * a:Agent 采取的动作(Action)。 * r:环境给予的奖励(Reward)。 * s':执行动作后的下一状态(Next State)。

Agent 不会直接丢弃这些经验,而是将它们存入 Replay Buffer:

环境交互 → 获得经验 → 存入 Replay Buffer → 随机采样 → 训练网络 → 重复。

为什么需要 Replay

如果每次只使用 Agent 刚刚获得的经验进行训练,会产生严重的问题。

例如 Agent 连续经历:

s₁ → s₂ → s₃ → s₄ → s₅

那么训练数据之间具有很强的时间相关性。

神经网络通常假设训练样本之间具有一定程度的独立性,而连续的强化学习经验往往高度相关。

Experience Replay 通过随机采样历史经验:

s₁、s₄、s₂、s₅、s₃

降低了训练数据之间的相关性,使神经网络训练更加稳定。

Replay Buffer

Replay Buffer(经验回放缓冲区)是保存历史经验的数据结构。

例如:

Replay Buffer = { (s₁, a₁, r₁, s₂), (s₂, a₂, r₂, s₃), (s₃, a₃, r₃, s₄), …… }

训练时从 Buffer 中随机抽取一个 Mini-Batch:

Batch → 神经网络 → 计算 Loss → 反向传播 → 更新参数。

当 Buffer 达到容量上限后,通常会删除较旧的经验,为新经验腾出空间。

随机采样

Experience Replay 最重要的机制是随机采样。

假设 Buffer 中有 100,000 条经验,每次训练随机抽取 64 条:

Replay Buffer → Random Sampling → 64 experiences → Training

这样可以让一个经验被多次使用,同时降低连续经验之间的相关性。

与 DQN 的关系

DQN 是 Experience Replay 最经典的应用之一。

2013 年 DeepMind 的论文《Playing Atari with Deep Reinforcement Learning》将 Experience Replay 与深度神经网络结合,用于训练能够玩 Atari 游戏的 Agent。

2015 年发表的《Human-level control through deep reinforcement learning》进一步系统展示了 DQN 的成果。

DQN 的基本训练过程可以表示为:

环境 → 获得 (s, a, r, s') → Replay Buffer → 随机采样 Batch → 计算 TD Target → 更新 Q Network。

因此,Experience Replay 是经典 DQN 训练稳定性的重要来源之一。

与在线学习的区别

传统在线强化学习可以近似表示为:

当前经验 → 立即训练 → 下一条经验 → 立即训练。

Experience Replay 则是:

当前经验 → 保存 → 继续收集经验 → 随机抽取历史经验 → 训练。

因此,一条历史经验可能被训练多次。

数据复用

Experience Replay 的另一个重要优势是提高数据利用率。

在强化学习中,Agent 与环境交互可能非常昂贵。

例如机器人执行一次动作可能需要真实时间,而游戏 Agent 也可能需要大量环境交互。

如果一条经验只训练一次:

1 次交互 → 1 次训练。

使用 Replay 后:

1 次交互 → 保存经验 → 多次采样 → 多次训练。

因此,Experience Replay 能够提高 Sample Efficiency。

Replay 与 Off-Policy

Experience Replay 与 Off-Policy 强化学习具有天然的联系。

例如 DQN 可以使用过去策略产生的经验训练当前策略。

Buffer 中的经验可能是在较旧的策略下产生的,但当前 Q Network 仍然可以利用这些经验进行学习。

因此:

过去策略产生的数据 → Replay Buffer → 当前策略学习。

这也是为什么 Experience Replay 特别适合 DQN 这类 Off-Policy 算法。

Experience Replay 的问题

Experience Replay 并不是没有缺点。

样本分布变化

随着 Agent 策略不断变化,Replay Buffer 中可能同时存在由不同策略产生的经验。

旧经验

过于 오래的经验可能与当前策略已经不匹配。

采样效率

随机采样意味着重要经验和普通经验被选择的概率相同。

存储成本

大型状态,例如图像,需要占用大量存储空间。

Prioritized Experience Replay

为了解决随机采样的问题,Schaul 等人在 2015 年提出 Prioritized Experience Replay(PER)。

其核心思想是:

重要的经验应该被更频繁地采样。

一个常见指标是 TD Error:

δ = r + γ max Q(s', a') - Q(s, a)

如果某条经验的 TD Error 很大,说明当前模型对这条经验的预测存在较大误差,因此可以提高它被采样的概率。

随机 Replay:

所有经验 → 近似相同概率采样。

Prioritized Replay:

高 TD Error 经验 → 更高采样概率。

这样可以让训练更加集中于当前模型还没有学好的经验。

Replay 与现代强化学习

Experience Replay 最初主要用于值函数方法,例如 DQN。

后来它也被广泛应用于其他 Off-Policy 强化学习算法,例如:

* DDPG * TD3 * SAC

不过,On-Policy 算法通常不能直接使用任意旧经验进行训练,因为它们要求训练数据与当前策略之间具有特定关系。

Experience Replay 的核心意义

Experience Replay 解决了深度强化学习中的两个重要问题:

降低样本相关性

随机抽取历史经验,使训练数据更加接近独立同分布。

提高样本利用率

同一条环境经验可以被模型重复学习。

因此,Experience Replay 可以概括为:

存储经验 → 随机/按优先级采样 → 重复训练。

它是连接 强化学习 与 DNN 训练方法的重要技术,也是 DQN 能够稳定训练的重要基础之一。

相关条目

* 强化学习 * DQN * Off-Policy * Prioritized Experience Replay * Sample Efficiency * DDPG * SAC

参考资料

* Lin, L.-J., 1992, 《Self-Improving Reactive Agents Based on Reinforcement Learning, Planning and Teaching》 * Mnih et al., 2013, 《Playing Atari with Deep Reinforcement Learning》 * Mnih et al., 2015, 《Human-level control through deep reinforcement learning》 * Schaul et al., 2015, 《Prioritized Experience Replay》