Model-Based强化学习
到目前为止,我们讨论的所有深度强化学习算法(DQN、PPO、SAC等)都属于Model-Free RL——它们直接从与环境的交互经验中学习价值函数或策略,不去显式地建模环境的动力学。Model-Based RL(MBRL)走了一条完全不同的路:先学一个环境的模型(World Model),然后用这个模型来辅助决策。
这个思路和人类的思维方式更为接近——我们在做决策之前,通常会在脑中"模拟"不同行动的后果,而不是盲目地尝试所有可能的行动。
Model-Free vs Model-Based
两种范式的本质区别
Model-Free RL:
+----------+ 动作a +----------+ r, s' +----------+
| | ------------> | | ------------> | |
| 智能体 | | 环境 | | 价值/策略 |
| (Policy) | <----------- | (真实) | <----------- | (更新) |
+----------+ 观测s, r +----------+ +----------+
直接从 (s, a, r, s') 经验中学习策略/价值函数
不理解"为什么",只知道"什么好"
Model-Based RL:
+----------+ 动作a +----------+ r, s'
| | ------------> | | ------------> 收集数据
| 智能体 | | 环境 | +----------+
| | <----------- | (真实) | | 学习模型 |
+----------+ 观测s, r +----------+ |p(s'|s,a)|
^ +----+-----+
| |
| +----------+ 模拟r, s' |
+-------- | 模型内 | <-----------------------------+
策略优化 | 规划/模拟 |
+----------+
先学环境模型,再在模型中"想象"经验来优化策略
理解"世界如何运作",然后"在脑中做实验"
核心权衡
Model-Free的优势:
- 不需要学习环境模型,避免了模型误差带来的问题
- 理论上保证渐近最优(在无限数据下)
- 实现相对简单
Model-Free的劣势:
- 样本效率极低: 每一次策略更新都需要大量真实环境交互。典型的Atari游戏需要数千万帧,MuJoCo连续控制需要数百万步
- 无法进行"假设推理"——不能回答"如果我当时做了另一个选择会怎样"
Model-Based的优势:
- 样本效率高: 学到环境模型后,可以在模型中无限生成"模拟经验",不需要真实交互
- 可以做规划(Planning)——在执行动作之前,先在模型中模拟多种可能的未来,选择最好的
- 更接近人类的决策方式
Model-Based的劣势:
- 模型误差(Model Error): 学到的模型不可能完美,模型的预测误差会在长时间步的规划中指数级累积——这被称为复合误差(Compounding Error)
- 学习一个好的环境模型本身就是一个很难的问题
- 计算开销大(既要学模型,又要在模型中做规划)
复合误差的数学分析
假设学到的模型 \(\hat{p}(s'|s, a)\) 和真实动力学 \(p(s'|s, a)\) 之间的TV距离为 \(\epsilon_m\):
那么在模型中做 \(H\) 步rollout后,策略的性能差异上界为:
其中 \(\eta(\pi)\) 和 \(\hat{\eta}(\pi)\) 分别是策略在真实环境和学到的模型中的期望回报。关键的洞察是:即使单步模型误差 \(\epsilon_m\) 很小,经过长步数的累积,误差也可以变得非常大。 这就是为什么MBRL中的一个核心设计原则是"短horizon rollout"。
环境模型 (World Model)
什么是世界模型
环境模型(World Model)是对环境动力学的一个近似。一个完整的环境模型通常包含三个组件:
- Transition Model \(\hat{p}(s_{t+1} | s_t, a_t)\):给定当前状态和动作,预测下一个状态
- Reward Model \(\hat{r}(s_t, a_t)\):给定状态和动作,预测即时奖励
- Done Model \(\hat{d}(s_t, a_t)\):预测是否达到终止状态
模型学习
环境模型的学习本质上是一个监督学习问题——从收集到的真实转移数据中学习:
确定性模型:
随机模型(高斯):
通过最大化似然来训练:
随机模型相比确定性模型能更好地捕捉环境的内在随机性(Aleatoric Uncertainty)。
Ensemble模型
单个神经网络模型无法告诉我们"它对自己的预测有多不确定"——这在MBRL中是致命的,因为我们需要知道何时模型的预测不可靠。
Ensemble方法是解决这个问题的最实用方案:训练 \(B\) 个独立初始化的模型 \(\{f_{\theta_1}, f_{\theta_2}, \ldots, f_{\theta_B}\}\)(通常 \(B = 5 \sim 7\)),每个模型在相同数据上但不同初始化下训练。
不确定性估计: 在给定 \((s, a)\) 时,\(B\) 个模型给出 \(B\) 个不同的预测。它们的一致性反映了模型的确定程度:
- 如果所有模型的预测都很一致 → 低不确定性 → 可以信任模型的预测
- 如果模型之间的预测分歧很大 → 高不确定性 → 不应该信任(通常意味着这个 \((s, a)\) 不在训练数据的分布内)
+--------+
(s, a) → | Model 1| → s'_1 = [1.2, 3.4]
+--------+ 低不确定性:
(s, a) → | Model 2| → s'_2 = [1.3, 3.3] 所有模型预测一致
+--------+ → 信任预测
(s, a) → | Model 3| → s'_3 = [1.2, 3.5]
+--------+
(s, a) → | Model 1| → s'_1 = [1.2, 3.4]
+--------+ 高不确定性:
(s, a) → | Model 2| → s'_2 = [5.1, 0.2] 模型预测分歧大
+--------+ → 不信任
(s, a) → | Model 3| → s'_3 = [-0.8, 7.1]
+--------+
Dyna架构
Dyna由Sutton在1991年提出,是Model-Based RL最经典的框架。它的核心思想简洁而深刻:同时从真实经验和模拟经验中学习。
Dyna-Q算法
Dyna-Q将model-free的Q-learning与model-based的规划无缝结合:
Dyna-Q 算法流程:
while not done:
1. 与真实环境交互:
a = ε-greedy(Q, s)
s', r = env.step(a)
2. 用真实经验更新Q (Direct RL):
Q(s,a) ← Q(s,a) + α[r + γ max_a' Q(s',a') - Q(s,a)]
3. 用真实经验更新模型 (Model Learning):
Model(s,a) ← (s', r)
4. 用模型生成模拟经验并更新Q (Planning):
repeat k times:
s̃, ã ← 随机从已访问的(s,a)对中采样
s̃', r̃ = Model(s̃, ã)
Q(s̃,ã) ← Q(s̃,ã) + α[r̃ + γ max_a' Q(s̃',a') - Q(s̃,ã)]
s ← s'
关键洞察: 步骤2和步骤4执行的是完全相同的Q-learning更新,唯一的区别是数据来源——步骤2用的是真实经验,步骤4用的是模型模拟的经验。参数 \(k\) 控制了"每一步真实交互对应多少步模拟训练",可以根据计算预算灵活调整。
Dyna的价值在于提出了一个优雅的概念框架: 规划(Planning)和学习(Learning)可以统一为同一种操作——都是基于经验样本的价值更新,区别仅在于经验是"真实的"还是"想象的"。
MBPO (Model-Based Policy Optimization)
MBPO由Janner等人在2019年提出("When to Trust Your Model: Model-Based Policy Optimization"),是将Model-Based方法与现代Deep RL成功结合的里程碑工作。它的核心创新是:用短horizon的模型rollout来在样本效率和模型误差之间取得最优平衡。
动机
直接在学到的模型中做长期规划(如Dyna中做很多步模拟)面临一个根本性矛盾:
- rollout太长: 复合误差累积,模拟的轨迹越来越不准确,垃圾数据会毒害策略学习
- rollout太短: 虽然准确,但模拟经验的多样性不够,样本效率提升有限
MBPO的关键洞察是:存在一个最优的rollout长度 \(k\),使得模型带来的样本效率增益恰好超过模型误差带来的性能损失。
算法设计
MBPO的核心流程:
- 从真实环境中收集数据 → 更新环境模型(Ensemble)
- 从真实状态开始,用模型做 \(k\) 步branched rollout → 生成大量模拟数据
- 用模拟数据 + 真实数据训练策略(底层使用SAC)
MBPO Branched Rollout:
真实轨迹: s1 ---a1--→ s2 ---a2--→ s3 ---a3--→ s4 ---a4--→ s5
| |
模型rollout | 模型rollout |
(k=3步) v (k=3步) v
s̃2_1 s̃4_1
| |
s̃2_2 s̃4_2
| |
s̃2_3 s̃4_3
从真实轨迹上的状态出发,用学到的模型向前推演k步
生成大量的"branched"模拟经验
为什么从真实状态开始branching? 因为模型从真实分布的状态出发做短步推演,每一步的输入都相对可靠。相比之下,如果让模型从头开始生成整条轨迹,后面的状态会越来越偏离真实分布。
理论保证
MBPO的关键理论结果是一个单调改进保证。设 \(\eta[\pi]\) 为真实环境中策略 \(\pi\) 的期望回报,\(\hat{\eta}[\pi]\) 为模型中的期望回报,则:
其中 \(\epsilon_m\) 是模型误差,\(\epsilon_\pi\) 是策略变化幅度(可以用SAC的KL约束控制),\(C\) 是与rollout长度 \(k\) 相关的常数。
这个不等式告诉我们:只要模型误差 \(\epsilon_m\) 和策略变化 \(\epsilon_\pi\) 足够小,我们可以保证在模型中的策略改进会转移到真实环境中。而短rollout正是控制 \(\epsilon_m\) 对最终性能影响的关键手段。
MBPO算法伪代码
Algorithm: MBPO
-----------------------------------
初始化: 策略 π, 环境模型 ensemble {f_θ1, ..., f_θB},
真实数据buffer D_env, 模拟数据buffer D_model
for each iteration:
// 1. 收集真实数据
用π与真实环境交互 → 将新数据加入 D_env
// 2. 更新环境模型
在D_env上训练ensemble模型 {f_θ1, ..., f_θB}
// 3. 模型Rollout (branched)
for each state s sampled from D_env:
从s出发,用随机选取的ensemble成员
做k步rollout → 将模拟数据加入 D_model
// 4. 策略优化
for G gradient steps:
从 D_env ∪ D_model 中采样mini-batch
用SAC更新策略 π
Dreamer系列
Dreamer系列由Hafner等人从2020年开始提出,代表了Model-Based RL的另一个重要方向:在学到的潜在空间(Latent Space)中做完整的"想象"训练——不仅用模型生成模拟数据,更是让策略完全在想象中学习。
Dreamer v1: 在想象中学习
Dreamer v1("Dream to Control: Learning Behaviors by Latent Imagination", 2020)的核心创新是RSSM和纯想象训练。
RSSM (Recurrent State-Space Model)
RSSM是Dreamer的"世界模型"核心,它将潜在状态分成两部分:
- 确定性部分 \(h_t\): 由GRU维护的隐状态,捕捉长期依赖
- 随机性部分 \(z_t\): 随机采样的潜在变量,捕捉环境的内在随机性
RSSM包含四个组件:
其中 \(o_t\) 是原始观测(如图像像素)。
RSSM 信息流:
o_t (观测) o_{t+1} (观测)
| |
v v
+---------+ +---------+
|Posterior | |Posterior |
|q(z|h,o) | |q(z|h,o) |
+----+----+ +----+----+
| |
v v
z_t z_{t+1}
| |
h_t --+---- GRU -----> h_{t+1} --+---- GRU ----> ...
| |
v v
+---------+ +---------+
| Prior | | Prior |
|p(ẑ|h) | |p(ẑ|h) |
+---------+ +---------+
| |
v v
+---------+ +---------+
| Decoder | | Decoder |
|p(ô|h,z)| |p(ô|h,z)|
+---------+ +---------+
| |
v v
ô_t ô_{t+1}
Prior vs Posterior的区别:
- Posterior \(q(z_t | h_t, o_t)\):同时看到了确定性状态 \(h_t\) 和真实观测 \(o_t\),用于训练时
- Prior \(p(\hat{z}_t | h_t)\):只看确定性状态 \(h_t\),不看真实观测,用于想象rollout时(因为想象中没有真实观测可用)
训练时通过最小化Prior和Posterior之间的KL散度,让Prior学会"不看观测也能合理地预测随机状态":
纯想象训练
Dreamer的策略学习完全在RSSM的潜在空间中进行:
- 从真实数据中采样初始状态 \((h_t, z_t)\)
- 用RSSM的Prior(不用Posterior,因为没有真实观测)向前推演 \(H\) 步
- 在这些"想象"的轨迹上,用Actor-Critic方法训练策略
这比MBPO更加彻底——MBPO还需要在真实数据上做部分训练,而Dreamer的策略完全在想象中学习,真实数据只用于训练世界模型。
Dreamer v2: 离散潜在表示
Dreamer v2("Mastering Atari with Discrete World Models", 2021)的关键改进:
1. 离散潜在空间
将连续的潜在变量 \(z_t\) 替换为离散的向量。具体来说,\(z_t\) 由32个categorical分布组成,每个有32个类别,总共 \(32 \times 32 = 1024\) 种组合。
离散表示的优势:
- 更适合表示离散的环境特征(如物体的存在/缺失)
- 训练更稳定(连续VAE容易出现posterior collapse)
- 与Transformer等离散序列模型更兼容
2. KL Balancing
标准的VAE训练中,KL散度 \(D_{\text{KL}}(q \| p)\) 会同时推动posterior \(q\) 向prior \(p\) 靠近,也推动prior \(p\) 向posterior \(q\) 靠近。但在Dreamer中这两个方向的推动力应该不对称:
其中 \(\text{sg}\) 是stop-gradient操作,\(\alpha = 0.8\)。这使得prior被推动得更多(去"追上"posterior),而posterior受到的约束较少,可以更自由地编码信息。
Dreamer v3: 通用世界模型
Dreamer v3("Mastering Diverse Domains through World Models", 2023)的目标极其宏大:一套固定的超参数,在所有领域(从Atari到连续控制到3D游戏)都能工作。
Dreamer v3的核心技术创新:
1. Symlog Predictions
不同任务的奖励量级可能相差数个数量级(Atari中奖励可能是0-1000,而某些控制任务中奖励可能是-0.01到0.01)。Dreamer v3使用symlog变换来处理这种量级差异:
模型预测symlog空间中的值,推理时再通过symexp变换回原始空间。这比简单的reward clipping或normalization更加灵活。
2. Free Bits
KL散度低于某个阈值时不产生梯度,避免posterior collapse:
3. Percentile Scaling
对return进行百分位归一化,而不是用固定的量级:
其中 \(\text{Per}_5\) 和 \(\text{Per}_{95}\) 是return分布的第5和第95百分位数。
里程碑成果: Dreamer v3是第一个从像素输入、在没有任何先验知识的情况下学会在Minecraft中收集钻石的MBRL算法。这个任务需要智能体完成一个包含数十个子目标的长期序列(砍树→制作工作台→制作木镐→挖石头→制作石镐→挖铁矿→冶炼铁→制作铁镐→挖钻石矿),需要极强的长期规划能力。
MuZero
MuZero由Schrittwieser等人在2020年提出("Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model"),是DeepMind AlphaGo系列的最新演化。它代表了Model-Based RL的另一个极端哲学:不去学习完整的环境模型(如预测下一帧像素),而是只学习"对决策有用的"模型。
从AlphaGo到MuZero的进化
| 算法 | 环境模型 | 人类知识 | 适用范围 |
|---|---|---|---|
| AlphaGo | 已知(围棋规则) | 需要(人类棋谱) | 仅围棋 |
| AlphaGo Zero | 已知(围棋规则) | 不需要 | 仅围棋 |
| AlphaZero | 已知(游戏规则) | 不需要 | 围棋、国际象棋、将棋 |
| MuZero | 学习的模型 | 不需要 | 任意环境 |
MuZero的革命性在于:它不需要知道环境的规则。 AlphaZero在规划时需要调用真实的游戏模拟器(比如"如果我在这里下一步棋,棋盘会变成什么样"),这要求完美的环境规则。MuZero用一个学到的模型来替代真实模拟器,使其能应用于任何环境。
三个网络
MuZero的架构由三个紧密协作的神经网络组成:
1. Representation Function \(h_\theta\)(表示函数):
将原始观测序列 \((o_1, \ldots, o_t)\) 编码为一个隐状态(Hidden State) \(s^0\)。注意这个隐状态不需要和真实的环境状态有任何对应关系——它只需要包含"对决策有用的信息"。
2. Dynamics Function \(g_\theta\)(动力学函数):
给定当前隐状态 \(s^k\) 和动作 \(a^{k+1}\),预测下一个隐状态 \(s^{k+1}\) 和即时奖励 \(r^{k+1}\)。这就是MuZero的"世界模型",但它在隐空间中运作,不去预测具体的像素级观测。
3. Prediction Function \(f_\theta\)(预测函数):
给定隐状态 \(s^k\),预测策略(动作概率分布)\(p^k\) 和价值 \(v^k\)。这和AlphaZero中的策略-价值网络完全对应。
MuZero 架构:
真实观测 隐空间中的规划
(MCTS in latent space)
o1, ..., ot
| s^0 ---a1--→ s^1 ---a2--→ s^2 ---a3--→ s^3
v | r^1 | r^2 | r^3 |
+--------+ v v v v
| h(obs) | ----→ s^0 (p^0,v^0) (p^1,v^1) (p^2,v^2) (p^3,v^3)
+--------+ 表示
函数 预测函数f 动力学函数g + 预测函数f
MCTS规划
MuZero在每一步决策时,都使用MCTS(Monte Carlo Tree Search)在隐空间中进行规划。MCTS的流程如下:
- Selection(选择): 从根节点 \(s^0\) 开始,根据UCB公式选择动作,沿着树向下走,直到到达一个尚未展开的叶子节点
- Expansion(展开): 在叶子节点处,用dynamics function \(g_\theta\) 和prediction function \(f_\theta\) 展开新节点
- Backup(回传): 将叶子节点的价值估计 \(v^k\) 沿着路径向上回传,更新路径上所有节点的统计信息
- Action Selection(选择动作): 重复以上步骤多次(如800次模拟),然后根据根节点各动作的访问次数来选择最终的动作
UCB公式用于平衡探索与利用:
其中 \(Q\) 是估计的动作价值,\(P\) 是prediction function给出的先验策略,\(N\) 是访问计数,\(c\) 是探索系数。
训练
MuZero的训练目标是让三个网络的预测与真实的游戏结果对齐:
- 奖励损失: 预测的奖励 \(r^k\) 应该匹配真实奖励 \(u_{t+k}\)
- 价值损失: 预测的价值 \(v^k\) 应该匹配bootstrapped value target \(z_{t+k}\)
- 策略损失: 预测的策略 \(p^k\) 应该匹配MCTS搜索后的改进策略 \(\pi_{t+k}\)
一个关键细节:训练时,dynamics function \(g_\theta\) 被展开 \(K\) 步(通常 \(K = 5\)),并且梯度会通过整个展开链回传。这意味着隐状态 \(s^k\) 被end-to-end地训练为"对决策有用的表示"。
核心哲学:只建模重要的东西
MuZero和Dreamer代表了两种不同的世界模型哲学:
- Dreamer: 学一个尽可能准确的世界模型(要能重建观测),然后在模型中做策略学习
- MuZero: 只学习"对决策有用的"信息(预测奖励、价值和策略),不关心能否重建观测
MuZero的哲学在某些场景下更有优势。例如在Atari游戏中,画面中有很多对决策无关的视觉细节(如背景纹理、粒子效果)。Dreamer需要花费大量模型容量去重建这些无关细节,而MuZero完全忽略它们,只关注那些影响决策的信息。
MBRL方法对比
| 维度 | Dyna-Q | MBPO | Dreamer v3 | MuZero |
|---|---|---|---|---|
| 模型类型 | 表格/简单NN | Ensemble NN | RSSM(潜在空间) | 隐空间动力学模型 |
| 规划方法 | 模拟经验+Q更新 | 短horizon rollout | 潜在空间Actor-Critic | MCTS |
| 状态空间 | 离散/低维 | 连续(低/中维) | 连续(含高维像素) | 任意 |
| 观测重建 | N/A | 不需要 | 需要(Decoder) | 不需要 |
| 样本效率 | 中等 | 高 | 高 | 极高 |
| 计算开销 | 低 | 中 | 高 | 极高(MCTS) |
| 适用领域 | 教学/简单任务 | 连续控制 | 通用(含像素) | 棋类/Atari |
| 关键创新 | 学习+规划统一 | 短horizon + monotonic improvement | RSSM + 纯想象训练 | 隐空间规划 + MCTS |
选择建议:
- 低维连续控制、追求样本效率: MBPO
- 高维像素输入、通用性: Dreamer v3
- 离散动作空间、需要精确规划: MuZero
- 学习和教学: Dyna-Q(概念简洁,是理解MBRL的最佳起点)
总结与展望
Model-Based RL的核心价值在于样本效率——通过学习环境模型,智能体可以在"想象"中获得大量经验,大幅减少与真实环境的交互次数。这在真实交互昂贵或危险的场景中至关重要。
从Dyna到MBPO到Dreamer到MuZero,我们可以看到一条清晰的发展脉络:
- Dyna(1991): 提出学习与规划统一的框架
- MBPO(2019): 用短horizon rollout解决复合误差,首次在连续控制上超越model-free方法
- Dreamer(2020-2023): 在潜在空间中做完整的想象训练,实现像素级输入的高效学习
- MuZero(2020): 只建模决策相关信息,在棋类和Atari上达到超人水平
未来的趋势是大规模世界模型(Foundation World Model)——类似于语言模型从海量文本中学到了通用的语言理解能力,世界模型有望从海量的视频和交互数据中学到通用的物理直觉和环境理解。Dreamer v3和MuZero的成功已经表明,学到的世界模型可以支撑复杂任务的决策。下一步是将这种能力推广到更加开放和多样化的现实世界场景中。