DreamerV3: Mastering Diverse Domains through World Models
论文:Mastering Diverse Domains through World Models 机构:Google DeepMind × 多伦多大学 arXiv:2301.04104
一句话定位
一个算法,固定超参数,打遍 8 大领域 150+ 任务,还是史上第一个从零挖到 Minecraft 钻石的 AI。
DreamerV3 的核心哲学是:让 AI 先建立一个"世界模型",然后在脑子里反复推演"如果我这样做,会发生什么",从而学会最优策略——而不是每次都要去真实环境里碰壁。
1. 三网络架构总览
DreamerV3 由三个神经网络协同工作,分工如下:
| 网络 | 角色比喻 | 核心职责 |
|---|---|---|
| 世界模型 | 脑中的沙盘 | 把图像压缩成隐状态,预测未来会发生什么 |
| 演员(Actor) | 决策执行者 | 在脑内想象中选择动作,最大化回报 |
| 批评家(Critic) | 战略顾问 | 估算当前状态的长远价值,监督演员学习 |
三者的完整协作循环分三圈:
第一圈——收集经验:演员把当前隐状态 $s_t$ 输入进去,采样出动作 $a_t$,去真实环境里执行一步,得到新的图像观测 $x_{t+1}$ 和奖励 $r_t$,存入经验回放池。
第二圈——世界模型学习:从回放池采一批历史轨迹,编码器把图像压成 $z_t$,GRU 更新记忆 $h_t$,解码器重建图像验收信息量,三路损失一起反传更新参数。
第三圈——想象训练(纯脑内):从某个真实隐状态 $s_1$ 出发,演员选动作,动态预测器推算下一个 $s_2$(不看任何图像),如此滚动 15 步,奖励预测器对每步打分,批评家在终点估算长远价值,合并成 $\lambda$-回报,同时反传给演员和批评家。
三网络并行更新——世界模型在学认识世界,演员和批评家在世界模型的"梦境"里学习决策,更好的演员又产生更高质量的真实经验……这个飞轮就这样一圈一圈转下去。
2. 世界模型:脑中的沙盘
2.1 整体结构
世界模型使用 RSSM(循环状态空间模型),由以下组件构成:
图像 xₜ
│
▼
编码器(CNN/MLP)──→ 离散隐变量 zₜ ──→ 解码器──→ 重建 x̂ₜ
│
(h_{t-1}, a_{t-1})
│
▼
GRU 序列模型──→ 更新记忆 hₜ
│
▼
动态预测器──→ 预测 ẑₜ(不看图像)
│
奖励预测器、终止预测器
- 编码器:把当前图像/传感器输入压缩成随机离散表示 $z_t$——就像把一张照片压成一句"精髓摘要"
- 序列模型(GRU):维护隐藏状态 $h_t$,记住"历史上都发生了什么"
- 动态预测器:在没有真实图像输入的情况下预测 $\hat{z}_t$,让 AI 可以纯靠"脑补"向前推演
- 奖励预测器:预测下一步的即时奖励 $\hat{r}_t$
- 终止预测器:预测当前 episode 是否会结束
- 解码器:把隐变量还原成图像,用于"验收"表示是否足够有信息量
世界模型的训练目标是三项损失的加权组合:
$$\mathcal{L} = \mathcal{L}_\text{pred} + \beta_\text{dyn} \cdot \mathcal{L}_\text{dyn} + \beta_\text{rep} \cdot \mathcal{L}_\text{rep}$$- $\mathcal{L}_\text{pred}$(预测损失):解码器、奖励预测器、终止预测器的重建误差
- $\mathcal{L}_\text{dyn}$(动态损失):序列模型预测的分布 vs 真实编码分布的 KL 散度——让"脑补"接近"真实"
- $\mathcal{L}_\text{rep}$(表示损失):让编码表示变得更容易被预测($\beta_\text{rep} = 0.1$,权重很小,只起轻微正则化作用)
2.2 深挖:什么是表示退化,如何防止?
表示退化(Representation Collapse) 是训练时的一个隐患。
理解它,需要先看懂两个损失之间的内在张力:
- 动态损失的目标:让序列模型仅凭历史动作,不看当前图像,就能预测出下一个 $z_t$
- 预测损失的目标:让 $z_t$ 包含足够丰富的信息,能还原出原始图像
这两个目标天然对立。想象一个"懒惰的学生"策略:如果编码器把所有状态都编码成几乎相同的东西(比如全是 0),那么序列模型就超容易预测——“不管发生什么,下一个 $z$ 都差不多”!动态损失(KL 散度)就会变得极小,优化器非常"满意"。但代价是 $z_t$ 已经什么信息都不包含了,整个表示系统名存实亡。
一个直觉比喻:你要给朋友写旅行日记(还原图像),同时你妈妈要根据行程猜出日记内容(动态预测)。退化就是:你每天都写"今天天气不错"——妈妈当然每次都能猜对!但日记毫无信息量。
DreamerV3 用两个机制联合对抗退化:
① 自由比特(Free Bits):对 KL 损失设置下限(1 nat)
$$\mathcal{L}_\text{dyn} = \max(1,\ \text{KL}[\hat{z}_t \| z_t])$$当 KL 已经足够小时,停止继续压缩它,把优化器的注意力强制转回到重建损失上。就像告诉那个懒学生:“日记写得太水了,你妈妈猜得再准也没用,还是给我好好写!”
② 小表示损失权重($\beta_\text{rep} = 0.1$):表示损失只起轻微正则化作用,不让它主导训练,避免过度压缩。
为什么以前的方法容易踩坑? DreamerV2 在复杂 3D 环境(如 DMLab)里需要调大 KL 权重防止退化,但在 Atari 像素细节很重要的场景里又需要调小——需要根据环境的视觉复杂度手动调参,是通用化的死敌。“自由比特 + 小表示权重"的组合拳,让同一套超参数在所有环境都能稳定工作。
与 LeWorldModel 的 SIGReg 对比
LeWM 是另一个世界模型框架,用 SIGReg 正则化防止同一个问题,但哲学截然不同:
DreamerV3(被动防御):靠重建损失托底——编码器不敢把表示压成废物,因为解码器随时"验收”。Free Bits 只是说"别过度压缩",真正让表示有意义的是重建任务本身,防退化是副产品。
LeWorldModel(主动塑形):完全不做像素重建,没有重建任务托底,所以 SIGReg 直接规定隐空间的几何形状——基于 Cramér-Wold 定理,将所有一维投影约束为高斯分布,迫使整体分布趋近各向同性高斯球形。如果所有表示塌缩到一个点,球形不可能成立,损失函数就会反弹,从数学上让退化不可能发生。
SIGReg 是更简洁的数学答案(一个定理、一个损失项、一个超参数),DreamerV3 的 Free Bits 是工程经验的结晶。两者是趋同的两条路线,下一代世界模型很可能会融合这两种思想。
3. 演员:决策执行者
演员的职责是选择动作,通过熵正则化保持探索,同时最大化预期回报。
最核心的工程挑战是:不同环境的奖励尺度天差地别——有的环境奖励以百万计(Atari Atlantis),有的稀疏得十几步才得一分(Minecraft)。如何用固定的熵系数 $\eta = 3 \times 10^{-4}$ 适配所有环境?
答案是回报归一化(Return Normalization):
- 计算想象轨迹中回报的第 5 到第 95 百分位之间的范围 $S$(剔除离群值)
- 用指数移动平均平滑这个范围
- 把回报除以 $\max(S, 1)$(保留下限 $L=1$,小回报不被放大)
这比直接归一化优势(Advantage Normalization)更聪明:奖励稀疏时不会把噪声放大、强行压制探索;奖励密集时又能高效收敛。
4. 批评家:战略顾问
4.1 批评家的职责
批评家的任务是估算"从当前状态出发,未来总共能拿多少分"。它在世界模型"脑补"出来的想象轨迹中学习,不需要真实环境的每步反馈。
几个关键设计:
- $\lambda$-回报(Bootstrapped $\lambda$-returns):结合短期预测奖励和长期价值估计,折扣因子 $\gamma = 0.997$,预测视野 $T = 16$ 步
- 指数移动平均目标网络:防止学习目标漂移
- 零初始化输出层:输出层权重初始化为零,避免训练初期产生"幻觉价值",加速早期学习
4.2 奖励预测器 vs 批评家:容易混淆的两兄弟
两者都和"回报"有关,但预测的是完全不同的东西:
| 奖励预测器 | 批评家 | |
|---|---|---|
| 角色比喻 | 裁判 | 战略顾问 |
| 预测对象 | 即时奖励 $\hat{r}_t$(这一步得几分) | 累积回报 $v_t$(从现在到结束的总分) |
| 时间跨度 | 只看当下这一步 | 未来所有折扣奖励之和 |
| 训练信号 | 真实环境的 $r_t$,直接监督 | $\lambda$-回报(自举,用自己预测引导自己) |
| 网络规模 | 1 层 MLP(轻量) | 3 层 MLP(较深) |
| 归属 | 世界模型的一部分 | 独立网络 |
依赖关系是单向的——奖励预测器是批评家的"上游供应商":
真实环境的 rₜ
│ 训练
▼
奖励预测器
│ 在想象中输出 r̂₁, r̂₂ ... r̂ₕ
│ + 批评家自己的 vₕ(自举)
│ 合并成 λ-回报
│ 训练
▼
批评家
批评家学会估算长远价值,依赖的那些虚拟奖励全都是奖励预测器在想象轨迹里预测出来的。如果奖励预测器学得不好,批评家再聪明也没用——它喝的是"假奶"。
4.3 深挖:分布式价值预测
批评家不输出一个数字,而是输出一个完整的概率分布,捕捉价值预测的不确定性。
为什么点估计不够用? 问朋友考试能得多少分:
- 朋友 A:“72 分。"(点估计,隐藏了所有不确定性)
- 朋友 B:“可能在 60~85 之间,最可能 72 分,但也有小概率考到 90+。"(分布,信息量更丰富)
强化学习里未来回报本来就充满不确定性(随机世界、运气、策略随机性),所以批评家输出概率分布更合理。
具体实现:指数间隔分箱 + Twohot 编码
为什么需要指数间隔?
不同环境回报尺度天差地别(BSuite: 01,Atari Atlantis: 01,500,000)。均匀分箱要覆盖百万级范围同时保持小值精度,需要几百万个格子——不现实。
指数间隔的思路是近处密,远处稀,就像地图的比例尺:市区街道要精细,全国地图可以粗略。用 symexp 函数定位格子边界,大约 41 个格子就能覆盖从负无穷到正无穷的整个范围:
格子编号 边界值(大约)
0 -485,165,195 ← 极大负值
15 -54
18 -7
20 0 ← 中间格子
22 +7
25 +54
40 +485,165,195 ← 极大正值
Twohot 如何处理连续目标?
训练时真实回报是连续值(如 7.3),但格子是离散的。解决方案:按距离比例把概率分给最近两个格子:
- 格子 5 的位置是 7.0,格子 6 的位置是 8.0,真实回报是 7.3
- 格子 5 分到权重 = $(8.0 - 7.3)/(8.0 - 7.0) = 0.7$
- 格子 6 分到权重 = $(7.3 - 7.0)/(8.0 - 7.0) = 0.3$
- 训练目标:
[..., 0.7, 0.3, ...],用交叉熵损失训练
读出预测值时用期望值(加权平均):$\hat{v} = \sum_i p_i \cdot b_i$
最大的好处是什么?
梯度大小与预测目标的量级解耦:
- MSE 损失:梯度 $\propto$(预测值 - 真实值)。真实值 1,000,000、预测值 500,000 → 梯度 500,000,直接炸掉训练
- Twohot 交叉熵:梯度 $\propto$(预测概率 - 目标分布),这个差值永远在 0~1 之间,无论真实值是 7 还是 7,000,000,梯度都保持稳定
这就是为什么 DreamerV3 能用完全相同的批评家,同时在 Atari(回报上百万)和 Minecraft(回报 0~12)上稳定工作。
5. 鲁棒预测技术:让万物皆可预测
5.1 Symlog 变换
不同环境的输入和奖励尺度可能相差千倍。DreamerV3 提出 Symlog 作为"万能压缩器”:
$$\text{symlog}(x) = \text{sign}(x) \cdot \ln(|x| + 1)$$$$\text{symexp}(x) = \text{sign}(x) \cdot (e^{|x|} - 1)$$
三个优良特性:
- 关于原点对称(可处理负值)
- 零点附近近似恒等变换(小值不受影响)
- 大值被对数压缩(防止梯度爆炸)
所有向量观测值通过 symlog 变换编码,解码目标也用 symlog 表示。
5.2 Symexp Twohot 损失
对于可能随机的目标(奖励、价值),使用指数间隔分箱的 Symexp Twohot 损失(已在上一节详细介绍)。核心收益:梯度稳定性与目标量级完全解耦。
6. 实验结果:八大擂台
| 领域 | 环境步数 | 主要竞争者 | 结果 |
|---|---|---|---|
| Atari 57 游戏 | 200M | MuZero, Rainbow | 🏆 超越 MuZero,计算量更少 |
| ProcGen 16 游戏 | 50M | PPG, Rainbow | 🏆 匹配专用调参的 PPG |
| DMLab 30 任务 | 100M | IMPALA@1B, R2D2+@1B | 🏆 效率提升 10 倍以上 |
| Atari 100k 26 游戏 | 400K | IRIS, TWM, SPR | 🏆 游戏者均值 125%(超越人类) |
| 本体感知控制 18 任务 | 500K | D4PG, DMPO | 🏆 新 SOTA |
| 视觉控制 20 任务 | 1M | DrQ-v2, CURL | 🏆 新 SOTA |
| BSuite 23 环境 | — | Boot DQN, DQN | 🏆 新 SOTA |
| Minecraft 钻石 | 100M | IMPALA, PPO | 🏆 全球唯一成功者 |
6.1 Minecraft 钻石——历史性突破
在 Minecraft 中收集钻石需要完成完整的 12 步技术树(砍树→木板→木棍→工作台→木镐→圆石→石镐→铁矿→熔炉→铁锭→铁镐→钻石),每步奖励 +1 分,约需 20 分钟游戏时间,在随机生成的无限世界中进行。
DreamerV3 训练了 10 个随机种子,100% 最终都收集到了钻石,在 0.4% 的 episode 中能成功。相比之下,IMPALA 和 Rainbow 最多推进到铁镐,无一挖到钻石。
更惊人的对比:此前唯一成功的方案(VPT)需要 720 个 GPU 运行 9 天 + 大量人类键鼠操作数据;DreamerV3 只用了 1 个 A100 GPU 跑 9 天,全程无人类数据。
7. 消融实验:每个技巧都不是废话
在 14 个多样任务上逐项消融,所有改动都导致性能下降:
| 去掉的模块 | 影响 |
|---|---|
| 观测 Symlog | 学习不稳定,大幅掉分 |
| 回报归一化(改用优势归一化) | 稀疏奖励任务严重退化 |
| Symexp Twohot(改用 Huber 损失) | 平均性能明显下降 |
| KL 平衡 & 自由比特 | 影响最大!世界模型质量严重下降 |
| 全部去掉 | 表现大幅下滑 |
一个反直觉的发现:DreamerV3 的核心驱动力是世界模型的无监督重建目标,而非任务的奖励/价值梯度。这与 DQN、MuZero 等完全依赖任务信号的算法范式不同,暗示未来可以通过无监督预训练来快速适配新任务。
8. 可扩展性:越大越强,越大越省数据
论文测试了从 12M 到 400M 参数的 6 种规模,以及不同的 Replay Ratio(每步环境交互对应的梯度更新次数):
- 模型越大:最终性能单调提升,需要的环境交互步数反而更少
- Replay Ratio 越高:数据效率更高(但计算量更大)
- 全程超参数固定:不需要针对不同规模重新调参
这为从业者提供了清晰的"加钱升配"路线——算力有限就跑小模型,算力充裕就上大模型,速度更快性能更强。
9. 相关工作定位
DreamerV3 是第三代:
DreamerV1 ──→ 仅限连续控制
DreamerV2 ──→ Atari 超越人类,但需要调参
DreamerV3 ──→ 跨域开箱即用,征服 Minecraft
主要竞品对比:
- PPO:泛用但需要大量数据,性能偏低
- MuZero:Atari+棋类利器,但未开源且组件复杂
- Gato:需要专家示范数据
- Voyager:同样在 Minecraft 取得深度,但依赖 MineFlayer 脚本层的高级动作抽象和 LLM API 调用
10. 结论与展望
DreamerV3 不仅是一个强大的强化学习算法,更重要的是揭示了一条路线图:
让 AI 通过互联网视频学习世界知识,并建立跨域的通用世界模型
一个智能体,一个世界模型,无限域的经验积累——这或许正是通往更通用人工智能的道路。
附录:关键超参数速查
| 参数 | 值 | 含义 |
|---|---|---|
| $\gamma$ | 0.997 | 折扣因子 |
| $T$ | 16 步 | 想象轨迹长度 |
| $\eta$ | $3 \times 10^{-4}$ | 演员熵系数 |
| $\beta_\text{dyn}$ | 0.5 | 动态损失权重 |
| $\beta_\text{rep}$ | 0.1 | 表示损失权重 |
| Free Bits 下限 | 1 nat | KL 损失的最低值 |
| 分箱数 | 约 41 | Twohot 的格子数量 |
| 模型规模 | 12M~400M | 测试范围 |
相关阅读
- LeWorldModel - LeCun 团队的 JEPA 架构世界模型,用 SIGReg 正则化对抗表示退化(对比见 §2.2)
- Fast-WAM - 世界动作模型,探讨视频生成在训练与推理中的角色差异