☰
多模态语境下可接受性判断建模:从数据到模型实践
2026/10/21 17:04:37 网站建设 项目流程

1. 可接受性判断,为什么还要扯上图像

1.1 一个常被忽略的事实:语感从来不只是句法反应

如果你拿"The cat the dog chased was black"给一个没受过语言学训练的普通人看,他大概率会犹豫很久,最后给一个模棱两可的分数。但你要是把旁边配的图片从"狗追猫"换成"猫追狗",再让他评一次,这个分数很可能就变了。句子可接受性判断(sentence acceptability judgments)在传统语法研究里被当成语感测试的金标准,研究者拿它来判断一个句法结构是否合法。可真正做过多模态语境的实验之后,你会发现"接受"和"拒绝"之间根本不存在清晰的界线,视觉证据会在不知不觉间把你的判断往某个方向推。

我参与的这个项目,目标就是构建计算模型,预测人类在多模态语境下对句子的可接受性评分。所谓多模态语境,最典型的形式就是"句子+图片":一张图摆在那儿,一句描述放在旁边,人类对这句话的接受度会被图中呈现的事件关系、物体属性、场景合理性持续影响。这件事听起来像纯语言学里的细枝末节,但真做起来要同时处理心理语言学实验设计、图像语义表示、文本语法特征、回归模型调参、标注质量控制一大堆问题,是个非常典型的多学科交叉活。

1.2 视觉证据影响的是哪一层"接受"

你需要先想清楚一个问题:视觉语境到底改变了"语法上是否合法",还是改变了"语义上是否说得通"?

传统上,"Colorless green ideas sleep furiously"这种句子被当作语法合格但语义荒谬的经典例子,可接受性调查里它通常不会拿到满分。但反过来看,"The sandwich ate the dog"这种违反选择限制的句子,语法结构完全正常,人类依然会给出很强的负面判断。所以人类口中的"可接受"实际上是句法、语义、语用、世界知识共同作用的结果。图片一旦加进来,就相当于往这个混合评价里注入了额外的世界知识证据:图中是女孩在喂大象,那"The girl is feeding the elephant"就不仅语法合格,而且在当下语境里非常"顺耳";如果图中是大象在喂女孩,同一个句子照样语法合格,但你的语感会立刻报警。

把这两层拆开很重要,因为后续的数据设计和模型架构都是围绕这个判断展开的。我们最后把"可接受性"看成由三个成分组成:句法结构合格度、语义类型合理性、图文事件一致性。任何模型要想预测人的评分,至少要对这三类信号都有所感知。

1.3 做这个方向能解决什么实际问题

往应用上想,这个任务的价值比表面看起来大。多模态对话系统每天都要判断"当前图像背景下,这句回复是否合适";图像描述系统需要甄别是否产生了与图片冲突的幻觉式描述;语言学习软件想给学生反馈"这个句子语法可以,但在这个配图场景里用法很奇怪"。这些本质上都可以抽象成多模态语境下的可接受性判断。我给这个项目起内部代号叫"语境接受度评测",目标很朴素:做出一个能稳定复现人类评分倾向的模型,并搞清楚模型和人在判断上的系统性差异在哪里。

适合读这篇内容的朋友有两类:一类是在做心理语言学或计算语言学实验,想了解怎么把可接受性判断搬到多模态场景里来;另一类是做视觉语言模型、想在图文匹配之外增加更细粒度判断能力的工程师。下面尽量把数据、模型、训练、评估几条线都讲透,也会把踩过的坑逐个摊开。

2. 数据构建:和"合理与怪"反复较劲的过程

2.1 刺激设计的三条主轴

做这类项目最难的不是模型,而是数据。可接受性判断研究有一个长期积累的实验传统,刺激材料必须可控。我们设计句子时沿着三条主轴去做变异:

  • 句法歪曲:保持语义关系大致可猜,破坏词序或一致关系,比如把"狗追猫"写成"The dog the cat chased was black"这种中心嵌入结构,或者直接做主语宾语互换。
  • 语义歪曲:句法完全正常,但违背名词的选择限制,比如"三明治吃了那个男孩"。
  • 图文冲突:句子本身语法语义都正常,但和图片描绘的事件发生矛盾,比如图片里是一只鸟在空中飞,句子写的是"鱼在飞"。

三种歪曲类型不是平均发放的,而是每个基础句子都要派生若干变体。比如基础句"The girl is feeding the elephant",可以衍生出词汇替换、语序颠倒、角色互换、图片矛盾等多种条件。这样设计的好处是,同一个语义事件在不同歪曲程度下反复出现,模型才有可能把"哪里坏了"和"坏到什么程度"分别学到。

数量上,一开始不要贪大。我们第一批做了大概120个基础句子,每个基础句有4到5个变体,配合图像条件扩展成约4000个标注单元。一个常见误区是句子越多越好,实际上句子一旦多了,标注质量就会迅速下滑。宁可把每个刺激管得严严实实,也不要拉一条几万句但没人认真评的大流水线。

2.2 图像配对:匹配、矛盾与中性

图像的获取和配对是整个数据构建里最容易被低估的环节。我当时天真地以为从公开图库里检索就行,结果发现"女孩喂大象"这种具体事件的图片非常少,更别说还要找到"大象在喂女孩"这种反事实的图片。最后我们走了三条路:

  • 匹配条件:直接从图库检索能对应事件内容的真实照片。
  • 矛盾条件:检索内容相反或角色互换的图片,找不到就人工合成。
  • 中性条件:随机挑选与句子内容无关的场景图,比如海边日落、城市街道。

中性条件是个容易被忽略但极其重要的对照组。没有它,模型可能只是在学"句子和图像像不像",而不是在学"这句话在当下语境里可不可接受"。矛盾条件则专门用来测试跨模态一致性判断能力。三类条件在训练和评估时都要保持数量均衡,否则模型会轻松走捷径——比如发现所有矛盾句都是低分,干脆直接学图像相似度。

图像本身的清晰度、背景复杂度也要注意控制。我后来把分辨率、主体是否完整、画面中物体数量都记录下来做成元数据,这些信息在做错误分析时非常有用。

2.3 标注流程与质量闸门

标注问卷用的是1到7点量表,但我额外加了一个连续滑块的方式做对比验证。实际数据表明,连续滑块得到的分数分布更接近真实语感,不会像离散量表那样在整数上扎堆。每个标注单元至少收集15个人评分,然后计算分半信度,也就是把评分者随机分成两组、看两组平均分的相关性。这个数字是整个任务的天花板,后面模型再怎么调,能逼近的极限就是它。

质量控制环节我的经验是必须做两道闸门。第一道是注意力筛查,插入一些明显不合法的句子,比如纯粹的乱序词串,漏掉这些句子的标注者数据直接作废。第二道是评分者聚类,做完之后把每个评分者的评分分布画出来,如果出现大量满分或者大量极端分,说明这个人要么没认真读题,要么对"怪句"的容忍度和主流差异太大。

这里有一个值得分享的观察:外国人收集这类数据时,评分者对句法歪曲的容忍度通常很低,但对我们合成的语义歪曲句反而态度不一。有人觉得"三明治吃了男孩"非常荒谬坚决给1分,但也有人认为"它语法是对的,可以理解,给5分"。这种个体差异不是噪声,它本身就是心理语言学里可接受性判断的连续性和语境依赖性。我们后来没有强行压掉这种差异,而是把每个人的历史评分作为随机效应记录下来,换一种方式在建模阶段处理。

3. 建模思路:从文本基线到多模态融合

3.1 先搭基线:不做任何图像也能逼近七成效果

模型建模我坚持从最便宜的基线开始。这个任务很容易让人一上来就上大规模多模态预训练模型,但那样做你会失去判断"图像到底贡献了多少"的能力。

我们的第一版基线完全是文本侧的:

  • 自动句法解析器输出的依存树深度、树里不合法弧的数量、句法规则违反的频次;
  • 预训练语言模型给句子打的概率分数、困惑度;
  • 手工统计的词汇共现异常度,比如"三明治"和"吃"的搭配强度;
  • 一个简单的逻辑回归或者梯度提升树把这些特征拼起来。

这一版的平均斯皮尔曼相关就能达到人类分半信度的七成左右。虽然不算惊艳,但它让我确信一件事:人类百分之七八十的接受度判断,确实可以由句子本身的统计与结构特征解释掉。图像带来的增量是真实的,但不会大到让模型彻底改头换面。这个判断对后续投入产出比非常关键,也提醒我做多模态融合时要抱着"锦上添花"的心态,而不是指望图像特征单飞。

3.2 融合的三种架构与我的选择

过了基线之后,我们试了三种多模态融合架构:

架构做法优点问题
早期拼接融合把文本编码器输出和图像编码器输出直接拼起来,后面跟全连接回归头简单直接,改动小两个模态的特征级别不对齐,模型要自己学对齐,数据少时容易出现过拟合
双塔打分融合文本侧单独出一个句法可接受度打分,图像侧单独出一个图文事件一致性打分,两个分数加权组合可解释性强,每条样本都知道是哪一侧在拉分一致性分数和可接受性分数不是同一个量纲,权重需要额外调
跨模态交互融合把文本token和图像区域特征一起送进多模态编码器,各层自注意力互相交互理论上信息利用最充分训练成本高,且预训练目标与细粒度异常判断不匹配,几乎必然要微调

最后我们实际选的是双塔打分融合,但做了一个关键改动:不是简单加权求和,而是把两个分数连同一个一维向量特征喂给一个小回归网络。这样模型能在一定程度上学到非线性关系,比如"图像一致性很高但句法严重歪曲,整体还是不接受"。可解释性和性能在数据量有限的情况下平衡得最好。

3.3 为什么直接微调多模态预训练模型不是银弹

很多人都以为直接用图文预训练模型接个回归头微调就行,我们一开始也这么干了,结果发现几个有趣的问题。

第一,图文预训练模型对"句法歪曲"的感知非常钝。它训练语料里充斥着非规范的网络文本,描述机制又是全局匹配,对局部词序颠倒的敏感度远不如纯文本语言模型。把"The dog the cat chased was black"喂进去,它很可能给一个中等偏上的得分,因为它见过太多类似的不规范表述。

第二,对"语义角色颠倒",它的表现很有趣:图文对比式预训练对"谁对谁做了什么"这种角色颠倒其实有相当的敏感性,但前提是图像区域的编码要足够细。用整图向量或CLS向量做输入,模型往往只捕捉到"图片里有大象、有女孩、有吃的动作"这个全局袋子,至于到底谁在喂谁,信息已经被压掉了。后来我们改用目标检测的区域特征,把每个候选框单独编码再进入融合模块,语义角色颠倒的预测才明显改善。

第三,它的优化目标和我们的任务不同。图文预训练做的是对齐和检索,追求的是"整体上像不像",而我们想要的是"怪在哪里、怪到什么程度"。所以头部的任务设计至关重要,不能直接抄检索任务的投影头。我会在下一节专门讲损失函数怎么设计。

4. 训练与调参:文档里不会写的细节

4.1 损失函数:回归、排序还是分类?

可接受性评分的预测目标通常是1到7分或归一化后的连续值,最直觉的做法是均方误差回归。实际测试下来,回归损失在小数据上有个麻烦:标注平均分本身方差很大,模型为了降低MSE,倾向于把所有预测压向均值的中间地带,这不仅让预测分布变平,也让最需要区分的"明显可接受"和"明显不可接受"两端变得模糊。

我的解决方案是混合损失,由两部分组成:

  • 回归损失:预测值和人类平均分的平滑L1损失,提供绝对分数的锚定;
  • 排序损失:从同一个基础句里随机采样两个不同变体,要求模型给两者的分数保持正确的相对顺序。

排序损失的加入相当于给模型增加了大量免费训练信号。因为很多句子对的绝对分数可能受个体差异影响,但它们之间的相对关系是非常稳定的。最后我用的总损失是两项的加权和,权重比大约在1比1.5,回归占轻一点。

4.2 小数据集上的训练策略

标注单元虽然有四千条,但换个角度它就是几百个基础句子的变体,有效信息量并不大。直接全量微调一个大型多模态模型,两三轮就会过拟合。我们最后试下来最稳的训练策略是分层冻结与早停的配合:

  • 文本编码器和图像编码器的前若干层全部冻结,只微调靠近输出端的最后两到三层;
  • 跨模态融合模块和回归头全部参数可训练;
  • 用学习率调度,先线性预热再余弦衰减,峰值学习率控制在2e-5到5e-5之间;
  • 每个折都用早停选最佳checkpoint,而不是固定训练轮数。

数据增强方面,文本侧做了同义改写增强和句子碎片化扰动,图像侧做随机裁剪和颜色抖动。但必须小心,图像增强如果做得过猛,会改变图像的真实语义,比如把"女孩喂大象"切成看不见大象的局部图,反而给模型引入错误的监督信号。所以图像增强的幅度要温和,我建议裁剪比例不要低于0.8。

4.3 消融实验怎么做才不会被审稿人挑刺

消融实验是这个项目里最容易被低估的工作。我的经验是至少做四个方向:去图像特征、去文本特征、去跨模态一致性分、去排序损失。每个方向都要重新跑完整交叉验证,并且分条件报告结果。

一个很有价值的消融发现是:去掉跨模态一致性通道之后,模型在"图文矛盾"条件下的预测相关性下降非常剧烈,但在"中性条件"下几乎不掉点。这说明一致性通道确实提供了图文冲突检测能力,而不是简单地对所有样本做一个分数平移。另一组消融则显示,把区域级图像特征换成整图向量,在"语义角色颠倒"条件下掉了约0.15的相关性。这类消融结果能帮你精准定位每个模块到底在为什么样本负责。

跑消融时还要注意随机种子。小模型的训练结果对初始化非常敏感,同一个配置换种子可能波动0.05以上的相关性。所以每个改动必须至少跑五个种子取平均和标准差,不然你根本分不清是模块效果还是随机波动。

5. 评估与诊断:分数高不代表模型真懂

5.1 人类一致性是天花板

模型评估我反对只看模型得分,必须先建立人类基线。我们把每个标注单元的评分者分成随机两半,分别求平均分,再计算两组平均分的斯皮尔曼相关。这个数字在我们的数据上大约是0.82到0.87,是所有模型相关都无法超越的天花板。

有了这个参考,模型相关跑出0.6就不再是抽象的好,而是"已经接近人类可复现极限的七成",而跑出0.45就要警惕:模型可能只学到了少数简单规律,比如"只要是句法歪曲就全给低分"。我建议任何类似的项目,报告结果时都把人类分半信度放在旁边,否则读者完全无法判断模型分数的含金量。

5.2 分条件看结果,别用一个相关糊弄过去

整体相关最容易掩盖问题。我们在整体相关0.63时曾经非常乐观,但把数据按三种图像条件拆开之后发现问题:匹配条件下的相关很好,矛盾条件下很一般,中性条件下又变得很差。原因是矛盾条件下图片和句子高度不匹配,模型对"不匹配到底该扣多少分"缺乏判断依据;中性条件下句子本身歪曲程度对分数的影响占主导,但图像提供的是无关信息,模型不知道该不该参考。

所以我的评估表固定为三行,"匹配图像"、"矛盾图像"、"中性图像"各自报告斯皮尔曼相关、皮尔逊相关和RMSE。审稿人和合作方看到这种表,基本不会再质疑结论的可靠性。坦白说,这也是最诚实的呈现方式——你的模型在不同条件下能力差别巨大,藏着掖着没有意义。

5.3 三组典型失败案例

翻看错误案例永远是评估里收获最大的一步。我们从预测偏差超过1分的样本里整理了三组典型失败模式。

第一组是"图像把语义歪曲句救活了"。句子写的是"鱼在天空中游",但图片是一张鱼缸特写,很多评分者觉得"虽然离谱,但在某种设定下可以理解",给了中等分数,模型却坚持给低分。这种情况下,人类的宽容来自想象力,模型没有想象力。

第二组是"文本语法严重歪曲但角色信息可复原"。比如把主谓宾顺序打乱后的句子,图片恰好能让人脑补出原意,评分者会因此给一个比预期更高的分。这说明人类在做可接受性判断时会用视觉证据辅助"修复"句法损伤,这种修复能力我们的模型始终学不出来。

第三组是"高度文化相关的不接受"。有一类句子只是把一个常见谚语里的词替换掉,语法完全没问题,但评分者因为"看起来太怪了"给低分。模型只能从分布上模糊学到这种句式不该高分,却解释不了具体是哪个词触发了异常。这组案例让我意识到,可接受性判断的预测上限不可能绕开广泛的世界知识和语用常识。

6. 踩坑实录:六个看起来合理却翻车的设计

6.1 图像编码器直接冻结

第一个翻车设计是把图像编码器完全冻结,只训练融合层。当时的理由是小数据微调大模型容易过拟合,冻结编码器似乎更稳妥。结果图像特征完全不适应任务,模型几乎退化成了纯文本分类器。后来才知道,预训练图像编码器输出的特征主要服务于粗粒度检索,连"谁是动作主体"这种细粒度信息都未必充分编码。解决办法是至少放开最后两层微调,同时用学习率乘数让图像侧的学习率比文本侧低一截,两者平衡得更好。

6.2 把可接受性当成二分问题

实验初期我们随手做了一套二分类实验,把1到3分定义为"不可接受"、5到7分定义为"可接受",把4分这个中间地带直接扔掉。准确率看着很高,但全是在踩跷跷板。可接受性本质上是渐变连续量,丢掉中间地带等于把人类语感里最丰富的信息扔掉了。更麻烦的是,4分附近的样本恰恰是句法、语义、视觉三类证据相互冲突的情况,是最值得建模的对象。后来我们做了一个简单对比,同样的模型用回归头和二分头各训一遍,二分头在保留了四分的测试集上预测得很可笑,因为它从来没学过如何处理证据冲突。

6.3 按句子还是按图像划分数据集

第三个坑是数据划分方式。第一版交叉验证我们按图像ID划分,同一句话出现在训练集和验证集的概率很高,验证相关虚高。因为模型其实是在记忆图像特征,而不是在学句子判断。正确的做法是按基础句子分组,同一个基础句子的所有变体必须落同一个折里,这对小数据来说意味着折数不能太多。最后我们用了五折分组交叉验证,每折才能保证足够的验证样本数量。

6.4 混淆了"语法怪"和"语义怪"

标注设计阶段我们一度以为"怪"是单一维度,后来发现完全不是。语义歪曲句拿低分,不代表语法上有问题;语法歪曲句也未必立刻不可接受。如果在数据准备阶段不把两种歪曲类型分开标注、分开分析,模型学出来的打分就会被两股互相抵消的信号搅浑。我们最后在标注问卷里给每个句子同时收集了两类分数:一个是"语法上是否说得通",一个是"在图片语境下是否自然"。这两个分数之间的差异本身就是一个非常有趣的特征,帮模型把两条证据链分开处理。

6.5 用语言模型困惑度替代接受度

做基线时我图省事,直接用预训练语言模型的困惑度当成预测分数。结果训出来的模型在一个子集上表现还行,但一到带有图片矛盾条件的样本就完全失灵。原因不难理解:困惑度捕捉的是词序列的统计平滑度,它既不知道图片里发生了什么,也不理解"女孩喂大象"比"大象喂女孩"在物理世界上更合理。后来我们把困惑度降级为众多输入特征之一,模型才学会把"概率上的意外"和"视觉上的冲突"放在不同维度里处理。

6.6 只报整体相关系数

最后一个坑不是模型问题,而是汇报习惯。我有一版实验整体斯皮尔曼相关比上一版提升了0.03,当时很开心,结果拆开一看,"图文矛盾"条件下反而掉了0.08。模型是把矛盾样本往全局均值方向上收缩,整体误差小了,但对最核心的跨模态冲突判断变迟钝了。因此我的经验是所有实验结果必须按条件拆分汇报,主指标之外至少要附上各个子集的指标表,别让整体分数糊弄自己。

整个项目做下来,我最大的感受是:多模态语境下的可接受性判断预测,本质上不是让模型学会"看图说话"或者"判断句子是否合法",而是让它在两股甚至三股互相拉扯的证据之间学会像人一样权衡。人类语感的连续性、对语境的敏感、以及对世界知识的依赖,都会在评分数据里留下痕迹。模型哪怕只是复现其中七成,已经能帮你发现很多图文系统里真正别扭的地方。最后分享一个实用的收尾技巧:把所有预测偏差最大的样本按句子和图像重新整理成一页一页的卡片,你会发现很多失败模式的规律在三五页之内就能看明白,这比任何自动化的错误聚类都好用。想做这个方向的读者,我建议从数据开始,先把"怪"的每种类型都亲手摸一遍,模型反而是后面最不费心的部分。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询