一句话定位

DreamerV3 是第三代 Dreamer,一个只用一套固定超参数就在 8 大领域、150+ 个任务上打败各领域专用调优算法的通用 model-based RL 算法:它学一个 RSSM 世界模型,把感官输入编码成离散隐状态,然后完全在世界模型”想象”出的隐轨迹上训练 actor-critic。靠 symlog、symexp-twohot、KL balancing + free bits、百分位 return 归一化这一套鲁棒性变换,DreamerV3 首次在不用任何人类数据、不用课程的情况下从稀疏奖励里在 Minecraft 里挖到钻石——每个训练的 agent 都能在 100M 环境步内挖到,且首颗钻石约在 30M 步(约 17 天游戏时长)出现,全程只用单张 A100。论文即 2025 年 Nature 正刊(s41586-025-08744-2)。

背景与定位

RL 的老问题是”换个领域就得重新调参”:PPO 之类通用算法鲁棒但性能一般,而各领域(连续控制、离散动作、稀疏奖励、像素输入、3D 空间、棋类)都各自有专门算法,迁移到新任务要花大量人力、经验和算力反复调超参。DreamerV3 的目标就是造一个不用重新配置就能掌握新领域的通用算法。

谱系(RSSM 世界模型一脉):planet(2018,PlaNet,首次提出 RSSM,从像素学隐动力学做规划)→ dreamer-v1(2019,Dream to Control,在隐想象中学 behavior,但只做连续控制)→ dreamer-v2(2020,Mastering Atari with Discrete World Models,离散隐状态,Atari 上超人类)→ DreamerV3(开箱即用地跨越多样 benchmark)。

核心卖点是”一套配置、零调参”(one config, no tuning):论文强调所有 benchmark 用完全相同的超参数,涵盖本体感受/视觉输入、连续/离散动作、2D/3D 世界,不做任何超参退火、不用 prioritized replay、不用 weight decay、不用 dropout。而里程碑成果是 Minecraft 挖钻石:此前 VPT 需要 720 张 GPU 训 9 天 + 承包商采集的人类键鼠数据,MineRL 竞赛方案也依赖人类轨迹或领域课程;DreamerV3 用 MineRL 竞赛动作空间、1 张 GPU 训 9 天、无人类数据,成为首个从零挖到钻石的算法。

模型架构

RSSM 世界模型由 6 个部件组成(参数统一记为 ϕ,端到端联合训练):

  • Encoder zₜ ~ qϕ(zₜ | hₜ, xₜ):把感官输入编码成随机离散表示 zₜ。图像用 stride-2 卷积(下采样到 6×6 或 4×4 再展平),向量输入先做 symlog 变换再过 3 层 MLP。
  • Sequence model(序列模型) hₜ = fϕ(hₜ₋₁, zₜ₋₁, aₜ₋₁):一个 GRU,采用 block-diagonal 分块循环权重(8 块),让循环单元数量能变大而参数/FLOPs 不平方增长;每步输入是 zₜ、动作 aₜ、循环态的线性 embedding(块间混合)。
  • Dynamics predictor(动力学预测器) ẑₜ ~ pϕ(ẑₜ | hₜ):只从 hₜ 预测下一步隐表示,MLP。
  • Reward predictor r̂ₜ ~ pϕ(r̂ₜ | hₜ, zₜ):1 层 MLP。
  • Continue predictor ĉₜ ~ pϕ(ĉₜ | hₜ, zₜ):预测 episode 是否延续 cₜ∈{0,1},逻辑回归,1 层 MLP。
  • Decoder x̂ₜ ~ pϕ(x̂ₜ | hₜ, zₜ):重建输入,图像用转置 stride-2 卷积(sigmoid 输出),向量用 3 层 MLP。

模型状态是 hₜ 与 zₜ 的拼接 sₜ={hₜ,zₜ},Markov 性由此保证。隐表示从一组 softmax 分布中采样,采样步用 straight-through 直通梯度。为避免 KL loss 突刺(deep VAE 里报告过),encoder 和 dynamics predictor 的类别分布都参数化成 1% 均匀 + 99% 网络输出的混合(unimix),杜绝出现确定性分布。

Actor-Critic(在世界模型的隐轨迹上学,环境交互时直接从 actor 采样、无 lookahead 规划):

  • Actor aₜ ~ πθ(aₜ | sₜ)、Critic vψ(Rₜ | sₜ),都是 3 层 MLP。reward 与 continue 预测器是 1 层 MLP。
  • Critic 输出指数间隔分箱的类别分布(distributional),而非正态,以应对回报跨数量级、多模态。

symlog 类预测贯穿全网:向量观测的 encoder 输入与 decoder 目标都用 symlog;reward 头和 critic 用 symexp-twohot loss(下节详述)。

模型规模(Table 3,6 档,12M→400M 参数),由 model dimension d 派生,d 约按 1.5 倍递增(在 2 的幂与其 1.5 倍间交替,保证张量是 8 的倍数):

参数量12M25M50M100M200M400M
Hidden size d25638451276810241536
Recurrent units (8d)1024307240966144819212288
Base CNN channels (d/16)162432486496
Codes per latent (d/16)162432486496

层数与 latent 数在各规模间固定;学习率、batch size 等所有超参也在各规模间固定。默认用 200M(两个控制 suite 上用更快的 12M 即达同等性能)。

注:本页数字取自所抓取的 arXiv v2(2024-04-17,即 Nature 版)。该版给出 6 档 12M–400M;早期 v1(2023-01)的规模划分与之不同。

数据

DreamerV3 是在线 RL、无外部数据集:数据来自 agent 自己与环境交互,存进 replay buffer 反复回放训练。

  • Replay buffer:容量 5×10⁶,均匀采样 + online queue(每个 minibatch 先用不重叠的在线轨迹,再用均匀采样的历史轨迹补齐)。采数据时把隐状态存进 buffer 用于初始化世界模型,训练 rollout 后把新的隐状态写回。论文用均匀回放(说 prioritized replay 也能提升但为实现简单没用)。
  • 训练量用 replay ratio 参数化:每采 1 个环境步训练的时间步数(不含 action repeat)。例如 Atari 上 replay ratio=32、action repeat=4、batch 形状 16×64 → 每 128 个环境步做 1 次梯度更新,200M 环境步共 150 万次梯度步。
  • 规模(8 领域 / 150+ 任务,Table 2)
Benchmark任务数环境步预算Action RepeatEnv 实例Replay RatioGPU-天模型
Minecraft1100M164328.9200M
DMLab30100M416322.9200M
ProcGen1650M1166416.1200M
Atari57200M416327.7200M
Atari100K26400K411280.1200M
BSuite231110240.5200M
Proprio Control18500K2165120.312M
Visual Control201M2165120.112M

(BSuite 共 23 个环境、468 个配置;Atari100K 的 400K 环境步 = action repeat 后 100K = 约 2 小时游戏时间。)默认 16 个环境实例;BSuite 与 Atari100K 用单实例;Minecraft 因环境步进慢用 64 个远程 CPU worker。种子数:Dreamer 与 PPO 每 benchmark 各 5 个(ProcGen 因算力只 1 个,BSuite 按要求 10 个,Minecraft 10 个以可靠统计挖到钻石的比例)。

数据效率:DMLab 上 100M 步就超过 IMPALA、R2D2+ 在 1B 步的成绩,即 >1000%(10×)的数据效率提升;且更大模型不仅分更高,还需要更少交互。

训练方法

世界模型 loss(式 2)L(ϕ) = E[ Σₜ (βpred·Lpred + βdyn·Ldyn + βrep·Lrep) ],权重 βpred=1、βdyn=1、βrep=0.1

  • Lpred(预测损失):decoder 与 reward predictor 用 symlog 平方损失,continue predictor 用逻辑回归。
  • Ldyn(动力学损失)max(1, KL[ sg(qϕ(zₜ|hₜ,xₜ)) ‖ pϕ(zₜ|hₜ) ]),训序列模型去预测下一隐表示。
  • Lrep(表示损失)max(1, KL[ qϕ(zₜ|hₜ,xₜ) ‖ sg(pϕ(zₜ|hₜ)) ]),让表示更可预测。
  • 两者靠 stop-gradient sg(·) 与不同 loss scale 区分(KL balancing);并用 free bits——把动力学/表示损失在低于 1 nat ≈ 1.44 bits 时截断(max(1,·)),已经学好就不再优化,把学习重心留给预测损失。此前的世界模型需按环境视觉复杂度调表示损失权重;“free bits + 小表示损失权重”这一组合让固定超参跨域可用。向量观测再用 symlog 防止大输入/大重建梯度,进一步稳住与表示损失的 trade-off。

Critic 学习(式 5):折扣 γ=0.997(等价 discount horizon 1/(1−γ)=333),想象/预测 horizon 论文正文记 T=16、超参表记 H=15。用 bootstrap 的 λ-return(λ=0.95)整合预测奖励与 value。Critic 回归 return 分布,用最大似然(categorical)。为覆盖预测 horizon 之外的回报,critic 学 return 的分布而非点估计。稳定技巧:(1) critic loss 同时作用于想象轨迹(βval=1)与回放轨迹(βrepval=0.3);(2) 向 critic 自身参数的指数滑动平均(EMA,decay 0.98)正则(类似 target network,但用当前 critic 算 return);(3) reward predictor 与 critic 的输出权重矩阵初始化为 0,避免初始就”幻想”出大奖励拖慢起步。

Actor 学习(式 6):用 Reinforce 估计器(离散连续通用),熵正则鼓励探索,固定熵尺度 η=3×10⁻⁴。关键是 percentile return 归一化:把回报近似压到 [0,1] 区间——按公式只需除以范围 S,且为在稀疏奖励下不放大噪声,只缩小大回报、对低于阈值 L=1 的小回报不动(除数取 max(1,S))。范围 S 取第 5 到第 95 百分位之差并用 EMA(decay 0.99)平滑:S = EMA(Per(R,95) − Per(R,5), 0.99),以对异常值鲁棒。论文指出:归一化 advantage(如 PPO)会在稀疏奖励下放大噪声压过熵正则;按标准差归一化在稀疏奖励下(标准差近零)会爆炸;带下限的 return 归一化才能跨域稳定。

Robust predictions(跨域尺度鲁棒的两把刷子)

  • symlog / symexpsymlog(x)=sign(x)·ln(|x|+1)symexp(x)=sign(x)·(exp(|x|)−1)。symlog 平方损失 L=½(f(x,θ)−symlog(y))²,读出 ŷ=symexp(f(x,θ))。对称压缩大正负值、在原点近似恒等、保号,既能快速逼近大值又不干扰小目标;避免了截断大目标(Huber)、归一化带来的非平稳、或检测到新极值时改权重(PopArt)。
  • symexp twohot loss:对随机目标(奖励/回报),网络输出对指数间隔分箱 B=symexp(linspace(−20,+20)) 的 softmax logits,读出为箱位加权平均(可落在箱间取任意连续值);训练用 twohot 编码目标(onehot 对连续值的推广:只有最近两个箱非零、和为 1,按线性距离分配)+ 类别交叉熵。loss 只依赖箱概率、不依赖箱位数值,把梯度大小与目标大小解耦

优化器/正则:**AGC(Adaptive Gradient Clipping)**按每张量权重 L2 范数的 **30%(0.3)**裁剪梯度(ε=10⁻³),把裁剪阈值与 loss scale 解耦;再用 LaProp 优化器(先 RMSProp 归一化再动量平滑,ε=10⁻²⁰、β1=0.9、β2=0.99),比 Adam 更稳、允许更小 ε。学习率 4×10⁻⁵,激活 RMSNorm + SiLU,batch 16 × 长度 64。不用超参退火/prioritized replay/weight decay/dropout。

让”一套配置跨域”成立的鲁棒性技术小结(相对 DreamerV2 的新增项):观测 symlog、KL balancing + free bits、所有类别分布 1% unimix、百分位 return 归一化、reward 头与 critic 的 symexp-twohot loss;架构上 block GRU、RMSNorm、SiLU;优化器 AGC + LaProp;replay 更大容量 + online queue + 存/更新隐状态。

Infra(训练 / 推理工程)

  • 单卡训练:论文中所有 Dreamer 与 PPO agent 都各自训练在单张 Nvidia A100 上,作者强调这让许多研究实验室可复现。
  • Wall-clock(GPU-天,Table 2):Atari100K 与 Visual Control 各约 0.1 天、Proprio 0.3 天、BSuite 0.5 天、DMLab 2.9 天、Atari 7.7 天、Minecraft 8.9 天(约 9 天)、ProcGen 最贵 16.1 天。Minecraft 用 64 个远程 CPU worker 加速环境步进。
  • 模型规模 scaling 行为:6 档 12M→400M,性能随规模单调上升,且更大模型同时提高最终分与数据效率(需要更少交互);提高 replay ratio(梯度步数)也可预测地提升数据效率——给了”加算力换性能”的可预测路径。
  • 对比 VPT:VPT 用 720 GPU × 9 天 + 人类数据;Dreamer 用 1 GPU × 9 天、无人类数据,达同一 Minecraft 目标。
  • 官方复现实现:JAX,需 Python 3.11+,pip install -r requirements.txt + python dreamerv3/main.py --configs <task> --run.train_ratio 32,默认跑 GPU(可切 CPU/TPU)。仓库自述为”基于 DreamerV2 代码库的 reimplementation,与 Google/DeepMind 无关,已验证复现官方结果”。
  • 推理/部署侧数字(吞吐、延迟、显存占用等)未披露

评测 benchmark

8 领域、150+ 任务、固定超参,对手多为各 benchmark 上专门设计+调优的算法,另加一个跨域固定超参的高质量 PPO(Acme 实现,在 ProcGen 上已复现官方高调 PPO 成绩)。

  • Atari(57 games,200M frames,sticky actions):Dreamer 200M 达 Gamer median 830%、Gamer mean 3381%、Record mean 74%、Record mean capped 38%,超过 MuZero(median 693%、mean 3054%、record 66%/capped 34%)且只用其一小部分算力,也超过 Rainbow、IQN。PPO 仅 median 180%/mean 892%/record 21%。
  • Atari100K(26 games,400K frames ≈ 2h):超过基于 transformer 的世界模型 IRIS、TWM,以及 model-free 的 SPRSimPLe。EfficientZero 靠在线树搜索+prioritized replay+超参调度+提前重置关卡保持 SOTA,但因此难公平比较——Dreamer 在不加这些复杂度下超过其余最好方法。
  • ProcGen(16 games,50M frames,hard/unlimited)追平调优专家 PPG、超过 Rainbow;作者的固定超参 PPO 也追平官方高调 PPO。
  • DMLab(30 tasks,100M frames,3D 空间/时序推理):100M 步即超过 IMPALA、R2D2+ 在 1B 步的成绩 → >1000%(10×)数据效率
  • Proprio Control(18 tasks,500K steps,本体感受连续控制)新 SOTA,超过 D4PG、DMPO、MPO
  • Visual Control(20 tasks,1M steps,纯图像连续控制)新 SOTA,超过用数据增强的专用方法 DrQ-v2、CURL
  • BSuite(23 环境 / 468 配置,专测信用分配、奖励尺度鲁棒、记忆、泛化、探索)新 SOTA,超过 Boot DQN 等,尤其在”尺度鲁棒”一类提升明显。
  • Minecraft Diamond(从稀疏奖励从零挖钻石)首个做到的算法。回报 Dreamer 9.1 vs IMPALA 7.1 / Rainbow 6.3 / PPO 5.1(Table 5)。10 个种子的 Dreamer agent 100% 在 100M 步内挖到至少一颗钻石,基线 0%;按 episode 计,预算处约 0.4% 的 episode 拿到钻石(留作未来挑战);首颗钻石约在 30M 步 / 17 天游戏时长(项目页)。基线能推进到铁镐(iron pickaxe)但无一挖到钻石。

Ablation(14 任务上):所有鲁棒性技术都有贡献,最关键是世界模型的 KL 目标(KL balance + free bits),其次是 return 归一化,再次是 symexp twohot;每项通常只在部分任务上关键。学习信号消融显示:Dreamer 主要靠世界模型的无监督重建损失(停掉重建梯度掉得比停掉 reward/value 梯度更狠),与多数只靠任务奖励/value 梯度的 RL 相反——这暗示未来可用无监督数据预训练。Scaling:6 档模型规模 + 不同 replay ratio 在 Crafter 与一个 DMLab 任务上都稳健学习,规模越大分越高且越省交互。

创新点与影响

  • 一套固定超参跨 8 领域 / 150+ 任务打败各领域专用调优算法,把”换域重调参”这一 RL 落地瓶颈拿掉,且全程单张 A100 可复现。
  • 首个从零(无人类数据、无课程)在 Minecraft 挖到钻石的算法,解决一个被公认的 AI 里程碑难题(稀疏奖励、探索难、长时序、程序生成开放世界)。
  • 一整套跨尺度鲁棒的预测/归一化变换(symlog、symexp-twohot、KL balancing + free bits、百分位 return 归一化、1% unimix),把”如何稳健地学并利用世界模型”这一长期开放问题工程化落地。
  • 可预测的 scaling:性能随模型规模(12M→400M)与梯度步数单调提升,且更大模型更省数据——给出”加算力换性能/数据效率”的确定路径。
  • 世界模型以无监督重建为主的发现,为”用互联网视频等无监督数据预训练世界模型”打开方向;作者在结论里点名未来做”跨域单一世界模型 / 从网络视频学世界知识”。
  • 局限(论文自陈):钻石仍只在 0.4% 的 episode 里挖到,远未”稳定挖钻石”,留作未来挑战;DMLab 因算力只跑到 100M 步(对手放到 1B 步作参照);Minecraft 沿用 block-breaking 设定并对 jump/掉落物等做了环境层面修正,非完全原生动作空间。

原始链接

一手源存档(sources/)

  • dreamer-v3—github-readme — GitHub README 存档(sources/world-model/2023/dreamer-v3—github-readme.md)
  • dreamer-v3—project — 项目主页存档(sources/world-model/2023/dreamer-v3—project.md)
  • 论文全文按约定不入库,仅引用 arXiv URL(上)。