← 上级:RL-03.算法分类与选型 · 前置:RL-03-02-算法-Q-Learning · 数据结构:RL-05.专属数据结构
当状态空间高维(如 Atari 像素)时,表格 Q 无法扩展。深度 Q 网络(Deep Q-Network,DQN)用神经网络 $Q_\phi(s,a)$ 逼近动作价值,并引入经验回放与目标网络稳定训练(Mnih et al., 2015)。
段末注释:深度 Q 网络(Deep Q-Network,DQN)以深度神经网络参数化 Q 函数,结合经验回放与目标网络;后文沿用 DQN。

一、从 Q-Learning 到 DQN
表格更新:
$$
Q(s,a) \leftarrow Q(s,a) + \alpha \left[ r + \gamma \max_{a’} Q(s’,a’) - Q(s,a) \right]
$$
DQN 用网络 $Q_\phi$ 替代表格,最小化 TD 误差平方:
$$
\mathcal{L}(\phi) = \mathbb{E}{(s,a,r,s’) \sim \mathcal{D}} \left[ \left( y - Q\phi(s,a) \right)^2 \right]
$$
其中 TD 目标(用目标网络 $Q_{\bar{\phi}}$):
$$
y = r + \gamma (1-d) \max_{a’} Q_{\bar{\phi}}(s’, a’)
$$
$d$ 为终止标志;$(1-d)$ 防止在终止状态 Bootstrap。
二、三大稳定技巧
| 技巧 | 作用 |
|---|---|
| 经验回放 $\mathcal{D}$ | 打破样本相关性,重复利用数据 |
| 目标网络 $Q_{\bar{\phi}}$ | 固定 TD 目标,减少追逐移动目标 |
| $\varepsilon$-greedy | 持续探索 |
2.1 目标网络更新
- Hard update:每 $C$ 步 $\bar{\phi} \leftarrow \phi$
- Soft update(Polyak):$\bar{\phi} \leftarrow \tau \phi + (1-\tau) \bar{\phi}$,常用 $\tau=0.005$
2.2 经验回放
从 Buffer 均匀采样 mini-batch;字段 $(s,a,r,s’,done)$ 见 RL-05 Replay Buffer。
三、网络结构(Atari 例)
- 输入:$84 \times 84 \times 4$ 灰度帧堆叠
- 3 层卷积 + ReLU
- 全连接 → 输出 $|A|$ 维 Q 值(每动作一个标量)
选动作:$a = \arg\max_a Q_\phi(s,a)$(推理时)。
四、训练流程
- 初始化 $Q_\phi$、$Q_{\bar{\phi}}$($\bar{\phi} \leftarrow \phi$)、空 Replay
- 环境交互得 $(s,a,r,s’,d)$,存入 Replay
- 若 $|Replay| > \text{warmup}$:采样 batch,算 $\mathcal{L}$,梯度下降更新 $\phi$
- 每 $C$ 步同步 $\bar{\phi}$
- 重复至收敛
实现要点见 RL-04.实现框架与实践。
五、伪代码(核心)
1 | # sample batch from replay |
六、超参数(Atari 量级参考)
| 超参 | 典型值 |
|---|---|
| Replay 容量 | $10^6$ |
| Batch | 32 |
| $\gamma$ | 0.99 |
| 学习率 | $2.5 \times 10^{-4}$(RMSprop/Adam) |
| 目标网络周期 $C$ | 1000 ~ 10000 步 |
| $\varepsilon$ | 1.0 → 0.1,前 $10^6$ 步线性衰减 |
| Frame skip | 4(Atari) |
七、已知问题
| 问题 | 说明 |
|---|---|
| Q 过估计 | $\max$ 算子 + 函数逼近导致乐观偏差 → Double DQN |
| 连续动作 | $\max_{a’} Q(s’,a’)$ 难算 → DDPG / SAC |
| 样本效率 | 纯 DQN 仍需大量交互 |
改进见 RL-03-07-算法-DQN变体。
八、小结
- DQN = Q-Learning + 神经网络 + Replay + 目标网络。
- 损失 = MSE$(Q_\phi(s,a), ; r + \gamma \max Q_{\bar{\phi}}(s’,\cdot))$。
- 下一篇:DQN 变体。