ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

多模态对齐幻觉:表示空间相似性如何误导大模型

多模态对齐幻觉:表示空间相似性如何误导大模型 先说个我这两年评测多模态大模型时经常碰到的“灵异事件”给出一张很普通的图片——公园长椅上坐着一只橘猫旁边放着半杯咖啡。你问模型“长椅上是什么”它一本正经地回答“一只狗在追飞盘”。乍一看像模型在瞎猜但把图片换成另一张狗追飞盘的图两张图的向量距离其实非常接近。模型不是不会看图而是被表征空间的“相似”骗了。这就是今天想聊的对齐幻觉alignment hallucination。它不同于语言模型常见的编造事实也不等于视觉编码器彻底瞎掉而是多模态对齐阶段埋下的隐患图像和文本在表示空间里贴得很近模型就以为自己“用对了图片”实际上只是选了一个看起来最顺眼的记忆片段。这个话题对做多模态大模型、视觉语言模型、图文检索和生成式评测的朋友都特别重要。如果你只是调接口用一用可能觉得“偶尔答错没什么”但如果你在跑NeurIPS 2026相关的研究做细粒度评测或可靠多模态推理那对齐幻觉会直接击穿你对“对齐”的信任。本文会从现象、成因、评测方法到缓解思路把我实际操作中的观察和踩坑记录都写出来尽量说人话。1. 对齐幻觉多模态对齐里的“失真”现象1.1 从CLIP式的对比对齐说起现在几乎所有主流多模态模型都绕不开CLIP风格的对比学习。简单说我们有一批图片和一批文本训练目标是把“匹配”的图文对在向量空间里拉近把“不匹配”的推远。这个思路的核心是双塔结构加对比损失损失函数可以写成L_contrastive -log( exp(s(v_i, t_i)/τ) / Σ_j exp(s(v_i, t_j)/τ) )其中 s 是余弦相似度τ 是温度系数。这个设计看起来干净而且在大规模数据上确实有效但它有个隐藏假设两段内容如果在向量空间里离得近就等价于语义上匹配。问题恰恰出在这个假设上。试想一下模型把一张“橘猫坐在长椅上”的图片和一段“橘猫坐在长椅上”的文字拉近时它并不需要理解“橘猫”和“长椅”的真实关系。它只要学到一种统计共现模式长椅场景经常和猫、咖啡、公园这类词一起出现。所以当模型看到一张“橘猫坐在长椅”的图片时它的图像表示很可能落在了一个同时包含“猫”“长椅”“公园”“咖啡”的语义区域。这时候如果文本问的是“长椅上是什么”模型完全有可能被“公园”或“咖啡”的邻居词带走。表面原因是“语言先验太强”深层原因是表示空间里的“相似”太粗根本没有像素级或实体级的精读能力。1.2 对齐幻觉的定义与本质我想给对齐幻觉一个比较可操作的定义在图文多模态模型中模型因为图像表示与某些错误文本表示在向量空间中高度相似导致生成或检索结果与图像实际内容不一致但模型自身却表现出“确信无疑”的状态。这个定义和普通幻觉有区别。普通语言模型幻觉是解码阶段自由发挥没有输入图片约束多模态模型里的经典幻觉是“看着图说错”而对齐幻觉尤其强调“表示相似”这个诱因。换句话说模型不是没看图而是“看了但认错”了——它把图片在表示空间中的近邻当成了事实。我习惯用一个比喻来理解你参加一个蒙面舞会大家都不看脸只看衣服颜色。你想找穿红裙子的朋友小A但现场有个穿同样红裙子的陌生人小C你上去就打招呼叫小A。图像表示就是那件红裙子模型记住的是“穿红裙子的都像小A”而不是小A本人。对齐幻觉的可怕之处就在这相似的表征让模型产生了“我认识它”的错觉而这种错觉会被后续的语言生成放大。1.3 为什么NeurIPS 2026会聚焦这个问题这两年多模态模型越来越卷大家开始从“刷榜”转向“挑错”。我在整理NeurIPS 2026投稿思路时发现最容易被社区认可的方向不再是加两个新的benchmark而是解释“模型为什么错”和“对齐到底对到了什么”。对齐幻觉正好卡在这个点上它牵涉到表示学习的几何性质、对比学习的理论缺陷、以及视觉语言模型的三段式流水线视觉编码模态对齐语言解码。更现实的原因是大量多模态大模型在下游任务里暴露出的“睁眼说瞎话”问题根子都能追到对齐阶段。比如视觉问答里模型对高频答案的偏好图文检索里相似的假阳性图像描述里物体位置错乱。这些现象如果只单独看某一个可能觉得是训练数据问题但放到表示空间里看会发现都是“相似的表示不等于用对了图片”的具体表现。2. 表示空间里的“相似”是如何骗人的2.1 全局池化与温度系数埋下的隐患对比学习架构里图片最终输出通常是一个固定维度的向量这个向量来自视觉编码器池化后的全局特征。池化操作本身就在做信息压缩一张 224×224 的图片有几十万个像素池化后只剩一个 768 维或 1024 维的向量。这个过程中颜色、纹理、物体位置、空间关系被揉成一团。温度系数 τ 的选择也很有讲究。τ 越小对比损失对难负样本的惩罚越强训练出来的表示会更“尖锐”同类聚集更紧但容易造成特征坍塌τ 越大训练稳定但正负样本的边界会很模糊。很多团队直接抄一个默认温度根本没有针对自己的数据调过。我之前用一组细粒度图文对做过小实验把 τ 从 0.07 调到 0.02模型在普通检索任务上掉了一点但在“相似但不同物体”的对抗样本上准确率反而明显提升。这说明低温帮助模型学更细的区别但常规评测根本测不出来。问题在于下游推理阶段我们很少再看 τ模型直接用训练好的表示做相似度比较。如果训练时温度太宽松模型就会把“相近但不相等”当成“相等”来用。这是对齐幻觉的第一个来源全局表示太粗温度又放大了“容错”。2.2 细粒度语义与全局向量之间的缝隙另一个非常典型的坑是两张图片全局表示几乎相同但细节语义完全相反。比如一张图是“穿红衣服的人站在汽车左边”另一张是“穿红衣服的人站在汽车右边”。对CLIP类模型来说这两个向量在特征空间里可能非常接近因为主体、颜色、背景、物体类别都一致差的只是“左”和“右”的位置编码。全局池化很容易把“左”和“右”的空间差异平均掉。如果你构造一个简单的视觉问答问“人和车的位置关系是什么”模型很容易在这两张图上给出一模一样的答案因为它的表示空间里压根没有“左右”这个维度的区分。这就是“相似的表示不等于用对了图片”最直接的体现向量相似度高不代表模型理解了这张图的细粒度内容。我在实际踩坑时发现硬负样本如果只在语义类别上做替换比如把“猫”换成“狗”模型还能勉强区分但如果把“猫在左”换成“猫在右”很多开源模型的准确率直接接近随机。因为训练数据里这种空间关系的标注本来就少对比学习也没有给左右关系足够的梯度压力。2.3 模态间不对称的错配多模态对齐不是简单把图片和文本映射到同一个空间就完事。文本是离散的词元序列图像是连续的视觉token。为了把两者对齐模型通常要经过一个投影层把图像token压缩成可以和文本token做cross-attention的形式。这个投影层是个信息瓶颈会把连续视觉特征量化到和文本语义接近的区域。这个瓶颈带来一个副作用图像表示被“语言化”了。本来图片里有很多语言难以表达的信息比如精确的颜色渐变、纹理细节、物体边缘的小变化但经过投影后这些信息会被丢弃只留下和文本容易匹配的部分。模型看到一只“黑猫”和一只“深灰色猫”时如果训练数据里“黑猫”常见而“深灰色猫”不常见那两张图的图像表示很可能会被拉到“黑猫”附近。这会让模型误以为深灰色猫的图片里确实有“黑猫”。模态间不对称还体现在注意力分配上。语言模型解码时天然会把更多注意力放在文本前缀和已经生成的token上图像token如果和文本token在表示上高度相似模型反而会“偷懒”不去看图片里的证据直接顺着文本先验走。这也是为什么很多幻觉检测工作都会分析注意力权重——图像token的注意力占比几乎是幻觉风险的晴雨表。3. 哪些场景最容易爆出对齐幻觉3.1 视觉问答中的“顺拐”答案视觉问答VQA是对齐幻觉的重灾区因为问题本身会引入强语言先验。比如一张图片是“海边沙滩空无一物”问题“沙滩上常见的东西是什么”。很多模型会直接回答“太阳伞、躺椅、冲浪板”哪怕图里什么都没有。这就是典型的“顺拐”问题里的“沙滩”词向量和“太阳伞/躺椅/冲浪板”在表示空间里高度共现模型不再检查图中是否有这些物体。这种错误特别容易在小物体和背景要素上发生。主体的检测相对容易因为对比学习时主体对应的文本词往往出现频率高但背景杂物的表示比较弱模型就把它们模糊成“一组可能出现的沙滩物品”。如果你对模型进行追问“图里具体哪里有太阳伞”它还会一本正经地编一个坐标。这已经不是单纯的回答错而是表示空间把“语义相关”错误翻译成了“真实存在”。3.2 图文检索中的“撞脸”样本在做图像文本检索时对齐幻觉表现为一种让人头疼的假阳性查询文本是“一辆白色轿车停在红绿灯前”检索结果里可能混进一张“一辆白色货车停在红绿灯前”。从分类学角度轿车和货车是不同物体但从CLIP表示看它们的颜色、背景、场景结构高度相似所以排序被顶了上来。我用类似COCO的测试集做过统计发现检索错误里大概有三分之一是“语义大类正确、小类错误”比如轿车/货车、猫/狐狸、杯子/碗。这类错误用全局相似度指标All很准Top-1准确率也不低但一旦把查询文本改成更细的描述比如“白色轿车停在红绿灯前车头朝左”错误率会直线上升。这说明模型在检索时用的是“整体画面长得像”而不是“文本里每个属性都对应得上”。3.3 多模态生成的“事实漂移”在图像描述生成和视觉语言生成任务里对齐幻觉会表现为“事实漂移”模型生成的前半段可能还在描述图片后半段突然飞到一个训练数据里常见的固定句式中。比如一张“厨房台面上有一篮苹果”的图片模型可能先正确说出“台面上有一篮苹果”然后加一句“旁边有一把刀”哪怕图里根本没有刀。原因很可能是“厨房台面”这个图像表示和“刀、砧板、食材”这些词在向量空间中太近了生成阶段采样时被顺带激活。这种漂移很难通过“提高视觉编码器精度”解决因为问题出在解码阶段对图像token的利用效率上。我在实际测试里发现给模型增加视觉token数量比如从 32 个提到 64 个事实漂移有所缓解但计算成本增加明显而且并不能完全消除。更本质的做法是让语言模型在做每一步预测时都先证明“我确实看了图片里的对应区域”。3.4 常识对抗样本和分布外数据对齐幻觉在分布外OOD数据上会更严重。因为模型学到的表示空间是在训练分布上拟合的一旦出现一个不常见的组合比如“一只企鹅站在沙漠里”模型会倾向于把企鹅和沙漠都映射到已知的“动物园”“冰天雪地”等原型区域从而忽略“沙漠”这个罕见约束。这类问题最要命的是你没法靠堆训练数据解决。因为组合空间是开放式的总有没见过的新组合。我见过一个很极端的例子一张“长颈鹿戴着红色围巾坐在办公室工位前”的图片模型直接回答“动物园里的长颈鹿”完全无视围巾和工位。用表示空间解释就是长颈鹿的表示权重远远超过了围巾和工位模型只抓住了最有判别力的主体把其他信息当噪声忽略了。这种“主体优先”的倾向是对齐幻觉在罕见样本上最常见的表现形式。4. 怎么把“对齐幻觉”测出来4.1 构建“最小对换”评测集想评估对齐幻觉不能只用现成的图文匹配准确率因为那些指标太粗了。我在项目里推荐一种做法最小对换Minimal Swap测试。基本思路是找到两张全局表示相似、但局部属性不同的图片把它们对应的文本描述交换看模型会不会识别出错误。具体操作分四步用CLIP或当前模型的视觉编码器对一个图片池里的所有图片做特征向量提取。对每张图选出若干“相似邻居”相似度阈值可以设在 0.8~0.95 之间。把原图片的描述文本搭配到它的相似邻居图片上构成负样本。让模型做图文匹配判断或直接回答关于邻居图片内容的问题看它会不会“接受”错误文本。我在自己实验里发现单靠这个测试就能暴露很多模型在普通评测里隐藏的问题。比如有的模型在COCO Caption上CIDEr很高但在最小对换测试里接受错误文本的比例高达 22%。原因就是它在生成时根本分不清轿车和货车只要画面整体风格一致就“放行”了。4.2 用相似度分布诊断“假近邻”除了专门评测集还可以在表示空间里做诊断。我常用的指标有两个正负样本相似度间隔计算匹配图文对和不匹配图文对的平均余弦相似度差值。间隔越小对齐幻觉风险越高。假近邻比例对每个查询取Top-K个最近邻人工或规则判断其中有多少个其实是“语义不对但表示很近”的样本。你可以做一个很简单的二维散点图横轴是图片与文本的余弦相似度纵轴是文本与图片内容是否匹配0/1。如果两条曲线在某个相似度阈值附近大面积重叠说明模型在这个区间会频繁出现“以为对其实不对”的情况。这个重叠区间就是对齐幻觉的高发区。我在自己的测试集上见过相似度 0.85 以上基本全对、0.80 到 0.85 之间真假混合、0.80 以下基本全错的分布这种数据能帮团队快速定位问题而不是笼统地说“模型幻觉严重”。4.3 注意力归因与token级分析生成类任务里的对齐幻觉最好用注意力归因来看。简单有效的做法是记录解码时每一步对图像token的平均注意力权重除以对全部token的总注意力。这个比例可以叫“图像利用度”。如果图像利用度低于某个经验阈值生成的token大概率来自文本先验而不是图片信息。我在实际使用中建议按层统计因为底层和中层的注意力往往比较机械真正决定语义的是高层。你可以在高层选择几个头设定一个“最低图像注意力”阈值低于阈值就输出一个警告。这个思路在后文缓解方案里还会用到。token级分析还有一个变体对视觉编码器输出的token做聚类看不同类型的图像内容分别对应哪些隐藏状态。如果“红车”和“蓝车”在token级表示里几乎重合那说明视觉编码器已经洗掉了颜色信息你再怎么调生成解码器都白搭。4.4 因果干预试验遮挡与替换最后推荐一个“手术刀”式的评测方法对图片做因果干预。把图片主体区域遮掉看模型回答是否改变如果回答完全不变说明模型根本没依赖这块信息。反过来把图片主体替换成另一个物体比如把“猫”换成本“狗”看回答是否跟随变化如果回答不变说明模型只是在用全局场景做猜测。这个方法的优点是能定位“模型到底用没用到图片的哪部分”。我在诊断一个开源VLM时发现遮挡图片左侧区域后模型对“左侧站着谁”的回答照样信心满满输出内容一字不变。后来查表示空间发现模型对“人站在某侧”的表示在池化后已经丢失了空间方位遮挡不遮挡都一个样。因果干预测试能逼着模型露出马脚是评测对齐幻觉非常有效的手段。5. 缓解对齐幻觉的几条实操路线5.1 数据清洗与难负例挖掘想从根本上降低对齐幻觉第一刀应该切在数据上。普通对比训练用随机负样本模型很容易学到一个“差不多”的匹配要用更难负例让模型学会区分相似但不匹配的样本。难负例挖掘不是简单加大batch size而是要做语义层次上的负样本替换。具体做法先用当前模型对训练数据里的图文对做一轮向量化找出每个正样本的高相似度负样本。然后用编辑的方式制造“最小改动负样本”把描述里的“猫”替换成“狗”把“左边”替换成“右边”把“红色”替换成“蓝色”同时保持句式不变。把这些样本混入训练batch给对比损失施加压力。需要注意的是难负例比例不能太高否则训练会变得不稳定模型会走向“怀疑一切”的极端。我试过 1:1 的难负例比例损失波动明显变大最终稳定在 1:3 到 1:5 左右也就是一个正样本配三个普通负样本和一到两个难负例效果比较平衡。5.2 训练目标调整从全局到细粒度只优化全局对比损失是不够的需要往模型里塞细粒度监督。目前比较实用的有三类做法token-level对齐不止让CLS向量对齐还让视觉token和文本token做细粒度对比比如用ITC的token变体强制每个图像区域对应到正确的文本片段。生成式重建辅助在对比学习之外加一个caption重建任务让模型能从视觉特征解码出完整描述相当于逼着表示保留更多可被语言解码的细节。语言模型联合微调让图像编码器和语言模型一起在指令数据上微调而不是冻结视觉塔只调投影层这样语言模型能学到更可靠的“看图”习惯。这些方法都会增加训练成本尤其是token-level对齐显存占用可能翻倍。但我个人的体验是收益主要在细粒度问题上模型对“左右”“颜色”“数量”这类属性的抵抗力明显增强。相比之下纯全局对比损失在这些问题上几乎是“失明”的。5.3 解码干预让模型“看”图再说话如果训练成本受限可以考虑在解码阶段做干预。一个成熟的做法是注意力约束在每个解码步里如果图像token的平均注意力权重低于阈值就强行提高图像注意力或者重新计算上下文。类似的工作在NLP领域有做过“attention mask”调整搬到多模态生成同样有效。还有一种更轻量的办法是“视觉相似度偏差”在生成每个token时计算当前上下文向量与图片整体向量的相似度如果相似度太低就在softmax logits里给视觉词比如图中物体的类别词一个正偏置。这个做法像“作弊”但在工程上很好用尤其是做垂直场景部署时你可以把领域知识注入到解码里。我实际测试过注意力约束设置最小图像注意力为 0.15模型生成的幻觉描述比例大概下降了三分之一但代价是生成文本变得有点刻板偶尔会在正确的地方重复提问。所以这种干预要按任务调参不能无脑上。5.4 事后校准与不确定性提示最后一条路线是“不硬答先自查”。在推理阶段用一个独立的证据检测器判断图片信息是否支持当前生成的回答。如果证据不足就让模型输出“不确定”或“图片信息不足以回答”而不是硬编一个答案。这个思路和RAG里的不确定性估计很像但把判断依据从文本检索改成了图像token利用率。我习惯在模型输出后加一个后处理步骤把生成文本逐词拆开和图像CLS向量计算逐词相似度相似度最低的若干词标记为“无图源支持”。如果这类词占比超过一定阈值就对用户显示“该回答可能包含推测内容”。这个方案适合ToB产品因为用户更在意可信度而不是流畅度。下表总结一下各环节的干预手段和适用场景环节方法适用场景成本数据难负例挖掘、最小改动负样本训练前数据清洗中训练token-level对齐、生成式重建从零训练/继续预训练高解码注意力约束、视觉偏置推理优化快速上线低事后证据检测器、不确定性提示产品化部署安全敏感中6. 实操笔记我们踩过的坑与建议6.1 不要迷信相似度阈值我在调检索系统时最初想用一个固定相似度阈值来判断图文是否匹配相似度大于0.9就接受。后来发现不同查询组的最优阈值完全不同。高频概念比如“人”“车”“城市”的阈值可以低到0.8低频或细粒度概念比如“某种特定鸟类的亚种”阈值必须提到0.95以上。用全局阈值会加剧对齐幻觉因为细粒度样本本来就容易假阳性。正确做法是按语义类别分组统计为每个组计算独立的阈值。这个过程不复杂但能显著降低误判。我现在做评测时一定会先列出类别分布再决定是否用统一阈值。6.2 小心数据泄漏很多多模态模型幻觉评测翻车是因为评测数据和预训练语料高度重叠。模型不是靠看图回答而是靠“记住”了网上的标准答案。这种情况下的对齐幻觉根本测不出来因为看起来样本很相似但模型的答案可能来自记忆。要避免数据泄漏最简单的办法是构建“新组合”用已有图片但重新拼接、重新描述确保模型没有在训练时见过完全一致的组合。比如“把网上常见的猫图旋转180度、换背景、改颜色属性”再构造文本来测。虽然不能完全杜绝泄漏但至少能筛掉一批记忆型幻觉。6.3 模板干扰会让评估失真我还踩过一个坑评测prompt里包含了太多和答案类别相关的语义提示比如“请从以下选项中选择A猫B狗C鸟”。这等于给模型发了答案范围模型即使不看图也能从选项里的词频猜中正确答案尤其是高频类别。这会让模型看起来“解决了对齐幻觉”实际只是学会了利用模板线索。为了测真实的“用图能力”prompt应该更中性比如“描述这张图片中的主要物体”或者“图片里有什么颜色的什么物体”。如果你想做选择题至少要把选项顺序打乱并加入对抗选项和正确答案表示相似但语义不同的选项这样才能暴露对齐幻觉。6.4 给新人的一份迷你实验清单如果你刚接触这个方向我建议按下面的清单走一遍很快就能对齐幻觉形成直觉选一个7B级别左右的开源多模态模型搭好推理环境。用CLIP的视觉编码器找20组“相似图片对”每组图片的全局表示很接近但局部关键属性不同。构造“问题文本描述”把描述跨图调换让模型判断是否匹配。记录模型在不同相似度区间上的接受率。做一个简单的遮挡实验把每张图主体遮住再看回答变化。这套实验不需要高端显卡也不需要大规模训练两三天就能跑完。但跑完之后你会明显意识到多模态模型的“对齐”远不是“表示接近”这么简单。最后我还是想强调无论做研究还是做产品评估对齐幻觉都要从自己的任务出发设计最小对换测试不要只看整体指标。把“用对了图片”这件事拆到表示空间里逐层检查很多之前解释不清的模型行为都会变得一目了然。
返回列表