对应:Stanford CS234 拓展内容(Model-Based RL;Sutton & Barto 第 8 章) 配套代码:
code/lecture15/(只需 numpy) 预计阅读时间:3 小时
0. 本讲导航
0.1 本讲要回答的问题
先学一个世界模型,再在模型里规划,能不能大幅提高样本效率?代价是什么?
第 4–7 讲的算法大多是无模型的:直接从经验中学习价值或策略,经验用过一两次就扔掉。第 2 讲和第 14 讲的规划则假设模型已知。这一讲讨论两者之间的道路:从经验中学习模型,再用学到的模型规划。
人类就是这样学习的:你不需要真的把手伸进火里一百次,才知道火会烫手——你在脑子里有一个”世界如何运作”的模型,可以在行动之前想象后果。
0.2 学完本讲,你应该能够
- 解释什么是模型、基于模型的方法的优点和代价。
- 描述 Dyna 架构和 Dyna-Q 算法,解释规划为什么能提高样本效率。
- 解释模型过时时的两种情况(变坏、变好),以及 Dyna-Q+ 的探索奖励。
- 解释复合误差,以及它为什么让”长时间的想象”不可靠。
- 解释优化器的诅咒(模型利用):为什么在估计的模型中规划会系统性地高估。
- 了解现代的基于模型的方法:PETS、MBPO、Dreamer、MuZero、MOPO。
0.3 先修知识
| 知识点 | 用在哪里 | 最低要求 |
|---|---|---|
| 第 2 讲:动态规划、价值迭代 | 全讲 | 必须 |
| 第 3 讲:确定性等价 | 第 1 节 | 必须 |
| 第 4 讲:Q-learning、最大化偏差 | 第 2、5 节 | 必须 |
| 第 5 讲:经验回放 | 第 2 节 | 了解即可 |
| 第 10 讲:分布偏移、悲观原则 | 第 4、5 节 | 了解即可 |
| 第 13 讲:乐观探索 | 第 3 节 | 了解即可 |
| 第 14 讲:MCTS、MuZero | 第 6 节 | 了解即可 |
0.4 本讲地图
第1节 模型与规划:什么是模型?为什么要学模型?
│
第2节 Dyna:真实经验 + 想象经验
│
第3节 模型过时了:阻塞与捷径;Dyna-Q+
│
第4节 复合误差:想象走得越远,越不可信
│
第5节 优化器的诅咒:规划会利用模型的错误
│
第6节 现代的基于模型的方法
1. 模型与规划
1.1 什么是模型?
模型是对环境如何响应动作的描述:给定状态 和动作 ,预测下一个状态和奖励。
- 分布模型:给出完整的概率分布 、。第 2 讲的动态规划需要这种模型。
- 样本模型(模拟器):能抽样出一个 ,但不一定给出概率。第 14 讲的 MCTS 只需要这种模型。
第 3 讲的确定性等价就是最简单的基于模型的方法:数出经验转移概率,然后在估计的模型上做动态规划。
1.2 为什么要学模型?
| 优点 | 解释 |
|---|---|
| 样本效率 | 一条真实经验可以在模型中被”重放”很多次;规划能把新信息一次性传播到所有相关的状态 |
| 可以想象 | 在行动之前,在模型中评估”如果这样做会怎样”(第 14 讲的搜索) |
| 可以复用 | 同一个模型可以用来解决不同的任务(比如换一个目标位置),而无模型学到的价值函数只针对一个任务 |
| 自监督的学习信号 | 预测下一个状态是一个信息量很大的监督学习问题,即使没有奖励也能学 |
| 代价 | 解释 |
|---|---|
| 模型误差 | 学到的模型总有误差,基于它的规划可能被误导(第 4、5 节) |
| 计算量 | 规划需要大量计算 |
| 学模型可能比学策略更难 | 预测整个世界的细节,可能比学会”该怎么做”难得多(比如预测一局 Atari 游戏的每一个像素) |
基于模型的方法的核心权衡:用计算换数据,但要应对模型误差。
2. Dyna:真实经验 + 想象经验
2.1 架构
Sutton (1990) 的 Dyna 架构把学习、规划、行动统一在一个循环里:
┌──────────────── 真实经验 ────────────────┐
│ ↓
环境 ←── 动作 ── 价值/策略 ←── 直接 RL ── (s, a, r, s')
↑ │
规划(想象经验) 模型学习
│ ↓
└─────────────────────── 模型
- 直接 RL:用真实经验更新价值(比如 Q-learning);
- 模型学习:用真实经验改进模型;
- 规划:从模型中产生”想象的经验”,用同样的更新规则更新价值。
关键的洞察:对价值函数来说,真实经验和想象经验没有区别,可以用同一个学习算法处理。
2.2 Dyna-Q
Dyna-Q(确定性环境)
每一步:
- 按 ε-贪心选动作 ,执行,观察
- 直接 RL:
- 模型学习:
- 规划:重复 次——随机选一个见过的 ,取出 ,做一次 Q-learning 更新
就是普通的 Q-learning。
2.3 实验
代码 01_dyna_q.py,Sutton & Barto 例 8.1 的 Dyna 迷宫(6×9,最短路径 14 步),30 个随机种子的平均:
| 规划步数 | 第 1 回合 | 第 2 回合 | 第 3 回合 | 第 5 回合 | 第 10 回合 | 第 20 回合 | 第 50 回合 | 50 回合的真实步数 |
|---|---|---|---|---|---|---|---|---|
| 0(Q-learning) | 921.4 | 475.0 | 545.8 | 222.4 | 130.9 | 45.6 | 17.8 | 4707 |
| 5 | 803.0 | 165.7 | 55.1 | 22.9 | 17.6 | 17.1 | 15.7 | 1831 |
| 50 | 793.4 | 39.5 | 17.8 | 17.3 | 16.6 | 17.3 | 16.4 | 1646 |
- 第 1 个回合,三者都要走七八百步:还不知道终点在哪,只能随机乱走——没见过的地方,模型也帮不上忙。
- 之后, 只需 2~3 个回合就接近最短路径; 要 20 个回合以上。
为什么这么有效? 演示 2 画出了第 1 个回合结束后的贪心策略:
n = 0: n = 50:
· · · · · · · █ G · · · · · · · █ G
· · █ · · · · █ ↑ · · █ · · · · █ ↑
· · █ · · · · █ · · · █ · · · · █ ↑
· · █ · · · · · · · · █ · · · → → ↑
· · · · · █ · · · · · · · · █ · · ↑
· · · · · · · · · · · · · · · · · ↑
- :只有终点旁边那一格知道该往哪走——奖励的信息每个回合只能往回传播一格。
- :规划把终点的奖励沿着模型中记住的转移反复往回传播,一大片格子已经知道该往哪走。真实经验只发生一次,想象可以重复很多次。
2.4 用计算换数据
演示 3:
| 真实步数 | 规划更新次数 | |
|---|---|---|
| 0 | 4707 | 0 |
| 1 | 2433 | 2,433 |
| 5 | 1831 | 9,154 |
| 10 | 1769 | 17,687 |
| 50 | 1646 | 82,278 |
| 200 | 1721 | 344,173 |
- 真实经验减少了约 3 倍,但收益递减——剩下的主要是第 1 个回合”找终点”的步数,模型帮不上忙。
- 计算量随 迅速增长。当真实经验很贵(机器人、医疗)而计算很便宜时,这笔交易非常划算。
2.5 Dyna 与经验回放
在确定性的表格环境中,模型就是”记住最近一次看到的结果”,Dyna-Q 的规划等价于第 5 讲 DQN 的经验回放:从记忆中反复取出旧经验来学习。两者的区别在于泛化:一个参数化的模型可以预测从没见过的 的结果,而回放缓冲区只能重放见过的经验。这既是模型的力量,也是它的风险(第 4、5 节)。
优先级扫描(Sutton & Barto 8.4 节)是一个重要的改进:不随机地挑选规划的 ,而是优先更新那些”价值变化最大的状态的前驱”——让规划的计算集中在最有用的地方。第 5 讲的优先经验回放是同一个思想。
3. 模型过时了
3.1 两种变化
模型是从过去的经验中学来的。如果世界变了呢?代码 02_changing_env.py 重现了 Sutton & Barto 的两个例子(环境是确定性的,用学习率 ):
阻塞迷宫(第 1000 步时,原来的路被堵住,另一边开了新路;20 个种子):
变化之前: 变化之后:
. . . . . . . . G . . . . . . . . G
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
█ █ █ █ █ █ █ █ . . █ █ █ █ █ █ █ █
. . . . . . . . . . . . . . . . . .
. . . S . . . . . . . . S . . . . .
| 智能体 | 累计到达终点次数(第 1000 / 1500 / 2000 / 3000 步) | 变化后 2000 步内 | 最终学会新路的种子 |
|---|---|---|---|
| Q-learning() | 3.5 / 4.0 / 4.5 / 5.8 | 2.3 | 0 / 20 |
| Dyna-Q() | 43.0 / 44.0 / 50.0 / 68.2 | 25.2 | 8 / 20 |
| Dyna-Q+(,) | 58.5 / 62.9 / 83.5 / 137.0 | 78.5 | 20 / 20 |
捷径迷宫(第 3000 步时,右边多开了一条更短的路,原路仍然能走;20 个种子):
变化之前: 变化之后:
. . . . . . . . G . . . . . . . . G
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. █ █ █ █ █ █ █ █ . █ █ █ █ █ █ █ .
. . . . . . . . . . . . . . . . . .
. . . S . . . . . . . . S . . . . .
| 智能体 | 累计到达终点次数(第 3000 / 4000 / 5000 / 6000 步) | 变化后 3000 步内 | 最终走捷径(10 步)的种子 |
|---|---|---|---|
| Q-learning() | 5.5 / 17.7 / 63.0 / 132.9 | 127.4 | 13 / 20 |
| Dyna-Q() | 120.3 / 173.6 / 227.6 / 282.0 | 161.7 | 0 / 20 |
| Dyna-Q+(,) | 136.8 / 206.7 / 286.4 / 367.4 | 230.6 | 15 / 20 |
| Dyna-Q+(,) | 3.5 / 4.1 / 4.7 / 5.5 | 2.0 | 0 / 20 |
3.2 变坏的变化容易发现,变好的变化很难发现
- 阻塞:按照旧模型行动,马上就会撞墙——错误会自己暴露出来。但发现”旧路不通”之后,还得找到新路:那一带以前很少去,Q 值还是 0。Dyna-Q 只能靠 ε-贪心慢慢摸索,2000 步后只有 8 个种子学会了新路。
- 捷径:模型说”右边是墙”,而原路走得好好的,没有任何理由去右边看看。Dyna-Q 的 20 个种子全部还在走原路。你永远不会发现一个从没去验证过的机会。
这与第 13 讲完全一致:模型”悲观”的错误(低估了某个地方)不会自己暴露出来,需要主动的、乐观的探索才能纠正。
3.3 Dyna-Q+
Dyna-Q+:规划时,奖励加上探索奖励 , 是这个 在真实环境中有多久没被试过了。规划时也考虑从没试过的动作(假设它们回到原地、奖励 0)。
“很久没去验证的地方,世界可能已经变了——值得再去看看。” 探索奖励随时间增长,规划最终会把智能体”派”过去看看。
- 阻塞迷宫:Dyna-Q+ 恢复得快得多(变化后的奖励是 Dyna-Q 的 3 倍),20 个种子全部学会了新路(19 个找到了 16 步的最短新路);而且在变化之前就拿到了更多奖励——探索奖励让它更系统地探索了整个迷宫。
- 捷径迷宫:Dyna-Q+ 发现了捷径。有 5 个种子最后的贪心路径”到不了”终点:它的 Q 值里混进了探索奖励,在最后这一刻,贪心策略正被”派去”验证某个很久没去的角落。Dyna-Q+ 的 Q 值衡量的是”利用 + 探索”的综合价值。
- 太大():探索奖励( 可以到几十)压倒了真实奖励(只有 1),智能体一直在”验证”各个角落,几乎不去终点——和 UCB 的 太大一样,探索过度。
一个意外:普通 Q-learning 有 13 个种子学会了捷径!原因是它学得太慢——到第 3000 步时连原来的路都还没学会(只到过终点 5 次左右),于是等于在新迷宫上从头学起。它没有”过时的知识”需要克服,但总奖励远少于 Dyna-Q+。
4. 复合误差:想象走得越远,越不可信
4.1 问题
前面的迷宫是确定性的、离散的,模型可以完全准确。现实中,学到的模型总有误差。用模型往前想象 步时:
- 第 1 步的预测有一点误差 → 第 2 步是从一个错误的状态出发预测的 → 误差叠加……
- 更糟的是,想象出的状态可能离开训练数据覆盖的范围,模型在那里的预测完全不可信——而且模型自己不知道。
4.2 实验
代码 03_model_error.py A 部分:没有摩擦的单摆 ,用最小二乘从数据(只覆盖 )中学习动力学,然后从同样的初始状态、用同样的动作序列,分别在真实系统和模型中往前推(开环预测):
| 模型 | 误差中位数 | 时发散的比例 | |||
|---|---|---|---|---|---|
| 线性(300 个数据点) | 0.0004 | 0.0220 | 0.2370 | 0.7061 | 0% |
| 三次多项式(300 个数据点) | 0.0003 | 0.0026 | 0.0106 | 0.0319 | 0.8% |
| 三次多项式(3000 个数据点) | 0.0001 | 0.0010 | 0.0064 | 0.0208 | 1.0% |
- 单步准确 ≠ 多步准确:线性模型的单步误差只有 0.0004 弧度,200 步后是它的上千倍。单摆没有摩擦,误差不会被”抹平”,只会越积越多。
- 越界就失控:三次多项式能表示 的主要形状,长期都很准;但到 时,约 1% 的轨迹发散了——想象中的单摆转到了训练数据没有覆盖的角度,三次项在那里的外推完全不可信。
- 更多数据不能阻止越界:3000 个数据点让单步更准,但发散的比例没有下降。问题不在数据量,而在分布偏移——和第 8 讲(模仿学习)、第 10 讲(离线 RL)是同一件事。
4.3 对策
- 短想象:MBPO(Janner et al., 2019)从真实状态出发,只用模型往前想象很短的几步(通常 1~5 步),用这些短轨迹训练无模型的智能体。它证明了”想象的步数”需要与模型的误差权衡。
- 不断重新规划:模型预测控制(MPC)每一步都从真实的当前状态出发重新规划,只执行计划的第一步。误差不会在真实世界中累积,因为每一步都被真实观察”校正”了。
- 知道自己不知道:用模型集成(多个在不同数据子集上训练的模型)估计不确定性——模型之间意见不一致的地方,就是不可信的地方(PETS,Chua et al., 2018)。
5. 优化器的诅咒:规划会利用模型的错误
5.1 问题
规划 = 在模型中挑选看起来最好的策略。模型的误差有正有负,而被挑中的策略,往往恰好是那些”误差对它有利”的策略。所以:
规划出的策略在模型中的价值,系统性地高于它在真实环境中的价值。
这叫优化器的诅咒(optimizer’s curse,Smith & Winkler, 2006),在 RL 中也叫模型利用(model exploitation)。
5.2 实验
03_model_error.py B 部分:一个会打滑的 5×5 格子世界(以 0.2 的概率滑向其他方向,两个洞),真实最优价值 。每个 采样 次估计模型 ,在 上做价值迭代得到策略 (200 次重复的平均):
| 在模型中的价值 | 的真实价值 | 高估 | 与最优的差距 | 对照: 在模型中的价值 − 真实价值 | |
|---|---|---|---|---|---|
| 1 | 0.635 | −0.030 | +0.665 | 0.509 | −0.360 |
| 2 | 0.650 | 0.263 | +0.388 | 0.216 | −0.096 |
| 5 | 0.613 | 0.344 | +0.270 | 0.135 | −0.004 |
| 10 | 0.566 | 0.365 | +0.201 | 0.114 | −0.015 |
| 30 | 0.511 | 0.425 | +0.085 | 0.053 | −0.005 |
| 100 | 0.485 | 0.465 | +0.020 | 0.014 | −0.002 |
| 1000 | 0.479 | 0.478 | +0.001 | 0.000 | +0.000 |
- 规划出的策略在模型中”看起来”的价值,系统性地高于真实价值;数据越少,高估越严重。 时,模型认为能拿到 0.635,真实价值却是负的。
- 对照列:把固定的策略 放到估计的模型中评估, 时误差接近 0——模型本身并没有系统性地偏向乐观。 极小时它甚至明显偏低:价值是转移概率的非线性函数,每个 只采样一次的模型把”有时打滑”变成了”一定打滑”,某些格子在模型里”注定”滑进洞。但这个偏差的方向与规划的高估相反。
- 所以高估来自挑选,而不是模型本身。
5.3 同一个现象的不同面孔
| 讲次 | 被优化的有噪声的估计 | 结果 |
|---|---|---|
| 第 4 讲 | Q 值的估计, | 最大化偏差 |
| 第 9 讲 | 奖励模型的分数 | 奖励过度优化 |
| 第 10 讲 | 离线数据上的 Q 值 | 外推误差,选中没见过的动作 |
| 第 15 讲 | 学到的模型 | 规划利用模型的错误 |
对一个有噪声的估计做优化,优化结果会系统性地利用噪声。 对策也类似:更多更好的数据;对不确定的地方保持悲观(第 10 讲;基于模型的离线 RL 方法 MOPO、MOReL 给模型的不确定性加惩罚);或者限制优化的”力度”(比如 KL 约束,第 9 讲)。
注意与第 3 节的对比:能够收集新数据时,对模型的不确定性保持乐观(Dyna-Q+、第 13 讲),因为错误可以通过实际尝试来纠正;不能收集新数据时,保持悲观,因为错误无法纠正。
6. 现代的基于模型的方法
6.1 一览
| 方法 | 模型 | 怎样使用模型 | 应对模型误差 |
|---|---|---|---|
| PILCO(Deisenroth & Rasmussen, 2011) | 高斯过程 | 解析地传播不确定性,优化策略 | 把模型的不确定性纳入规划 |
| PETS(Chua et al., 2018) | 神经网络集成 | MPC(交叉熵方法优化动作序列) | 集成表示不确定性 |
| MBPO(Janner et al., 2019) | 神经网络集成 | Dyna 式:短的模型轨迹 + SAC | 只想象很短的几步 |
| World Models(Ha & Schmidhuber, 2018) | 在压缩的隐空间中预测 | 在”梦”里训练控制器 | — |
| Dreamer(Hafner et al., 2020–2023) | 隐空间的循环状态空间模型 | 在想象的隐空间轨迹上训练 actor-critic | 在隐空间中学习、端到端 |
| MuZero(Schrittwieser et al., 2020) | 隐空间的动力学(只预测奖励、价值、策略) | MCTS(第 14 讲) | 不需要重建观察 |
| MOPO / MOReL(2020) | 神经网络集成 | 离线 RL | 按不确定性惩罚(悲观) |
6.2 两个重要的思想
在隐空间中学习模型:直接预测下一帧图像(几万个像素)既困难又浪费——大部分像素(背景、纹理)与决策无关。World Models、Dreamer、MuZero 都先把观察编码成一个紧凑的隐状态,在隐空间中预测未来。
价值等价(value equivalence):MuZero 的模型甚至不要求隐状态能还原出观察——它只要求模型对规划有用的量(奖励、价值、策略)预测准确。一个在每个像素上都准确的模型,可能在预测”这步棋好不好”上并不好;反之亦然。模型的目标应该服务于决策,而不是服务于重建。
6.3 大模型作为世界模型
大语言模型和视频生成模型包含了大量关于世界的知识。一个活跃的研究方向是:把它们当作”世界模型”,让智能体在其中想象和规划——比如在执行一个多步骤的任务之前,先让语言模型”推演”每一步的后果。本讲的教训同样适用:它们的预测有误差,想象得越远越不可靠,而一个足够强的优化器会找到并利用这些错误。
7. 本讲总结
7.1 核心概念清单
- 模型:预测 ;分布模型 vs 样本模型。
- 基于模型的权衡:用计算换数据;代价是模型误差。
- Dyna:直接 RL + 模型学习 + 规划;想象的经验与真实经验用同样的方式更新价值。
- Dyna-Q 的效果:规划把奖励信息反复传播,真实经验需求大幅减少;没见过的地方,模型也帮不上忙。
- 模型过时:变坏的变化会自己暴露;变好的变化需要主动探索才能发现。
- Dyna-Q+:探索奖励 ,鼓励重新验证很久没去过的地方; 太大则探索过度。
- 复合误差:多步预测的误差累积;越界之后完全失控;数据量不能根治分布偏移。
- 对策:短想象(MBPO)、不断重新规划(MPC)、集成估计不确定性(PETS)。
- 优化器的诅咒:在估计的模型中规划会系统性地高估,因为规划会挑选”误差对它有利”的策略。
- 乐观 vs 悲观:能收集新数据时对模型的不确定性保持乐观,不能时保持悲观。
- 现代方法:在隐空间中学习模型;价值等价;大模型作为世界模型。
7.2 公式速查表
| 名称 | 公式 |
|---|---|
| 模型 | , |
| Dyna-Q 规划更新 | , |
| Dyna-Q+ 探索奖励 | |
| 优化器的诅咒 | ,其中 |
7.3 中英术语对照表
| 中文 | 英文 | 中文 | 英文 |
|---|---|---|---|
| 基于模型的强化学习 | Model-based RL | 世界模型 | World model |
| 分布模型 | Distribution model | 样本模型 | Sample model |
| 规划 | Planning | 想象的经验 | Simulated / imagined experience |
| 直接强化学习 | Direct RL | 优先级扫描 | Prioritized sweeping |
| 复合误差 | Compounding error | 开环预测 | Open-loop prediction |
| 模型预测控制 | Model Predictive Control (MPC) | 模型集成 | Model ensemble |
| 优化器的诅咒 | Optimizer’s curse | 模型利用 | Model exploitation |
| 隐空间 | Latent space | 价值等价 | Value equivalence |
8. 练习题
练习 1(Dyna 的直觉):在 2.3 节的实验中,为什么第 1 个回合 与 用的步数差不多?在什么情况下,规划在第 1 个回合就能起作用?
参考答案
第 1 个回合到达终点之前,智能体从没得到过任何奖励,模型中的所有奖励都是 0,规划只是在传播”0”,Q 值不会改变——有没有规划,行为都一样(随机乱走)。只有在环境中有中间奖励(比如每步的惩罚、途中的小奖励),或者模型能泛化到没见过的状态时,规划才能在第一次到达目标之前就起作用。
练习 2(经验回放):在确定性的表格环境中,Dyna-Q 的规划与 DQN 的经验回放有什么相同之处?在随机环境中,“记住最近一次看到的结果”的模型会出什么问题?
参考答案
相同之处:都是把以前见过的 反复拿出来做 Q-learning 更新。在随机环境中,只记住最近一次的结果,相当于把随机的转移当成确定的:比如某个动作有 10% 的概率掉进洞里,如果最近一次恰好掉进去了,模型就认为”一定掉进去”,否则认为”一定不掉”——规划会基于这个错误的确定性做出过于悲观或过于乐观的决策。正确的做法是记录计数,估计转移概率(或者像经验回放那样保存所有的转移,按比例重放)。
练习 3(动手)★:在阻塞迷宫中把 Dyna-Q 的 ε 从 0.1 调到 0.3(更多随机探索),变化后学会新路的种子会变多吗?和 Dyna-Q+ 相比如何?
参考答案
实测(20 个种子):学会新路的种子从 8 个增加到 12 个,变化后 2000 步内到达终点的次数从 25.2 增加到 30.1——有帮助,但远不如 Dyna-Q+(20 个种子全部学会,78.5 次)。更多的随机探索是”盲目”的:它在已经很熟悉的地方也在随机乱走,而且每一步的探索都要付出代价。Dyna-Q+ 的探索是”有方向”的:规划会把智能体有计划地送到很久没去过的地方(第 13 讲的”深度探索”)。
练习 4(动手)★:在 03_model_error.py 的 A 部分,把训练数据的范围从 扩大到 (仍用 3000 个数据点、三次多项式)。发散还会出现吗?多步预测的误差怎样变化?这说明了什么?
参考答案
实测:发散消失了(200 步时 0%),但误差在所有步数上都变大了——单步误差从约 0.0001 增加到 0.0004,200 步时从 0.021 增加到 0.874。原因是三次多项式无法在 这么宽的范围上拟合 ,只能折中,到处都有误差。这说明模型误差有两个来源:覆盖范围(训练数据没见过的地方外推不可信)和模型的表达能力(模型类本身描述不了真实的动力学)。扩大覆盖范围能减少前者,却可能暴露后者。实践中需要足够灵活的模型(比如神经网络)、足够广的数据,以及对不确定性的估计。
练习 5(优化器的诅咒):用一个简单的例子说明优化器的诅咒:10 个选项的真实价值都是 0,你对每个选项的估计是真实价值加上一个标准差为 1 的高斯噪声。你选估计值最大的那个。你对它的估计值的期望是多少?它的真实价值是多少?
参考答案
真实价值是 0(所有选项都一样)。估计值的期望是 10 个标准高斯变量的最大值的期望,约为 1.54。你”以为”选到了一个价值 1.54 的选项,实际上是 0——高估了 1.54。选项越多、噪声越大,高估越严重。这和 5.2 节的实验是同一回事:规划在很多策略中挑选,挑中的往往是”噪声对它有利”的那个。也和第 4 讲的最大化偏差完全相同()。
练习 6(B 部分的悲观):在 5.2 节的实验中,每个 都采样了相同的 次。如果规划时给每个 的奖励都减去同样的 ,选出的策略会改变吗?这说明悲观方法在什么情况下才有用?
参考答案
不会改变(在这个”每步都减去同一个常数”的情况下,所有策略的价值都减少同样的量——严格来说,终止得早的策略少减一些,会略微偏向”尽早结束”,但与不确定性无关)。悲观方法有效的前提是不同的 的不确定性不同:数据少的地方惩罚大,规划就会避开那些”看起来好、但证据不足”的选择。这正是第 10 讲离线 RL 的情形——数据由某个行为策略收集,有的地方数据很多,有的地方很少甚至没有。
练习 7(思考题):MuZero 的模型不需要能还原出观察(比如棋盘的图像),只需要能预测奖励、价值和策略。这样做有什么好处?有什么风险?
参考答案
好处:模型只需要学习与决策相关的信息,不必浪费能力去预测无关的细节(背景、纹理),学习更高效;而且”对规划有用”本身就是训练目标,模型误差集中在不影响决策的地方。风险:模型学到的隐状态只对当前任务有用,换一个任务(奖励不同)可能需要重新学习——失去了”模型可以复用于不同任务”的优点;而且模型的内部表示难以解释和检查,出了问题更难发现。
9. 延伸阅读
- Sutton & Barto,第 8 章(Planning and Learning with Tabular Methods):Dyna、优先级扫描、轨迹采样、MCTS。
- Sutton (1990),Integrated Architectures for Learning, Planning, and Reacting Based on Approximating Dynamic Programming(Dyna)。
- Moerland, Broekens, Plaat & Jonker (2023),Model-based Reinforcement Learning: A Survey。
- Chua et al. (2018),Deep Reinforcement Learning in a Handful of Trials using Probabilistic Dynamics Models(PETS)。
- Janner, Fu, Zhang & Levine (2019),When to Trust Your Model: Model-Based Policy Optimization(MBPO)。
- Ha & Schmidhuber (2018),World Models。
- Hafner et al. (2023),Mastering Diverse Domains through World Models(DreamerV3)。
- Yu et al. (2020),MOPO: Model-based Offline Policy Optimization。
- Smith & Winkler (2006),The Optimizer’s Curse: Skepticism and Postdecision Surprise in Decision Analysis。
10. 下一讲预告
最后一讲,我们把目光投向强化学习最新的前沿——大语言模型中的强化学习:
- 为什么”可验证的奖励”(数学题的答案对不对、代码能不能通过测试)让 RL 在推理任务上大放异彩?
- GRPO:为什么用”一组回答之间的相对好坏”代替价值网络?
- 奖励设计中的陷阱:智能体会找到奖励函数的漏洞(奖励投机);
- 全课回顾:一张图串起所有算法。
下一讲之前,建议你:跑通 code/lecture15/ 下的 3 个脚本,完成练习 1、2、5、6,并尝试练习 3、4。