让物理世界变成一段代码:Code-as-World如何教AI"理解"物理规律

2026年的某一天,一个视觉语言模型看着一段台球碰撞的视频,被问了一个简单问题:白球从1秒到2秒之间的平均速度是多少厘米每秒。

它答不上来。

不是因为它看不懂视频里发生了什么,它能准确描述"白球撞向了另一颗球",甚至能讲出碰撞的方向和大致轨迹。但一旦要求给出具体数字,模型就露了怯。这背后藏着一个被很多人忽略的事实:能描述一件事和能理解这件事的运作机制,是两码事。

这正是MirroS团队这篇论文想解决的核心矛盾。

**看得懂,不代表算得出**

现在的视觉语言模型(VLM)已经很强了。给它一段视频,它能告诉你画面里有几个人、发生了什么动作、甚至能推测接下来会发生什么。这种能力来自于海量图文和视频文本数据的训练,模型学会了用语言去描述视觉世界。

但物理世界不只是需要被描述,它需要被计算。

VLM*:视觉语言模型(Vision-Language Model),一类同时处理图像/视频和文本的AI模型,能够看懂画面并用语言回答相关问题。

当你问"这个球的质量是多少""它离开斜坡时的速度是多少",模型需要的不是语言层面的联想,而是对物体状态、物理参数、动力学规律的精确掌握。论文把这种区别总结为一个很精炼的说法:现象和机制的二分法。现象说的是发生了什么,机制说的是为什么会这样,以及在不同条件下会怎样变化。

这就好比你去看一场足球比赛的解说和去看比赛的战术分析报告。解说员能生动地告诉你"球被大力抽射进了球门",但战术分析师能告诉你"球速是32米每秒,角度是15度,门将的反应时间不够0.3秒"。前者是现象描述,后者是机制理解。如果一个AI只能做解说员,那它永远没法帮你做真正需要计算的物理决策,比如让机器人提前算好抓球的时机和力度。

如果不解决这个问题会怎样,论文给出了一个具体的答案:在QuantiPhy这个专门测试定量物理推理的基准测试上,包括Gemini、ChatGPT在内的顶级商业模型,平均准确率都停留在50%上下,有些甚至只有20%多。这不是模型"笨",而是这类任务本身对现有VLM来说是个盲区。

**寻找一种更好的世界表示方法**

要让AI理解物理机制,第一步得想清楚:用什么方式来"记录"一个物理世界,才能既保留细节又便于推理?

论文里梳理了三条现有的路子,每条都有明显的短板。

第一条路是像素。视频生成模型通过预测未来的画面帧来学习时间动态,现在的视频生成已经越来越逼真。但这里有个致命问题:只优化像素预测,模型不需要真正区分"这个物体在移动"和"摄像机在移动",也不需要区分"物体被遮挡了"和"物体消失了"。多种互相矛盾的内部解释,只要能生成看起来差不多的画面,预测精度就差不多。

这就像一个演员能完美模仿一个角色的语气和动作,但完全不理解这个角色的内心动机。表演效果可能以假乱真,但你没法通过看他的表演反推出角色的真实想法。像素预测同理,看起来对,不代表内部逻辑是对的。

第二条路是三维重建。通过恢复几何结构、视角和外观,3D表示在场景建模上表现出色。但重建出来的三维模型,往往只是把物体的形状"复制"了一遍,并不解释这个物体为什么会在支撑物移开后掉落,或者它和别的物体碰撞时会发生什么。

第三条路是自然语言。用一句"一个人拿起了杯子"来描述场景,语言确实很紧凑、很有语义,但连续变化的物理量,比如精确的几何坐标、轨迹、接触关系,很难被压缩进几个离散的词元里。

三条路各有各的优势,也各有各的死角:像素保留细节但没结构,三维保留结构但没机制,语言保留语义但没精度。

论文提出的答案是:把代码当成第四种表示方式。

**用代码写下整个物理世界**

Code-as-World*:本文提出的核心范式,用可执行代码来表示物理世界,包括物体的组成、随时间的演化、以及视觉呈现三个部分。

为什么是代码?因为代码天然具备一种别的表示方式都没有的特质:它既是结构化的,又是可执行的。

你可以在代码里写清楚"这个球的质量是0.2千克,摩擦系数是0.95,初始速度是1.35米每秒",这是结构化的语义信息。同时,你可以直接把这段代码丢进物理引擎里跑一遍,看看它实际会怎么运动,这是可执行性带来的验证能力。

论文把这种表示方式拆成三个组成部分。

第一部分叫物理组成(Composition),描述世界里"有什么":物体的几何形状、尺寸、质量、摩擦力、地板墙壁这些静态结构。这些是相对稳定的属性,定义了物理过程能在什么条件下展开。

第二部分叫动态演化(Evolution),描述"怎么变化":物体的初始状态、随时间的变化、关键事件(比如碰撞发生的时刻)、模拟的持续时间。这一部分展开后能生成完整的状态轨迹,记录每一次接触、碰撞、速度变化。

第三部分叫视觉呈现(Appearance),描述"怎么被看见":相机参数、背景、材质、光照、渲染配置。这部分不改变物理过程本身,只决定这个物理轨迹以什么样的画面呈现出来。

这套设计的巧妙之处在于,它把"世界的本质"和"世界的样子"彻底分开了。就像一部剧本和它的舞台呈现是分开的:剧本规定了角色的动机、事件的因果顺序,这是不变的核心;而舞台布景、灯光、演员的服装可以随便换,换了布景不代表剧情逻辑变了。如果不做这种分离,你想测试"如果这个球的质量翻倍会怎样",就得重新拍一整段视频,而不是只改一个数字重新跑一遍模拟。

论文里给了一个很直观的例子:改变保龄球的初始速度方向,就能得到完全不同的运动轨迹;换个相机机位,就能从全局视角或者从任意一辆车的视角重新渲染同一场碰撞。这种可编辑性正是可执行表示带来的独特优势,像素视频和纯语言描述都做不到这一点。

**代理式发现循环:像科学家一样搞侦查**

有了这套表示方法,接下来的问题是:怎么从一段自然语言描述或者一段真实视频里,把这个可执行世界"提取"出来?

论文管这个过程叫代理式发现(Agentic Discovery),灵感来自科学史上的一种推理方式,叫溯因推理(Abductive Reasoning)。

溯因推理*:一种从观察到的现象出发,反推最能解释这些现象的原因或机制的推理方式。哥白尼从行星运动的观测数据反推出日心说,就是一个经典例子。

论文的洞察是,代码的可执行性天然适合支撑这种"假设-验证"的循环。一个AI代理可以把每一个候选的世界表示当作一个可测试的假设,通过一套五步流程不断迭代:提议、实例化、执行、渲染、验证。

具体来说,给定一段文字描述或一段视频,代理先根据已有信息猜一个初步的世界假设,把它转换成物理模拟器能识别的参数,跑一遍模拟得到完整的状态轨迹,再把这个轨迹渲染成画面(如果输入是视频,还要额外投影出深度图、物体掩码、运动轨迹)。接着把渲染结果和原始证据做对比,找出不一致的地方,把这些差异反馈回去修正假设,进入下一轮循环。

这个过程很像侦探破案。侦探不会一次性就得出真相,而是先根据现场线索提出一个初步推测,然后去验证这个推测是否能解释所有的证据。如果发现某个细节对不上(比如凶器和伤口不匹配),就得回去修正推测,再验证一次。破案不是一步到位的猜谜,是不断试错、不断逼近真相的过程。如果没有这种反复验证的循环,只靠一次性生成一个假设就下结论,很容易得到一个"看起来说得过去但实际经不起推敲"的答案,就像侦探只凭第一印象定案,很可能抓错人。

论文实际测试了这个循环的效果,最多跑5轮迭代,同时对比"一次性生成"和"独立采样5次取最好结果(Best-of-5)"这两种基线方法。结果显示,在相同的评估预算下(都是跑5次),代理式发现循环在视觉对齐度、物体重叠度、轨迹误差、准确率等大多数指标上都优于Best-of-5独立采样。这说明迭代式的、有反馈的搜索确实比盲目多次尝试更有效率,这个结论并不理所当然,因为直觉上你可能觉得多试几次总能撞上一个好结果,但数据显示"有方向地试"比"随机地多试"更划算。

论文还区分了两条不同的证据来源路径。

对于文字描述这种输入,代理会提取里面的实体、空间关系、物理事件、预期结果,组织成结构化的语义证据,因为文字往往没法把几何形状、物理参数、相机设置说得完全清楚,代理需要结合物理常识和合理的默认设定来搭建一个初步假设,再通过模拟和语义验证逐步细化。

对于真实视频这种输入,代理会提取深度图、实例掩码、物体轨迹作为视觉证据。这里还用到了几个专门的处理工具:SAM3负责分割和跟踪,VGGT-Omega估计场景深度和相机几何,SAM3D给每个物体生成对应的三维网格模型。这些证据结合起来,帮助代理反推出物体的空间位置、尺度和动态状态,最终重建出一个可执行的三维场景。

值得一提的是,论文还做了一个从文字生成世界之后再"复原成真实视频"的步骤。用一个内部的视频生成模型对模拟渲染结果做二次加工,让物体、材质、背景、光照看起来更真实,但保持底层的运动轨迹和物理演化不变。这一步的效果被单独评估过:生成的视频在分布真实性指标(JEDi)和运动特征指标(TRAJAN)上都比原始的模拟渲染更接近真实视频,而运动保真度指标(轨迹误差、速度误差、准确率)几乎没有损失。这说明"换皮肤"不会丢失"骨架"里的物理信息。

**用可验证的世界,喂给AI做物理考试**

搞定了世界表示和发现机制之后,论文做了一件很实际的事:用这套系统生产的可执行世界,给视觉语言模型当"物理教材",训练它们在QuantiPhy这个基准测试上做定量物理推理。

QuantiPhy*:一个专门评估视觉语言模型定量物理推理能力的基准测试,要求模型从单目视频中推断出物体的真实世界尺寸、位移、速度、加速度等量化指标。

这个任务比普通的物理问答难在哪里?普通问答可能只需要"这是不是重力作用"这种定性判断,但QuantiPhy要求模型给出具体数字,比如"这个球从0.6秒到0.9秒的速度是多少米每秒"。而视频本身只提供像素空间的测量结果,模型必须借助一个已知的参照物(比如告诉你台球的直径是57.2毫米),把像素测量校准成真实世界的单位。

训练过程分成两个阶段。

第一阶段叫图像空间测量基础训练,教模型学会在像素层面精准定位、测量、追踪物体。数据来自RefCOCO、RefCOCO+、RefCOCOg、RefCLEF这几个指代表达数据集(提供物体的边界框标注),以及GOT-10K这个物体追踪数据集(提供密集的逐帧位置信息)。从这些标注里可以直接算出物体的宽高、位移、速度、加速度,全都以像素为单位。

第二阶段叫世界空间物理校准,用前面提到的可执行世界作为训练数据来源。因为每个验证过的可执行世界都自带精确的物体几何、相机参数、时间戳、物理状态记录,可以直接生成带精确世界坐标标签的问答对,物体尺寸从场景几何里读取,位移速度加速度从状态轨迹里计算得出。这个阶段用了一种叫GRPO的强化学习方法来优化模型,奖励函数结合了数值准确率、单位正确性和格式规范性。

GRPO*:Group Relative Policy Optimization的简称,一种强化学习优化算法,通过让模型对同一个问题生成多个回答,比较这些回答的相对优劣来更新模型参数。

这里有个设计上的巧思:文字生成的世界和视频提取的世界,分别提供了不同的价值。文字驱动的世界能给出完全可观测、数值上绝对精确的物理状态,因为一切都是模拟器"亲手"算出来的;而视频驱动的世界虽然精度可能略逊,但更贴近真实观测的画面风格和运动分布。论文做了消融实验验证这个想法:单独用文字驱动数据训练的4B模型平均得分48.5,单独用视频驱动数据训练的得47.8,而两者结合起来训练能达到50.6分。这个差距虽然不算悬殊,但两条来源确实带来了互补的收益,就像学做菜既要看菜谱(精确但抽象)又要看别人实际炒菜的视频(真实但细节杂乱),两者结合才学得最扎实。

最终的实验结果相当亮眼。9B参数规模的Code-as-World-VL在QuantiPhy上拿到55.4分的平均成绩,超过了参数量远大于它的Gemini-3.1-Flash(54.8分)。更让人意外的是,只有4B参数的版本也拿到50.6分,超过了包括Qwen3-VL-32B-Instruct(40.2分)在内的一众规模大得多的开源模型。而额外训练的27B推理增强版本,通过在给出答案前展示完整的思考过程,进一步把成绩推高到58.6分,超越了所有参照的商业模型。

这里有个细节值得说一下。论文特别强调,27B版本的结果不能简单理解成"推理链让准确率变高了",因为这个版本同时改变了模型规模和输出协议(要不要展示思考过程),两个变量同时变化,没法把功劳单独归于某一个因素。这种严谨的态度其实挺难得,很多论文在拿到好结果之后会倾向于把所有功劳都归到自己最想强调的那个创新点上,但这篇论文选择老实说清楚"我们没法把这两个变量分开验证"。

论文还展示了一个27B模型的真实推理过程案例。面对一个问"自行车平均速度是多少"的问题,模型先识别运动方向,计算径向分量(沿相机方向的速度),再结合像素跟踪估算横向分量,最后综合两者得出总速度约6米每秒,而标准答案是5.33米每秒,误差不算离谱。另一个台球案例里,模型准确追踪目标球、测量像素位移、用已知的球体直径做校准,算出26.8厘米每秒,标准答案是26.82厘米每秒,几乎分毫不差。这些案例说明模型确实学会了"测量-校准"这套完整的推理链路,而不是单纯记住了某种数字规律。

**这套方法也有边界**

论文没有回避自己的局限性,这点也值得说一下。

首先,现实世界极其复杂,现有的物理模拟器没法完整刻画所有物理条件。就算是看起来很简单的刚体运动,也可能对地形、接触几何、材料属性的微小变化非常敏感。当真实的物理过程超出了模拟器的建模能力范围,代理式发现循环可能会收敛到一个"看起来说得过去"但实际上并不准确的世界假设,这就像一个侦探找到了一个能自圆其说的故事,但这个故事其实不是真相。

其次,QuantiPhy这个测试本身只覆盖了物理理解的一小部分,主要聚焦在单目尺度校准这个相对受限的运动场景上。现实世界里还有摄像机运动、旋转、形变、遮挡、接触、碰撞、摩擦、流体、多物体长时程动力学,这些复杂现象目前都还没涉及。

最后一点也挺关键:Code-as-World-VL目前学到的是可执行世界验证后的最终结果,而不是发现过程本身。也就是说,模型是在"消化别人已经算好的答案",假设的构建、模拟、诊断、迭代修正这些环节都还是外部系统在做,模型本身并没有内化这套"像科学家一样搜索答案"的能力。把这套发现循环变成模型自身的原生能力,是论文明确指出的未来方向。

论文最后还展望了几个更远的应用场景,比如把这套框架扩展到流体、布料、燃烧、断裂这些更复杂的物理现象上;用可执行世界表示来支撑更连贯的长时程视频生成;以及让具身智能体先在脑子里"推演"可能发生的结果,再决定怎么行动,而不是完全依赖反应式的策略。这些都还只是方向,论文没有给出具体的实现。

写在后面

读到这篇论文的时候,最触动我的其实不是那些漂亮的实验数字,而是"现象-机制二分法"这个提法。

我们很容易被一个AI流畅的语言表达骗过去,觉得它"理解"了什么。但这篇论文用一个很扎实的实验揭穿了这个错觉:能说出"球滚下了斜坡"和能算出"球离开斜坡时速度是0.7米每秒",中间隔着一道很大的沟。前者靠模式匹配就能做到,后者需要真正的物理机制建模。这个区分让我重新审视了很多"看起来很智能"的AI应用,它们到底是在描述,还是在计算。

另一个让我印象深刻的细节是那个"侦探式"的发现循环。论文没有简单粗暴地说"我们训练一个模型直接输出世界参数",而是设计了一套提议、验证、修正的迭代机制。这背后其实是一种谦逊的态度:承认单次预测很容易出错,所以要建立一套自我纠错的机制。这种思路让我想起科学方法论本身,好的科学理论从来不是一次性想出来的,而是在不断被证伪和修正中逼近真相的。把这种科学方法论"编码"进AI系统的设计里,本身就是一件很有意思的事。

还有一个没在正文详细展开但挺值得琢磨的问题:这套方法目前依赖模拟器的能力边界。如果一个真实的物理现象模拟器根本模拟不了(比如复杂的流体飞溅、布料的褶皱变化),那这套发现循环再怎么迭代,也没法逼近真相。这提醒我们,AI的"物理理解"能力,某种程度上被它所依赖的工具链的能力上限锁死了。这不是一个能靠更多数据或更大模型解决的问题,而是需要模拟技术本身持续进步才能突破的天花板。

如果有一天,AI真的能像论文设想的那样,自己构建假设、自己跑模拟、自己发现哪里不对、自己修正,那它离真正理解物理世界,还有多远?

Q&A

Q1:Code-as-World是什么?

A:Code-as-World是MirroS团队提出的一种物理世界表示方法,用可执行代码来描述物理世界的组成、演化和视觉呈现,让AI能够精确计算物理量而不只是描述现象。

Q2:Code-as-World-VL在QuantiPhy测试中表现如何?

A:9B参数的Code-as-World-VL在QuantiPhy上拿到55.4分,超过了参数量更大的Gemini-3.1-Flash(54.8分),27B推理增强版更是达到58.6分,超越所有对比的商业模型。

Q3:代理式发现循环是怎么工作的?

A:它是一套提议、实例化、执行、渲染、验证的五步循环,AI代理先猜测一个物理世界假设,跑模拟渲染出结果,和原始证据对比找差异,再据此修正假设,反复迭代直到结果足够准确。

作者声明:作品含AI生成内容
举报/反馈
分享到: 微博 QQ 空间
对本文内容有合作意向?
我们将在 1 个工作日内与您联系
留言咨询