这几年 AI 圈里只要有一个词开始变热,它的定义就会迅速膨胀。
比如,World Model,世界模型。
大家都在用,但每个人说的似乎都不是同一件事。只要模型能预测一点未来,记住一点状态,生成几帧连续视频,很多人就开始自称在做世界模型。
一个真正可用的 world model 到底应该是什么样的?
@dung defender 尝试正本清源:
@dung defender
4 月 2 日编辑于知乎
今天写个小帖子,浅谈一下 world model。
说实话,world model 真的是一个很魔幻的词。一个原本在控制、规划领域里有着相当清晰数学定义的概念,这几年突然被赋予了各种各样的含义。现在的局面基本就是:只要模型稍微能预测一点未来,大家都敢拍着胸脯说,「我这做的是世界模型。」
手动狗头。
所以今天我们来稍微正本清源一下,好好讨论一下 world model 到底是什么,以及它真正困难的地方到底在哪里。
背景:world model
原本是个很朴素的东西
先说最标准的定义。
我们希望用一个函数 f 来描述一个动力学系统。它接收当前系统状态 st 和当前动作 at 作为输入,输出下一个状态 st+1
s_{t+1} = f(s_t, a_t)
这里的「动力学系统」不一定非得是物理系统,它其实是一个非常一般的概念。只要一个系统的演化可以写成「当前状态 + 当前动作 →\rightarrow→ 下一状态」的形式,它就可以被放进这个框架里。
一旦有了这样的动力学模型,我们就可以把大量决策问题写成一个标准的最优控制问题:
这个 formulation 非常重要的一点是:它没有依赖任何机器人的 prior,也没有限定具体问题域。
它是一个非常通用的数学框架。
比如:
如果 world model f 描述的是人形机器人的动力系统,那么 S 是机器人的状态,action 是伺服电机的驱动信号,R 是机器人完成任务的 reward。
如果 f 描述的是围棋规则,那么 S 是当前棋局,action 是下一步落子,R 是最终是否战胜对方。
如果 f 描述的是语言系统,那么 S 是当前上下文,action 是下一个 token 或某种更高层次的语言操作, R 是文本是否满足任务。
如果 f 描述的是一个动画系统,那么 S 是当前手柄输入和场景状态,action 是选择播放的下一段动画,R 是这段动画是否满足任务需求以及技术美术的审美
这样的例子可以举很多。
核心点在于:一旦你有了一个好的动力学模型,后面就可以调动优化、搜索、规划这一整套武器库来解问题。
这里顺便来个锐评 1:
Sutton 的 bitter lesson 从来没有说过,只有纯数据驱动的方法才是可以 scale 的。
closed-form solution、optimization and search、data-driven method,这三者本来就是相辅相成的。
真正关键的从来不是「站队」,而是你有没有把方法设计对,有没有避免引入不必要、不可扩展的 bias。很多时候方法本身没有高下之分,有高下之分的是用方法的人。
为什么 world model
这件事很重要
当我们有一个比较精确的 f 时,很多问题其实就好办了。
比如做 humanoid locomotion,如果 fff 已经足够准确,甚至就是一个高保真物理模拟器,那么我们可以直接在这个模型上做强化学习、做规划、做控制优化,最终求解这个最优控制问题。
但问题在于:大量真实问题里的 f 根本不好写。
举几个例子:
布料模拟:你很难同时兼顾精度和速度;
刚体、软体、流体耦合系统:传统 simulator 做起来非常重;
大量 agent 之间的复杂交互:规则写不全,近似又容易炸;
游戏世界里角色和环境物体的大规模动态耦合:更是一个大型混沌现场。
这些系统很难通过传统还原论的方式完整建出来,所以你就很难用通用的 optimization / search 方法在上面求解复杂任务。
这时候,如果我们能学到一个神经网络形式的 f,能把这些复杂系统的动力学近似出来,那很多原本做不了的事情 suddenly 就有希望了。
这里再来个锐评 2:
world model 这东西,本来核心就是建模复杂的动力系统。
关键字是:动。
所以我一直有点难 get 到,一些几乎不涉及真实动态、只是「在静态场景里挪来挪去」的东西,为什么也能被大张旗鼓地包装成 world model。
这种功能你在游戏引擎里搭个环境、写点脚本,很多时候也能实现,甚至有些所谓模型做出来的效果还不如环境贴图。
当然,在这种 toy example 上验证一下记忆能力、长期 consistency,倒也不是完全没价值。有点单不大。
祖师爷还是得认:
给 Schmidhuber 一点 credit
说到这里,还是得给 LSTM 之父 Jürgen Schmidhuber 一点 credit。
他在 2018 年那篇 World Models,确实是比较早系统性地用神经网络来建模环境动力学,并结合 planning 来求解任务的代表性工作之一。这个方向后来火成今天这样,他是该被记上一笔的。
奈何欧洲学术圈这些年整体式微,徒子徒孙数量和声量都不太行,很多 credit 经常就这么被时代洪流冲淡了。学术史有时候也挺现实的:idea 重不重要是一回事,谁把旗子插住是另一回事。
问题难点:
一个可用的 world model
到底难在哪
如果我们先不考虑计算速度,只从「能不能用」这个角度看,一个 world model 主要要解决两个问题:
准确性(accuracy)
一致性(consistency)
准确性指的是:f 算得准不准,和真实动力学有没有明显偏差。
一致性指的是:模型是否能维持长期的时空一致性,能不能记住过去的信息,不要今天长这样,明天物理失忆。
这篇里我先主要聊准确性。
如果要想得到一个精确的 world model f,我觉得至少要从三个视角来看:
系统表征 S
模型结构
训练方式
1. 系统表征 SSS:你到底想让模型「看见」什么
第一件事是:我们怎么定义系统状态 S?
这件事其实非常关键,因为你让模型建模什么,本质上决定了后面整个问题的难度。
目前主流大概有三种路线。
a. 显式 3D 表征:把世界翻译成人类熟悉的几何语言
这一类包括很多 3D conditioned generation、GS、mesh、NeRF 系列思路。
3D 表征本质上是人类对世界的一种高度压缩、规则化的表达方式。它的优点很明显:
表达紧凑;
结构清晰;
可控、可编辑;
很适合接 optimization / graphics / simulator 这类后端。
但它的问题也很明显。
首先,很多系统并不天然适合用显式 3D 去表达,因为很多 3D 表征本身就带有强烈的还原论假设。比如:
人脸表情怎么表示?
面部肌肉和软组织怎么表示?
衣服褶皱、材质细节、接触形变怎么表示?
这些东西一旦被塞进某种人为定义好的 3D 参数空间,很容易就丢掉大量微妙但重要的信息。
其次,3D 表征通常要求你有一整套把世界「转码」成 3D 状态的 pipeline。这个数据获取成本极高。现在我们能拿到海量文本、海量视频,但你很难拿到同等规模、高质量、统一格式的 3D world state 数据。
b. 2D 表征:直接上视频,数据多得像海
另一条主流路线就是:别整那么多,直接用 2D 视频。
这条路最大的优点是:数据多。
互联网什么都可能缺,但就是不缺视频。你根本不需要先把世界重建成某种中间表示,直接让模型吃像素就行。
但问题也很大。
首先,很多物理正确性在单视角 2D 视频里是很难判断的。你看着「像对了」,不代表它真的对。模型很容易学出一种很会骗眼睛、但并不真的符合动力学规律的东西。
其次,2D 表征的计算量极大。对于很多任务,我们根本不需要像素级别的建模精度。比如:
如果我只是想让 world model 建模「机械臂抓杯子」这个任务,那么背景里某个 pixel 的明暗变化,真的不应该是模型重点关注的对象。你让一个模型花大量算力去精确预测这些视觉细枝末节,本质上是在让它为一堆和任务无关的 entropy 买单。
说白了,2D 的问题在于:它什么都装进来了,但不一定什么都该装进来。
c. 隐式表征:JEPA 这一派的理想很丰满
第三条路线是隐式表征,代表性思路像 JEPA 这类方法。这套方法的出发点我觉得其实非常合理:
系统状态 S 不应该是 per-pixel 的,而应该是某种抽象的、压缩后的、任务相关的内部表征。
也就是说,世界模型不应该忙着背诵每一个像素值,而应该学会「理解这个系统此刻的关键状态是什么」。
从这个角度看,JEPA 确实是在做一件很有吸引力的事情:
从 2D 视频里提取压缩的、抽象化的 feature 表征。
但是这条路目前也还有很多坑没有填平。
例如:
如果被 mask 掉的区域在给定其余可见信息的条件下,其真实分布是多峰分布怎么办?
这时候用 L1 loss 去预测一个「平均答案」,显然就很怪。
你预测出来的东西可能在 loss 意义下是对的,但在语义上是错的,在物理上也是错的。
再比如,人类对世界的压缩本质上是任务相关的。
我们不会永远用同一套固定比特预算去编码所有信息。
人眼有对焦机制;
注意力会动态重分配;
人在做不同任务时,会把信息容量优先分给不同区域。
而现在很多 V-JEPA 式的做法,本质上还是在追求一种和任务无关的统一压缩。这件事在我看来,并没有那么 make sense。你让模型不管干什么任务,都把世界压成同一种 latent,这听起来就很像在说:
「别问,先压,压完总有用。」
这套想法很有美感,但离真正 work,可能还差不少工程和理论问题要补。
我个人目前的感觉是:C 这条路从方向上最合理,但需要探很多坑。
2. 模型:你到底打算拿什么去拟合 f
有了系统状态 S 之后,下一个问题是:
我们用什么模型去拟合动力学函数 f?
而讨论到这里,事情就开始熟悉起来了——是的,我们又要进入经典节目:RNN 还是 Transformer?
RNN:理论上更像「计算」,实践上更像「受苦」
RNN 本质上是一个 NC1 的递归计算模型。理论上,它更适合表达那些真正有状态递推性质的动力系统。你可以认为它在「计算模型复杂度」意义上,比固定深度的前馈结构更自然地贴近某些动态过程。
它的优点在于:
更强的计算表达能力;
理论上可以建模更复杂、更精细的动态演化;
对某些 sequential dynamics,它的 inductive bias 很合理。
但它的问题也很直接:
递归结构导致训练难以高度并行;
长序列优化困难;
scale 不友好;
工业上不讨喜。
一句话总结:RNN 很像那种理论上你知道它可能更对,但真让你大规模训练的时候,你会开始怀念 Transformer 的人。
Transformer:并行是爽了,但你别忘了它本质上是什么
Transformer 的优点大家都知道:
并行友好;
训练高效;
吃大数据和大算力时效果好;
工程生态成熟。
但 world model 这个问题里,Transformer 也不是没有代价的。
它本质上是一个计算复杂度 TC0 的有限层的前馈并行计算结构。无论你怎么包装 attention、MLP、residual,最后它仍然是在有限深度里做一套相对受限的计算。对于一些真正复杂的动力学建模任务,这种结构未必天然够用。
于是问题来了:
如果你面对的是低复杂度 world dynamics,Transformer 可能够用;
但如果你面对的是高复杂度、多主体、强组合爆炸的动态系统,它未必扛得住。
那怎么办?
要么你加深网络;
要么你引入 test-time computation;
要么你搞某种形式的 CoT。
但问题是:
文本模型可以 CoT,非文本模型怎么 CoT?
这其实是个挺核心的问题。
很多人默认「推理时多算一点」是普适解法,但在视觉、视频、控制场景里,CoT 到底应该长什么样子,其实完全没有被回答清楚。
而且,不同任务的复杂度差别是非常大的。
静态场景里随便漫游一下;
跟 100 个行人一起穿马路;
预测一个角色和多个物体的长期交互;
这些任务的复杂度根本不在一个等级上。你很难指望同一个模型范式、同一个算力预算,优雅覆盖所有情况。
所以在我看来,一个很关键但常被忽视的问题是:
我们到底有没有对想建模的那个 f 的复杂度,有一个起码靠谱的估计?
如果连这个都没有,那很多架构讨论其实都还停留在玄学辩论阶段。
3. 训练方式:你到底要用什么 loss 去逼近 f
最后一个问题是:
即便你已经定义好了 S,也选好了模型,你准备用什么 loss 去训练这个 world model?
如果讨论连续系统,目前主流大体逃不过两类:
regression loss
diffusion loss
regression:简单直接,但天生怕多峰
regression 的优点很明显:
简单;
稳定;
可以直接监督输出;
对高精度数值拟合比较友好。
但它的问题也经典到不能再经典了:它很难建模多峰分布。
如果未来本来就不是唯一的,而是存在多个可能结果,那么 regression 往往会学到一种平均意义下的答案。这个答案在 loss 上可能还不错,但在真实系统里往往长得像「所有可能性的平均尸体」。
diffusion:表达力很强,但别以为它是白来的
diffusion 的优点是它确实可以建模复杂分布、多峰分布,理论表达力强,生成质量也高。
但它的问题也不能忽略:
对数据量要求高;
训练和推理计算代价大;
优化目标是分布级别的,不是对 f 的显式点对点监督;
所以你想拿它学一个「高精度可计算的动力学函数」,这件事其实并不 trivial。
这里也是我觉得很多讨论容易糊掉的地方。
大家一看到 diffusion 很能生成,就容易默认它也很适合做高精度 world dynamics prediction。这个推理没那么自然。
因为 world model 不只是「画得像未来」,很多时候你需要的是:
状态误差小;
物理量别漂;
接触关系别错;
rollout 不要几步之后直接精神分裂。
而 diffusion 学到的是一个分布 matching 的目标,它并不会天然保证你想要的那些东西自动成立。(这里我其实有个绝妙的想法,不过篇幅有限写不下,后面细讲。23333)
小结:world model
不是一个 buzzword
而是一个系统工程
今天我们从几个不同的视角,简单聊了一下 world model 的前世今生。
如果把它当成一个真正严肃的问题来看,你会发现它绝对不是「拿个视频模型预测几帧未来」这么简单。它背后至少牵涉到这些本质问题:
你如何定义系统状态;
你用什么结构去表达动力学;
你如何处理不同任务复杂度的差异;
你用什么训练目标去逼近一个真正可用的 f;
以及最关键的:你到底想让这个模型干嘛。
所以我自己的看法一直是:
world model 不是一个单点技术,而是一个系统工程。它牵涉的不只是生成质量,而是表征、计算、控制、规划、训练目标、数据形式这一整套问题的共同设计。
也正因为如此,这个方向现在虽然很热,但很多问题其实才刚刚开始被认真讨论。有些工作确实在往前推,有些工作则更像是在给「世界模型」这个词贴金。
没关系,学术界一直如此。
一个词一旦火了,先经历一轮定义膨胀,再经历一轮概念去泡沫化,最后才能慢慢回到真正有价值的问题上。
希望 world model 这个词,最后也能走到那一步。
知友讨论
@鬼鬼:
好文,这篇从 control / robotics 视角梳理得很清楚,尤其把问题拆成 state、model、loss 三层很干净。不过我觉得定义还是略窄了:world model 不应只等于学一个动力学函数。现实里更难的往往不是 transition 本身,而是从部分观测中构造什么样的 state,以及这个 state 是否保留了对象、关系、可控变量和高层抽象,如果状态 只在连续隐变量(如JEPA)或像素里打转,其实很难实现长程的复杂规划,真实的认知世界不仅有物理,还有意图、因果等高级语义。静态 3D/scene 表征虽然“不动”,但对 affordance、约束和因果同样关键。换句话说,world model 不只是物理引擎,更应该是一个可观测、可干预、可抽象、可规划的内部世界表示。
@Yuheng Zhi:
不矛盾,transition/dynamics model可以包含意图等比较抽象的状态,observation model把这些状态转到连续空间。现在这些learn出来的world model一般是这两者的级联。
@冥昭瞢闇:
9宫格来了
@唯一:
nb写的太好了,我是做软体PDE建模的,看完后感觉我的也可以叫world model,套几篇文章了
@蓝柿子:
就跟具身智能这个概念泛滥和定义膨胀有一样的既视感
@April Lee:
以前我们叫马尔科夫过程和动态规划,现在叫世界模型?
@神圣的火焰:
现在所说的世界模型更偏向认知和预测物理状态吧
阅读更多
🚀 AI 产品扶持计划:
知乎为 AI 产品提供定制宣发支持,了解/报名请戳:知乎「AI 新品非正式发布现场」扶持计划
🚀 知乎 AI 社群:
如果你是泛 AI 爱好者,对 AI 资讯感兴趣,欢迎扫码加入知乎 AI 社群↓,我们将每周送上 AI 周报,不定时发布 AI 线上线下活动与 AI 产品测试尝鲜。
知乎AI交流群
让一部分开发者先走起来
🚀 知乎科技账号正式登陆 X:
👉 https://x.com/ZhihuFrontier,聚焦「技术 × 观点」的跨语境对话

