PAPER NOTE · HA & SCHMIDHUBER · 2018
World Models
世界模型,就是让 AI 在“脑内”拥有一个简化的环境模拟器:它能根据现在看到的东西和准备做的动作,猜接下来会发生什么。它想解决的核心问题是:AI 不必把每一次尝试都放到真实环境里,而能先在内部模型中练习,再把学到的行动方式带回真实环境。本文这篇 2018 年论文只在赛车和 Doom 游戏中验证这条思路,并不等于已经学会模拟真实世界。
先分清三种“学习”
- 监督学习
- 给 AI 题目和标准答案,让它从大量例子中学会“看到这种输入,应该给出什么答案”。
- 非监督 / 自监督学习
- 不给人工标准答案,让 AI 从数据自身寻找规律,或把数据的一部分当成另一部分的答案。
- 强化学习
- 不给每一步的正确动作,只在行动后给奖励或惩罚,让 AI 学会怎样行动才能获得更高的长期总分。
放回这篇论文:V 和 M 从采集到的画面序列中学习压缩与预测,属于非监督 / 自监督这一侧;C 没有“正确动作”标签,而是根据游戏总分,用进化策略寻找更好的行动规则。
他们想解决什么问题?
先把“世界”缩小到一个赛车游戏:AI 每一刻只收到一张画面,然后要决定方向盘和油门。如果它一边学会从画面中认出赛道,一边摸索“这样转弯会不会撞墙”,还要同时判断哪个动作最终得分更高,就需要在游戏里反复撞车,试错次数会非常多。
World Models 因此把问题拆成两步:能否先从画面和动作中学出一个会预测后果的内部环境,再让一个很小的控制器在里面练习?在这篇论文里,内部环境负责压缩画面并预测下一时刻的可能状态;控制器只负责根据当前状态选择动作。到 Doom 实验时,控制器甚至完全在模型生成的 Dream 中训练,最后才被放回真实游戏测试。
高维像素序列、Agent 执行过的动作,以及环境是否结束。
先压缩每一帧的空间结构,再预测隐状态随动作变化的概率分布。
让小型 Controller 只读取当前隐状态和循环网络记忆,输出动作。
在赛车中直接控制,在 Doom 中完全于 Dream 训练后迁回真实游戏。
“Can agents learn inside of their own dreams?”
World Models 原始交互文章提出的问题
它与之前工作的关系
这不是第一个 model-based RL,也不是第一个学习潜空间的模型。它真正特殊的地方,是把高维视觉、随机未来和“在模型里训练策略”组合成一条非常清楚的工程管线。
| 路线 | 环境表示 | 优势 | 当时的主要限制 |
|---|---|---|---|
| Model-free RL | 不显式学习动力学 | 省去模拟器误差问题 | 真实采样需求高;表征、记忆、策略纠缠在一起 |
| PILCO / Gaussian Process | 带不确定性的显式动力学 | 低维连续控制中样本效率很高 | 高维像素和大数据下较难扩展 |
| 潜空间动力学 | 先压缩,再预测 latent state | 预测比直接生成像素便宜 | 不少方法仍要在真实环境中完成策略训练或微调 |
| World Models | VAE 的 z + RNN 的 h | 原始 RGB 输入;随机未来;Controller 可在 Dream 中训练 | 策略会利用模型漏洞;性能受内部世界质量限制 |
它不是“一个大网络直接输出动作”,而是三个职责分离的模块:V 负责看,M 负责想象后果,C 负责选动作。
先看全局:V、M、C 怎样组成一个闭环
一帧有上万个像素;V 把它压成较短的隐向量 z,只留下对任务有用的结构。
- 数据
用随机策略在真实环境跑轨迹,保存
(frame, action, next frame)。赛车实验采集了 10,000 条 rollout。 - 空间
单独训练 VAE,使每帧 64 × 64 RGB 图像变成短向量
z。 - 时间
固定 VAE 后训练 MDN-RNN,学习
p(zₜ₊₁ | zₜ, aₜ, hₜ)。 - 策略
固定 V 与 M,只优化 Controller。论文用 CMA-ES,不依赖策略梯度。
- 部署
C 在每一帧读取
[zₜ, hₜ]并输出动作;Doom 实验把同一个 C 从 Dream 直接迁回游戏。
三个模块具体学了什么
VAE:把像素换成可预测的状态
它追求的不是完美还原,而是保留控制任务需要的结构。
输入一张 64 × 64 × 3 的图,Encoder 输出高斯分布的均值和方差,从中采样 latent vector z,Decoder 再尝试重建原图。CarRacing 使用 32 维 z,VizDoom 使用 64 维 z。
- 结构
- 4 层卷积 + 4 层反卷积,stride 2
- 损失
- 重建误差 + KL divergence
- 训练
- 独立训练 1 epoch
拖动四个教学用隐变量,比较原始观察与有损重建。
不要把每一维硬解释成语义。真实 VAE 的 latent 往往是分布式表征。这里让四维分别影响弯度、车位、地平线和路宽,只是为了看清“短向量能够控制重建结构”。
MDN-RNN:预测的不是唯一未来,而是一组可能
动作相同,下一状态仍可能不同;概率分布比单点回归更合适。
RNN 读取当前的 zₜ、动作 aₜ 与记忆 hₜ,输出下一隐状态的 mixture density。论文使用 5 个高斯混合分量;CarRacing 的 LSTM 有 256 个 hidden units,Doom 有 512 个,并额外预测死亡/结束信号。
- 输出
- 5-component Gaussian mixture
- 意义
- 表达未来的多峰与不确定性
- 训练
- 固定 V 后训练 20 epochs
选择动作并调节温度 τ,观察采样未来如何分叉。
温度不是简单的“噪声大小”。它控制采样分布的尖锐程度:太低会生成过于容易、可被利用的世界;适度提高能逼 Controller 学到更稳健的策略。
Controller:把复杂性留在世界模型里
理解世界的网络很大,真正做决定的网络可以很小。
Controller 只接收 [zₜ, hₜ],经一个线性层输出动作,再用 tanh 限制范围。CarRacing 的 C 只有 867 个参数,Doom 为 1,088 个。论文使用 CMA-ES 在参数空间搜索策略,因此 V 与 M 在此阶段都保持冻结。
- CarRacing
- steering / gas / brake
- VizDoom
- left / stay / right
- 优化
- CMA-ES evolution strategy
换一个弯道,查看线性策略根据 z 与 h 的组合选出动作。
C 还没有输出动作。
实验真正证明了什么
CarRacing:记忆 h 是否真的有用?
这个任务每次随机生成赛道,官方“解决”标准是连续 100 次平均分达到 900。只靠当前帧的 z,车能开,但遇到急弯会摇摆和出界;加入 M 的 hidden state 后,Controller 能使用最近的时间信息判断道路如何变化。
C 的输入是否包含 M 的 hidden state。
z only 为 632;增加一层隐藏层也只有 788;z + h 达到 906。
单帧告诉车“现在在哪里”,时间记忆帮助它判断“赛道正在怎样弯”。
VizDoom:能否完全在 Dream 中训练?
Agent 需要左右躲避火球,得分是生存时间。作者先用真实轨迹训练 V 和 M,然后让 C 只与 MDN-RNN 生成的环境交互。最后把 C 原样放回 VizDoom,不再微调。
先在真实环境中随机探索
保存每一步的画面和动作,让模型看到“做了什么”以及“接下来发生了什么”。
为什么温度 τ 决定能不能迁回现实
低温 Dream 很稳定,也很容易被 Controller 找到漏洞:它在虚拟环境中活得很久,回到真实 Doom 却立刻失败。温度提高后,世界模型生成更难、更分散的未来,虚拟分数下降,真实分数反而上升。最佳真实迁移出现在 τ = 1.15。
| τ | Dream | 真实 Doom | 读法 |
|---|---|---|---|
| 0.10 | 2086 ± 140 | 193 ± 58 | 梦太容易,策略几乎不能迁移 |
| 0.50 | 2060 ± 277 | 196 ± 50 | 仍在利用模型的确定性 |
| 1.00 | 1145 ± 690 | 868 ± 511 | 现实性能开始超过基准 |
| 1.15 | 918 ± 546 | 1092 ± 556 | 最好的真实迁移 |
| 1.30 | 732 ± 269 | 753 ± 139 | 世界过难,训练收益下降 |
它比其他方法好在哪里,又缺了什么
职责分离
V 与 M 用无监督目标学习世界,C 只面对低维决策问题。每个模块可以单独训练、替换和检查。
在 latent space 模拟
预测 32 或 64 维 z 比预测每个 RGB 像素便宜,也更容易让 RNN 关注与控制有关的变化。
Controller 很小
把容量放进世界模型后,策略仅有约千个参数,CMA-ES 就能搜索,不需要再端到端反向传播。
显式处理不确定性
MDN 输出分布,温度还能调整 Dream 的难度。Doom 实验证明“不确定性”直接影响 sim-to-real。
| 比较维度 | Model-free | PILCO 一类 | World Models |
|---|---|---|---|
| 输入尺度 | 可直接接像素,但样本昂贵 | 更适合低维状态 | 先把像素压成 z |
| 动力学 | 不显式建模 | 概率模型,重视 uncertainty | MDN-RNN 的 latent distribution |
| 策略训练位置 | 真实/官方模拟环境 | 模型与真实数据循环 | 可完全在 Dream 中 |
| 可检查性 | 策略内部较难拆解 | 模型不确定性可分析 | 重建、rollout、C 可分别观察 |
| 主要失败方式 | 样本不足或奖励设计错误 | 扩展性和模型偏差 | Controller 利用 Dream 漏洞 |
论文自己承认的限制
- 模型漏洞。Controller 会主动搜索能得高分的状态,一旦进入训练数据之外的区域,M 的错误会被放大。
- 容量与遗忘。一个有限 RNN 很难长期记住复杂世界;新经验也可能覆盖旧动态。
- 逐帧预测不等于规划。M 会生成下一个状态,但论文没有显式的层级目标、搜索树或长期规划器。
- 压缩会丢物理细节。视觉上不重要的细节,可能恰好决定碰撞、接触或稳定性。
World Models 最重要的贡献不是某个单独网络,而是一个非常清楚的接口设计:pixels → z → probabilistic dynamics → small policy。后来的 latent dynamics、Dreamer 系列和很多 learned simulator 都沿着这条思想继续推进。
把这个思路换成 PBD,会发生什么
如果观察不再是赛车画面,而是布料粒子的 x、v 和约束状态,V 可以省略或换成图网络 Encoder;M 学习“当前粒子状态 + 外力/抓取动作 → 下一状态”;C 则选择抓取点、目标位移或 solver 参数。
这和判断“它是不是布料”不是同一个问题。分类器回答材料类别,World Model 回答动作之后状态怎样变化。对 PBD 来说,后者更像代理求解器或加速器,但必须额外检查约束误差、穿透、能量和长 rollout 稳定性。
左右分别是显式约束求解与带小误差的学习模型;连续推进后比较误差累积。
两边从完全相同的状态开始。
观察重点:单步误差很小不代表 rollout 稳定。训练时最好同时记录 stretch/bend constraint violation、碰撞穿透和能量漂移,而不只比较位置 MSE。