⏱ ~47 min
里程碑
⭐ 为何重要

Hafner 等(DeepMind)的 DreamerV3 是 model-based RL 复兴的标志性工作:用一套固定超参在 150+ 任务(DMC/Atari/Crafter/Minecraft,含首个无超参 Minecraft diamond)上超过专用方法,证明 world-model-based RL 已具备 foundation 算法的潜质。它是 TD-MPC2、IRIS、TWM、1X WM、Cosmos-RL 等 T09(World Model as Simulator)链现代分支的共同起点。

建立在
  • DreamerV2
  • PlaNet
催生
机器人150+ tasks incl. DMC, Atari, Minecraft
物理感知
输入模态vision

P-DreamerV3-2023:固定超参跨域的 RSSM 世界模型(Mastering Diverse Domains through World Models / Mastering diverse control tasks through world models)

作者 / 机构:Danijar Hafner, Jurgis Pasukonis, Jimmy Ba, Timothy Lillicrap(Google DeepMind / University of Toronto)
发表:arXiv 2023.01 首发(标题 Mastering Diverse Domains through World Models);正式收录 Nature 2025(标题改为 Mastering diverse control tasks through world models,vol. 640, pp. 647–653,DOI 10.1038/s41586-025-08744-2)
arxiv:2301.04104 · 代码:github.com/danijar/dreamerv3 · 项目页:danijar.com/project/dreamerv3
在线索中的位置T09 · World Model 作 simulator 主线 A「model-based RL 复兴」的当前制高点
一句话定位:第一个固定超参就跨 150+ 任务(含 Minecraft 钻石)的 model-based RL 算法——通过 RSSM + symlog/twohot 归一化 + free bits,让 latent world model 真正"通用"。

动机

model-based RL 一直被两个老问题卡住:

  1. Brett's ratio / model bias:学的世界模型有误差,policy 在错模型上想象会 exploit 模型 bug,部署到真环境就崩。
  2. 每个 domain 都要手调超参:DreamerV2 在 Atari/Crafter 上能用,但每类环境要单独调 KL 系数、reward scale、模型大小、horizon……不通用。

Hafner 的核心 question:能不能做一套固定超参的 model-based RL,使世界模型在大尺度(Atari 几百分、Minecraft 几千分、proprio control 小数)的 reward 跨度、不同观测模态(图像/符号)、不同 action repeat 频率下都稳定?

方法核心:RSSM + 在想象中训 actor-critic + 大量归一化 trick

1. RSSM 世界模型(论文 Eq. 1)

状态 = 确定性 $h_t$ + 离散随机 $z_t$(世界模型参数记 $\phi$,与 actor $\theta$、critic $\psi$ 区分):

$$h_t = f_\phi(h_{t-1}, z_{t-1}, a_{t-1}) \quad \text{(GRU, deterministic)} \tag{1a}$$

$$\hat z_t \sim p_\phi(\hat z_t \mid h_t) \quad \text{(prior, encoder-agnostic, 用于 imagination)} \tag{1b}$$

$$z_t \sim q_\phi(z_t \mid h_t, o_t) \quad \text{(posterior, 仅训练时看观测)} \tag{1c}$$

$z_t$ 由 $d/16$ 个 categorical 组成,每个 categorical 32 类(沿用 DreamerV2 的 32 类设置;categorical 个数随 model size 变化——见下方 Table 3,默认 200M 模型 $d=1024$ 对应 64 个 categorical × 32 类 = 2048 维离散 latent)。V3 把 V2 的离散 latent 通用化到所有 domain,包括 DMC proprio 输入——之前 V2 只在图像上用离散。

Sequence model(GRU)的关键架构细节(论文 Networks 小节,Sec. "Implementation Details"):

  • GRU 使用 block-diagonal recurrent weights,分成 8 个 block——这样可以在不二次增加参数量/FLOPs 的情况下使用大数量的 memory units。
  • GRU 每步输入是 $(z_t, a_t, h_t)$ 的线性 embedding 拼接,允许 block 间混合。
  • 序列模型激活用 RMSNorm + SiLU(非 ReLU/GELU),是 V3 的工程改动。
  • 1% unimix 同样注入 encoder、dynamics predictor、actor 的所有 categorical 分布,防止零概率导致的无穷大 log-prob。

2. 世界模型训练损失(Eq. 2–3)

$$\mathcal{L}(\phi) = \mathbb{E}_{q_\phi, p_\phi}\!\left[\sum_{t=1}^{T}\Big(\beta_{\text{pred}}\,\mathcal{L}_\text{pred}(\phi) + \beta_{\text{dyn}}\,\mathcal{L}_\text{dyn}(\phi) + \beta_{\text{rep}}\,\mathcal{L}_\text{rep}(\phi)\Big)\right] \tag{2}$$

三个 loss 都是 KL 项,差别在条件(论文 Eq. 3):

$$\mathcal{L}_\text{pred}(\phi) = -\ln p_\phi(x_t|z_t,h_t) - \ln p_\phi(r_t|z_t,h_t) - \ln p_\phi(c_t|z_t,h_t) \quad\text{(图像/向量重建 + reward + continue)}\tag{3a}$$

$$\mathcal{L}_\text{dyn}(\phi) = \max\!\Big(1,\;\mathrm{KL}\big(\text{sg}(q_\phi(z_t|h_t,x_t))\,\|\,p_\phi(z_t|h_t)\big)\Big) \quad\text{动态损失}\tag{3b}$$

$$\mathcal{L}_\text{rep}(\phi) = \max\!\Big(1,\;\mathrm{KL}\big(q_\phi(z_t|h_t,x_t)\,\|\,\text{sg}(p_\phi(z_t|h_t))\big)\Big) \quad\text{表征损失}\tag{3c}$$

sg 是 stop-gradient。dynamic loss 和 representational loss 拆分是 V3 的关键设计——dyn loss 逼 prior 自己预测(防止 posterior 偷懒只看观测),rep loss 鼓励 posterior 编码观测里超出 prior 预测的信息。两者反向梯度方向不同,分别加权($\beta_\text{dyn}=1.0$, $\beta_\text{rep}=0.1$)。

Free bits 的精确机制(论文 Eq. 3 的 $\max(1,\cdot)$):当 KL 值低于 1 nat 时,loss 被 clip 到 1(即梯度为 0),相当于把这条 KL 项"冻结",让优化器专注其他 loss;只有当 KL 飙升超过 1 nat 时才产生梯度把它压回去。这种「下限保护」避免 KL 项压倒重建、把表征压成平凡。注意 free bits 是 1 nat ≈ 1.44 bits(论文原文),不是「每维 1 nat」——KL 是对所有 $d/16$ categorical 整体计算的总 KL。这是 V3 替代 V2「按环境调 KL 系数」的核心机制——3D 复杂环境细节多需要弱 regularizer,2D 像素游戏像素细节重要也需弱 regularizer,free bits 让两边都满足。

3. Image decoder + reward/continue heads(Eq. 4)

decoder $p_\phi(o_t|h_t, z_t)$ 重建观测;reward head $p_\phi(r_t|h_t,z_t)$、continue head $p_\phi(c_t|h_t,z_t)$(二分类 done)从 latent 出。不重建动作(这是 V3 简化,避免 reward/action 耦合)。图像 decoder 用 transpose-conv + sigmoid 输出;DMC proprio 任务用 3 层 MLP

4. Actor-Critic 在想象中训(Eq. 4–7)

完全不碰真实数据——直接从 replay 抽种子 $(h_1, z_1)$,用 prior $p_\phi$ 滚出想象的 latent 轨迹 $h_{2:H}, z_{2:H}$($H=15$ imagination horizon,论文 Table 4),在想象轨迹上训 actor $\pi_\theta$ 和 critic $V_\psi$。

Critic(论文 Eq. 5)输出对称指数间隔 bin 上的分类分布,用 symexp + twohot:

$$\mathcal{L}(\psi) = -\sum_{t=1}^{T}\ln p_\psi(R_t^\lambda \mid s_t), \quad R_t^\lambda = r_t + \gamma c_t\big((1-\lambda)v_t + \lambda R_{t+1}^\lambda\big),\quad R_T^\lambda = v_T \tag{5}$$

$\lambda=0.95$ 的 TD($\lambda$) 在想象轨迹上展开(bootstrapped λ-return)。Critic 输出 twohot 分类分布而非标量——把连续 return 用 symexp 压到指数间隔 bin 上,作为分类 target。

双 critic loss(论文 Sec. Critic learning):critic loss 同时施加在两套轨迹上:

  • imagined trajectories:loss scale $\beta_\text{val}=1.0$
  • replay buffer trajectories:loss scale $\beta_\text{repval}=0.3$——把 imagination rollout 起点的 $R_t^\lambda$ 当作 replay 轨迹的 on-policy value annotation,再在 replay 真实 reward 上算 λ-return。这让 critic 既学想象的、又学真实的,缓解 reward 预测困难环境下的训练不稳。

Critic EMA regularizer(关键稳定化):因为 critic 回归的 target 依赖自己预测,用 EMA 平滑版 critic 参数 $\bar\psi$ 当 target,loss scale $\beta_\text{pol}=0.98$,EMA decay 0.99。这类似 DQN target network 但允许用当前 critic 算 return。

零初始化(论文 Sec. Critic learning):reward predictor 和 critic 的 output weight matrix 初始化为 0,避免训练初期随机网络 hallucinate 大 reward/value 拖慢学习。twohot 分布的 output weights 同样零初始化。

Actor(论文 Eq. 6)用 percentile return normalization + REINFORCE + entropy

$$\mathcal{L}(\theta) = -\sum_{t=1}^{T}\mathrm{sg}\!\left(\frac{R_t^\lambda - v_\psi(s_t)}{\max(1, S)}\right)\log\pi_\theta(a_t|s_t) + \eta\,H\!\big(\pi_\theta(a_t|s_t)\big) \tag{6}$$

return 范围 $S$(论文 Eq. 7):用 return batch 的 5%–95% 百分位差(不是 max-min——为抗 outlier),再用 EMA(decay 0.99)平滑

$$S = \mathrm{EMA}\big(\mathrm{Per}(R_t^\lambda, 95) - \mathrm{Per}(R_t^\lambda, 5),\;0.99\big) \tag{7}$$

关键 trick:当 $S < 1$ 时强制取 $\max(1, S)$,即只缩放大 return、不动小 return——避免稀疏 reward 下噪声被放大。这是 V3 跨 domain 通用的灵魂 trick:Atari return 几百、Minecraft 几千、Control 小于 1,固定 entropy 系数 $\eta$ 没法统一,但对归一化后的 return,单个 $\eta=3\times10^{-4}$ 全适用。$\eta$ 不归一化(绝对量),让 entropy bonus 的相对作用随训练衰减——探索期强、收敛期弱。

5. Symlog / symexp / twohot(论文 Eq. 8–11)

这是 V3 让 fixed-hparam 通用的数学基础

symlog squared loss(用于 decoder 和 reward head 的回归,论文 Eq. 8):

$$\hat y = \mathrm{symexp}(f(x,\theta)),\qquad \mathcal{L}(\theta) = \tfrac{1}{2}(f(x,\theta) - \mathrm{symlog}(y))^2 \tag{8}$$

symlog / symexp(论文 Eq. 9)——「bi-symmetric logarithmic family」函数:

$$\mathrm{symlog}(x) = \mathrm{sign}(x)\,\ln(|x|+1) \tag{9a}$$

$$\mathrm{symexp}(x) = \mathrm{sign}(x)\,(\exp(|x|)-1) \tag{9b}$$

关键性质:① 压缩大值量级;② 关于原点对称、保留符号(解决 log 不能处理负值的痛点);③ 原点附近近似恒等函数($\mathrm{symlog}(x)\approx x$ for $|x|\ll 1$)——小值预测不受影响。

symexp twohot loss(用于 reward head 和 critic,论文 Eq. 10–11):

$$\hat y = \mathrm{softmax}(f(x))^T B,\qquad B = \mathrm{symexp}(-20\ldots+20) \tag{10}$$

bin 集合 $B$ 是把 $[-20, +20]$ 用 symexp 映射成 指数间隔的 bin 位置(论文原话「exponentially spaced bins」),不是线性间隔!bin 数量 $|B|$ 论文未单值列出,但默认配置(结合源码和 Appendix)是 255 个 bin。注意 bin 在正负两侧分别从小到大累加(避免大值求和时浮点误差)。

twohot encoding(论文 Eq. 12):连续值 $x$ 在最接近的两个 bin $b_k, b_{k+1}$ 上线性插值,权重由距离反比给出(论文 Eq. 12):

$$\mathrm{twohot}(x)_i = \begin{cases} |b_{k+1}-x|/|b_{k+1}-b_k| & i=k \\ |b_k-x|/|b_{k+1}-b_k| & i=k+1 \\ 0 & \text{else} \end{cases} \tag{12}$$

twohot 的两值之和 = 1,是 onehot 在连续值上的推广。输出权重初始化为 0——避免初始网络 hallucinate reward/value。loss 是 categorical cross-entropy

$$\mathcal{L}(\theta) = -\mathrm{twohot}(y)^T \log\mathrm{softmax}(f(x,\theta)) \tag{11}$$

关键意义MSE 在 return=1000 时梯度量级 $10^6$,return=0.1 时梯度 $10^{-2}$——根本没法统一。twohot 分类 loss 只依赖概率而非 bin 位置的连续值,把量级差异和梯度大小解耦,让所有 domain 共享一套 head + loss + optimizer。这是 V3 "固定超参"成立的最关键工程 trick

6. 观测归一化与输入编码

  • 图像观测:用 stride-2 卷积编码到 6×6 或 4×4 后 flatten;decoder 用 transpose-conv + sigmoid 输出加 symlog——论文原文明确 symlog 仅用于 vector)。
  • 符号/proprio 观测:用 symlog 编码后再过 3 层 MLP(encoder/decoder 都用 MLP)。
  • Reward 用 symexp 间隔 bin 上的 twohot 编码作为分类 target 喂 reward head(不是「symlog 编码后 twohot」——target 本身是连续标量,twohot 编码用 symexp 间隔 bin 离散化)。
  • Action:连续域用 tanh squash 到 $[-1,1]$;离散域 one-hot。

超参表(论文 Table 4 + Appendix 网络/优化器细节,全部 domain 共享)

超参出处
Replay capacity$5\times10^6$ transitionsTable 4
Batch size × length16 × 64(=1024 transitions/梯度步)Table 4
Sequence modelGRU with block-diagonal recurrent weights, 8 blocks, RMSNorm + SiLUSec. Networks
Recurrent units$8d$(block size = $d$)Table 3
Codes per latent$d/16$,每个 32 类Table 3
Hidden size $d$ (MLP)model-dependent: 256/384/512/768/1024/1536 对应 12M/25M/50M/100M/200M/400MTable 3
Imagination horizon $H$15Table 4
Discount horizon $1/(1-\gamma)$333(即 $\gamma\approx 0.997$,全 domain 共享)Table 4
$\lambda$(TD($\lambda$))0.95Table 4
Critic loss scale $\beta_\text{val}$ / replay $\beta_\text{repval}$1.0 / 0.3Table 4
Critic EMA regularizer $\beta_\text{pol}$ / decay0.98 / 0.99Table 4
Actor loss scale / entropy $\eta$ / unimix1 / $\mathbf{3\times10^{-4}}$(固定)/ 1%Table 4
Actor RetNorm scale $S$ / limit $L$ / decay$\mathrm{Per}(R,95)-\mathrm{Per}(R,5)$ / 1 / 0.99Table 4
$\beta_\text{pred}$, $\beta_\text{dyn}$1.0Table 4
$\beta_\text{rep}$0.1Table 4
Latent unimix / Free nats1% / 1 natTable 4
Learning rate(world model / actor / critic 共享)$4\times10^{-5}$Table 4
ActivationRMSNorm + SiLU(非 ReLU/GELU)Table 4
Gradient clippingAGC(0.3)——Adaptive Gradient Clipping,clip per-tensor 到对应 weight matrix L2 norm 的 30%Sec. Optimizer
OptimizerLaProp($\epsilon=10^{-20}$, $\beta_1=0.9$, $\beta_2=0.99$)Sec. Optimizer
Image size64×64,stride-2 conv 编码到 6×6 或 4×4,sigmoid 输出Sec. Networks
Replay ratio32(Atari/DMLab/Minecraft)/ 64(ProcGen)/ 128(Atari100K)/ 512(Proprio/Visual Control)/ 1024(BSuite)Table 2
Critic twohot bins255(默认);$B=\mathrm{symexp}(-20\ldots+20)$ 指数间隔Sec. Robust predictions

Model size sweep(论文 Table 3):12M / 25M / 50M / 100M / 200M(推荐默认)/ 400M。model dim $d$ 大约按 1.5 倍增长,交替用 2 的幂和 2 的幂 ×1.5(保证 tensor shape 是 8 的倍数,硬件友好)。Atari/ProcGen/DMLab/Minecraft/BSuite/Atari100K 用 200M;Proprio/Visual Control 用 12M(论文实测与 200M 等效,但快很多)。默认推荐 XL=200M

实验

150+ 任务覆盖(论文 Sec. Results):

  • Atari 57 games(200M frames,sticky action):超 MuZero、Rainbow、IQN;人类归一化中位分具体数值待核(论文 Figure 1/4 给出可视化对比,正文未单值列出)。
  • DM Control Suite:Proprio 20 tasks + Visual 20 tasks(同一组 20 任务,观测模态不同),1M 步预算下达到或超过 DMPO、TD-MPC2、DrQ-v2 等专用方法。
  • CrafterSOTA
  • BSuite 23 environments(468 configs)泛化/capacity/credit assignment 测试,总分超 Boot DQN 等。
  • ProcGen 16 games(50M frames,hard difficulty):超 PPG、Rainbow。
  • DMLab 30 tasks(100M steps):超 IMPALA、R2D2+ 在 1B 步的表现(data efficiency 增益 >1000%)。
  • Atari 100k(26 games,400K frames):sample-efficient 设定下超 IRIS、TWM、SimPLe、SPR(EfficientZero 用 tree search + 重置 level 难直接比较)。
  • Minecraft(MineRL Diamond task)第一个能从零(无人类数据、无 curriculum)采到钻石的算法(10 seeds 全部成功;之前 VPT 需 720 GPU·9 天 + 人类数据,Voyager 用 LLM + 高层 scripting)。

关键的 fixed-hparam claim:除 replay ratio(按 benchmark 调,控制 data efficiency vs compute trade-off,见 Table 2)和 model size(Control 用 12M)外,所有算法超参固定——包括 $\gamma=0.997$、$\eta=3\times10^{-4}$、batch、lr、free bits。这是 V3 与 V2 的本质区别——V2 每个 Atari game 都要调 KL 系数。论文原话(Sec. Hyperparameters):「The same values are used across all benchmarks... We do not use any hyperparameter annealing, prioritized replay, weight decay, or dropout.」

消融(Appendix C)

  • 去掉 symlog twohot:reward 跨度大的 domain(Atari/Minecraft)训不动。
  • 去掉 dyn/rep KL 拆分:posterior 偷看观测、prior 学不到长程。
  • 去掉 unimix:categorical prior 容易 mode collapse。
  • 去掉 critic EMA/target net:critic 震荡、actor 不稳定。
  • 去掉 actor return normalization:跨 domain 失败。

为什么重要

  1. 第一个"通用"的 model-based RL:固定超参通 150+ 任务,是 model-based RL 第一次摆脱"每任务调参"。这把 latent world model 从学术玩具变成可 scale 的范式。Nature 2025 收录正是因为这一普遍性。
  2. 证明 latent world model 路线可行:后续 TWM、IRIS、Δ-IRIS 都是在 DreamerV3 的 RSSM / discrete latent / twohot 基础上做 Transformer 化或结构改造。
  3. 想象训练范式的事实标准:在 latent 空间 rollout + actor-critic 这套工程被后来所有 model-based RL 沿用——和 Cosmos/Genie 那种像素生成式 WM 不同轨道,但仍是当前最稳的 model-based RL baseline。
  4. Minecraft 钻石:第一个采到钻石的 model-based 方法。对长程稀疏 reward 任务是 milestone。

局限

  1. Wall-clock 仍慢:每步要 imagination rollout(H=15),单步计算贵。sample efficient 但 wall-clock 不一定省。
  2. 覆盖训练分布:和所有 model-based 一样,分布外泛化弱。replay 外的 $(s, a)$ 世界模型不会预测。
  3. 不是生成式 simulator:latent WM 不生成像素,不能像 Cosmos/Genie/1X WM 当 data engine 喂 image-based VLA。这是 T09 两条主线分界。
  4. 图像 decoder 推理时不用:训练才用 decoder,部署只跑 latent。这节省算力但也意味着 latent 不可视、不可解释。

复现要点

  • 复现门槛:⭐⭐(跑通)/ ⭐⭐⭐(改)
  • 官方代码 github.com/danijar/dreamerv3,单 A100 能跑 Atari/Crafter,DMC 大多数任务,多卡跑 Minecraft。全部实验单 A100 即可复现(论文 Sec. Results 强调)。
  • 关键坑:① unimix 1% 不能省(省了 mode collapse);② twohot critic 必须配 symexp target 且输出权重零初始化;③ batch=16×64 不能改小(小 batch RSSM 不稳);④ EMA critic target + EMA regularizer 必须有;⑤ replay 必须 large(5M)以保 prior 训练分布覆盖;⑥ LaProp + AGC 不可换 Adam——V3 实测 Adam 在长训练偶有 spike,LaProp 解耦归一化和动量解决此问题。
  • 跑 Minecraft 需要 MineRL v0.4.4 + 64 env instance + 100M steps(≈100 游戏天内),10 seeds 才能可靠报 diamond 比例。论文修正了原 MineRL 环境的若干 bug(破 diamond ore 提前终止、jump 按键 200ms 等)。

与 Dreamer V1/V2 的关系

版本年份关键改进通用性
Dreamer (V1)2020, arxiv:1912.01603首次提出在 latent RSSM imagination 里训 actor-criticDMC only
DreamerV22021, arxiv:2010.02193离散 latent $z$,Atari 超越 model-freeAtari 调 KL
DreamerV32023, arxiv:2301.04104symlog/twohot/return-norm/dyn-rep KL 拆分固定超参 150+ 任务

相关

  • 建立在:World Models [Ha & Schmidhuber 2018, arxiv:1803.10122]、PlaNet [Hafner 2018]、Dreamer V1/V2、TD($\lambda$)、categorical VAE [VQ-VAE 系]、PlaNet 的 RSSM 雏形。
  • 同期/后续 model-based RL:IRIS [Micheli 2022, arxiv:2209.00588](Transformer + discrete autoencoder tokenize)、TWM [Robine 2023]、Δ-IRIS、DreamerPro、DayDreamer(应用到真机)。
  • 对照生成式 world model:Genie / Cosmos / 1X WM——像素级生成、当 simulator;和 DreamerV3 的 latent 想象是平行而非替代。
  • 本仓库线索:T09 World Model 作 simulator 主线 A 制高点。