先记住一句话

DQN 用网络近似 Q(s,a),用旧 target network 构造 Bellman target,用 replay buffer 打乱和复用经验,再通过 ε-greedy 产生探索数据。

ε-greedy action存 transitionsample replaytarget net 算 yonline net 回归周期同步 target
Actoronline Q
Memory(s,a,r,s′)
Targetr+γ max Q⁻
Loss(Q−y)²
Replay 打乱数据;target network 把回归目标的变化变慢,两者解决的是不同不稳定源。

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