主题
经验回放为什么有效:相关样本与灾难性遗忘演示
演示在做什么
强化学习的数据来自智能体自己的轨迹:相邻时刻的状态非常相似,而且一段时间内只覆盖状态空间的一小块。这里用一个一维回归问题模拟这种情况:输入
- 无回放:每一步用最近 32 个连续样本训练——数据高度相关,梯度只关心当前区域,网络会“覆盖掉”对远处区域的拟合(灾难性遗忘)。
- 经验回放:把样本存进容量为
的先进先出缓冲区,每一步从中均匀随机抽 32 个——批次近似独立同分布,网络能同时兼顾整个区间。
DQN 里还有第二个原因:回放让每个样本被重复使用多次,提高了样本效率。
可以试试
- 开始训练后观察红色曲线:竖线扫到哪里,哪里就拟合得好,刚离开的区域很快变形;误差曲线随轨迹来回周期性起伏。
- 把缓冲区容量调到 32 或 64:经验回放也开始遗忘。容量至少要覆盖一整趟轨迹才有效。
- 把“来回一趟的步数”调大:数据相关性更强,无回放的遗忘更严重。