跳转至

详读 · DreamerV3(潜空间想象的通用世界模型 RL)

卡片版见 卡片-DreamerV3。本页是全文精读:动机 → 方法(逐模块公式直觉) → 鲁棒性技巧 → 实验(全表) → 消融/缩放 → 洞见/局限 → 对我们。 来源:arXiv 2301.04104("Mastering Diverse Domains through World Models",v2 2024-04-17) 作者:Danijar Hafner、Jurgis Pasukonis、Jimmy Ba、Timothy Lillicrap(Google DeepMind + University of Toronto)

0. 一句话定位

学一个潜空间世界模型(RSSM),actor-critic 完全在世界模型"想象"出来的抽象轨迹里训练;靠一组归一化/平衡/变换的鲁棒性技巧,做到单一套固定超参跨 8 域 150+ 任务全部跑赢各自调好的专家算法;并首次从零(无人类数据/课程)在 Minecraft 挖到钻石。每个 agent 只用单张 A100

1. 问题与动机

  • RL 算法换域(如游戏→机器人)往往要大量调参/专家经验/算力才能用,脆弱性是把 RL 推广到新问题的瓶颈。PPO 通用但性能常输给专用算法;专用算法(连续控制/离散动作/稀疏奖励/图像/空间/棋类)各调各的。
  • 世界模型(Dyna / 视觉前瞻 / World Models 谱系)直觉上很美——模型预测动作后果、critic 判价值、actor 选动作——但稳健地学好并用好世界模型一直是开放难题
  • DreamerV3 的切入:不是新范式,而是用一组鲁棒性技巧把"latent imagination"这套范式做到开箱即用、跨域固定超参

2. 整体范式:三网络在"想象"里闭环(图3)

图3 训练流程:(a)世界模型学习 把感官输入编码成离散表征 z 并由序列模型据动作预测;(b)actor-critic 在世界模型想象出的抽象表征轨迹里学习

三个神经网络并发从回放经验里训练,同时 agent 与环境交互: - 世界模型:预测潜在动作的后果(下一表征+奖励+是否继续)。 - critic:判断每个状态(在当前 actor 行为下)的回报分布。 - actor:选能到最有价值后果的动作。

关键:actor/critic 只在世界模型 rollout 出来的抽象表征轨迹上学,与环境交互时直接从 actor 采样、不做前瞻搜索(no lookahead planning)

3. 世界模型 = RSSM(Recurrent State-Space Model)

模型状态 s_t = {h_t, z_t}h_t 是 GRU 的确定性递归状态,z_t 是随机离散表征。各组件(公式1):

  • 序列模型h_t = f_φ(h_{t-1}, z_{t-1}, a_{t-1})
  • 编码器z_t ~ q_φ(z_t | h_t, x_t)
  • 动力学预测器ẑ_t ~ p_φ(ẑ_t | h_t)(想象时只靠它,不看真实输入)
  • 奖励/继续/解码器r̂_t, ĉ_t, x̂_t ~ p_φ(· | h_t, z_t)

细节: - 图像走 CNN(stride-2 卷积到 6×6 或 4×4),向量走 MLP(先 symlog 变换);动力学/奖励/继续头都是 MLP。 - 表征从一组 softmax 分布采样(离散 latent),采样步用 straight-through 直通梯度。 - 序列模型是 block GRU(块对角递归权重,8 块)——可放更多记忆单元而不让参数/FLOPs 二次增长。

3.1 世界模型损失(公式2–3)

总损失按权重相加:L(φ) = E[ Σ_t (β_pred·L_pred + β_dyn·L_dyn + β_rep·L_rep) ],权重 β_pred=1, β_dyn=1, β_rep=0.1

  • 预测损失 L_pred:解码器+奖励头用后述 symlog 平方损失,继续头用 logistic 回归。
  • 动力学损失 L_dyn = KL( sg(q_φ(z|h,x)) ‖ p_φ(z|h) )——训序列模型去预测下一表征(stop-grad 在编码器侧)。
  • 表征损失 L_rep = KL( q_φ(z|h,x) ‖ sg(p_φ(z|h)) )——让表征变得更可预测(stop-grad 在动力学侧)。
  • free bits:把 dyn / rep 两个 KL 截断在 1 nat ≈ 1.44 bits 以下不再下压——已经压够就停手,把学习重心交给预测损失。这一招配上小的表征损失权重(0.1),解决了前代"复杂 3D 场景要强正则、像素敏感游戏要弱正则"的两难,从而跨域固定超参
  • 1% unimix:编码器/动力学的类别分布参数化成 99% 网络输出 + 1% 均匀分布,杜绝退化成确定性、避免 KL 爆 spike。
  • 向量观测做 symlog 变换,防大输入/大重构梯度。

图4 展示世界模型给 5 帧上下文 + 完整动作序列后开环预测 45 帧(DMLab 迷宫 / 四足机器人),说明它学到了环境底层结构:

图4 多步开环视频预测:给5帧上下文与动作序列,向后预测45帧不再看中间真实图像

4. Critic 学习(公式4–5)

  • actor/critic 操作模型状态 s_t={h_t,z_t},受益于递归世界模型的马尔可夫表征。
  • 目标回报 R_t = Σ γ^τ r_{t+τ},折扣 γ=0.997(折扣视界 1/(1-γ)=333)。预测视界 T=16;为顾及视界外奖励,critic 学回报分布
  • bootstrapped λ-returnRλ_t = r_t + γc_t[(1-λ)v_t + λ·Rλ_{t+1}]Rλ_T = v_Tλ=0.95。critic 用最大似然 L(ψ) = -Σ ln p_ψ(Rλ_t | s_t)
  • critic 不是高斯,而是指数间隔分箱的类别分布(distributional)——把梯度尺度和预测目标解耦,应对多峰且跨数量级的回报。
  • critic 损失同时作用于想象轨迹(β_val=1)回放轨迹(β_repval=0.3):回放项用想象 rollout 起点的 Rλ 作 on-policy 价值标注,再在回放奖励上算 λ-return。
  • EMA 自正则:critic 向自身参数的指数滑动平均靠拢(类 target network,但可用当前网算回报);EMA decay 0.98,正则权 1。
  • 奖励头与 critic 输出权重零初始化——防训练初期随机大奖励/价值"幻觉"拖慢启动。

5. Actor 学习(公式6–7)

  • Reinforce 估计器(离散+连续动作统一用),加熵正则鼓励探索: L(θ) = -Σ sg[(Rλ_t - v_ψ(s_t))/max(1,S)] · log π_θ(a_t|s_t) + η·H[π_θ(·|s_t)]
  • 固定熵尺度 η = 3×10⁻⁴ 跨域可用,关键在回报归一化:把回报缩到约 [0,1]。
  • 归一化分母 S:用回报 batch 的第 95 与第 5 百分位差、再 EMA 平滑:S = EMA(Per(Rλ,95) - Per(Rλ,5), 0.99)。用百分位而非最大最小 → 抗离群。
  • 只缩大不缩小:分母取 max(1, S)小于阈值 L=1 的小回报不放大 → 稀疏奖励下不放大函数逼近噪声、保住探索。
  • 作者明确对比:归一化 advantage(PPO 式)/按标准差归一化/约束式固定熵——这些他们都找不到跨域稳定的超参;带分母下限的回报归一化才同时做到"稀疏快探索、稠密高收敛"。

6. 鲁棒预测:symlog 与 symexp twohot(公式8–11)

核心难题:重构/奖励/回报的尺度跨域差很多。大目标用平方损失会发散,绝对/Huber 损失学得慢,按 running stats 归一化又引入非平稳。

  • symlog 平方损失:网络预测 symlog(y),读出时反变换 ŷ = symexp(f(x))
  • symlog(x) = sign(x)·ln(|x|+1)symexp(x) = sign(x)·(exp(|x|)-1)
  • 对称压缩大正/大负值,原点附近≈恒等(不干扰本就小的目标),且保号、能预测负值。
  • symexp twohot 损失(用于奖励头与 critic 这类随机目标):网络对指数间隔的分箱 B = symexp(linspace(-20, +20)) 输出 softmax logits,读出为按概率加权的箱位置(可落在两箱之间);训练目标是 twohot 编码(只有最近两个箱非零、线性分权、和为1)的交叉熵。
  • 妙处:损失只依赖箱上的概率、不依赖箱对应的连续值 → 梯度大小与目标大小彻底解耦
  • 对比同类方案:symlog 既不像 Huber 那样截断大目标、也不像归一化那样引入非平稳、也不像 PopArt 那样在见到新极值时改网络权重

7. 工程配置(鲁棒性的另一半)

  • 优化器AGC(自适应梯度裁剪)——逐张量裁剪,超过对应权重矩阵 L2 范数的 30% 才裁,默认 ε=10⁻³;把裁剪阈值与损失尺度解耦。再用 LaProp(先 RMSProp 归一化再动量,ε=10⁻²⁰,β1=0.9, β2=0.99)——比 Adam 能用更小 ε、避免偶发不稳。
  • 激活/归一化RMSNorm + SiLU
  • 不用任何超参退火、优先回放、权重衰减、dropout。

7.1 核心超参(Table 4,全域统一)

名称 符号
回放容量 5×10⁶
Batch size B 16
Batch length T 64
学习率 4×10⁻⁵
梯度裁剪 AGC(0.3)
优化器 LaProp(ε=10⁻²⁰)
重构损失权 β_pred 1
动力学损失权 β_dyn 1
表征损失权 β_rep 0.1
latent unimix 1%
free nats 1
想象视界 H 15
折扣视界 1/(1-γ) 333 (γ=0.997)
λ-return λ 0.95
critic 损失权(想象/回放) β_val / β_repval 1 / 0.3
critic EMA 衰减 0.98
actor 熵正则 η 3×10⁻⁴
回报归一化 S / L Per(R,95)-Per(R,5) / 1,EMA 0.99

7.2 模型尺寸(Table 3,12M–400M)

参数量 12M 25M 50M 100M 200M 400M
隐藏维 d 256 384 512 768 1024 1536
递归单元 8d 1024 3072 4096 6144 8192 12288
基础 CNN 通道 d/16 16 24 32 48 64 96
每 latent 编码数 d/16 16 24 32 48 64 96

层数与 latent 数跨尺寸固定;学习率/batch 也固定。默认用 200M,两个控制套件用更快的 12M 即可达同等性能。

8. 实验结果

8.1 基准总览(图1)

图1 a:固定超参下 Dreamer 跨8域跑赢各自调好的专家算法及高质量 PPO;b:从零在 Minecraft 挖到钻石的回报曲线

8 个域 / 150+ 任务,固定超参,每个 agent 单张 A100。各域结论:

任务×预算 结论
Atari 57×200M帧 跑赢 MuZero(且算力只用一小部分)、Rainbow、IQN
ProcGen 16×50M帧 持平调优专家 PPG,胜 Rainbow;自家固定超参 PPO 复现了官方调优 PPO
DMLab 30×100M帧 100M 步超过 IMPALA/R2D2+ 在 1B 步的成绩 → >1000% 数据效率(10×)
Atari100k 26×400K帧(2小时) 胜 IRIS、TWM、SPR、SimPLe(EfficientZero 因用早重置等技巧,作者认为难直接比)
Proprio Control 18×500K步 新 SOTA,胜 D4PG/DMPO/MPO
Visual Control 20×1M步 新 SOTA,胜 DrQ-v2/CURL(它们靠数据增广专做视觉)
BSuite 23 环境/468 配置 新 SOTA,胜 Boot DQN,尤其"尺度鲁棒性"类

8.2 各基准训练协议(Table 2)

基准 任务 环境步 动作重复 环境实例 回放比 GPU-天 模型
Minecraft 1 100M 1 64 32 8.9 200M
DMLab 30 100M 4 16 32 2.9 200M
ProcGen 16 50M 1 16 64 16.1 200M
Atari 57 200M 4 16 32 7.7 200M
Atari100K 26 400K 4 1 128 0.1 200M
BSuite 23 1 1 1024 0.5 200M
Proprio Control 18 500K 2 16 512 0.3 12M
Visual Control 20 1M 2 16 512 0.1 12M

种子:每基准 Dreamer/PPO 各 5 种子(ProcGen 因算力 1 种子,BSuite 10,Minecraft 10)。

8.3 Minecraft 挖钻石(图5、Table 5)

图5 三件后期物品的发现率(占 agent 比例):基线最多到铁镐,只有 Dreamer 稳定挖到钻石

  • 每局独立随机生成无限 3D 世界;最长 36000 步 = 30 分钟@20Hz;要从稀疏奖励里依次拿到通往钻石的 12 个里程碑(原木→木板→棍→工作台→木镐→圆石→石镐→铁矿→熔炉→铁锭→铁镐→钻石),每里程碑 +1。观测 64×64×3 第一视角图 + 物品栏(>400 项)等。
  • 采用 block-breaking 设定(原动作空间要长按键,对随机策略不友好);用 MineRL v0.4.4,Minecraft 1.11.2。

100M 步回报(Table 5):

方法 回报
Dreamer 9.1
IMPALA 7.1
Rainbow 6.3
PPO 5.1
  • 首个从零(无人类数据/课程)挖到钻石的算法;训练过程中 100% 的 Dreamer agent 至少挖到 1 颗钻石,基线 0%。在 100M 步预算处,钻石出现在 0.4% 的 episode 里(留给后续研究的挑战)。
  • 对比 VPT:用人类键鼠数据行为克隆 + RL 微调、720 GPU × 9 天才拿钻石;Dreamer 1 GPU × 9 天、无人类数据

8.4 消融与缩放(图6)

图6 a:各鲁棒性技巧消融(14任务均值);b:学习信号消融;c:模型尺寸缩放;d:回放比缩放

  • (a) 鲁棒性技巧:每个技巧都贡献(在某子集任务上关键、对其他任务可能无感)。影响最大的是世界模型的 KL 目标(KL balance & free bits),其次回报归一化,再次 symexp twohot。去掉全部("Without all")明显塌。
  • (b) 学习信号:Dreamer 性能主要靠世界模型的无监督重构损失,而非像多数 RL 那样靠奖励/价值梯度——停掉重构梯度比停掉奖励/价值梯度掉得多。这暗示未来可用无监督数据预训练。
  • (c) 模型尺寸 12M→400M:性能单调上升,且更大模型不仅分更高、还更省交互(数据效率也涨)。
  • (d) 回放比:更高回放比(更多梯度更新)可预测地提升性能。→ 给从业者一条"加算力换性能/数据效率"的可预测路径。

9. 核心洞见

  • 把范式做稳 > 发明新范式:latent imagination 早有(Dreamer V1/V2),V3 的贡献是一组归一化(symlog/RMSNorm)+平衡(KL free bits、回报百分位归一化)+变换(symexp twohot)的工程组合,换来"开箱即用、固定超参跨域"。
  • 尺度无关化是主线:symlog、twohot、百分位回报归一化、AGC——全都在把"未知数量级的量"变得可稳定回归
  • 世界模型的无监督信号是性能主体(消融 b),这是和主流 model-free RL 最不同的结论,也指向"用海量无标注视频预训练世界模型"的未来。
  • 可预测缩放:模型越大/回放越多→越好且越省交互,给出工程上确定的提升旋钮。

10. 局限 / 存疑(诚实)

  • 钻石仍稀:100M 步处只 0.4% episode 拿到钻石——"能挖到"≠"高频可靠",作者自己点为遗留挑战。
  • 比较口径:DMLab 的"10×数据效率"是拿 Dreamer 100M 步对基线 1B 步(那些基线本就非为数据效率设计);Atari100k 把 EfficientZero 排除在直接对比外(因其用早重置/树搜索等)——读数要带着这些前提看。
  • 算力:Minecraft 仍要 8.9 GPU-天;虽单卡可跑,但非廉价。
  • 领域:全是游戏/控制 benchmark,机器人真机的本体接入与数据自采不在本文范围(范式可借,落地要自己补)。
  • Minecraft 用了改造过的 block-breaking 动作空间与若干环境修正,非完全原生设定。

11. 对我们(深一层)

  • 世界模型范式的底座参考:DreamerV3 是"在脑内 rollout 再决策"的 model-based RL 代表作,放进 综述-世界模型 的"预测未来"轴最典型;理解它有助于读后续机器人世界模型。
  • 与本库世界模型卡互参:隐空间预测谱系见 卡片-LaWAM卡片-DINO-WM卡片-VT-WM卡片-iVideoGPT卡片-NWM;视频/生成式世界模型见 卡片-Genie卡片-Cosmos卡片-UniSim卡片-VPP;世界模型+VLA 见 卡片-WorldVLA。DreamerV3 与这些的差异在于它是离散 latent RSSM + 在想象里做 RL,而非纯生成或纯表征。
  • 可借的工程招式:symlog / symexp-twohot / 百分位回报归一化 / free-bits KL / AGC,是任何"跨尺度目标稳定回归"场景(含 概念-模型架构基础 讨论的训练稳定性)都能参考的通用技巧。
  • 对照视角:它的核心结论"性能主要来自世界模型的无监督重构损失",与 综述-世界模型 里"理解世界 vs 预测未来"的划分相呼应——DreamerV3 同时吃两端,但重心在重构(理解)