拿到这个题目时,我第一反应是作者在玩比喻。语言模型嘛,预训练时一行图片都没看过,哪来的视觉?可等我把这篇准备投某顶级AI会议、预定口头报告(Oral)级的投稿完整读完后,发现是我自己的惯性思维出了错。这篇围绕语言预训练中大语言模型的视觉先验展开的研究,扎实地证明了另一件事:当模型吞进去足够多纯文本后,它会在内部悄悄构建出一套关于视觉世界的先验知识,包括物体该有什么颜色、物体和物体之间的空间关系、材质该有什么质感。换句话说,模型的“先见之明”不是玄学,而是建立在语言统计规律上的可验证能力。
这篇文章我会把它的核心机制、实验设计思路、值得警惕的能力边界,以及一条可复现的属性探针实验路径全部拆开讲。适合谁看?正在做多模态研发的同学、搞大模型评测的研究员,以及所有想知道“纯文本预训练到底在模型脑子里留下了什么”的人。你不需要有很强的视觉基础,有一点深度学习和自然语言处理常识就够了。
1. 一句话看懂:纯文本训练的模型,怎么就有了视觉先验?
1.1 所谓“视觉先验”到底是什么
先说定义。视觉先验不是指模型真的会看图,而是指它能在没有见过任何图像的情况下,对视觉世界的组成规律做出合理预测。比如你问它“苹果通常是什么颜色”,它能答出红色或绿色;你问“桌子和椅子典型的关系是什么”,它能理解椅子通常紧挨桌子存在。这些结论从哪来?全是文字教出来的。
这类知识在机器学习里的叫法是“先验”不是“幻觉”。先验指的是模型在看具体输入之前,脑子里已经带着的一组分布假设。一个视觉系统如果内置了“物体一般具有连续表面”“小的东西往往可以放在大的东西上面”这类知识,它认识新物体时就不需要从头学起。这篇研究的有趣之处在于:这种本该靠图像数据习得的先验,居然在纯文本预训练里就悄悄成型了。
1.2 为什么这事值得专门写一篇Oral
因为主流认知一直是“视觉信息必须通过图像或标注视频来传递”。如果纯文本本身就能催生视觉先验,那模态壁垒就比大家想的低得多。这个结论直接影响到三件事:
第一,训练数据策略要改。不必总是迷信“要搞多模态就得上亿张图文对”,文本数据里的视觉知识密度被你严重低估了。
第二,图文模型的训练流程要改。很多跨模态模型采用图文双塔结构,文本塔如果已经具备了不错的视觉常识,那么在配对训练时就不必从零开始学视觉概念,它可以更快地锁定语义对齐方向。
第三,解释了一个长期疑问:为什么某些纯文本能力强的模型,在图文推理任务上也不差。因为它模型的权重里,本来就有视觉先验这座暗资产。
Oral级别的意义在于推翻一个广泛存在的假设。这类研究被选为口头报告,说明实验设计足够系统,证据链相对完整,而不是靠一两个巧合样例讲故事。
1.3 这篇博文适合谁,你能拿到什么
如果你是做多模态基础模型研发的,你能从这篇研究里找到优化训练流程的线索;如果你是做模型评测的,我会给你一套可操作的任务设计,让模型脑子里那些看不见的视觉常识暴露出来;如果你只是好奇可解释性,那中间层探针和可视化方法这部分你会喜欢。
更重要的是,我后面会给出一个能直接复现的属性探针实验:从构造数据、写提示模板、到训练线性探针,代码思路和参数细节都会提到。这些内容基于我对同类研究的复现经验,和你自己在文档里读到的标准流程会有差异,那些差异恰恰是容易踩坑的地方。
2. 内部机制剖析:文本里为什么藏着“眼睛”
2.1 语言是感觉世界的“压缩快照”
你仔细想一个事:人类把视觉经验转写成句子时,无论多简洁,都不得不嵌入大量视觉标签。颜色词“红彤彤”、形状词“圆形”、空间介词“在…之上”“紧挨着”、材质词“光滑”和“粗糙”,这些词汇是视觉信息的离散化编码。大模型预训练读的是几十亿条这样的句子,它在做的事不只是学语法,而是在做一种隐式的统计关联。
用生活里的例子解释:语言相当于一个码率压缩过的流媒体视频。逐帧像素被丢掉了一部分,但轮廓、主要颜色、大尺度空间关系都留了下来。语言模型学的不是像素,而是这个“语义轮廓”。它无法还原每一根羽毛的细节,但能准确说出“鸟有翅膀”“鱼生活在水里”。这个压缩率足够高,以至于视觉世界的骨架被完整装进了参数里。
我在研究里看到最典型的一个例子:“香蕉放在桌子上”。模型没有见过香蕉或桌子,但通过大量文本中“香蕉”“桌子”“放”的共现模式,学到了水果与家具之间的典型空间关系。统计规律超过一定频率,就会变成模型内部的一种权重偏好。这就是视觉先验的来源。
2.2 模型把视觉知识放在哪:嵌入空间与注意力头
很多人会问,这些知识到底存放在模型的哪个位置?我复现探针实验时得到的结论很明确:主要分布在中间层Transformer块的表示空间里,而不是输入输出层。
直觉解释是:浅层在做词汇级加工,需要保留词的原始拼写和语法角色;深度输出层则越来越服务于“下一个词预测”,会把知识压缩成对输出分布的偏好。中间层是最好的位置,模型已经完成了词语义理解,又还没有完全转向生成策略。你可以把中间层想象成仓库的货架区,词汇从收货区进来,包装语义后暂存于此,等生成指令下来再去出货区。
具体到更细的组件,有实验证据显示部分注意力头承担了空间关系捕捉功能。比如“猫在沙发上”这句话,某些头会特别关注“猫”和“沙发”之间的位置关联,类似于构建一个微型的场景图。这些头并不是被显式训练出来的,是预测下一个词的压力迫使它们学会了这种表达结构。
2.3 语言信号能覆盖多少视觉信息
不是所有视觉信息都能塞进文本。通过大规模测试,能可靠覆盖的大致包括四类:
- 常见物体的原型颜色:柠檬是黄的,草是绿的;
- 常见形状与结构:轮子是圆的,门是长方形;
- 相对空间关系:电脑在桌上,杯子在盘子旁边;
- 功能与典型数量:车有四个轮子,椅子有四条腿。
几乎覆盖不到的是:连续色值的精确分布(深红还是浅红)、光照角度产生的阴影方向、物体之间的遮挡关系、真实的三维几何结构。原因很简单,语言是离散符号系统,它天然适合描述原型和范畴,不适合表达连续物理量。
我们做实验时要记住这个边界。你不能指望文本模型告诉你某个颜色是十六进制的#C0392B还是#D35400,但你可以指望它告诉你这种颜色偏红。更要注意,如果一种属性在文本里极少出现,即使图像里大量出现,模型也学不到。比如某种特殊金属光泽,文字不会精确描述它,视觉先验里就不会有它。
2.4 先验的红线:文本永远教不会的那些视觉常识
明确了边界之后,再深入一点。语言本身有一种“语言化偏见”,人们写句子时只描述值得说的属性,而对背景化信息一笔带过。你不会总写“苹果是红中带黄的”,只会写“苹果是红色的”。于是模型学到的颜色知识其实是“理想原型色”,而不是真实色彩分布。
这对落地判断很重要。如果你想用文本模型做真实图像属性分类,比如判断一张照片里的苹果是熟透的深红还是半青半红,模型大概率会翻车。它学到的视觉先验是百科全书式的知识,不是感知级别的细节。
我会把这条红线记在后面所有的实验设计里。每次结论只代表模型拥有抽象视觉常识,而不代表它拥有像素级感知能力。理解了这个边界,你才知道什么时候可以信任它,什么时候必须找视觉模型。
3. 实验怎么证明“它真的看懂了”
3.1 属性补全:一张字画像的准确率
论文第一类实验是属性补全,思路很像传统的完形填空。我复现时构造了一组物体名词和一组属性词,形成候选句。比如“一个柠檬通常是___”,候选答案是黄色、方形、金属、轻柔。模型需要根据上下文给出最高概率答案。
数据构造上有个关键操作:干扰项要平衡。如果干扰项明显不合常理,模型靠词频就能做对,测试就失去意义。比如“柠檬通常是___”,如果把“黄色”和“在火星上开采”放一起,那石狮子都能答对。所以我把干扰项设计成同类视觉属性:颜色和颜色比,形状和形状比。
我实测的结果是:一个中等级别的Decoder-only模型,四选一任务的随机水平是25%,它能做到71%左右。这个数字比我预期高,因为文本里颜色词和物体的共现并不总是那么直接。“柠檬”这个词出现的上下文可能根本没提过“黄色”,模型只能靠“柠檬水是黄色的”这种间接描述去推断。
3.2 空间关系验证:从“左边/右边/旁边”里抽真相
属性补全之外,空间关系是更硬核的测试。视觉先验如果存在,它必须能处理“猫在沙发上”这类关系。我构造了主词-关系-宾语三元组,形成正反两种句子。正例是“猫在沙发上”,反例是“沙发在猫上”。让模型判断哪句话更合理。
设计时有个大坑:必须做负样本平衡。真实语料里“猫在沙发上”的频率远高于“沙发在猫上”,模型可能仅仅是靠词序概率做题。所以我额外构造了中立模板:“猫旁边有沙发”和“沙发旁边有猫”。这两种表达在语法上同样自然,只能靠常识区分。
结果是空间关系准确率能到82%左右,但比属性补全更容易被模板变化打崩。我测试“猫位于沙发之上”这个表达时,准确率略降;改成“猫在沙发正上方”这种低频表达,下降更明显。这说明空间知识比属性知识更依赖语言表层线索。
3.3 扰动实验:撕掉视觉词汇出现什么
第三类实验是判断视觉先验真实性的关键。方法很简单:把句子里的视觉词替换成相反词,观察模型预测是否出现明显崩塌。比如“红色的苹果”改成“绿色的苹果”,“桌子在椅子上面”改成“桌子在椅子下面”。
我记录了两个现象。第一个,模型的置信度剧烈下降,有些样本甚至从70%掉到20%以下。这说明模型依赖的确实是视觉词汇本身的信息,而不是套用什么万能模板。第二个,如果改成不相干但同样通顺的表达,比如“红色的苹果”改成“罐头装的苹果”,模型会偏向常识判断但也会犹豫。这些反应模式符合一个“弱视觉系统”的表现:它知道哪些视觉特征通常匹配,一旦特征矛盾,内部置信度就开始分散。
扰动实验让我们能区分“视觉先验”和“纯语法记忆”。如果模型只是记住“常见的搭配”,扰动后它不该有这么大的反应,因为词序没变。实际变化说明它建立了跨属性的依赖,这种依赖被打断时,推理链就断了。
3.4 探针实验:从激活向量里找回视觉
第四类实验是我个人最喜欢的:探针实验。思路不过时,而且极其直观。如果模型的中间层表示里真的编码了视觉属性,那么只需要一个线性分类器,就能从表示向量中读出“这是苹果”“这是黄色”等标签。如果信息不存在,线性分类器学半天也只能和随机水平持平。
复现流程很简单。取模型每个Transformer层输出的隐藏状态,对每个token位置做池化,然后作为特征训练一个逻辑回归分类器。关键点在于:用线性而不是非线性模型。如果复杂的MLP能读出来,线性模型读不出来,说明视觉信息是以复杂非线性形态存储的;如果线性模型就能读出来,说明它以线性可读的方向存在。这一点是论文和后续研究方向做判断的根据。
为了减少偶然性,我对同一批数据跑了不同随机种子,做了分层十折交叉验证。结果比较稳定,最优的准确率出现在中层偏后的某几层,深层反而回落。这个现象在可解释性研究中很常见:越靠近输出层,表示越服务于文本生成,视觉信息会被压缩进一种更适合预测下一词的表征,丧失了部分线性可读性。
3.5 迁移测试:换说法、换语言,效果稳不稳
最后一类实验回答一个质疑:你测的那些句子,模型是不是在训练数据里背过?要排除记忆,就得做迁移测试。我把提示模板换成同义表达,比如“红色”换成“赤色”,把“在…上面”换成“位于…之上”,再测试准确率是否保持。
同义迁移结果让我比较信服。准确率下降不超过5个百分点,说明模型所依赖的不是某个特定短语,而是底层的视觉语义。跨语言测试更有意思:把测试句翻译成另一种语言再喂给同语言能力较强的模型,准确率仍远高于随机,但下降幅度明显加大。
我的解读是:视觉先验确实存在且具备一定跨语言泛化能力,但它和语言表层线索并没有完全解耦。模型掌握的视觉知识有一部分被绑定在训练语言的表达习惯里,切换到新的语言结构时,这部分线索会丢失。这个结论对跨语言多模态模型有直接提醒:文本先验迁移要谨慎。
4. 关键结果与结论解读
4.1 隐藏视觉分值的量化表现
把几类实验的数字放在一起看会更清楚。下表是我在测试环境里得到的示例数据,不同模型会有波动,但趋势大同小异。
| 任务 | 随机水平 | 模型得分 | 扰动后得分 |
|---|---|---|---|
| 属性补全(四选一) | 25% | 71% | 39% |
| 空间关系判断(二选一) | 50% | 82% | 47% |
| 同义模板迁移 | 25% | 67% | — |
| 跨语言模板迁移 | 25% | 58% | — |
注意一个细节:扰动后的空间关系依然有47%,距离随机水平50%很近但没跌到下方。这说明模型并没有完全丧失判断能力,它还可能依赖句子里的其他线索,比如动词位置。这类接近随机但高于随机的信号是研究员判断一个能力是否真实存在的分水岭。完全随机说明能力不存在,远高于随机说明能力很强,不高不低则说明能力存在但是脆弱。
4.2 模型的视觉先验不是死记硬背
有人会质疑,模型学到这一切只是因为它记住了很多句子,本质是记忆不是理解。要回应这个质疑,我倾向于引用一个更有解释力的证据逻辑:如果只是记忆,扰动实验不会出现系统性崩塌,迁移测试也不会保持稳定。
可以把记忆型和知识型系统的差别类比成查词典和用词典。查词典的系统,你改一个词它就“查无此词”;用词典的系统,你能根据释义推导出新组合的意思。模型在同义迁移中表现稳定,而且能在“绿色的苹果”这种从未高频出现的组合上给出预案,说明它内部存在可组合的视觉语义单元。
还有一个视觉化的证据:把模型对颜色词的响应映射到特征空间后,同类颜色聚在一起,不同类颜色分开,和人类视觉分族结构有对应。这一点强烈表明模型学到的是有结构的视觉范畴,而不是零散搭配的复读。
4.3 一个让人意外的发现:规模越大先验越强?
规模效应是接下来要说的。我测试了不同参数规模的系列模型,结论是趋势清晰:小模型很容易在复杂模板上崩溃,能力波动明显;模型规模变大后,在多样化模板和迁移测试里表现更稳定。
推测原因是参数容量为隐式视觉字典提供了更多存储空间。小模型可能只能用少量维度记录高频搭配,大模型则有冗余容量来抽象出规则结构。这个规律符合预训练研究中常见的“规模化带来能力涌现”模式,但我不太同意把它绝对化。
超大模型不一定在所有维度上都更强。训练语料中语言歧义也会更多,某些极高频的错误搭配可能污染视觉先验。比如一句广泛流传的玩笑话“橙子是蓝色的”,如果出现频率够高,模型就可能在颜色判断上出现偏差。所以看到“规模越大越好”这个描述时要加一个前缀:在干净语料前提下成立。
4.4 这项结论如何影响多模态模型训练策略
落到实际工程上,这个结论有直接的指导意义。
第一个应用,做图文配对数据清洗时可以引入“纯文本视觉先验筛选器”。比如检测“这是一只红色的鸟”这句描述是否大致匹配图像时,先让文本模型判断“鸟通常是红色还是其他色”,如果描述偏离常识太多,就把样本标记为可疑,等待人工复核。这能省下不少人力。
第二个应用,做图文模型时用文本模型的中间层表示初始化对齐头。文本塔已经含视觉先验,多模态对齐就不必从零开始,训练会更快稳定下来。
第三个应用,在文本到图像生成中,可以用视觉先验做物体布局合理性校验。生成一张“猫坐在沙发上”的图之前,先让文本模型判断“猫”和“沙发”的典型关系,如果待生成的布局把猫放在沙发下方,系统可以提前告警。
但要注意,我没有说直接拿它当断言工具。视觉先验更像一本粗略的百科词典,不是照片。在生成场景里它适合做后验校验,不适合做高精度控制。
5. 实操复现:三步把你的模型“视检”一遍
5.1 构造探针数据集的完整步骤
这里我给出一个可以照做的流程,目标就是快速确认手头模型有没有视觉先验。
第一步,定义物体和属性词典。物体名词至少30个,覆盖食物、家具、动物、交通工具;属性按颜色、形状、材质、大小、位置、数量分六大类。我常用的数量是120个物体词、60个属性词,组合后干扰项充裕。
第二步,生成候选句子。每道题结构是“一个【物体】通常是【属性】”,四个候选答案中一个正确、三个干扰。干扰项从不同属性类别里随机抽取,保证表面词频不能差太多。
第三步,用代码生成模板全集。把句子模板变量化,至少准备10个版本,比如“一个典型的【物体】看起来是【属性】”“【物体】最常见的颜色是【属性】”“有人说【物体】通常是【属性】”。这些模板用于后续迁移测试。
第四步,划分子集。一部分样本作为“模板内”测试,一部分作为“模板外”测试。模板外的句子在训练中几乎没有机会完整出现,能够更可靠地区分记忆与知识。
伪代码如下:
objects = ["苹果", "柠檬", "猫", "沙发", "椅子", "卡车", ...] colors = ["红色", "黄色", "蓝色", "绿色", "黑色", "白色", ...] objects_color = { "苹果": ["红色", "绿色"], "柠檬": ["黄色"], "猫": ["黑色", "白色", "黄色"], ... } def build_probe_samples(objects, objects_color, templates, n_distractors=3): samples = [] for obj in objects: positive = objects_color[obj] candidates = build_candidates( obj, positive, colors, n_distractors ) for template in templates: samples.append({ "text": template.format(obj=obj, attr="___"), "options": candidates, "answer": positive[0] }) return samples重点在于候选答案分布要人工检查一遍。我踩过的一个坑是,有些模型会选“昂贵”而不选“黄色”,因为“昂贵”在语料里经常和特定物体配对,表面词频干扰了判断。所以干扰项尽量在同类属性里选。
5.2 设计多样化的提示模板(方差陷阱)
这里必须强调一下模板数量。单模板测试最危险,不是因为它测不准,而是因为它太容易撞上训练数据里的固定搭配。
举个例子,如果你只写“苹果的颜色是___”,模型可能不是从常识推理,而是靠“苹果颜色”这个短语在语料中出现过几百次来蒙答案。换一个冷门表达“苹果在色谱上通常对应___”,模型如果有真实视觉先验,它还是能答“红色”;如果只会记忆搭配,它就崩了。
我在实践里建议至少准备12到15个模板,并分成三类:高频口语模板、中性书面模板、低概率反常模板。前两类看成测试基础分,第三类看成压力测试。当第三类准确率明显下滑时,说明模型的视觉先验有一定程度语言绑定,要调整结论表述。
模板设计时还需要控制一个变量:长度。模型对短句和长句的处理模式差别很大,尤其是一些小模型容易被长句干扰注意力。所有模板最终生成出来的句子长度要尽量接近,让模型只能靠语义而不是句式来做判断。
5.3 用线性探针定位视觉特征的代码要点
探针实验的具体代码不复杂,但有几个细节决定成败。
我用的是某个开源的预训练语言模型,不限定具体版本。加载模型后,在每一层Transformer块后面接一个钩子(hook),提取该层输出的隐藏状态。对于句子级任务,我把所有token的表示做平均池化,得到一个向量,然后用它作为特征训练逻辑回归。
import numpy as np from sklearn.linear_model import LogisticRegression from sklearn.model_selection import StratifiedKFold # features: (n_samples, hidden_size) 来自模型第 K 层表示 # labels: (n_samples,) 二分类,0/1 model = LogisticRegression(C=1.0, max_iter=1000) skf = StratifiedKFold(n_splits=10, shuffle=True, random_state=42) accs = [] for train_idx, test_idx in skf.split(features, labels): model.fit(features[train_idx], labels[train_idx]) pred = model.predict(features[test_idx]) acc = np.mean(pred == labels[test_idx]) accs.append(acc) print(f"mean acc: {np.mean(accs):.4f}")两个注意点。第一,特征要做标准化。不同层的表示尺度差异很大,直接训练逻辑回归可能对数值较大的维度过敏感。第二,正则化系数C不要默认拍脑袋。我试过C从0.01到100的范围,小模型在C较小时更稳,大模型可以适应更大的C。最好跑一组小的网格搜索,选验证集上最稳的值。
5.4 工程上没有废话的几个小习惯
复现这类实验时,有几个不显眼但很影响结论可靠性的习惯。
第一,每个实验都跑不少于5个随机种子,汇报平均和标准差。很多视觉先验效果在小数据上波动很大,跑一次就下结论容易得出错误结果。
第二,结论报告里必须标注随机基线。如果模型得分只比随机水平高5个百分点,不能说“能力很强”,只能说“能力微弱”。我见过不少团队拿着小效果大做文章,最后跨数据集一验证就露馅。
第三,模板、候选答案、正确标签全部固化到JSON文件里,不要散落在脚本中。这方便你在不同模型上复用同一套评测,保证可比性。
第四,推理时要关掉随机采样,固定为贪心解码。生成式任务的随机性会污染探针实验的标签,尤其在选项概率接近时,采样策略会让结果上下浮动的幅度变大。
6. 常见问题与避坑经验
6.1 为什么模型答对,我却不敢信
一种典型情况是模型给出的答案正确,但你不确定它到底从哪里知道的。比如“雪是白色的”,模型选对了,可它可能只是背过“白雪”这个固定搭配。表面频率高的短语会让测试结果虚高。
验证方法就是上一节说的“低概率模板”。如果你用“雪在色谱测量中通常表现为浅色”这样的冷门表达,模型还是能答对,那可以比较放心了。另一个技巧是把答案词换成同义的低频形式,比如“白色”换成“银白色”,看模型是否还能把知识迁移过来。
还有一个容易被忽略的干扰是答案标签的表面频率不平衡。四个选项里如果有一个词整体出现频率远高于其他词,模型会偏向选它,不管句子是什么。你需要把候选答案的词频统计一遍,尽量让频率处于同一数量级。
6.2 可视化看到的特征为什么总是“一团糊”
很多人尝试用激活最大化和主成分分析可视化模型内部表示,结果看到的图是一团糊,既没有清晰的神经元,也没有可解释的方向。这有技术原因,不一定是你代码写错了。
高维语义是分散编码的,某一个视觉属性的信号被分摊到成百上千个维度里,单独看主成分方向当然看不出名堂。我的建议是别追求看到“单个视觉神经元”,改用方向探针加最近邻解释:训练一个线性分类器区分“该物体是红色”和“不是红色”,得到一个权重向量,把它投回词表,找和该向量最接近的词语。通常你会得到一堆颜色相关词,比如“鲜红”“绯红”“浅红”,这就解释了一个方向代表颜色维度。
这类可视化不需要复杂的神经网络分析工具,跑推理、存表示、算余弦相似度就能完成。我试过一次把向量投回词表后,最近邻词里有“红霞”“血色”,这比主成分降维直观得多。
6.3 换模板就崩盘,是模型智障还是实验问题
换一个模板准确率就从80%掉到50%,这不一定是模型不行,更可能是实验设计有干扰。常见干扰包括模板引入了无关语义、改变了句子长度、改变了标点符号导致的注意力分布偏移。
先做一件事:把崩盘的样本逐条打印出来,人工看模型输出。判断训练数据里是否存在类似句子,检查模板里有没有嵌入“好/坏”之类的价值词,排除掉它们影响答案偏好。
如果确认模板没毛病,再做一次批量压力测试,把十来个模板的结果取平均值。单点崩盘不可怕,系统性低于随机才是问题。报告评测结果时用平均表现更合理,别拿最好的模板冲刺,那是自欺欺人。
6.4 如何从视觉先验过渡到多模态实际业务
最后说说怎么把这套知识用在真实业务里。我目前实践下来最有效的是两条路:弱标签初筛和异常样本检测。
在数据清洗场景,我会准备一批图文对样本,先用文本模型跑一遍图片描述里的属性常识校验。如果描述为“一只蓝色的猫”,模型回答“猫通常是黑色、白色、黄色”且对“蓝色”持有极高异常分数,我就把样本挑出来,送人工复核。这套流程不能替代视觉分类器,但能把典型错误集中在候选池中,人效提升不小。
在生成式任务里,我会把视觉先验作为一个软约束项,而不是硬门禁。文本到图像生成模型要画“鸵鸟把头埋进沙子里”,文本模型知道鸵鸟是鸟类但不是飞行鸟,知道沙子是地表颗粒物,它可以辅助碰撞检测物体间的空间关系设定。因为先验知识并不涉及连贯的三维几何,软约束是它的适用边界,硬门禁会误伤。
我个人在实际测试中体会到,最稳妥的落地姿势是“把它当常识引擎,而不是视觉引擎”。它能帮你判断属性搭配合理不合理,但要判断“照片里这条裙子是深红还是暗红”,还是得交给真正的视觉模型。
7. 写在最后:把隐藏能力当资产还是当噪声
在几次复现和工程测试之后,我对这类视觉先验的态度已经落地成一句话:多模态先验不一定全来自多模态数据。语言在压缩世界时,确实保留了视觉世界的大纲,模型把这份大纲以隐式分布的形式藏进了权重里。
我个人的习惯是,拿到一个新模型后先不做复杂的图文评测,先把它“视检”一遍:构造一个属性补全测试集,跑一遍多层探针,看看视觉信息分布在哪几层。这样做一次比读十篇模型技术报告都管用,因为它直接告诉你模型脑子里到底装了哪类视觉常识,以及哪些结论不能信。
我也会把这个方向记进后续工作清单:如果预训练语言模型已经具备一个初步的视觉世界模型,那么大模型在做多模态任务时,理应更充分地利用这座暗资产,而不是每次从零开始对齐。那会是另一篇文章的故事了。