先记住一句话
DQN 用网络近似 Q(s,a),用旧 target network 构造 Bellman target,用 replay buffer 打乱和复用经验,再通过 ε-greedy 产生探索数据。
1. Tabular Q-learning
Q(s,a) ← Q(s,a)+α[r+γ max_{a'}Q(s',a')−Q(s,a)]小离散状态可直接维护表格。像素、高维状态或组合空间无法枚举时,用神经网络 Qθ(s) 一次输出所有离散动作的价值。
2. DQN 的 loss
y = r + γ(1−terminal) max_{a'} Qθ⁻(s',a')L(θ)=E_{(s,a,r,s')~D}[(Qθ(s,a)−stopgrad(y))²]θ⁻ 是 target network 参数,每隔若干步 hard copy,或用 Polyak averaging 慢更新。对 truncation 通常保留 bootstrap;对真实 terminal 清零。
3. Replay buffer 解决什么
- 把连续 trajectory 的强相关样本随机打散;
- 一条昂贵 experience 可用于多个 gradient updates;
- 混合不同阶段策略的数据,降低当前 batch 的非平稳性。
代价是训练变成 off-policy,旧数据可能和当前 policy 差很远;buffer 太小相关性强,太大则包含大量过时分布。prioritized replay 更常抽 TD error 大的样本,但需要 importance correction 管理采样偏差。
4. ε-greedy 探索
with probability ε: random action
otherwise: argmax_a Q(s,a)
训练常逐步衰减 ε,evaluation 则固定 greedy 或很小 ε。随机 action 在巨大离散/长时序任务很低效;NoisyNet、intrinsic motivation、bootstrapped ensemble 等尝试更结构化探索。
5. 完整训练循环
initialize Qθ, target Qθ⁻ ← Qθ, replay D
repeat:
a ← ε-greedy(Qθ(s, ·))
s', r, terminated, truncated ← env.step(a)
D.add(s, a, r, s', terminated)
batch ← D.sample()
y ← r + γ(1-terminated) max Qθ⁻(s', ·)
update θ on huber(Qθ(s,a), y)
periodically update θ⁻
reset if terminated or truncated
6. 为什么 max 会高估
若多个 action 的 Q 估计都有噪声,取最大值偏向挑中正误差。Double DQN 用 online network 选 action、target network 评价它:
a* = argmax_a Qθ(s',a) y = r+γQθ⁻(s',a*)选择和评价未完全独立,但能显著缓解 maximization bias。TD3/SAC 的 twin critics 是连续 actor-critic 中相关的保守机制。
7. 常见扩展解决不同问题
| 扩展 | 核心改动 | 目标 |
|---|---|---|
| Double DQN | 分离 action selection/evaluation | 减少过估计 |
| Dueling network | 分别估 V(s) 与相对 A(s,a) | 动作相近时共享状态价值 |
| n-step return | 混入更多真实 reward | 更快传播稀疏回报 |
| Distributional RL | 预测 return distribution 而非均值 | 表达风险与分布结构 |
| Rainbow | 组合多项扩展 | 更强 Atari baseline |
8. 为什么 DQN 不适合直接输出连续关节动作
DQN 需要计算 max_a Q(s,a)。有限离散动作可枚举;几十维连续 action 无法逐点搜索。DDPG/TD3/SAC 引入 actor a=π(s) 来近似寻找高 Q action,PPO 则直接优化连续 action distribution。
9. 必须监控的量
- evaluation return/成功率,而非只看训练 ε-greedy return;
- Q mean/max、TD error、target magnitude,检查 value explosion;
- buffer age/coverage、update-to-data ratio;
- episode length、termination/truncation、不同 seed 方差;
- action visitation 与 reward component,检查策略是否卡死或钻漏洞。
10. 四个 Q-learning 与 DQN 计算
例 1:tabular Q update
Q(s,a)=2,r=1,γ=0.9,下一 state 最大 Q=5,target=5.5,TD error=3.5。α=0.2 后 Q←2+0.2×3.5=2.7。
例 2:terminal target
若同一 transition 到 terminal,下一 state 不 bootstrap,target=r=1;prediction=2 时 squared TD loss=(2−1)²=1。错误加上 0.9×5 会把 terminal 后不存在的价值算进去。
例 3:Double DQN 拆选择与评价
Online net 对 s′ 给 [4,6],所以选 action 2;target net 给 [5,3],于是 target 使用 3,而非 target net 自己的 max=5。若 r=1、γ=0.9,y=1+0.9×3=3.7。
例 4:replay reuse 比率
每收集 1 个 transition 做 4 次 updates,每次 batch=32,则每个环境 step 抽取 4×32=128 个 replay items。Buffer=10000 时,单条样本每环境步被抽中的期望次数约 128/10000=0.0128。
replay 让算法更 sample-efficient,不代表 gradient step 越多越好。固定数据反复更新会过拟合 bootstrap error;update-to-data ratio 也是需要验证的超参数。
自测
1. target network 为什么不能和 online network 每步完全同步?
那会恢复快速移动的 bootstrap target,使预测追逐自身并加剧不稳定。
2. Double DQN 的两个网络分别做什么?
online network 选下一 action,target network 评价该 action 的 value。
3. 为什么 replay 中需要保存 terminated,而不只保存 done?
要区分真实 terminal 与 time-limit truncation,决定 value target 是否 bootstrap。
一手资料
Mnih et al., Human-level control through deep reinforcement learning 提出 DQN 的 replay、target network 与 Atari 实验;基础 Q-learning 见 Sutton & Barto。