1. 从一只鹈鹕看模型的空间推理上限1.1 为什么偏偏选“鹈鹕骑自行车”这个组合先交代一下背景。我最近在整理一份针对多模态大模型能力边界的测试清单本来想用一些常规的评测任务比如物体识别、属性描述、图文匹配。结果看到同行群里有人丢了一张图AI 生成的“鹈鹕骑自行车”画面里那只鹈鹕悬在半空中翅膀倒是张开了但身体和自行车之间完全没有任何接触点轮子画成了两个椭圆脚蹬的位置更是离谱直接长在车架侧面。群里一片爆笑但笑完之后我突然意识到这其实是一道非常好的空间推理测试题。为什么非要用“鹈鹕骑自行车”这种组合因为这句话里天然包含了多层空间约束。鹈鹕是鸟自行车是人造工具两者的组合在真实世界几乎不存在所以模型没法从训练数据的统计相关里“抄”答案。要画对这张图模型必须在生成阶段完成一系列空间推理主体的空间占位鹈鹕的体积、翅膀展开后的轮廓应该和自行车的座位、车把、脚踏板形成对应的接触关系动作的空间映射鸟没有手所以“骑”这个动作需要模型推断出翅膀按住车把、爪钩住脚踏板这类具身映射相机视点的空间一致性从正面看、侧面看还是斜 45 度看所有部件的遮挡关系和透视比例必须统一物理合理性的空间校验如果鹈鹕真的悬空了那么重力方向上应该存在支撑物不能让鸟和自行车在画面上各活各的。这些约束叠加在一起才真正考验模型的“空间智商”。相比之下你让它画“一朵红色的花”它只需要知道颜色属性不需要处理任何物体间的位置关系让它画“猫在沙发上”空间偏移一点普通用户也不容易察觉。但“鹈鹕骑自行车”是一个天然的多物体交互场景任何空间逻辑上的错误都会被放大一眼就看出来。我把这道题发给几款主流的大模型绘图工具试了一圈结果非常有代表性。有的模型画出了“鹈鹕骑在车座上”但鹈鹕的喙直接穿过了车把有的模型把轮子画成了正圆形但鹈鹕的脚掌却插进了轮辐里还有的模型把自行车画成了倒着的看起来像是一场现代艺术展。最让我意外的是某款模型完美地画出了鹈鹕也完美地画出了自行车但两者的空间关系彻底错了——自行车悬浮在鹈鹕身后大约 30 厘米的位置整个画面看起来就像拍照时没对焦两个元素分别从不同图层叠上去的。1.2 表面是“整活”实际是一次三维空间建模考试你可能会说绘图模型画错一只鸟有什么大不了的但把这道题放到大模型的能力坐标系里看它考的其实是三维空间建模能力在人机交互场景下的真实水平。现代多模态大模型处理图像时通常要做这么几件事把输入图像切块编码成视觉 token经过跨模态注意力机制和文本 token 做对齐再通过条件扩散过程逐步生成像素。这套流程在理解“物体是什么”这件事上已经做得相当好classification、captioning 这类任务刷分刷得很高。但理解“物体在哪里、物体和物体之间是什么相对关系”这件事目前的模型能力还非常割裂。举个例子我测试中有一个简单的变体提示词“一只鹈鹕坐在自行车后座上面朝车尾方向翅膀扶住后架。”这个要求里加入了相对方位车尾、姿态朝向面朝后、动作附属翅膀扶架三个空间约束。结果绝大多数模型生成出来的画面鹈鹕虽然坐在了后座但面朝的方向是前方翅膀也没有接触后架。有些模型甚至把“面朝车尾”理解成了“整个画面从车尾视角看过去”于是自行车头对着观众鹈鹕面向前方——它把观察方向和主体朝向搞混了。这其实揭示了一个问题空间关系在模型的训练数据里通常以两种形式存在——文本标注里的语义描述和图像里的视觉像素。理想情况下训练应该让模型把两者绑定起来形成稳定的空间对应。但在实际训练里语义描述的稀疏度远高于视觉特征。数据集里“在……上面”“在……后面”这类关系标签的数量远少于“这是猫”“这是车”这类实体标签。模型在面对空间约束时大部分时候是在猜测而不是在推理。所以“鹈鹕骑自行车”这道题本质上就是在逼模型回答三个问题你知不知道物体间的相对位置关系你能不能把这个关系编码成画面里的像素级布局你能不能在一个多物体、多约束的复杂场景里同时满足所有约束这三个问题环环相扣每一个都在考察空间智能的不同侧面。这也让我决定系统性做一轮评测而不是只停留在看笑话的阶段。2. 实测不同阵营模型在同一道题下的表现差异2.1 测试样本设计与评分标准为了避免偶发性我把测试设计成了可复现的样本集。一共 5 组提示词每组在空间约束维度上递进编号提示词空间约束层级T1一只鹈鹕骑自行车基础无明确方位说明T2一只鹈鹕坐在自行车车座上翅膀扶着车把接触关系、附属动作T3一只鹈鹕面朝画面左侧骑自行车观察视点主体朝向T4一只鹈鹕坐在自行车后座面朝车尾翅膀扶住后架相对方位姿态朝向附属接触T5一辆自行车从画面右侧驶来鹈鹕蹲在车头车筐里喙向前上方扬起运动方向容器关系部件朝向我找了 6 个有代表性的模型参与测试包括主流闭源多模态对话模型自带的绘图能力、几款独立图像生成模型还有一个开源模型。每道题让每个模型生成 4 张图共 120 张样本然后按照三个维度打分。评分标准分三层。第一层是“物体完整性”自行车有没有缺轮子鹈鹕有没有缺喙或翅膀第二层是“相对位置正确性”鹈鹕和自行车的接触点是否成立方向是否和提示词一致第三层是“物理合理性”画面里有没有明显反重力、穿模、比例失调的问题。每一层按 0 到 5 分给三个维度独立打分最后看综合表现。这个设计最大的好处是它能区分出模型到底是在“画不对物体”还是在“放不对位置”。我见过很多评测文章把物体形态错误和空间关系错误混在一起说最后只给一个“流畅度”打分完全没意义。三种错误对策完全不同形态错误说明视觉编码有问题位置错误说明空间推理有问题物理错误说明常识校验机制缺失。不分开统计根本定位不到模型短板。2.2 典型失败模式五个最常见错误120 张样本刷完之后我对五个反复出现的错误模式做了归类。这部分内容是我觉得最有参考价值的因为很多错误不是某个模型的个案而是跨模型存在的共性问题。第一个失败模式是“接触点漂移”。鹈鹕的脚和脚踏板之间、翅膀和车把之间在画面上往往有一个悬空的间隙或者反过来直接穿模插进金属件里。这说明模型在生成时把每个物体当作独立的三维体去渲染了但没有在渲染外壳层面做碰撞约束。扩散模型的生成过程是一步步去噪的早期阶段确定整体构图后期阶段补细节但没有任何一步会去检查“这个像素属于鹈鹕那个像素属于自行车它们之间有没有重叠”。接触关系根本不是扩散模型优化的显式目标。第二个失败模式是“朝向混淆”。提示词里写了“面朝左”很多模型的理解是把整张图里的所有物体镜像翻转画出来的效果是鹈鹕还是朝右。这个问题在我测试的多个模型里都存在尤其在 3D 方向才是 3D 表面。观察视点和主体朝向是两个不同的空间参照系但模型经常把它们当成一个。前者是相机和场景的相对位置后者是物体自身坐标系的方向。训练数据里这种双重参照系的信息非常稀疏模型学不明白也正常但用户实际使用时这个错误非常影响可控性。第三个失败模式是“部件级错位”。鹈鹕的喙和头画得很精细但喙的位置长到了额头上自行车脚踏板画得很精细但踏板和链条的位置对不上。这是多部件分层建模失败的表现——生成框架在早期生成了主体轮廓后期生成细节时可能会在局部重采样过程中悄悄挪动生成偏差。这一现象在不同步数设置下表现差异很大高步数生成时细节越多错位反而越明显因为早期构图约束的印记被逐步擦去了。第四个失败模式我称之为“场景扁平化”。提示词里要求“从侧面看”模型却交出正面视角。这种情况在开源模型上特别明显。开源模型在训练时使用的图像分辨率普遍偏小模型更擅长在 512 或 1024 分辨率下画正面姿态。侧面视角需要处理更复杂的透视缩短效应模型缺乏足够的有效只能采用高频出现的数据作为近似。第五个失败模式是“空间关系系统性退化”。T1 到 T5 的难度递进中大多数模型的得分曲线呈断崖式下降。T1 基础题能拿 4 分以上到了 T4、T5 直接降到 2 分以下。这说明模型处理单一空间约束时还有余力一旦多个空间约束叠加它就进入“空间过载”状态开始随机分布错误从质量只从质量上判断没法预测会倒向哪个方向。测试还发现一个有意思的现象在 T5 这类高难度题目里部分模型会把提示词中一些非空间约束一并忽略掉比如把“喙向前上方扬起”直接画成水平向前。这种整体降级的策略像是模型在高维约束空间里的一种“逃避反应”。3. 空间错误背后的共性根因3.1 单图内多物体的相对关系建模能力不足如果把上面这些失败模式收敛到根因层面有一个词反复出现相对关系建模。现在的多模态大模型在编码视觉信息时主流做法是把图像切成若干固定大小的 patch每个 patch 变成一个向量序列。这种做法的好处是能统一处理不同分辨率的图像但代价也很明显——patch 化之后像素间的连续空间结构信息被打散了模型需要从 patch 序列里重新学习空间排列关系。对于简单的空间任务比如识别“猫在沙发上”patch 序列里其实已经隐含了这种上下关系猫的 patch 在空间位置上出现在沙发 patch 的上方。模型可以通过位置编码推断出上下关系。但到了“鹈鹕骑自行车”这种复杂交互场景问题就升级了它需要同时追踪多个物体 patch 间的超出关系、左右关系、前后关系、姿态朝向、遮挡关系。这相当于让模型在一串被打散的序列里做一次多约束的空间图推理。当前的模型结构并没有为这种推理设计显式的空间图计算模块它只能依赖注意力机制去隐式地捕捉这些关系效果自然时好时坏。实际操作中通过控制推理过程其实可以部分缓解这个问题。比如生成阶段引入图编辑扩散模型先用一段文本提示生成一棵场景布局树再转换为渲染框架或者在文本编码环节加入结构化场景描述让模型先生成对象关系图再生成像素。实测下来这种方式能把 T4、T5 这类任务的表现提高不少因为它把隐式的空间推理部分外置成了显式的布局生成。但这是工程上的缝合并不能改变模型本源上空间建模能力薄弱的事实。3.2 长文本上下文掩盖了具身经验的缺失另一个根因往往被忽视模型对空间关系的理解本质上不是来自对三维世界的感知而是来自训练数据里的文本描述。一只鸟“骑”自行车人骑自行车的训练语料很多但鸟骑自行车的训练语料几乎没有。模型能做到的最多水平是将“骑”这个动词隐含的乘坐式姿态映射迁移到鸟身上。但鸟没有手没有人类的腿脚结构这个迁移需要模型理解鸟类的身体结构并且知道鸟与车座、车把、脚踏板之间如何接合。这种“具身经验”模型根本没有。所谓的实体经验指的是身体结构和动作执行之间的因果理解。人类骑过自行车知道脚要放在踏板上才有支撑手要握住车把才能稳定方向重心靠后身体略前倾。这些经验来自我们对自身身体的感知。大模型没有身体它只能从图像中模仿。而互联网图像里又没有“鸟骑车”的样本它的模仿无处生根。这引出一个很实际的现象很多模型在训练时被喂入了海量长文本上下文参数规模不断扩大论文里的 benchmark 分数一路飙升。但只要把这些模型放到具身智能或需要物理常识落地的任务里——比如让机器人在模拟环境里搬箱子、让自动驾驶模型判断路上行人的移动轨迹——它们马上露馅。长上下文只让模型记住了更多语言模式没有帮它建立起三维物理世界的因果模型。这也是为什么 deepseek 这类开源模型在学术评测里文科能力得分很高但空间推理类任务普遍不如传统视觉模型的原因之一数据分布决定了它学不到多少空间关系的物理约束。我在测试中还发现一个有趣的现象如果把提示词换成“请把鹈鹕放在自行车的右边和自行车在同一水平地面上”模型的成功率会高很多因为“右边”这个文字标签在训练数据里远比“骑在车座上”更常见。这说明模型在空间任务里的表现很大程度不取决于它的实时推理能力而取决于它在训练数据里见过多少类似的空间描述。这本身就是一个值得警惕的信号当我们在讨论 AI 的空间智能时我们可能只是在讨论训练数据池的覆盖半径。4. 空间智能不足对 AI 应用的连环影响4.1 自动驾驶与机器人操作损失不只是“画错了”绘图的场景里空间智能不足造成的后果最多是让人笑一笑。但放到自动驾驶和机器人操作领域后果就没那么轻松了。自动驾驶系统里多模态大模型正在被尝试用于感知决策融合模块。车辆需要同时处理自车位置、前车轨迹、行人意图、车道线走向这四类空间信息在一个统一的坐标系下做运动规划。如果模型在空间推理上的短板没有补齐它可能在识别“前车正在向左变道”时把向左的置信度算错导致自车减速策略过于激进或过于迟钝。这已经不是画一只鸟的位置穿模而是真实世界里的安全决策错误。机器人操作是另一个重灾区。机械臂抓取物体本质上是把一个 6 自由度动作参数解算过程建立在对物体位姿的精确估计之上。我测试过一些开源大模型在机械臂任务中的表现发现模型可以准确识别出物体名称比如“螺丝刀”但到了给出抓取点位姿态时模型输出的坐标往往偏离物体实际位置好几个厘米。对于带法兰的对接任务这种精度完全不够。模型缺失的不是“这个物体是什么”的知识而是“这个物体在三维空间里相对相机坐标系的具体位姿是多少”的能力。有不少做具身智能的团队已经意识到这个问题开始走“大模型空间感知专用模型”双栈路线语言模型负责发散语义理解空间感知模型负责输出精确位姿。这本质上是用两套系统互补承认单靠大模型本身做不了空间智能。这种方案在实际项目里效果不错但计算开销翻倍推理链路变长而且两个模型之间的信息转译有损。真正要解决还得回到模型训练阶段去补空间推理课。4.2 图像生成、UI 布局和产品设计中的实际表现空间智能不足在生成类 AI 应用里的影响比大多数人想象的要隐蔽但穿透力极强。我做产品设计的朋友最近在用一个多模态模型做电商海报的首图生成输入是“一个白色马克杯放桌子偏左位置旁边有一本书书的封面朝外”。模型生成的图马克杯确实在左边书也确实在右边但书的高度和马克杯完全没有比例关系书看起来有两本马克杯那么高。这种图拿去用客户一眼就能看出不自然但具体哪里不自然很多人说不上来只能凭感觉说“这图怪怪的”。UI 和网页设计领域也有同样的痛点。让大模型生成一个登录页面输入“顶部是 logo中间是手机号输入框底部是登录按钮”。界面布局看起来似乎合理但仔细看输入框宽度跟按钮完全不一致居中对齐偏差了几个像素页面整体视觉重心偏到左侧。这是因为模型在生成图像时没有对元素间的相对位置做严格的约束对齐。传统前端工程里布局是通过 flexbox 或 grid 这类精确计算的体系来保证的而生成式 AI 没有这些几何约束的概念它只有视觉上“看起来接近”的语义。还有一个影响广泛但关注度不高的领域是视频生成和模版化设计。时长更长、帧数更多的视频里空间一致性要求更高物体要在连续帧之间保持稳定位姿视角变化时遮挡关系要连续演变。当前多模态模型的视频生成能力受制于单帧空间推理的底层缺陷多物体场景里很容易出现物体“跳变”。这背后依然是那个老问题模型不理解场景里的三维几何关系只靠图像分布去“编造”。5. 让模型学会“骑车”可落地的微调与评估改进思路5.1 微调数据集设计语义对与空间注解如果有人想在自己团队的项目里提升模型的空间推理能力第一步不是换更大的模型而是重做微调数据集。空间推理能力的提升靠的是数据里空间信息的密度和结构不是模型参数量的粗暴增加。我分享一个亲测有效的数据组织方法。把训练数据从“一张图配一句描述”升级为“一张图配多层级注解”。注解至少分三层第一层是实体层标注“图里有鹈鹕、自行车、地面”第二层是关系层标注“鹈鹕在自行车上方自行车在地面之上鹈鹕翅膀接触车把”第三层是属性层标注“鹈鹕喙朝右上方自行车轮轴在车架下方中央”。这三层信息在微调时作为组合输入喂给模型强迫模型在生成和自回归任务里同时学习到实体识别、关系判断、属性精度三个维度的对齐。具体操作上可以用程序化管线生成大量合成数据。在三维渲染软件里摆放大量随机场景输出渲染图的同时把场景图直接导成文本注解。同等规模的合成数据成本远低于人工标注而且注解的格式统一、空间精度可控。实测下来用一个包含 50 万张合成空间关系图的微调集就能把模型在“相对位置正确性”这一项上的得分提升 20 到 30 个百分点。当然合成数据和真实照片之间存在分布差微调完之后需要在真实数据上做一轮适配避免模型对渲染风格的过度拟合。5.2 评估方法改良建立视觉空间基准评测这个话题稍微延伸一下。现在大模型的标准榜单基本被文本理解类任务主导即使有图文混合任务也偏向于常识问答和实体识别。想要系统性地测空间智能需要自己搭评测集而且评测集的设计要有区分度不能所有题目都是“猫在沙发上”这种模型闭着眼都能答对的。我的做法是参考了我之前做图像质量评测时的思路设计一个能力阶梯评测。阶梯的第一级测“物体级空间感知”比如判断图片里左右两物体哪个更靠左第二级测“关系级空间推理”比如给定描述判断图中空间关系是否与描述一致第三级测“多约束空间组合”就是本文开头那组 T1 到 T5 的题目设计。每级题目数量和难度递增逐层淘汰。这个结构的好处是能准确知道模型到底卡在空间智能的哪一层而不是笼统地得到一个模糊的分数。评估时还有一个关键陷阱不能只看生成图的最终效果还要做反向一致性验证。做法是把模型生成的图像再丢给同一个模型的视觉理解模块让它描述“鹈鹕在自行车的哪个位置”“翅膀是否接触车把”。如果视觉理解模块给出的描述和原提示词不一致说明模型在生成时根本没有把空间约束编码进图像只是碰巧画了一个看起来差不多的构图。这种“生成-理解回环”测试比单纯人工看图打分客观得多也便于自动化批量跑。5.3 提示词工程可以救急但救不了根本最后说点实操层面的经验。如果你的项目近期就得交付没时间做微调那么通过优化提示词能在一定程度上缓解空间错误。我自己在用生成类模型时有三条行之有效的提示词技巧。第一拆解空间指令。不要把“一只鹈鹕坐在自行车后座面朝车尾翅膀扶住后架”一个长句丢进去而是分段描述“先画一辆自行车车尾朝向画面右侧。在自行车后座上画一只鹈鹕腹面贴坐垫面朝向车尾。鹈鹕双翼左右展开翼尖搭在后架钢管上。”模型对短句单独把握空间关系的准确率明显高于长句叠加。第二加显式的空间参照物。让模型画“鹈鹕在自行车上”不如画“鹈鹕在自行车上方两者之间有一个接触点就是它的脚爪与脚踏板重合的位置”。空间参照物越显式模型越不容易跑偏。第三分步生成再合成。先用图像编辑模型把鹈鹕和自行车分别生成在两幅图里再通过带遮罩的局部重绘功能把它们合到一幅图中。这种方式能利用模型在单一物体构图上的强项规避多物体空间交互的弱项。缺点是不能处理需要互相遮挡很严重的场景但对多数静态构图足够用。不过我得强调这些都是治标的手段。空间智能的根基在训练数据、在模型结构、在空间损失的显式引入。提示词工程做的再好也只是把模型已有的能力调用得更充分无法补出它根本没有的能力。根本上还是要推动模型在生产阶段就学会“骑着自行车”这件事——在语义理解层之外真正建立空间几何计算的基础设施。
阅读完成 · 觉得有帮助?