Experience Replay 与 Target Network
DQN 的两项核心稳定化机制。
学习目标
- 分别处理样本相关与目标漂移,避免把两种稳定化机制混为一谈。
- 独立复核“软更新只是移动目标,不是一次完整复制”的输入、计算和解释。
- 硬同步会一次复制为 10,软更新只移动一部分。
为什么重要
分别处理样本相关与目标漂移,避免把两种稳定化机制混为一谈。
学习前需要掌握
背景与问题
连续采集的相邻图像高度相似,而 Q 网络每次更新还会改变下一批目标。直接按时间顺序追逐这些目标,既可能浪费样本,又容易让估计发生正反馈;replay 和目标网络从不同方向缓解问题。
概念定义
经验回放保存状态、动作、奖励、后继与终止信息,训练时抽样复用。目标网络是在线网络的延迟副本,构造较缓慢变化的 bootstrap 目标。它们常配合使用,但一个改变数据采样,另一个改变目标更新速度。
直观理解
Replay 像把不同日期的练习题混在一起复习;目标网络像阶段性固定参考答案。混题不保证每题都正确,固定答案也不保证答案永远适合当前阶段。
核心原理
缓冲区容量和采样方式决定训练看见的新旧数据比例。过小缓冲仍高度相关,过旧数据可能和当前状态分布差异很大;on-policy 算法不能不加处理地套用任意旧回放。
目标网络可定期硬复制,也可软更新。若软更新式写成 target=(1−τ)target+τ online,τ 越小变化越慢;不同库可能对 Polyak 系数使用相反命名,必须看公式。
目标计算一般停止梯度。真正终止与纯截断仍需分别处理,自动重置时还要保存结束前后继观察;replay 里错误的数据边界会在每次重放时重复放大。
数学表达
目标参数软更新
本页 τ 为在线参数混合比例,不能只凭变量名对照其他实现。
变量含义
θ在线网络参数θ̄延迟目标网络参数τ在线参数混合比例
计算步骤
- 1旧目标贡献为 0.9×2=1.8。
- 2在线参数贡献为 0.1×10=1。
- 3新目标为 2.8,仍明显滞后于在线参数 10。
代码对应位置
示例 1软更新只是移动目标,不是一次完整复制:软更新后目标参数由 2.000 变为 2.800。
变量解释
| 变量 | 含义 |
|---|---|
θ | 在线网络参数 |
θ̄ | 延迟目标网络参数 |
τ | 在线参数混合比例 |
完整数值示例
软更新只是移动目标,不是一次完整复制
已知条件
- 在线参数为 10,旧目标参数为 2。
- 使用 target=(1−τ)target+τ online,τ=0.1。
计算步骤
- 旧目标贡献为 0.9×2=1.8。
- 在线参数贡献为 0.1×10=1。
- 新目标为 2.8,仍明显滞后于在线参数 10。
计算结果
软更新后目标参数由 2.000 变为 2.800。
处理前后对比
- 硬同步会一次复制为 10,软更新只移动一部分。
- 该标量例说明参数更新,不直接给出策略性能。
计算与实现步骤
- 写 buffer
- 均匀或优先采样
- 计算 target
- 优化 online
- 硬/软更新 target
代码实现
示例 1
软更新只是移动目标,不是一次完整复制
example_01.py用途:软更新后目标参数由 2.000 变为 2.800。
online, target, tau = 10.0, 2.0, 0.1
target = (1 - tau) * target + tau * online
print(f"online={online:.3f}, target={target:.3f}")代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
软更新后目标参数由 2.000 变为 2.800。
Step 1 · 1–3 行
输出中间参数、形状或最终指标,用于核对代码是否符合预期。
online, target, tau = 10.0, 2.0, 0.1
target = (1 - tau) * target + tau * online
print(f"online={online:.3f}, target={target:.3f}")预期输出或运行结果
online=10.000, target=2.800
常见错误 · 3 条
- 将软更新中 τ 的含义与库的 Polyak 系数混淆。
- 以为随机抽样能修复错误奖励和终止标记。
- 对 on-policy 数据无限回放而不处理策略变化。
实际应用
- 序贯决策
- 控制与资源分配
常见错误
- 将软更新中 τ 的含义与库的 Polyak 系数混淆。
- 以为随机抽样能修复错误奖励和终止标记。
- 对 on-policy 数据无限回放而不处理策略变化。
扩展内容说明
本页数值均为解释机制的构造案例,不能解读为真实训练或基准性能。定义和适用条件参见 OpenAI Spinning Up:Deep Q-Learning 及 DDPG 目标网络说明。
算法属性与数据边界
失败模式、风险与性能
失败模式
- 将软更新中 τ 的含义与库的 Polyak 系数混淆。
- 以为随机抽样能修复错误奖励和终止标记。
- 对 on-policy 数据无限回放而不处理策略变化。
风险
- 奖励函数与真实目标不一致会诱发奖励黑客。
- 部署策略的行动权限必须由环境和应用层约束。
性能考虑
- 样本效率、墙钟时间和显存占用需要分别报告。
- 应使用多个随机种子、置信区间和固定评测策略。
常见问题
目标网络需要反向传播更新吗?
通常通过复制或软更新获得参数,TD 目标分支停止梯度;它不是在同一次损失中与在线预测一起被任意调整。
网页是否会训练模型?
不会。所有图表使用固定种子或解析公式在浏览器本地计算,不执行页面中的示例代码。
推荐学习资料
Playing Atari with Deep Reinforcement Learning
提出使用深度网络、经验回放和目标网络从像素输入学习 Atari 控制策略。
Mnih et al. · arXiv