Skip to content

绪论

想象一位棒球捕手。投手抬臂的瞬间,他必须判断这一球是直球还是变化球、会在哪里落点——可他来不及"等球飞过来再看",大脑必须提前预测球的轨迹,然后指挥手套出现在正确的位置。从投手抬臂到球进手套不过四百毫秒,真正的决策发生在球到达之前。

你的大脑每时每刻都在做同样的事:下楼梯时预测下一级台阶的高度,伸手拿杯子时预测手指合拢的时机,开车时预测前车会不会突然变道。这种在行动之前就预见行动后果的能力,认知科学家称之为“心智模拟”。而我们要教给机器的,正是同一种能力——这就是世界模型(World Model)

机械臂伸手拿杯子,半透明的重影展示它脑中对未来轨迹的预测

图 1:预测就是世界模型的全部工作——在动手之前,先看见“如果这样做会发生什么”。

世界模型是什么

一句话定义:

世界模型是智能体内部的一个模型,它学习并预测"世界在动作作用下如何变化"。

这个定义里藏着两个关键词,也是本课程反复使用的判据:

  • 预测:世界模型的输出是"还没发生的事"——下一帧画面、下一个隐状态、未来的占用网格。它不是识别器,不是分类器,而是预言家
  • 动作条件:预测必须回答"如果我这样做,会怎样"。一段只会自动播放的视频不是世界模型,一个能对你的键盘输入做出一致反应的才是。第 5 章会用它分辨"可交互视频"与普通视频生成,第 9 章会用它设计评测。

打个比方:下棋高手不需要真的把棋子摆出来试,他能在脑海里推演几步之后的局面——那个在他脑中运行的“棋局模拟器”,就是他的世界模型。我们想给 AI 装上的,正是这样一个模拟器。

系统动力学之父杰伊·福里斯特(Jay Wright Forrester)对此有一句精辟的描述(World Models 一文正是以它开篇):

“我们头脑中携带的周围世界的图像,只是一个模型。没有人能在脑子里想象出整个世界、政府或国家。我们只保留少数被选择的概念,以及它们之间的关系,并用它们来代表真实的系统。”

—— Jay Wright Forrester,转引自 Ha & Schmidhuber (2018)

这句话点破了世界模型的本质:它从来不是世界的完整副本,而是一个足够用于决策的压缩模型。压缩成什么、保留什么、丢弃什么,就是后面五条路线的分岔。

还有一条边界值得在开头就划清:世界模型是学出来的,不是写出来的。物理引擎(MuJoCo、Bullet)同样模拟“世界如何响应动作”,但它的规则是工程师预先写好的牛顿定律;世界模型则是从观测数据里自己学出规则。它不需要知道牛顿定律,也能学会“碰倒杯子会洒出水”;它适用于物理引擎写不出来的地方——人的行为、交通的潜规则、市场的波动。学会规则而不是被给予规则,这是“世界模型”与“仿真器”的分界线。

三个组件:V-M-C

2018 年,David Ha 与 Jürgen Schmidhuber 在著名的 World Models 论文中给出了现代世界模型的标准拆解——三个组件:

  1. V(Vision,观察):把高维观测压缩成紧凑表示。一帧画面有几万个像素,直接预测太贵;先压缩,图像可以压成连续 latent(VAE)、离散 token(VQ-VAE),或者干脆压成不重建像素的抽象 feature(JEPA)。
  2. M(Memory/Dynamics,动态):在压缩表示上预测未来。它可以是 RNN(MDN-RNN、RSSM)、Transformer(IRIS、Genie、GAIA),或扩散模型(DIAMOND)。
  3. C(Controller,控制):利用 M 的预测选择动作——可以是显式规划(CEM、MCTS),也可以是学到的策略(Dreamer 的 Actor)。

V-M-C 总览:V 把观测压缩成 z,M 预测未来的 z,C 依据 z 与记忆 h 输出动作

图 2:V-M-C 三组件总览。来源:Ha & Schmidhuber World Models(CC-BY 4.0)

三者形成一个闭环:C 输出动作 a_t,M 把 a_t 作为预测条件推出下一个状态,V 再把新的观测压缩回来喂给 M。

智能体模型流程:观测经 V 得到 z_t,与 M 的隐状态 h_t 拼接后送入 C 输出动作 a_t,M 再用 z_t 和 a_t 更新出 h_{t+1}

图 3:V、M、C 与环境的完整交互流程。来源:Ha & Schmidhuber World Models(CC-BY 4.0)

原文把这个闭环写成了一段极其简短的伪代码——智能体与环境的全部交互逻辑,只有十几行:

python
def rollout(controller):
    obs = env.reset()
    h = rnn.initial_state()
    cumulative_reward = 0
    done = False
    while not done:
        z = vae.encode(obs)              # V:把观测压缩成 latent
        a = controller.action([z, h])    # C:根据 z 和记忆 h 输出动作
        obs, reward, done = env.step(a)  # 环境反馈
        cumulative_reward += reward
        h = rnn.forward([a, z, h])       # M:用动作与观测更新记忆
    return cumulative_reward

训练流程同样简洁:先用随机策略收集一万次 rollout;然后训练 V;再训练 M(注意:训练 M 不需要奖励信号,它只负责压缩与预测);最后用进化算法搜索 C。数据收集、世界模型训练、策略训练三者完全解耦——这条流水线也是本课程第 2、3 章的骨架。

这套流程里藏着一个不起眼却决定成败的细节:训练 M 时,喂给它的是 V 从真实画面压出来的 z_t;部署时,它只能吃自己上一秒吐出的预测。前者叫 teacher forcing(老师带着走)——模型每走一步都有真实观测纠正;后者叫 free-running(独自跑)——错了也没人管,错误会滚进下一步。训练与部署之间的这道落差,正是“复合误差”的源头,我们在后面会反复碰到它。

你将在第 2 章逐一认识这些组件;从第 3 章开始,重点转向一个更关键的问题——M 到底在预测什么? 因为这是不同路线的分岔点。

原文的设计哲学:复杂度放在世界模型里

World Models 原文在 CarRacing 赛车任务里,把“复杂度放进世界模型、控制器保持极简”的思路推到了极致:

组件实现参数量
V卷积 VAE,把每帧 64×64 画面压成 32 维 latent4,348,547
MMDN-RNN(LSTM + 混合密度输出层),建模 P(zt+1at,zt,ht)422,368
C单层线性模型 at=Wc[zt,ht]+bc867

三个细节值得注意:

  • 压缩为什么可行:一帧 64×64 画面有 12288 个数,但其中大部分是冗余的——相邻像素几乎一样,背景十年不变。真正有意义的“状态”(赛车的位置、朝向、速度)只占极少数自由度,它们嵌在一个低维流形上。V 学的就是这个流形:把 12288 个像素压进 32 个数,丢掉的是冗余,留下的是状态。
  • M 输出的不是确定性的预测,而是一个混合高斯分布:环境本身是随机的(怪物会不会开火、球会不会弹偏),模型必须会说“概率”。而单一高斯分布做不到这件事——如果火球可能向左也可能向右,单个高斯的最优解是站在两者中间,可“中间”恰恰是永远不会发生的轨迹;混合高斯(mixture of Gaussians)才能同时举起两种未来。后面第 4 章的 RSSM 正是把这个思想发扬光大。
  • C 只有 867 个参数——比一个普通网络的隐层还小,因此可以用进化策略(CMA-ES)而不是梯度下降来训练。这也正是本课程把第 3 章的世界模型设计得足够小的原因。

这个设计也留下了一个可验证的预测:记忆到底值多少分? 原文做了消融实验——如果砍掉 M,让 C 只看当前帧的 zt,赛车会在弯道摇摇晃晃,只得 632 分;接上隐状态 ht 后,得分飙升到 906 分,超过了当时 DQN(343)与 A3C(652)等深度强化学习方法。一个不到一千参数的控制器,靠世界模型喂给它的记忆,就赢了百万参数级的无模型算法。

预测什么:五种结果

第 2 章把世界模型按"预测的输出"分为五种,对应本教程的五条学习路线:

预测什么代表方法对应路线
隐状态(latent)RSSM、PlaNet、Dreamer第 4 章(A)
画面 / 视频 tokenIRIS、Genie、GameNGen第 5 章(B)
抽象特征(不重建像素)I-JEPA、V-JEPA 2第 6 章(C)
机器人动作的后果RT 系列、世界模型检查器第 7 章(D)
三维空间与占用NeRF、3DGS、GAIA-2第 8 章(E)

没有哪种输出天生更好:决策任务偏爱隐状态——便宜、可直接规划;安全审查偏爱画面——人能看懂;机器人需要动作后果——能验证。选择输出,就是选择这个模型要服务什么问题。

为什么需要它

回到开头的捕手:他之所以必须预测,是因为真实世界的反馈太慢、太贵、有时太危险。机器也一样:

  • 真实世界的每一步交互都很贵——真机会磨损、数据要标注、时间在流逝,而在学习到的模型里展开一万步几乎免费;
  • 有些错误不能在真实世界里犯——机器人砸坏东西、自动驾驶发生碰撞。世界模型提供了一个可以提前"试错"的沙盒;
  • 多步决策需要想象未来——价值函数与规划算法,都建立在"能推演后果"的前提上。

屏幕里机器狗在仿真环境中练习行走,旁边的真机等待验证后再上场

图 4:先在学习到的世界里反复练习,再去真实世界验证——这是世界模型最直接的用途。

当然,天下没有免费的沙盒。模型总有误差,多步展开后误差会累积——这叫复合误差(compounding error):训练时模型只见过“真实观测 → 预测下一步”,部署时却必须用自己的预测喂自己,一步的偏差滚进下一步,越滚越大,最终漂移到它从未见过、错得最离谱的区域。更狡猾的是,策略可能钻模型的空子,找到一条在模型里高分、在真实世界根本不存在的捷径——这叫模型利用(model exploitation)。这两类失败模式,是第 4 章实验与第 9 章评测的重点。

原文的 VizDoom 实验把“用梦境替代环境”推到了最彻底的形式。任务是 Take Cover:躲开对面怪物扔来的火球,活得越久越好——存活步数就是奖励。要让梦境变成一个完整的强化学习环境,M 除了预测下一帧,还要额外学会一件事:预测智能体会不会在下一帧死亡(一个二值的 done 信号)。有了它,梦境就同时具备了观测、动作与终止条件,接口上与真实环境完全兼容;智能体可以纯粹在 latent 空间里训练——不需要渲染像素,速度快得多——学成之后把策略直接插回真实的 VizDoom 验证:梦里训练的策略在真实环境存活约 1100 步,远超 750 步的及格线。

紧接着,原文用一个实验把“钻空子有多可怕”演示得淋漓尽致。在梦境环境里,M 采样时可以调一个温度参数 τ 控制不确定性:

  • τ 降到 0.1,梦境几乎变成确定性的,结果怪物因模式崩塌“忘了发射火球”,智能体在梦里拿到接近满分的 2086,回到真实环境却只得 193 分——还不如随机策略(210 分)
  • 反过来,故意把 τ 升到 1.15,让梦境更噪声、更难钻空子,得到的策略回到真实环境反而拿到 1092 分
τ梦境得分真实环境得分
0.102086 ± 140193 ± 58
1.15918 ± 5461092 ± 556
随机策略基线210 ± 108

“在一个更噪声、更难钻空子的世界里训练”——这个 2018 年的经验,正是后来 Dreamer 等想象中训练方法的共同想法。你在第 4 章会亲眼看到自己的策略是如何钻世界模型空子的。

迭代训练:世界模型与智能体一起长大

上面的两个实验共享一个前提:世界模型是用随机策略收集的数据训成的。简单环境里这够用;但复杂世界里,大部分区域只有智能体先学会某些技能才到得了,随机数据根本覆盖不到。原文给出的答案是一个迭代循环:

  1. 随机初始化 M 与 C;
  2. 在真实环境跑 N 次,存下全部观测与动作;
  3. 用新数据训练 M,并在 M 内部训练 C;
  4. 任务没完成,就回到第 2 步。

倒立摆实验展示了这个循环的威力:第一轮迭代后,M 只见过摆杆垂在下半部的数据,几乎没法建模顶部状态,但 C 依然能在梦里学会摆起;摆起的策略部署到真实环境后,收集到了摆杆在上半部的数据,M 变准,C 变强——二十轮迭代后,任务解决。

这里还剩下一个问题:探索去哪里,谁说了算?原文给了一个优雅的答案:M 的预测损失本身就是好奇心。M 在哪里预测得差,就说明智能体对那里不熟悉;把 M 的损失函数符号反过来当奖励,智能体就会主动去探索陌生区域——这个想法后来发展成了内在动机(intrinsic motivation)研究的一条主线。

信息如何变成记忆:经验通过回放被巩固为长期记忆

图 5:信息如何变成记忆。来源:Ha & Schmidhuber World Models(CC-BY 4.0)

原文还引了一个漂亮的神经科学呼应:老鼠休息时,海马体会**重放(replay)**白天的经历,这种重放对记忆固化至关重要——强化学习里的经验回放,可以说是同一机制的机器版本。回放会在本课程第 3 章的数据管线里再次登场。

两个未解问题,与它们的后继者

原文对自身局限也很诚实,提出的两个问题后来都得到了回应:

  • 能不能直接在梦里反向传播? 原文的 C 太小,所以用进化算法;但如果世界模型是完全可微分的计算图,就能直接用梯度训练策略——这正是 Dreamer 在 2020 年做的事(第 4 章)。
  • 记忆容量够吗? LSTM 的权重装不下人脑那样的长久记忆,还会遭遇灾难性遗忘。答案指向外部记忆与检索机制——第 1、3 章会看到这条线索的变体。

原文的相关工作部分——PILCO 的高斯过程动态模型、Alex Graves 用 RNN“幻觉”出 Atari 关卡、施密德胡伯自己 1990 年的原始构想——都放在了世界模型八十年里,那里有更完整的脉络。

世界模型与无模型方法

如果嫌模型误差麻烦,可以干脆不建模:直接从真实交互中学习“什么状态好、什么动作该做”——DQN、PPO 这类无模型(model-free)强化学习就是这样。两条路线的差别,本质上是把赌注押在哪里:

  • 无模型方法赌“数据”:价值与策略直接拟合真实反馈,没有模型可被钻空子,但样本效率极低——DQN 在 Atari 上练好一个游戏要数百万帧;
  • 世界模型赌“预测”:先在内部世界里大量试错,样本效率高出几个数量级——PILCO 用约 20 次真实交互就能学会摆杆——但所有错误都集中在一个地方:模型不准。

这不是二选一,而是一条光谱:Dyna 与 MuZero 都在真实与模型之间来回切换(第 4 章),第 9 章则教你诚实地测量“模型给策略的想象力值多少分”。

世界模型与视频生成模型

2023 年之后,大量被称为"世界模型"的系统其实是视频生成模型。两者的边界值得划清楚:

  • 被动视频模型:给定开头,自动生成后续,不接受动作输入
  • 世界模型:后续演化受动作控制,且同一动作序列应产生一致的后果。

画面质量高不等于理解物理——一段看起来无比真实的生成视频,完全可能让汽车穿过墙壁、让玻璃杯落地不碎。FVD、IS 这类指标衡量的是“像不像”,衡量不了“对不对”;要检验后者,只能看多步一致性(同一动作序列反复生成是否得到同一后果)和反事实(如果当初按下的是另一个键,画面是否相应改变)——这正是第 9 章 WorldModelBench 一类基准做的事。

不过边界正在模糊:动作条件化的视频生成模型(Genie、GameNGen)本身就是世界模型的一种实现——第 5 章的实验,就是亲手做一台这样的机器。

本课程的结构

  • 第 1 章:世界模型的基本问题——观察、动作条件预测、多步展开、从经验学习动态;
  • 第 2 章:认识共同组件——张量与轨迹、编码器、记忆、压缩与生成、空间表示、决策接口;
  • 第 3 章:搭好数据管线,训练你的第一台(表格世界的)世界模型;
  • 第 4–8 章:五条路线(A–E),任选其一深入;
  • 4.6 动手:World Models 的复现:用 CarRacing 亲手跑通 2018 年原文的 V-M-C 管线,第 4 章的可选前置;
  • 第 9 章:评测与研究设计——分清「看起来真实」和「真的有用」,系统评测模型,并从稳定失效设计下一台世界模型;
  • 附录 A–C:数学、代码与术语;数据、算力与交付;论文、榜单与产业地图。

所有路线共享同一个数据语言(episode、transition、回放),彼此不是先修关系——你可以从任何一条路线开始。

小结

  • 定义:世界模型 = 学会“世界如何回应动作”的预测器;预测与动作条件,是它区别于一切其他模型的两个特征。
  • 方法:规则是从数据里学出来的,不是写出来的——这是它与物理引擎的分界;它把复杂度押在预测上,换来了样本效率,也要为模型误差买单。
  • 结构:V 负责压缩、M 负责预测、C 负责利用预测做决策,三者构成闭环。
  • 分岔:预测 latent、画面、特征、动作后果还是三维占用,决定了它服务决策、审查还是机器人控制。
  • 代价:复合误差与模型利用是它的两个天敌,也是评测的中心议题。

接下来请进入第 1 章:世界模型的基本问题,或者先读世界模型八十年,看看这条研究线索八十年的来历。

参考文献

  1. Ha, D., & Schmidhuber, J. (2018). Recurrent World Models Facilitate Policy Evolution. NeurIPS. arXiv:1803.10122
  2. Ha, D., & Schmidhuber, J. (2018). World Models. 交互式文章:worldmodels.github.io —— 本篇正文中的 V-M-C 框架、CarRacing/VizDoom 实验数据与图 2、3、5 均来自此文(图表为 CC-BY 4.0 授权)。配套代码:WorldModelsExperiments
  3. LeCun, Y. (2022). A Path Towards Autonomous Machine Intelligence. OpenReview —— JEPA 与世界模型架构蓝图,代表“预测特征而非像素”的立场。
  4. Ding, J., et al. (2024). Understanding World or Predicting Future? A Comprehensive Survey of World Models. arXiv:2411.14499 —— 梳理“理解世界”与“预测未来”两条路线分野的综述。
  5. Hafner, D., et al. (2023). Mastering Diverse Domains through World Models. arXiv:2301.04104 —— 一套超参打通 150+ 任务的工程报告,“可复现世界模型”的标杆。