想象一位刑侦探长正在核实目击证人的口供。证人说他在案发现场看到了一只黑猫、一辆红色汽车和一轮月亮,可侦探手里的现场照片却只拍到了黑猫和红车,并没有月亮。侦探不能直接说“证人在撒谎”,因为证人可能确实记忆模糊、脑补了细节,但他必须做一件事:把口供里的每一个陈述与照片真相逐一对照,记录下“哪些话查无实据”,再统计这份口供到底有多不可靠。 多模态模型(比如能“看图说话”的视觉语言模型)就像一个目击证人——给它一张图片,它就用自然语言描述图片内容。可它经常犯和证人一样的毛病:凭空说出图片里不存在的东西。“评测”就是侦探手里那张照片加上一份审讯清单:我们设计各种问题去盘问模型,把它的回答和图像真值逐条比对,看看哪些是“脑补”,哪些是“可靠证词”,最后用一个数字量化它的幻觉倾向。这篇内容,就是教你怎样当一名合格的“测谎侦探”。
掌握多模态幻觉评测,等于给视觉语言模型装上一台“测谎仪”:模型选型、上线评估、迭代调优时,你都能量化“可信度”这个被多数人忽略的关键指标。
可视化演示
展示MathVista基准测试中多模态数学推理的管线流程,切换不同视觉问题类型查看各维度评测表现。
本节配有交互动效(进入视口后自动加载,约 3KB)。
'+types.geometry.caption+'
幻觉定义
侦探手里有一张案发现场的照片,这是“铁证”;证人的口供则是“模型输出”。当模型把图片输入转换成自然语言描述时,它可能说出照片里根本没有的内容——例如照片里只有一只猫,模型却说“画面里有一只猫和一只狗”。我们把这种现象称为多模态幻觉:模型的输出与图像的真实内容不一致,产生了虚假信息。
要检测幻觉,我们需要明确两个角色:一个是被测对象,也就是视觉语言模型(它接收图像和文字指令,生成回答);另一个是判定依据——图像本身所包含的事实,通常称为 Ground Truth。评测流程就是把模型生成的“证词”拆成一条条可以验证的断言,再逐条与图像事实比对,看哪些断言“查无实据”。
多模态幻觉评测的核心价值在于:它让“模型可不可信”从一个模糊印象变成了一个可比较的数字。不同的模型、不同的提示词、不同的应用场景,都可以用同一把尺子量一量幻觉倾向,从而指导我们选择合适的模型,或者判断当前模型是否具备上线的资格。幻觉率是其中最直观的一把尺子:
回到侦探的视角:幻觉率就是这位证人口供的“失真率”。如果一份口供里十句话有三句对不上照片,侦探就会对该证人的可信度打上大大的问号;同样,一个幻觉率达到 30% 的模型,恐怕也不太适合直接放进医疗或驾驶场景。
- 分子
$N_{\text{幻觉}}$统计模型回答中经核验属实的虚假断言总数,例如“照片里有月亮”而照片里并没有。 - 分母
$N_{\text{全部}}$统计模型回答中全部待核验的总断言数,包括说对的和说错的。 - 求出占比用虚假断言数除以全部断言数,得到幻觉在所有断言中的比例,范围在 0 到 1 之间。
幻觉类型
侦探盘问证人时有一套固定的“三连问”:第一问“现场到底有没有这个东西?”;第二问“如果有,它长什么样?”;第三问“它和别的东西是什么位置关系?”这三连问恰好对应三类最典型的多模态幻觉。
第一类是存在性幻觉,也就是“无中生有”。图像里明明没有沙发,模型的描述中却出现了“沙发上放着一个抱枕”;图像里没有行人,模型却说“一个人在过马路”。这类幻觉最基础,也最容易检测——只要拿“物体是否存在于图像中”去比对即可。
第二类是属性幻觉,也就是“张冠李戴”。图像里确实有一只猫,但模型把橘猫说成了黑猫;图像里的汽车是白色,模型说是红色。物体存在,但模型的描述在颜色、大小、材质等属性上偏离了真相。
第三类是关系幻觉,也就是“空间错位”。图像里的猫在桌子下面,模型却说“猫坐在桌子上”;图像里的人是站着的,模型却说“这个人正蹲下来系鞋带”。关系幻觉关注的是多个对象之间的空间、动作或交互关系。
把三类幻觉区分开,意义不仅在于分类学上的整齐,更在于评测问题可以设计得更有针对性。侦探不会用同一个问题去验证所有类型——问“有没有月亮”无法测试模型对“月亮颜色”的判断;只有设计出不同类型的探测问题,才能把模型的幻觉病灶定位到具体维度,也让后续优化有的放矢。
评测方法
侦探不会让证人自由发挥长篇大论,而是拿出一份设计好的询问清单:每个问题都只针对一个明确的断言,答案非对即错,方便与照片对照。这种思路正是探测式提问的核心——评测者构造一系列聚焦的问题(如“图中是否有猫?”“猫的颜色是白色吗?”),让模型作答,然后与图像真值比较。
结合提问方式,评测方法大致分两个流派。判别式评测:给模型出“是非题”或“选择题”,例如问它“图中有没有椅子?”模型回答“有”或“没有”,评测者直接判断对错。生成式评测:让模型自由描述图片内容,然后把描述里的名词(物体候选)和动词/形容词属性逐一和图像中检测到的区域比对,凡是描述中出现但图像中没有对应的,都算作幻觉。
在构造评测数据时,正负样本的搭配非常重要。正样本是“图里确实存在的物体”,负样本是“图里不存在的物体”但可能训练数据中常和当前场景一起出现。侦探必须故意问几个“陷阱问题”,才能测出证人会不会把客厅里常见的沙发脑补到没有沙发的照片里。如果把所有问题都集中在正样本上,模型只需要无脑说“有”就能拿高分,评测就失去了意义。探测准确率是衡量评测问题下模型整体判断能力的基础指标:
回到侦探的视角:一份好问卷不会只问“现场有没有目击者”这种送分题,而是穿插着陷阱题和干扰题,让证人的真实水平暴露无遗。评测方法的设计,本质上就是在为模型“量身定制”这样一套审讯清单,而不是放任它自由发挥。
- 指示函数
$\mathbb{1}[\cdot]$当方括号内的条件成立时取值为 1,否则取值为 0。“成立”意味着模型的预测与图像真值一致。 - 预测值
$\hat{y}_i$与真值$y_i$$\hat{y}_i$是模型对第$i$个探测问题的回答(例如“有猫”还是“没有猫”),$y_i$是图像真值。 - 对所有问题取平均把 N 个问题的判断结果求和后再除以 N,得到的比值就是总体准确率。
量化指标
侦探听完证人的全部口供,不能只凭“三句假话”就下结论,而要从两个维度看这份口供的可靠性:说出口的到底准不准,以及该说的到底说全了没有。前者是精确率,后者是召回率。
在幻觉检测中,我们把模型对每个物体的判断分成三种情况:TP 是模型说“图里有这个物体”,图像里确实有;FP 是模型说“图里有”,但图像里根本没有——这正是幻觉的直接来源;FN 是模型说“图里没有”,图像里其实有——模型漏报了。有了 TP、FP、FN 三项,就能算出两个关键分数:
侦探若只看“证人提到的 10 个物体里 9 个是真的”,会忽略他漏掉了照片里一半的关键线索。所以评测报告通常会同时列出精确率、召回率、F1 和幻觉率,让模型的可靠性短板一目了然。
- 真正例
$TP$模型断言“存在”,图像真值也是“存在”。这是模型答对且没有幻觉的情况。 - 假正例
$FP$模型断言“存在”,图像真值却是“不存在”。这是典型的无中生有,幻觉评测重点打击的对象。 - 假反例
$FN$模型断言“不存在”,图像真值却是“存在”。模型漏看了真实物体,说明感知能力不足。 - 精确率
$P$用 TP 除以所有被模型判为“存在”的断言数,衡量“说出口的都靠谱吗”。 - 召回率
$R$用 TP 除以所有图像真实存在的对象数,衡量“该说的都说全了吗”。 - F1 分数精确率与召回率的调和平均,当两者都高时 F1 才高,防止为了追求某一项牺牲另一项。
原因剖析
为什么这位“证人”总是忍不住脑补?侦探复盘审讯过程,发现三个干扰源。第一个是数据偏差:证人在过往经历中见过的“客厅”总配有沙发、“马路”总配有红绿灯,这些共现关系根深蒂固,于是在描述一个空客厅时,他下意识说出“沙发旁边有一盏落地灯”——这就是训练数据的统计先验渗透进了模型输出。
第二个是解码偏好:模型在回答时倾向于使用高频、常见的词,因为语言模型本质上是根据概率挑选词。当“月亮”在描述夜景时出现频率极高,模型哪怕没有在图中看到月亮,也可能在“夜色很美”的语境里把它补进句子。这就像证人喜欢把案发现场描述成电视剧里最常见的场景套路。
第三个是注意力失焦:视觉语言模型需要把图像区域与文本词对齐。当模型注意力分散,没有聚焦到图像里真正包含物体的局部区域时,它就只能依赖刚才提到的先验知识“猜”内容,从而制造出幻觉。三个来源中,数据偏差和注意力失焦偏向“感知缺陷”,解码偏好偏向“表达习惯”。侦探只有找到幻觉的源头,才能决定是换一个“证词模板”,还是给证人做“记忆训练”。
经典基准
要把一套评测方法变成行业通用的“测谎手册”,就需要定义明确的基准。最经典的两个多模态幻觉评测基准是 POPE(Polling-based Object Probing Evaluation) 和 CHAIR(Caption Hallucination Assessment with Image Relevance)。
POPE 采用判别式探测法:对一个数据集中的每张图片,从一个目标物体清单里采样正样本(图中存在的物体)和负样本(图中不存在的物体),然后向模型提问,比如“Is there a clock in the image?”。模型回答 “Yes“ 或 ”No” 后,评测系统直接算出精确率、召回率、F1 和幻觉率。POPE 的优点在于简单公平,所有模型面对的是同一套是非题。
CHAIR 则更侧重生成式评测:它让模型为图片生成一段自由描述的说明文字,然后利用图像中真实标注的物体集合,逐词检查描述里出现的每个物体是否在图片中真的存在。CHAIR 提供两个粒度指标:
评测流程一般归纳为四步:构建探测数据集、运行模型推理、与图像真值比对、聚合指标输出报告。这套标准化流程让不同团队、不同模型之间的评测结果可以横向比较,也推动幻觉评测从“个人经验”走向“行业标准”。
- 句级分子
$C_{\text{幻觉句}}$统计生成的描述中,包含至少一个图像中不存在对象的句子数量。 - 句级分母
$C_{\text{总句}}$统计模型生成的描述总句数。两者相除得到句级幻觉率。 - 对象级分子
$C_{\text{幻觉对象}}$统计所有被模型提及的对象中,无法在图像中找到对应真体的对象实例数量。 - 对象级分母
$C_{\text{总对象}}$统计模型描述中提到的全部对象实例数。两者相除得到对象级幻觉率。
改善方向
侦探发现证人的脑补源于记忆偏差和表达习惯后,对症下药给出三味药。第一味是数据清洗:在训练阶段,剔除图文不匹配、标注噪声大的样本,减少模型学习到错误共现的机会。就像努力清除证人早年看过的那些狗血电视剧,避免他用戏里的情节填补记忆空白。
第二味是训练约束:在训练过程中加入更细粒度的区域级监督,让模型必须关注图像的具体区域,而非只依赖全局特征;同时也可以用负样本指令训练,明确告诉模型“图中没有的东西不要写”。这相当于给证人做培训:强调“看不到就是看不到”,不许编。
第三味是推理纠偏:在模型完成推理后,使用外部视觉模型(如目标检测器)对答案中的关键物体断言进行复核,发现“图中没有月亮”就自动修正或删除该断言。近期一些研究用“视觉验证器”作为第二道防线,就像侦探审完口供后,再请一位独立鉴定专家复检现场。
三味药的共同逻辑是:幻觉可以被降低,但很难被完全消灭。评测的意义不仅在于“打分”,更在于把打分结果反馈给训练和推理流程,构成“检测 → 量化 → 缓解 → 再检测”的闭环。侦探最终要的不是一份完美的证词,而是知道什么情况下证人会骗人,以及如何防止他开口骗人。
AI 应用场景
智能客服商品问答上线评估
阶段:模型上线前评测与持续回归
解决的问题:电商智能客服需要根据商品图回答“这个杯子有没有把手”“衣服是红色吗”等问题,传统人工抽检只能覆盖几百个样本,且无法快速比较新老模型。用幻觉评测基准自动生成探测问题,量化为精确率、召回率、幻觉率,能快速拦截“看图乱说”的模型版本。
具体案例:某电商团队每月更新一次商品图问答模型,利用 POPE 式探测流程构建了包含 500 个正样本和 500 个负样本的评测集。每次上线前跑一轮评测,当幻觉率超过 8% 时自动拒绝上线。经过两个迭代周期,模型的幻觉率从 18% 降到 5%,客服人工复核量减少一半。
医疗影像报告生成把关
阶段:推理后处理与置信校验
解决的问题:AI 辅助解读 X 光片、CT 时,如果报告中出现“胸腔积液”“肺结节”等幻觉描述,后果极其严重。解决方法是在模型生成报告后,用专门训练的病灶检测器作为外部 Ground Truth,逐一验证报告里的关键医学断言。
具体案例:某影像辅助诊断系统对生成报告执行“断言核验流程”:先让检测器输出异常区域,再比对报告中的每一句阳性描述,凡检测器未确认的描述均标记为“待人工复核”,并计算该模型的幻觉率作为质量监控指标。此举让报告的自动通过率稳定在 90% 以上。
多模态模型红队安全测试
阶段:安全性测试与对抗攻击
解决的问题:红队需要一个系统化的方法探索模型“在哪种图上、哪种问题下最容易幻觉”。幻觉评测基准提供了现成的攻击面库:构造高频共现但实图缺失的陷阱问题,定向诱发模型脑补。
具体案例:某大模型厂商的红队团队利用 CHAIR 框架对视觉语言模型进行压力测试,将“描述一张室内图”这类开放式提问逐词核对,发现模型在“钟表”“盆栽”等高频家居对象上幻觉率高达 25%,于是将错误案例反馈给训练团队进行针对性负样本增强。
Python 演示
# -*- coding: utf-8 -*-"""多模态幻觉评测最小模拟器: 用探测问题检测模型是否存在幻觉"""import random class HallucinationEvaluator: """评测器: 对照图像真值, 检测描述中的幻觉, 并计算指标""" def __init__(self): self.records = [] def ask(self, obj, ground_truth, model_answer): """单次探测: 问模型对象是否存在, 再与真值比对""" label = int(obj in ground_truth) pred = int(model_answer == 'yes') case = {'tp': label == 1 and pred == 1, 'fp': label == 0 and pred == 1, 'fn': label == 1 and pred == 0} self.records.append(case) return case def metrics(self): """用累计记录计算精确率/召回率/F1/幻觉率""" tp = sum(r['tp'] for r in self.records) fp = sum(r['fp'] for r in self.records) fn = sum(r['fn'] for r in self.records) precision = tp / (tp + fp) if tp + fp else 0.0 recall = tp / (tp + fn) if tp + fn else 0.0 f1 = 2.0 * precision * recall / (precision + recall) if precision + recall else 0.0 hallu_rate = fp / len(self.records) if self.records else 0.0 return precision, recall, f1, hallu_rate def fake_model_answers(obj): """模拟一个偶尔'脑补'的模型: 对高频词更容易说 yes""" high_freq = {'couch', 'clock', 'person'} if obj in high_freq: return 'yes' if random.random() < 0.95 else 'no' return 'yes' if random.random() < 0.6 else 'no' def main(): random.seed(42) images = [ {'person', 'cat', 'chair'}, {'person', 'sofa', 'table'}, {'dog', 'car', 'tree'}, ] probe_objects = ['person', 'cat', 'chair', 'sofa', 'tree', 'clock'] ev = HallucinationEvaluator() for img in images: for obj in probe_objects: answer = fake_model_answers(obj) ev.ask(obj, img, answer) p, r, f1, hr = ev.metrics() print('precision=%.3f recall=%.3f f1=%.3f hallucination_rate=%.3f' % (p, r, f1, hr)) if __name__ == '__main__': main()
self.records = []初始化一个评测记录表,每条记录保存一次探测的 TP/FP/FN 判定结果。label = int(obj in ground_truth)把“物体是否真的在图中”转成二值标签,1 表示存在,0 表示不存在。pred = int(model_answer == 'yes')把模型回答“有/没有”转成二值预测,用于和真值标签比对。self.records.append(case)把这次的判定结果追加到记录表,后续算指标时直接汇总。precision = tp / (tp + fp) if tp + fp else 0.0精确率:说出口的断言里有多少是真的,分母为零时置 0 防止除零错误。hallu_rate = fp / len(self.records) if self.records else 0.0幻觉率:假正例占全部探测问题的比例,这是最常见的幻觉量化口径。high_freq = {'couch', 'clock', 'person'}模拟训练数据的高频共现先验:这些物体更容易被模型“脑补”说成存在。for img in images:遍历多张“图像”(用物体集合表示),每张图代表一次独立的场景评测。for obj in probe_objects:遍历探测问题清单,对每个候选物体都问一次“图里有没有它”。ev.ask(obj, img, answer)执行一次探测并记录判定结果,核心评测逻辑全部收敛在 ask 方法里。
常见误区
误区模型明明没看到月亮却说出有月亮,它是不是在“骗人”?是不是训练者故意教坏了它?这种想法把模型拟人化了,好像模型有主观意图。
正解模型没有“诚实”或“撒谎”的意图,它只是在做概率推理。当语言先验很强(夜景常出现月亮)而视觉证据不足时,模型自然地输出了一道高概率的词。评测的目的不是审判模型,而是测量它在哪些条件下容易产生偏差。
为何常见:因为人类习惯用社交经验理解智能体行为,看到模型一本正经地编造内容,就很容易联想到“故意说谎”。
误区一张图片,模型描述对了 9 个物体里的 8 个,只有 1 个说错,说明模型表现不错,幻觉问题不严重。
正解整体准确率可能被大量平凡的正确项稀释。若测试集里 90% 的问题都是简单正样本,模型即使把负样本全说错,准确率仍有 90%。所以必须单独看精确率、召回率、F1 和幻觉率,尤其是 FP(无中生有)的比例。
为何常见:因为初接触评测的人习惯先用“做对百分之几”判断好坏,忽略不同错误的代价完全不同。
误区模型产生幻觉一定是图片模糊、分辨率低、物体太小,只要把图片变清晰,幻觉就会消失。
正解图像质量只是其中一个因素。大量幻觉来自训练数据的共现偏差、语言模型的先验偏好和注意力机制的对齐不足。哪怕高清图片,模型也可能因为“客厅必有沙发”的先验而脑补出沙发。
为何常见:因为幻觉首先表现为“看图错误”,让人自然地归因到视觉输入质量上。
误区既然 POPE 是经典幻觉基准,那只要跑一遍 POPE,就能全面了解模型的幻觉水平。
正解POPE 只探测“物体是否存在”,相当于只问了存在性幻觉。属性错误(红车说成蓝车)和关系错误(猫在桌上说成桌下)都无法用 POPE 捕捉。评测时需要组合 POPE、CHAIR 以及自定义的属性/关系探测题,才能完整刻画幻觉画像。
为何常见:因为 POPE 是最早被广泛使用的基准,名字响亮,容易让人误以为它就是幻觉评测的全部。
面试题
Q1. 以下哪种情况属于典型的多模态存在性幻觉?
- A.图中有猫却说成狗
- B.图中有黑猫却说成白猫
- C.图中根本没有月亮却说有月亮← 正确答案
- D.图中猫在桌下却说在桌上
答案:C。存在性幻觉指模型中“无中生有”,图像里不存在却声称存在,C 完全符合。A 是把猫认成狗,属于物体分类错误;B 是属性错误;D 是关系错误。用侦探比喻说,A、B、D 都是“现场有物但描述走样”,只有 C 是“现场没有却硬说有”。
Q2. 检测多模态幻觉时,最重要的判定依据是什么?
- A.与图像真值逐项比对← 正确答案
- B.检查文本语法是否合法
- C.比较模型推理的耗时
- D.统计训练时的样本数量
答案:A。幻觉定义就是模型输出与图像事实不一致,所以必须拿图像真值(Ground Truth)做准绳。语法、耗时和训练样本数量都不直接反映“描述与图像是否相符”,因此不能作为幻觉判定的核心依据。
Q3. 在幻觉检测中,精确率(Precision)的含义是什么?
- A.模型说出的对象中真实存在的比例← 正确答案
- B.图像中对象被模型遗漏的比例
- C.评测集内全部对象的数量占比
- D.幻觉对象占全部提问的比例
答案:A。精确率 = TP / (TP + FP),分母是“模型说存在的所有对象”,分子是“其中真正存在的”。它衡量模型说出口的话有多靠谱。B 对应召回率的反面,D 对应幻觉率。
Q4. CHAIR 指标在两个粒度上统计幻觉,分别是?
- A.句级与对象实例级← 正确答案
- B.图像级与像素级
- C.训练级与推理级
- D.文本级与音频级
答案:A。CHAIR_s 统计包含幻觉对象的句子占全部句子的比例,CHAIR_i 统计被提及对象中幻觉对象实例的比例,所以是句级 + 对象实例级。它不关心像素或音频,也不是训练与推理的对比。
Q5. POPE 基准的核心提问方式是?
- A.对每个对象提出“是/否”的存在性问题← 正确答案
- B.让模型在原图上画出对象轮廓
- C.比较对象边界框之间的重叠程度
- D.更换对象检测器再进行性能比较
答案:A。POPE 全称是 Polling-based Object Probing Evaluation,核心就是向模型提问“图中是否存在某对象”,模型回答 Yes/No 后与真值比对。它不做画框、框重叠或检测器替换,属于判别式探测评测。
Q6. 模型经常把没有沙发的客厅描述成“有沙发”,最可能的原因是?
- A.训练数据共现偏差和文本先验← 正确答案
- B.图像分辨率低于特定阈值
- C.模型参数量达到亿级规模
- D.评测问题数量少于小规模
答案:A。沙发与客厅在训练数据里频繁共现,模型学到“客厅”常配“沙发”的统计规律,于是产生先验脑补。分辨率和参数量不直接导致这种特定共现幻觉,问题数量更与幻觉成因无关。
Q7. 计算召回率(Recall)时,需要用到哪两个统计量?
- A.假正例和真正例
- B.真正例与假反例之和← 正确答案
- C.真正例与假正例之和
- D.探测问题全部数量
答案:B。召回率 = TP / (TP + FN),分母是图像中真实存在的全部对象数,包括被模型说中的(TP)和被漏掉的(FN)。A 中 FP 是幻觉对象,C 是精确率的分母,D 是整个评测的问题数。
Q8. 下列哪项属于推理阶段的幻觉缓解策略?
- A.用外部目标检测器复核文本断言← 正确答案
- B.把学习率调到最大后继续训练
- C.删除评测集中全部困难样本
- D.将模型输入分辨率降到最低
答案:A。推理纠偏是指模型输出后再用外部视觉模型验证关键断言,发现无中生有则修正或删除。调学习率属于训练阶段,删评测样本是作弊,降低分辨率只会让视觉信息更少、幻觉更严重。
Q9. 下列哪些指标常被用于量化多模态幻觉?
- A.精确率与召回率← 正确答案
- B.CHAIR 指标← 正确答案
- C.F1 分数← 正确答案
- D.模型总参数量
答案:ABC。精确率、召回率、F1 来自混淆矩阵统计,CHAIR 是专门统计描述句和对象实例幻觉比例的指标。模型参数量是模型规模指标,与幻觉率没有直接换算关系,不能作为幻觉量化指标。
Q10. 下列现象中,属于属性幻觉或关系幻觉的有?
- A.图中是红旗却描述成绿旗← 正确答案
- B.图中没有汽车却描述有汽车
- C.图中有一只猫却描述成三只猫
- D.图中猫在柜顶却描述成柜底← 正确答案
答案:AD。A 是颜色属性错误,属于属性幻觉;D 是位置关系错误,属于关系幻觉。B 是典型的存在性幻觉(无中生有)。C 对数量描述错误,偏向数量/属性维度,但本质仍是误报物体数量,不属于纯属性或纯关系幻觉。