DreamerV3 - 固定超参数打穿150+任务的通用世界模型

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)

  1. 计算想象轨迹中回报的第 5 到第 95 百分位之间的范围 $S$(剔除离群值)
  2. 用指数移动平均平滑这个范围
  3. 把回报除以 $\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 - 世界动作模型,探讨视频生成在训练与推理中的角色差异