第 4 章:深度 Q 网络
本章导读
核心内容
- 理解表格 Q-Learning 为什么只能处理小规模离散状态,无法直接进入连续控制和像素游戏。
- 掌握深度 Q 网络如何用神经网络近似 ,把 Q 表格变成可泛化的函数。
- 理解经验回放与目标网络为什么是 DQN 可训练的关键,而不是可有可无的工程细节。
- 通过 LunarLander 和视觉游戏任务,看到 DQN 从低维控制走向高维输入时会遇到的稳定性、探索和函数逼近问题。
核心公式
本章公式的作用
第 4 章沿着第 3 章的 路线继续往前走。第一个公式说明 DQN 的核心替换:不再给每个状态-动作对单独存一个数,而是用参数为 的神经网络输出动作价值。第二个公式保留了 Q-Learning 的 TD 思想:当前奖励 加上下一状态中最有价值动作的折扣回报。第三个公式把这个 TD 误差变成神经网络可以优化的损失函数,其中 是经验回放池, 是目标网络参数。换句话说,本章不是换了一个新的强化学习目标,而是把第 3 章的动作价值估计改造成了可以在高维状态上训练的深度学习问题。
第 3 章最后,我们已经知道 Q-Learning 的直觉:智能体在状态 下选择动作 ,拿到奖励 ,进入下一个状态 ,然后用 TD 目标修正 。在 GridWorld 里,这件事非常自然。16 个格子、4 个动作,一张 64 行的小表就能记录所有经验;每次走错路,表格里对应的格子被调低;每次靠近终点,相关动作的价值被慢慢调高。
真正的问题在于,这张表格有一个没有明说的前提:状态必须少到可以被枚举、命名和反复访问。LunarLander 的状态是 8 个连续数字,飞船的位置、速度、角度只要多偏一点点,就是一个新的状态;Atari 游戏的状态是一帧帧像素图像,画面中球的位置、速度、背景像素都可能变化。此时困难不再是“TD Target 应该怎么写”,而是“我们还要不要、又能不能为每一种状态单独留一格”。
换个角度看,Q-Learning 真正有价值的部分不是那张表,而是“用当前经验修正长期价值预测”的思想。DQN 做的第一件事,就是把表格换成神经网络:输入一个状态,输出每个动作的 Q 值。这样,表格中无数个互不相干的数字,被压缩成一组共享参数 ;相似状态也不再需要从零学习,而是可以通过网络的泛化能力共享经验。
但这一步并不会自动成功。监督学习里的标签通常是固定的,而 DQN 的“标准答案”来自网络自己对未来的估计;智能体刚刚经历的一串状态又高度相关,连续拿来训练会让梯度被最近的经验牵着走。因此,深度 Q 网络真正解决的是两个连续问题:先用神经网络解决 Q 表表示不下 的问题,再用经验回放和目标网络解决 神经网络训练不稳 的问题。
因此,本章的主线可以概括为一句话:如何把表格 Q-Learning 扩展成一个能处理连续状态、像素输入和不稳定训练过程的深度强化学习算法。 我们会先从 Q 表格的边界讲起,再拆开 DQN 的三个组件,随后进入 LunarLander 实战,在同一个任务中观察训练曲线、Q 值演化、消融实验和回放评估,最后进入 Double DQN、Dueling DQN、Rainbow,以及从 LunarLander 迁移到视觉游戏的完整项目。
章节安排
| 小节 | 核心问题 |
|---|---|
| 为什么需要深度 Q 网络 | Q 表格为什么装不下?神经网络如何替代表格? |
| 深度 Q 网络的三个组件 | Q 网络、经验回放、目标网络分别解决什么问题?公式到代码的完整对应? |
| 动手:LunarLander 实战 | 如何训练、分析并评估一个低维 DQN 控制任务? |
| 深度 Q 网络家族 | Double、Dueling、Rainbow 等改进分别解决什么? |
| 项目:从 LunarLander 到视觉游戏 | 如何把深度 Q 网络迁移到像素输入和复杂游戏? |
学习目标
读完本章后,你应该能够:
- 解释为什么表格 Q-Learning 在连续状态和像素输入任务中不再可行;
- 说明深度 Q 网络如何用神经网络近似 ;
- 写出深度 Q 网络的 TD 目标和均方误差损失;
- 理解经验回放和目标网络为什么能稳定训练;
- 跟踪一次 DQN 参数更新的完整数据流:从 batch 采样到前向传播、loss 计算、反向传播和参数更新,每一步对应公式中的哪个符号;
- 区分训练与推理两种模式,知道何时用 ε-greedy 探索、何时用贪心策略评估;
- 认识深度 Q 网络家族的主要改进方向,以及它们各自试图解决的问题。
下一节从表格方法的边界开始:为什么需要深度 Q 网络。