跳到主要内容

表格装不下之后 — DQN 与连续动作

这一章讲三件事: 状态变成屏幕像素后,「表格」思路死在哪; DQN 用哪几个互相咬合的部件(网络当 Q 表、回放池、目标 y)把 Q-learning 搬进 像素世界;动作连续时连「挑最大」都做不了,NAF 怎么用一招二次函数化解。 读完你应能对着伪代码说出每一步在防哪个坑——DQN 的三件发明, 每一件都对应一种崩法。

1. 这一章讲什么

第 06 章的 Q 表有个隐含前提:状态数得清。Atari 游戏的状态是什么? 屏幕画面——几十万像素、每种取值组合都可能,「行数」直接无穷1。 书里给的判决:连续情形组合可以无穷,不能用表;解法需要神经网络, 这正是「Deep Q-Learning」里 Deep 一词的含义1

于是本章的算法叫 DQN(Deep Q-Network,深度 Q 网络):书里定义它是 Q-learning 与深度卷积神经网络的组合——卷积网络是专吃「像素阵列」这类 网格数据的网络(滑动一个小滤镜扫全图、提取「这里有没有竖线/球拍」式的局部特征, 再层层组合;完整机制见我们书架的拆解2)。它的结构口径很直白: 输入层 = 状态的尺寸,输出层 = 所有动作的 Q 值;智能体把当前状态喂进去, 挑 Q 值最高的动作3

2. 顶层全景:一步更新,四个部件咬合

画面 φ(s) ──► 卷积网络 ──► Q 值表 [上: 1.2, 下: 0.8] (演示数)

① ε-greedy:九成挑最大(上),一成随机瞎试

② 执行,环境回:奖励 r、新画面 φ(s′);整条经验存进回放池 D

③ 从 D 随机抽一小批,算目标 y = r + γ·max Q(s′,·;θ)

④ 对 (y − Q)² 做一步梯度下降,网络参数 θ 往「预测贴近 y」挪
│ │
└──────── 循环 ◄──────────────────┘

图说:① 管「探索」,② 管「数据」,③④ 管「学习」。
三段各防一个坑,抽掉任何一段,训练就会崩在第 07 章列的那种病灶上。

主走查:拿 Atari 单机游戏 Pong 的一帧,把 ①–④ 全部走一遍带数字——第 3 节。 (游戏规则与奖励取自原书应用章:双方球拍、球,把球接住不让它碰己方侧墙, 赢一球 +1、丢一球 −1,其余 04。)

3. 核心原理

3.1 主走查:Pong 一帧走完 DQN 的一步

(除奖励规则与伪代码结构外,本走查的 Q 值、ε、容量 N 都是为演示编的;γ=0.9。)

① 选动作(ε-greedy)
当前画面 φ(s) 喂进网络 → Q 值表 [上: 1.2, 下: 0.8]
掷骰子:0.9 的概率走「贪心」→ 挑「上」;0.1 的概率随机挑一个
→ 本步选中「上」

② 执行并存档
环境执行「上」,回:奖励 r = 0(球还在飞),新画面 φ(s′)
存进回放池:(φ(s), 上, 0, φ(s′)) 池容量 N = 5 万条,满了挤掉最旧的

③ 从池里随机抽一批(比如 32 条),对其中一条算目标 y
抽到 (φ_old, 下, 0, φ_next);把 φ_next 喂进网络 → [上: 1.1, 下: 0.7]
非终点 → y = 0 + 0.9 × max(1.1, 0.7) = 0.9 × 1.1 = 0.99
(若 φ_next 是终局画面 → y = r 本身,不再往后折)

④ 降损失
网络对 φ_old 的旧预测是 Q(φ_old, 下) = 1.20
损失 = (y − Q)² = (0.99 − 1.20)² = 0.044
梯度下降一步:参数朝「把 1.20 往 0.99 压」的方向挪一点

四步对照第 06 章的表格版,你会发现算法骨架一字未变: 还是「走一步 → 算差 → 修一点」。变的只有承载估计的东西:Q 表换成了网络。

3.2 三件发明,各防一个坑

DQN 之所以成立,靠三个部件咬合——书里的伪代码三件全在5,各自的「防的坑」值得说透:

部件防的坑机制
经验回放池数据连成串游戏画面一帧帧强相关(球只挪了一点);随机抽批打破相关性,宝贵经验还能反复用
ε-greedy永不探索只挑当前 Q 最高的动作,会把没试过的动作永远锁在门外;以 ε 概率随机,保证每个动作都被访问(书里伪代码写为「以概率 ε 选随机动作,否则选 max」5)
目标 y 的口径目标乱漂终点状态 y=r 截断,不再往后折——「局终了,未来为零」

书里没写、但重要的一件(补充,不在书里,来自通用知识):目标网络。 书里的伪代码取自 DeepMind 2013 年的论文《Playing Atari with Deep Reinforcement Learning》6, 那版用同一套参数既算预测又算 y——自己追自己的影子,容易震荡; 2015 年的 Nature 正式版补上「目标网络」(拿一份定期才同步的旧参数算 y), 训练才真正稳住。第 09 章的 DDPG/TD3 会把这个思路用得更系统。

3.3 书里在这节塞错了地方的推导(挪走)

原书 4.2 节的中段有一整块「策略梯度定理」的数学推导(对期望回报求梯度, 得到 E[回报 × ∇log π])7它属于策略梯度一族的发动机,与 DQN 无关—— 我们把它挪到第 09 章,那里有配套的 REINFORCE 走查。 顺带照实指出:书里还说这节要解决「reward shaping(奖励塑形)」问题7, 但只给了一句含混的话,没有展开——照书里没交代处理。

3.4 动作连续之后:max 没了,NAF 把它算出来

DQN 的输出是一张动作列表——它默认动作离散(书里伪代码挑 max,天然如此; 书里算法表把 DQN 的动作写成 Continuous,与自己的伪代码矛盾,照实勘误8)。 机械臂的关节扭矩、油门的深浅是连续的:「所有动作里挑最大」要对无穷多个 候选取 max,做不了。

书里给的解法路线有两条。DDPG 用两个网络输出流绕开(第 09 章讲); NAF(Normalized Advantage Function) 走的是纯数学一招9: 把「优势」写成动作的二次函数

Q(s,u) = A(s,u) + V(s), A = −½ (u − μ(s))ᵀ P(s) (u − μ(s))

u:动作;μ(s):网络输出的「推荐动作」;P(s):网络输出的正定矩阵
(经 P = L·Lᵀ 构造,保证任何向量与它做二次型都 ≥ 0)

二次函数的顶点解析可求:A 在 u=μ 处最大(等于 0,别的动作都是负的), 于是 Q 的最大值不需要搜索——就是 V(s),取 μ 作动作即可9。 走查一下:某状态网络输出 μ=0.5、V=3、P=4,那么动作 u=0.5 得 Q=3; 动作 u=0.6 呢?A = −½×4×(0.1)² = −0.02,Q = 2.98——偏离推荐动作, Q 严格下降,顶点就是答案。 代价同样明摆着:P 的二次型强制「单峰」——真实任务里 Q 沿动作维 若有多个峰(两条都好的路线),NAF 天生画不出来。

4. 作者的判断与证据

  • 书里给证据的: 「Deep=网络近似 Q」的动机、输入输出层尺寸的口径、 完整伪代码、出处标注(DeepMind 论文)1356;NAF 的三输出流与 「μ 天然最大化 Q」的论证9
  • 书里的应用清单给了状态/动作/奖励的具体拆法(机械臂:位置朝向/抓爪开合/物体相对位置; 车辆:激光雷达与雷达读数、摄像头、GPS;奖励:正确抓取 +、跌落 −)10—— 这是全书少见的「怎么把任务翻译成 MDP」的实例,第 14 章还会引用。
  • 作者没给的: 训练稳定性问题(目标网络)书里只字未提;高估问题书里 在第 6 章算法表里自己点了名(DQN「易高估 Q 值」)11,却没在 4.2 展开。

5. 边界与局限

  • 高估是 DQN 的原生病。 目标 y 里的 max 是对带噪声的估计取最大—— 系统性偏高;书里在第 6 章的表格里把 Double DQN 的「分离选择与评估」列为解法11, 我们的展开在第 09 章。
  • 只适合离散动作,连续动作要走 NAF/DDPG 等旁路——本书把这条缝补在 §3.4 与第 09 章。
  • 书里的奖励规则来自游戏、参数来自演示。 ε 取多少、回放池多大、网络多深, 书里伪代码只给符号不给数——照着伪代码写不出能跑的程序,这是全书 「教材口径」的通病,照实标注。
  • 原书 4.2 的应用清单里「个性化医疗」「金融组合管理」等场景,书里只列了 状态/动作/奖励各是什么,没有任何效果数据——罗列 ≠ 证据,读时别当战绩看。

6. 可带走的

  1. DQN = Q-learning 的骨架 + 网络当 Q 表:输入状态尺寸,输出每个动作的 Q 值, 挑最大——表格思路原封不动,只是查表变成了前向计算;
  2. 像素状态的正确翻译是卷积网络:局部特征(球拍在哪、球在哪)逐层组合;
  3. 回放池防「数据连串」、ε-greedy 防「永不探索」、终点截断防「目标漂移」—— 读 DQN 伪代码,逐行问它防哪个坑;
  4. 目标 y 的口径:y = r(终点)或 r + γ·max Q(s′,·)(非终点)——max 是高估的温床;
  5. 书里伪代码是 2013 版(单一参数算目标);生产级的稳定性靠 2015 年版的目标网络 (补充,不在书里);
  6. 动作一连续,max 就消失;NAF 把 Q 写成动作的二次型,顶点解析可得 ——代价是只能画「单峰」的 Q;
  7. 把任务翻译成 MDP 的模板(书里机械臂例):状态=传感读数,动作=指令空间, 奖励=人写的成败分;奖励设计是下一层难题(第 14 章);
  8. 「Deep」不是玄学,是函数近似:没见过的画面也能算出 Q—— 这是第 01 章 §3.3 那条分界线在工程上的落地。

7. 原文地图

主题原书章原文位置
表格装不下、Deep 的含义4.2 Deep Q-Learning and Deep Q-Network (DQN)text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:39(搜「cannot be represented by a table」)
输入=状态、输出=动作 Q 值4.2 Deep Q-Learning and Deep Q-Network (DQN)text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:126(搜「input and output layers」) · text/09-ch04-01-4-1-q-learning.txt:47(搜「DQN」)
DQN=Q-learning+卷积网络4.2 Deep Q-Learning and Deep Q-Network (DQN)text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:126(搜「convolutional」)
伪代码(回放 N、ε、y、平方损失)4.2 Deep Q-Learning and Deep Q-Network (DQN)text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:133(搜「replay memory」) · text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:177(搜「terminal」) · text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:185(搜「gradient descent」)
出处 DeepMind 论文4.2 Deep Q-Learning and Deep Q-Network (DQN)text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:197(搜「Playing Atari」)
算法表:动作误标 Continuous4.2 Deep Q-Learning and Deep Q-Network (DQN)text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:30(搜「Continuous」)
策略梯度推导(挪至第 09 章)4.2 Deep Q-Learning and Deep Q-Network (DQN)text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:84(搜「Policy Gradient Theorem」)
reward shaping 一句带过4.2 Deep Q-Learning and Deep Q-Network (DQN)text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:39(搜「reward shaping」)
机械臂/车辆的状态动作奖励4.2 Deep Q-Learning and Deep Q-Network (DQN)text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:216(搜「robotic arm」) · text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:237(搜「LIDAR」)
Pong 规则与 +1/−17.1 Self-Driving Cars(§7.2)text/25-ch07-01-7-1-self-driving-cars.txt:264(搜「+1」)
NAF 二次优势、三输出流4.14 Normalized Advantage Function (NAF)text/20-ch04-14-4-14-normalized-advantage-function-naf.txt:69(搜「quadratic」) · text/20-ch04-14-4-14-normalized-advantage-function-naf.txt:87(搜「lower-triangular」) · text/20-ch04-14-4-14-normalized-advantage-function-naf.txt:92(搜「quadratic in u」)
DQN 高估、Double DQN 解法Recent Developments in DRL(表 6.1)text/24-ch06-01-6-1-physics-based-nns-and-drl.txt:51(搜「overestimate」) · text/24-ch06-01-6-1-physics-based-nns-and-drl.txt:56(搜「Double」)

Footnotes

  1. 出处:「4.2 Deep Q-Learning and Deep Q-Network (DQN)」第 39 段(text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:39,搜「cannot be represented by a table」)。连续情形潜在组合可成无穷,解法需要神经网络,「Deep」即指此。 2 3

  2. 卷积网络「滑动滤镜提局部特征」的机制,补充(不在书里,依据我们的 ai-book-reference 书架)。依据: shelf=ai-book-reference/nndl-2e#13-convolution.md @未提交(工作区) 事实=卷积=小核在输入上滑动做点积,产出特征图。书里对 CNN 的层级描述(卷积/池化/全连接)见「2.1 Learning from Problems」第 209–225 段(text/06-ch02-01-2-1-learning-from-problems.txt:209,搜「visual cortex」)。

  3. 出处:「4.1 Q-Learning」第 47 段(text/09-ch04-01-4-1-q-learning.txt:47,搜「input and output layers」)与「4.2」第 126 段:输入输出层尺寸分别为状态与全部动作;智能体挑 Q 值最高的动作。 2

  4. 出处:「7.2 Video Games」(text/25-ch07-01-7-1-self-driving-cars.txt:236,搜「penalty is levied」)与第 264 段(搜「+1」):球碰己方侧墙判罚;赢 +1、丢 −1、其余 0。

  5. 出处:「4.2 Deep Q-Learning and Deep Q-Network (DQN)」第 133–193 段(text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:133,搜「replay memory」)。容量 N;以概率 ε 随机动作、否则 max(第 153–157 段);y 的终点/非终点两式(第 177–181 段);对 (y−Q)² 梯度下降(第 185 段)。 2 3

  6. 出处:「4.2 Deep Q-Learning and Deep Q-Network (DQN)」第 197 段(text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:197,搜「Playing Atari」)。目标网络为 2015 年 Nature 版所加,补充(不在书里,来自通用知识):Mnih et al., "Human-level control through deep reinforcement learning", Nature 518, 2015。 2

  7. 出处:「4.2 Deep Q-Learning and Deep Q-Network (DQN)」第 84–117 段(text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:84,搜「Policy Gradient Theorem」)。该推导与我们对其归属的处理见第 09 章;reward shaping 的含混表述见第 39 段。 2

  8. 出处:「4.2 Deep Q-Learning and Deep Q-Network (DQN)」第 26–33 段(text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:30,搜「Continuous」)。算法表将 DQN 的动作列为 Continuous,与其伪代码的离散选大矛盾,按勘误处理。

  9. 出处:「4.14 Normalized Advantage Function (NAF)」第 69–103 段(text/20-ch04-14-4-14-normalized-advantage-function-naf.txt:69,搜「quadratic」)。优势写成动作的二次型;三条输出流(V、P=LLᵀ、μ);Q=A+V;μ 因二次型天然最大化 Q(第 92 段)。 2 3

  10. 出处:「4.2 Deep Q-Learning and Deep Q-Network (DQN)」第 212–266 段(text/10-ch04-02-4-2-deep-q-learning-and-deep-q-network-dqn.txt:216,搜「robotic arm」)。机械臂的状态/动作/奖励;自动驾驶车辆与无人机的同类拆法见第 237、242 段。

  11. 出处:「Recent Developments in DRL」表 6.1(text/24-ch06-01-6-1-physics-based-nns-and-drl.txt:51,搜「overestimate」):DQN 每次学当前策略认为最有价值的动作,易高估 Q 值;Double DQN 把选择与评估分离以解高估(第 58 段)。 2