DreamerV3:通过世界模型掌握多样领域
论文:Mastering Diverse Domains through World Models
作者:Danijar Hafner、Jurgis Pasukonis、Jimmy Ba、Timothy Lillicrap
会议:ICLR 2024
原文:arXiv:2301.04104
对话来源:ChatGPT 分享对话 1 · ChatGPT 分享对话 2
本文按分享对话的原始顺序整理,保留大部分解释与例子,仅做表述和排版上的整理。带 ⭐ 的标题是对话中的重点内容(尤其是 RSSM 三损失、free bits、Critic 的 λ-return、Actor 的 return normalization 等),会显示在右侧目录 / 侧边栏中。
对话整理顺序
- DreamerV3 整体要解决什么:通用世界模型与跨 domain 训练。
- Figure 3 如何区分 World Model Learning 与 Actor-Critic Imagination。
- PlaNet 与 Dreamer 的 h、z 是否不同(用户追问)。
- World Model 三个损失:prediction、dynamics、representation。
- Critic 如何学习:λ-return、bootstrapping、EMA critic。
- Actor 如何学习:entropy 与 return normalization。
- symlog 与 twohot:数值尺度稳定。
- 实验、消融与 scaling 结论。
- DreamerV3 之后的后续工作。
一句话概括
DreamerV3 提出一个通用的世界模型算法:用 RSSM 学习环境 dynamics,在 latent space 里做 imagination rollout,再用想象轨迹训练 Actor-Critic。核心贡献不是新的 RSSM,而是通过 free bits、symlog、twohot、return normalization 等稳定技巧,让同一套超参数在 150 多个任务上稳定工作。
真实观测 → Encoder → (h_t, z_t) → RSSM 预测 future → imagination trajectory → Actor/Critic → action
⭐ 论文总览:DreamerV3 要解决什么
为什么需要 World Model
传统 RL 每次都要真实环境试错。Minecraft 里找钻石的奖励极稀疏:99.99% 时间 reward = 0,只有找到钻石 reward = 1,直接 RL 非常困难。
Dreamer 的思路是学习一个环境的内部模拟器(world model),就像人看到杯子就知道“推它会掉下去、可能碎”,不需要每次真实行动试错。
整体结构
observation
|
v
Encoder
|
v
World Model
|
-----------------
| | |
state reward continuation
|
v
imagination
|
v
Actor-Critic
|
v
action
四个主要部分:
- Encoder:观察 → latent state(不直接预测像素,因为像素太高维)。
- World Model(RSSM):预测未来状态。
- Reward model:预测未来奖励。
- Continue model:预测 episode 是否结束。
最重要的是 Imagination(想象训练):Agent 在脑子里练习。真实环境一天只能抓 1000 次,但 world model 内部可以模拟 100 万个未来。
DreamerV3 相比前代提升在哪
论文重点不是提出新的 RSSM,而是回答:为什么以前 world model 只在少数环境有效,而 DreamerV3 可以跨 150 多个任务。主要贡献是:
- Universal normalization:用 symlog 压缩 reward 尺度。
- KL balancing:让 encoder 学观察、dynamics 学预测,避免 posterior collapse。
- Discrete latent:用 categorical latent 替代连续 latent,更稳定。
与前代的关系
PlaNet (2019) → Dreamer (2020) → DreamerV2 → DreamerV3
| | | |
world model imagination discrete generalization
+ MPC + actor-critic latent (跨 domain)
一句话总结:
DreamerV3 的核心不是“更强的 RL 算法”,而是证明了一个足够稳定的 World Model 可以成为通用智能体的大脑。
⭐ Figure 3:World Model Learning 与 Actor-Critic Imagination
图 3 把训练分成两块:
- 左边 (a) World Model Learning:先学“世界怎么变化”,大量使用真实观测 。
- 右边 (b) Actor Critic Learning:让 actor 在学好的世界模型里“做梦”,用想象轨迹学策略,除起点外基本不再看真实图像。
符号
| 符号 | 含义 |
|---|---|
| 第 时刻真实观测(如 Minecraft 图像) | |
| stochastic latent state(随机离散 latent) | |
| deterministic recurrent state(RNN 记忆) | |
| 动作 | |
| reward | |
| critic 预测的 value | |
| decoder 重建出的观测 |
完整 latent state:
直观理解:
- :根据过去发生的事情,我记住了什么;
- :结合当前真正看到的图像,我认为现在世界处于什么状态。
左图:World Model Learning
真实图像 进入 encoder,与 结合得到 posterior latent :
所以 不是单纯 encoder(x) 的输出,而是 RNN state + 当前观测共同决定。
由上一时刻的 共同更新:
prior 与 posterior
训练时有真实图像,可以用 posterior:
但 imagination 阶段未来没有 ,只能用 prior:
两者通过 KL loss 拉近,否则训练时用 posterior 很好、imagination 时 prior 立刻崩。
右图:Actor-Critic Learning
从真实 latent state 出发,actor 产生 ,world model 用 prior 想象 ,不断 rollout:
整个过程中不需要再进入真实环境。橙色的 是 critic(这个状态未来大概能得多少累计奖励),黄色的 是 learned reward model 预测的想象奖励。
为什么右图没有 decoder
左图需要 decoder 训练表示,但 Actor 只关心 latent ,不关心未来图像长什么样。所以右图直接 latent → latent,非常高效。
两部分的灵魂:
左图有现实修正,右图完全靠模型自己做梦。
⭐ 为什么需要 stochastic z(含 PlaNet 与 Dreamer 的 h、z)
用户在 PlaNet 里理解 h 是确定状态、z 是方便 planner 筛选的随机状态;为什么 Dreamer 里 z 反而像是融入图像后的信息?
关键结论:PlaNet 和 Dreamer 在 h、z 这件事上本质是同一套 RSSM 逻辑。
- 是 deterministic recurrent state,负责把历史压成确定性记忆;
- 是 stochastic state,负责表达“在当前历史条件下,当前真实 latent state 可能是什么”。
PlaNet 里同样有两种
- prior:不看当前图像,只根据历史预测 ;
- posterior:训练时看到真实图像后修正 。
所以“训练时用图像得到 posterior”并不是 Dreamer 新加的机制,PlaNet 的 RSSM 本来就有。
需要修正的一点:PlaNet planner 筛选的是 action sequences(CEM 采样很多 并 rollout),而不是专门采样 来筛选。 的作用首先是表达 uncertainty / partial observability。
为什么非得有 stochastic z
因为真实环境通常不是完全由历史唯一确定。机器人走到十字路口,历史只有“一直是一条走廊”,还没看到拐角里面,所以 world model 认为 有多种可能:40% 左边有障碍、30% 右边有障碍、30% 两边都没有。看到真实图像后,posterior 集中到与 observation 一致的 latent。
PlaNet 与 Dreamer 真正不同在哪
RSSM 的 h、z 定义没变,变的是学完 world model 之后怎么用:
- PlaNet:RSSM + online planner(现场 CEM 搜索动作序列);
- Dreamer:RSSM + Actor-Critic(提前想象轨迹,训练 ,执行时直接输出动作)。
⭐ World Model 训练:三个损失
RSSM 的三个核心方程:
三个角色:
- Sequence model:确定性更新 ,是“看当前 之前的预测”。
- Encoder:看到真实图像后得到 posterior 。
- Dynamics predictor:不看图像预测 (prior)。
用 和 区分: 来自 encoder posterior, 来自 dynamics prior;训练目标让两个分布接近。
得到 后做三个预测:
总 loss:
权重 、、。
Prediction Loss
同时训练 decoder、reward predictor、continue predictor,要求 能解释真实世界。
⭐ Dynamics Loss 与 stop-gradient
这里 是 stop-gradient:把 q 当固定 target,只更新 p,让 dynamics predictor 去追 encoder posterior。
为什么需要 stop-gradient:如果两边都更新,q 可以变简单、p 也变简单,最后一起塌成常数分布,KL 为 0 但模型废了。
⭐ Representation Loss 与 KL balancing
和 dynamics loss 唯一区别是 stop-gradient 反过来:固定 p,更新 q。让 encoder 学到的 representation 不要离谱,要更容易被 dynamics 预测。
两个 KL 在拔河:
- Prediction loss 对 q 说“多保存信息”(否则重建不好);
- Representation loss 对 q 说“别记那么多未来预测不了的随机细节”。
最终 latent 要既 informative 又 predictable。
为什么 :如果 representation 约束太强,encoder 会去迎合 p,最好预测的东西是常数(),latent 就完全没信息。所以更倾向于让 dynamics 学预测 representation,而不是强迫 representation 迁就 dynamics。
⭐ Free bits 与 posterior collapse
两个 loss 都带 ,也就是 free bits:当 KL 已经小于 1 nat 后,就不再施加 KL 压力。
为什么要这样:如果强迫 ,即 ,而 q 看过图像、p 没看过,最简单的办法就是 q 干脆别利用 ,图像信息彻底消失,这就是 posterior collapse。所以 KL 到 1 nat 左右就够了(约 bits)。
为什么强调跨 domain
DreamerV3 的目标是同一套超参数跑 Minecraft、Atari、DMC、机器人任务。复杂 3D 场景有大量控制无关细节(树叶、纹理、光照、背景),需要较强 regularization;静态背景的简单游戏可能只有某几个像素决定球/子弹/敌人位置,需要较弱 regularization。free bits + 较小的 representation loss 让同一套参数适配不同 domain。
两个稳定技巧
- symlog:vector observation 数值范围可能极大,先 symlog 压缩再 reconstruction,避免大数值 gradient 支配训练。
- 1% uniform:categorical latent 混入 1% 均匀分布,避免某个类别概率变成 0 导致 KL 数值爆炸(论文观察到过 KL spikes)。
三个损失一起看
Prediction loss → z_t 说:“把真实世界的重要东西记住!”
Dynamics loss → p 说:“你得学会预测 encoder 实际得到的 z_t!”
Representation loss → q 说:“别编码一堆未来完全预测不了的随机细节!”
Dreamer 找的是 informative 与 predictable 之间的 sweet spot。
⭐ Critic 学习:λ-return、bootstrapping 与 EMA
Critic 回答:从这个 state 出发,按当前 actor 继续走,未来累计回报大概是多少。
Critic 预测 return 分布
真正的 return 是:
Critic 不直接输出一个标量,而是输出 return 的分布:
需要 scalar 时取期望:
为什么预测分布:同一状态可能“50% 概率 return=0、50% 概率 return=100”,均值 50 其实一次都不会发生;而且跨 Atari/Minecraft/DMC/robot 的 return 数量级差异大。所以用 categorical distribution + 指数间隔的 bins。
imagined trajectory 从哪来
从 replay buffer 取真实 trajectory,经 encoder 得到真实 posterior state ,再从这里开始 imagination rollout 到 。除起点外都是想象的。
只想象 16 步,第 17 步以后怎么办
用 bootstrapping:只 rollout 一段,后面让 critic 估计。这就是 λ-return:
- :基本完全相信 critic(variance 小,但 critic 不准时 target 也不准);
- :几乎全靠 imagined reward 递推(依赖真实 reward,但长 rollout 误差累积、variance 大);
- :短期相信 imagined rewards,长期相信 critic。
是 continuation flag:episode 结束时 ,,后面截断。
Critic 的 loss
用 imagined rewards + critic bootstrap 算出 target ,再 maximum likelihood 训练 distribution。这和普通 概念上一样,只是 distributional value prediction。
鸡生蛋问题与 EMA critic
里有 , 又来自 critic,所以 critic 用自己的预测生成 target(bootstrapping)。如果 critic 变来变去,target 也震荡。于是维护 critic 参数的 EMA:
用 EMA critic 的 output 对当前 critic 做 regularization,作用类似 DQN 的 target network。
Replay critic loss
Critic 不只在意想象轨迹上训练,还用 replay buffer 的真实轨迹额外训练(权重 )。因为 world model 的 reward predictor 可能不准,需要拿真实 reward 校准。具体做法:从 replay state 重新启动 imagination,得到当前 policy 下的 on-policy value annotation,再配合真实 rewards 算 replay λ-return。
另外,reward predictor 和 critic output layer 初始化成 0,避免早期随机网络输出夸张的 reward/value,让 actor 追着纯幻觉 reward 跑。
Actor、World Model、Critic 的分工
Actor 决策 → World Model 模拟后果 → Critic 判断长期价值
World model 只可靠 rollout 有限步(T=16),Critic 把 horizon 之外的长期回报压缩成 。
⭐ Actor 学习:entropy 与 return normalization
这一节解决一个工程但关键的问题:怎么让同一个 actor loss 在奖励极稀疏、极密集、数值尺度差很多的环境里都能工作。
Actor 目标与 entropy
Actor 想让高 的动作概率变大,但不希望太快变成几乎确定的策略,所以加 entropy 鼓励探索。
entropy 权重的问题
论文固定 。若环境 A 的 、环境 B 的 ,在 B 里 entropy 基本被忽略(exploitation),在 A 里 entropy 相对作用大得多(exploration)。不归一化,同一个 在不同环境意义完全不同。
Actor loss
核心是 advantage:
说明这个动作比 critic 预期好,提高概率; 则降低概率。减 是因为要关心“比正常表现好多少”,而不是绝对 return。 表示 Actor 只把 advantage 当常数权重,梯度不穿过 critic/return/world model。
⭐ S 是什么(return normalization)
约等于当前 return 的典型范围。用 95% − 5% percentile 而不是 max − min,因为 outlier 会毁掉它(一批 return 1~5 里混一个 10000,max−min 会让正常 advantage 全变成接近 0)。再用 EMA 平滑 batch 抖动。
为什么是 max(1, S)
如果 才缩放 ;如果 ,则 ,即只缩小特别大的 return,绝不把小 return 放大。这叫 denominator limit。
为什么不能把小 return 放大:sparse reward 下,模型噪声可能产生 ,如果用标准 normalization 会被放大成巨大 policy gradient,actor 把噪声当 reward signal。用 max(1,S) 杜绝这一点。
和 exploration 的关系
sparse reward 时 ,REINFORCE 项接近 0,entropy 相对更重要 → 继续探索;发现明显高 reward 后,真正的 reward signal 压过 entropy → 开始 exploitation。所以这个 normalization 隐式实现了“reward 远 → 探索,reward 到手 → 利用”。
为什么不减去 offset / 不用标准 advantage normalization
减一个不依赖 action 的 offset 不改变期望 policy gradient,因为 ,所以只需要除 控制 range。
标准 advantage normalization(,如 PPO)会强行让 policy gradient 始终保持差不多的尺度:即使根本没有真正 reward,模型噪声也会被放大成看起来很强的 policy signal,把 entropy 压过去、停止探索。DreamerV3 坚持“可以 scale down,绝不 scale up”。
数值例子
,采样到第二个动作,,,所以 。
- 若 :,只适度提高该动作概率;
- 若 :不是 ,而是 ,没有放大。
⭐ 数值稳定性:symlog 与 twohot
这一节解决:不同任务数值尺度差太大,怎么让重建、reward prediction、critic prediction 都稳定训练。
symlog 与 symexp
它是对正负都能用的 log。例如 变换后变成 ,尺度被压缩; 时 symlog(x)≈x,小值几乎不变。所以“小值近似线性,大值对数压缩”。
普通连续 target 的训练:
网络预测 symlog(y) 而不是 y,推理时再 symexp 还原。它比 running mean/std normalization 更稳,因为变换是 stationary 的,不会随训练变化。
reward / return 为什么用 twohot categorical
reward 和 return 是多峰、带噪声的随机量,同一个 state 可能是“30% return=0、70% return=100”,MSE 预测标量 70 即使均方意义合理,也可能不是任何真实出现的 return。所以用 categorical distribution。
bins 构造:先在 symlog 空间均匀放 bin,再 symexp 映射回原始值空间:
于是真实空间里 bin 是指数间隔的:靠近 0 很密,远离 0 很稀。网络输出 logits 后 softmax 得到各 bin 概率,最终预测:
two-hot encoding
target 落在 bins 和 之间,用线性插值编码成 :
这允许 categorical model 表达连续值,而不是只能输出离散 bin center。
为什么用分类而不是回归
categorical cross entropy 的梯度由 决定,不直接与 成正比;target=1 和 target=100000 只要映射到对应 bins,梯度尺度差不多。这让 gradient magnitude 与 target magnitude 解耦,对“同一套超参数跨 domain”至关重要。
symlog/twohot 用在哪
- Vector observations:先 symlog 再进 encoder,decoder target 也在 symlog 空间训练。
- Reward predictor 和 Critic:symlog/symexp twohot categorical loss。
注意这节和 Actor 的 return normalization 不是一回事:symlog/twohot 控制 prediction learning 的数值稳定性;return normalization 控制 actor policy gradient 中 exploration/exploitation 的尺度。
实验与消融
验证什么
作者在 8 个 domain、150+ tasks 上测试,并强调 fixed hyperparameters,验证前面的 free bits、symlog、twohot、return normalization、categorical latent 是否真的兑现了“减少跨任务调参”。
与 PPO 比较
作者专门实现了一个强 PPO,因为 PPO 是典型的 model-free RL,想公平地验证:固定超参数下,world model 范式是否真的比通用 model-free 方法更泛化。结果是 Dreamer 在各 domain 上明显更强。
benchmark 为什么选得杂
覆盖连续/离散 action、image/vector observation、dense/sparse reward、不同 reward scale、2D/3D、procedural generation,测试“动作形式变了、观测形式变了、reward 尺度变了、稀疏程度变了还能不能学”。
- Atari:高维视觉、离散动作,超过 MuZero / Rainbow / IQN。
- ProcGen:随机关卡,测 generalization。
- Atari100k:400K frames,测 sample efficiency(真实数据可反复用于 imagination)。
- Proprio Control:18 个连续控制任务,输入是向量,证明 Dreamer 不是“视觉游戏算法”。
- Visual Control:20 个纯视觉控制任务,只给 pixels。
- BSuite:credit assignment、reward scale、stochasticity、memory、exploration 等 RL failure mode,Dreamer 在 scale robustness 提升尤其明显。
- Minecraft:极长 horizon + sparse reward,从零、不用人类数据,100M 步内发现钻石。
Minecraft 不是靠超长 rollout
Dreamer 的 imagination horizon 是 T=16,不可能一次模拟 36000 步。长期行为靠 critic bootstrapping:短期靠 world model rollout,长期把收益折叠进 value。
Ablation 结论
- 每个 robustness trick 平均都有贡献,但某个技巧往往只对特定任务重要。
- 最重要的 robustness technique 是 world model 的 KL objective(dynamics/representation loss、stop-gradient、free bits),其次是 return normalization 和 symexp twohot。
- Figure 6b:Dreamer 的 latent representation 主要靠 unsupervised reconstruction loss,而不是 reward/value gradient。这使它更接近 task-agnostic world representation(对比 MuZero 的 task-specific representation)。
- 这也引出未来方向:用大量无监督数据 pretrain world model。
Scaling 结论
训练 12M 到 400M 共 6 个模型尺寸,性能随尺寸单调增加;而且模型越大,达到同样性能所需的环境数据反而更少(data efficiency 更高)。replay ratio 越高(同样真实数据多更新几次),性能也越高。所以 Dreamer 有两个“花更多算力”的旋钮:model size ↑ 和 replay ratio ↑,都能用 GPU 算力换真实交互减少。
与 PlaNet / 前代的关系
| 版本 | 重点 | 动作选择 |
|---|---|---|
| PlaNet | planning | 在线 CEM / MPC |
| Dreamer | policy learning | imagination 中训练 actor-critic |
| DreamerV3 | generalization | 同一套超参数跨 150+ 任务 |
PlaNet 更像“现在现场想很多方案”;Dreamer 更像“训练期间反复做梦,把长期经验压进 Actor 和 Critic”。
与三维视觉 / 机器人世界模型的联系
Pi3X / VGGT 学的是静态空间表示(image → camera/depth/point map);DreamerV3 学的是可预测、动作条件化的时间状态(image + action → latent dynamics → policy)。未来机器人方向希望:
camera → 3D representation → world model → future prediction → action
老师说的“多预测光流、物体、动作,让预测互相辅助”,本质就是从 3D scene understanding 走向 world model。
DreamerV3 之后的后续工作
沿着 DreamerV3 这条路线,后续比较值得看的工作:
- Dreamer 4(Hafner 团队,2025):DreamerV3 的正统后继,重点转向更强的可扩展 world model 和更复杂对象交互。
- STORM / TWISTER:把 RSSM 的 recurrent dynamics 换成 Transformer world model;TWISTER 加入长时间尺度 contrastive predictive objective,在 Atari100k 上报告了高 human-normalized score。
- Robust Representation for World Models:挑战“重建所有像素是否必要”,加入 temporal/forward prediction auxiliary objective,让 representation 更偏向可预测、任务相关的动态信息。
- LS-Imagine:针对 long-horizon imagination 的瓶颈(DreamerV3 只有 T=16)。
- Genie 3 / 大规模生成式 world model:world model 从 RL 内部 latent dynamics 扩展成通用交互式环境模拟器。
如果只选一篇 DreamerV3 之后马上读的,推荐 Dreamer 4;如果选一篇最可能启发自己改模型的,推荐 TWISTER(它直接挑战 RNN dynamics、短期预测目标、representation learning 这几个核心假设)。
官方资料
- 论文:arXiv:2301.04104
- 项目主页与代码:可在论文页查找官方链接。