打开网易新闻 查看精彩图片

你有没有遇到过这种情况:问AI"图里的猫在哪",它煞有介事地回答"在沙发左边",但你压根不知道它是不是瞎猜的。

这不是杞人忧天。2023年就有研究发现,大语言模型写出的"我是这样想的"未必是它真实的推理过程,它可能一边给你编一套听起来合理的说辞,一边其实是靠别的东西得出答案的。这套毛病延续到了看图说话的AI身上,也就是视觉语言模型。

**视觉语言模型**:能同时理解图片和文字,并用文字回答关于图片问题的AI系统,比如你上传一张照片问"这是什么建筑",它能读懂图片内容并给出文字回答。

问题是,当这类模型说"埃菲尔铁塔"的时候,它到底是真的"看"到了铁塔的轮廓,还是仅仅因为训练数据里"高塔+巴黎"这种组合出现太多次,脱口而出了一个大概率正确的词?如果是后者,那这个AI在医疗影像诊断、自动驾驶这类场景里就非常危险,因为它给出的理由和它实际依赖的证据可能完全对不上。

这篇来自沙特阿卜杜拉国王科技大学(KAUST)团队的论文,就是想解决这一个具体又棘手的问题:怎么用一种既可靠又不需要拆开模型内部构造的方法,证明AI的回答真的和图片对应的上。

现有的解释方法,为什么都不够用

在这篇论文之前,检验AI"看哪里"主要有三条路子,每一条都有硬伤。

第一条路是让AI自己说理由,也就是文字解释。你问它"为什么觉得这是铁塔",它回答"因为图中有一座高耸的铁塔状建筑,位于巴黎地标附近"。听起来挺合理,但这段话本身也是模型生成出来的文字,它没有指向图片上任何具体的像素区域。研究显示,模型写出"让我再看看这张图"这种话时,往往根本没有真的重新核对图片,哪怕图被人偷偷换掉了,它也未必会察觉。文字解释活在语言的世界里,图片解释活在像素的世界里,这两个世界之间没有一座桥。

第二条路是看AI内部的注意力权重,也就是模型在处理信息时,对图片各个区域分配了多少"关注度"。这条路听起来更硬核,毕竟你直接扒开了模型的内部构造。但问题在于,注意力权重记录的是模型读取某个位置的强度,跟这个位置对最终答案有多大贡献是两回事。有研究发现,深层网络里图像token分到的注意力份额会急剧萎缩,而且大量的注意力权重堆积在跟当前问题毫无关系的"哨兵token"上,这类token的存在只是模型内部机制的副产品,跟你问的问题一点关系都没有。换句话说,你看到的高亮区域可能只是模型习惯性扫过的地方,不是它真正依赖的地方。

第三条路是遮挡测试,把图片的某个区域涂黑,看AI的答案会不会变。这个思路很直观,如果盖住关键区域答案就崩了,说明模型确实依赖那块。但这个方法有两个致命问题:一是成本高,一张8×8的网格图需要64次前向计算,如果分辨率再细一点,动辄要4000到8000次;二是信号被稀释了,因为你盖住的只是一小块,图片剩下的部分还是完整的,如果周围的内容足够撑起答案(比如画面里还有别的线索能佐证是铁塔),单独盖住这一块根本测不出差别。

三条路各有各的死穴。文字解释测不了,注意力靠不住,遮挡测试测得动但太贵还容易失灵。

AnswerMap:把图片切成条,一条一条地问

这篇论文提出的方法叫AnswerMap,思路说起来挺朴素:既然不能相信AI的"自述",也不能完全信任它内部的注意力分布,那就干脆换个问法,直接拿图片的局部内容去问模型"这里面有没有你要找的东西",然后记录它回答"有"的概率有多高。

具体做法是这样的。把整张图切成K条横向的窄条和K条纵向的窄条(论文里默认K=8,也就是8条横的加8条竖的)。每一条被单独剪下来,作为一张独立的小图,配上一句话:"这个条带里有没有{查询内容}?请只回答是或否。"模型看到的永远是一整条孤零零的图像,不带索引编号,不带任何周围的背景。

**首token logits**:模型生成回答的第一个字(比如"是"或"否")背后,各个候选词的原始打分,通过这个打分能算出模型说"是"的真实概率,而不是简单看它最终吐出哪个词。

系统会拿这个"是"的概率,用横条和竖条的概率做一次外积运算,也就是把每一横条的"是"概率和每一竖条的"是"概率两两相乘,拼出一张K×K的网格图。某个格子的分数高,意味着穿过它的那一横条和那一竖条都被模型判定为"很可能有",两边都点头才算数,只有一边点头是不够的。

这里有个很聪明的设计。传统遮挡测试问的是"去掉这块之后答案会不会变",本质上测的是"必要性",如果周围的内容能兜底,这块的分数就测不出来。而AnswerMap问的是"只看这一条,够不够回答问题",测的是"充分性"。这两种问法虽然听起来接近,但对图片信息的敏感程度完全不同,因为后者不给模型任何"蒙混过关"的机会,模型只能凭这一条窄图给出判断。

打个比方。如果你想知道朋友是不是真的记得你的生日,你有两种问法。一种是像遮挡测试那样,把生日这条信息从对话里抹掉,看他还能不能正常聊下去,这样测出来的结果很可能是他照样能聊,因为聊天里有无数别的话题能兜底,这条信息重不重要根本测不出来。另一种是像AnswerMap那样,单独把"你记得我生日是哪天吗"这个问题拎出来单独问他,不给任何上下文提示。第二种问法才能真正测出他到底记不记得,因为没有别的信息能替他打掩护。如果没有这种"单独抽问"的设计,你测出来的往往是背景信息的冗余程度,而不是你真正关心的那个点。

这套方法带来两个直接的好处。第一是成本,8×8的网格只需要2K也就是16次调用,比遮挡测试的65次省了四倍。第二是访问权限,整个过程只需要模型输出的首token概率,不需要打开模型内部去看权重矩阵,这意味着它甚至能在GPT这种只能通过API调用、完全看不到内部结构的闭源模型上跑通,论文里就真的在GPT-6-sol上做了实验验证。

从解释到答案:读出坐标而不只是猜词

AnswerMap的野心不止于"画一张热力图证明我没瞎说",它还想干一件更大的事:直接从这张图里算出答案,而不是靠模型生成文字来猜。

这里引入了**读出函数**:对已经生成好的AnswerMap网格图施加一个固定的数学计算,从中提炼出具体的答案,比如取所有格子的加权平均位置,或者取分数最高的格子。

论文用了两种读出方式。第一种叫期望值,把每个格子的分数当作权重,算出所有格子中心点的加权平均坐标,这样得到的不是"第3行第5列"这种离散的格子编号,而是一个连续的坐标点,精度可以细到亚格子级别。第二种叫最大值,直接取整张图里分数最高的那个格子,用来衡量模型对某个区域的确信程度有多强。

这个设计解决了一个此前一直没被认真对待的问题:视觉语言模型给出的答案传统上都是一串文字token,但很多真实场景需要的是连续数值,比如坐标、比如程度评分。硬要模型吐出一串数字文本去逼近一个坐标,精度和稳定性都堪忧。而AnswerMap是从概率分布里直接算出连续值,跳过了"文字生成"这个瓶颈环节。

更关键的是,这套机制天生就保证了答案确实来自图片,而不是模型凭语言先验瞎蒙的。因为每一条窄图被展示给模型时都是孤立的、匿名的,模型没有办法区分"这是第几条",语言先验(也就是模型从海量文本里学到的常识和惯性,比如"提到高塔多半在讲埃菲尔铁塔")只能整体性地拉高或拉低所有格子的基线分数,但它没办法让分数在格子之间产生差异化的分布。换句话说,语言先验能让整张地图变亮或变暗,但没办法决定亮的地方具体在哪,这个"具体在哪"只能来自模型真正看到的图片内容。

两个免ground truth的可信度测试

光设计出一套方法还不够,研究者们很清醒地意识到:一张由模型自己的回答拼出来的地图,完全有可能是模型的自我编造,看起来煞有介事,实际上狗屁不通。所以论文设计了两个测试,而且这两个测试有个共同的巧妙之处,它们都不需要人工标注的"标准答案"。

**测试一:一致性检验**。既然AnswerMap宣称自己反映了模型对"东西在哪"的判断,那么模型在被要求直接指出物体位置时(用它自带的定位功能生成一个坐标点),这个点应该落在地图分数高的区域。这个测试拿模型的另一种输出方式,去验证第一种输出方式画出的地图,两者互为印证,完全不需要外部标注。

**测试二:删除检验**。既然地图宣称答案依赖某块区域,那把这块区域从图片里删掉(涂成灰色),应该会让原本答对的问题答错。同时拿一块随机区域做对照组,如果删随机区域没什么影响,删地图指出的区域却大幅度让答案翻车,就说明这块区域确实是关键。

结果相当亮眼。在一致性检验上,AnswerMap的AUC(一种衡量预测排序准确度的指标,0.5是瞎猜水平,1.0是完美)达到0.85,而注意力权重只有0.38,比瞎猜还差。这个数字背后的意思是:如果你随机抽一对格子,一个是模型真正指向的位置,一个不是,AnswerMap有85%的把握正确判断出哪个是真的,而注意力机制的判断准确率甚至不如抛硬币。

在删除检验上,删掉AnswerMap指出的区域,53%的正确答案会被打乱,而删掉注意力指出的区域,只有19%的答案受影响。这意味着AnswerMap找到的区域,真的是模型答案的"命门",一戳就疼;而注意力找到的区域,戳了也就是隔靴搔痒。

这两个数字放在一起看很说明问题。0.85对0.38,53%对19%,两项测试里AnswerMap都把注意力甩开了一大截,而且这个优势不是在某一个模型上偶然出现的,论文在四个不同的模型(包括Qwen3-VL的三个不同规模版本和InternVL3.5)、三种不同的查询类型(普通指代表达、外观描述、异常检测)上都做了验证,结果高度一致。

值得一提的是,论文还做了两组"反证"实验来加固可信度。一组是拿一张纯白的空白图片去跑AnswerMap,结果地图变得完全平坦,两个指标都精确落在理论上的"瞎猜基线"上;另一组是故意拿另一张不相关的图片去跑(但保留原来那个查询点的位置作为对照),结果地图会跟着新图片的内容走,跟原来那个点完全对不上号,甚至比"猜图片中心"还差。这两组对照说明,地图的走向真的是被图片内容决定的,不是查询文字本身在自说自话。

多网格叠加:粗细搭配才靠谱

单独用一种网格粗细度会遇到一个两难。网格切得太粗,每一条窄图带的背景信息多,模型判断起来更有把握,但精度不够细。网格切得太细,每一条几乎啥也看不见,模型判断的准确性反而下降。

论文的消融实验证实了这一点:在RefCOCOg这个基准上,把网格从K=2一路加密到K=40,指标先是一路上升,在K=6附近达到峰值(NSS指标1.46),之后急转直下,到K=40的时候指标只剩0.22,几乎崩溃。这说明存在一个"甜蜜点",太粗太细都不行。

论文的解法是同时跑好几种不同粗细的网格,比如3份和5份两种切法,把每份的地图统一放大到同一个尺寸的网格上,再逐格相乘。这个操作在数学上叫"专家乘积",意思是只有当所有粗细度的网格都认同某个区域重要时,这个区域才能在最终结果里保留高分,任何一种粗细度不认可,这个区域的分数就会被拉低。

论文特意选用了互质的网格尺寸组合,比如{3,5}而不是{2,4,8}。这里有个数学上的小心思:3份切法和5份切法的分界线完全不重合,两者叠加后能切出更多不重叠的小区域,相当于用同样的问题数量换来了更高的有效分辨率。而{2,4,8}这种嵌套关系的组合,边界线是互相重复的,多花的问题次数换不来额外的信息量。实验也验证了这点:{3,5}组合只用16次调用就达到了跟精调单一网格相当的效果(NSS都在1.5左右),而且在一个五倍宽的调用次数区间内,表现基本保持平稳,不会像单一网格那样一冲过头就崩盘。

这就好比装修房子找问题。你可以只用一种放大镜反复检查,放大倍数太低看不清细节,放大倍数太高又只能看见一小块,找不到整体的问题模式。更靠谱的办法是先用广角镜扫一遍整体结构,再用放大镜聚焦可疑的局部,两种视角互相印证,才能既不漏掉细节,又不会因为看得太局部而误判。如果只依赖一种视角,你要么会把无关紧要的小瑕疵当成大问题,要么会因为看得太粗而漏掉真正的隐患。

三种读出方式,三种实际用途

验证完地图是可信的之后,论文进一步展示了这张地图能拿来干什么实际的事,而且用的是同一张地图,只是换了不同的读出函数。

**第一种用途:帮模型指路,当它自己"指错路"的时候**。研究者对比了模型自己生成的定位点和AnswerMap算出的期望值坐标。在一个定位能力比较强的模型(Qwen3-VL-4B)上,模型自己指的点更准;但在一个定位能力较弱的医疗专用模型(Lingshu-7B,这个模型甚至有30%的定位请求解析失败)上,情况反转了,AnswerMap算出来的坐标反而比模型自己指的点准了11个百分点。这说明一个很有意思的事实:模型内部其实是"知道"东西在哪的,只是它把这份知识转化成文字坐标输出的能力有欠缺,AnswerMap相当于绕开了这个转化瓶颈,直接从概率分布里把答案捞出来。

**第二种用途:识别幻觉,也就是模型编造出来的不存在的东西**。在POPE这个专门测试物体幻觉的基准上,研究者用地图的最大值去预测模型的"是"回答到底靠不靠谱。如果模型说"图里有一只猫",但其实图里根本没猫,这种胡编乱造的回答,对应的AnswerMap地图往往找不到一个明确的峰值,因为压根没有真实存在的区域能撑起这个判断;而说的是真话的时候,地图通常会有一个清晰的高分区域。用这个最大值分数做判别,能达到0.833的AUC,而且完全不需要人工标签,只用16次调用就能完成。删除检验也印证了这个逻辑:真话对应的"是"回答,只有删掉它自己指向的区域才会翻车(41%),删随机区域几乎没影响(1.4%);而编造出来的"是"回答本身就很脆弱,删随机区域都能让它翻车8倍之多(11.2%对比1.4%),说明这种回答本来就没有真正的图片依据支撑。

**第三种用途:给模型递一张"放大镜",帮它纠正自己的错误**。研究者把AnswerMap指出的高分区域从原图里单独裁剪出来,作为一张"特写图"附加给模型,再让它重新回答问题。在TextVQA这个基准上,这个做法把原本答错的42道题里,50%被纠正成了正确答案,而用随机裁剪的对照组只纠正了38%,且随机裁剪对原本答对的题目造成的负面干扰(6%)也比用地图裁剪(4%)更大。这有点像你在看不清一份合同的小字条款时,与其让别人重新念一遍整份合同,不如直接把那行小字放大给你看,问题解决得更快也更精准。

跨模型、跨家族,结果依然稳

论文没有只在一个模型上验证就草草收场,而是在Qwen3-VL的4B、8B、30B三个不同规模版本,以及InternVL3.5这个完全不同的模型家族上都重复了实验。

结果显示,AnswerMap在这四个配置上的一致性检验AUC都稳定在0.77到0.83之间,波动很小;而作为对照的注意力机制最佳表现层(每个模型都要单独扫描哪一层的注意力效果最好)却在不同模型间大幅波动,有的模型上表现尚可,有的干脆掉到接近瞎猜。这说明AnswerMap的稳定性不是偶然凑出来的巧合,而是这套"单独问一条窄图"的机制本身就不依赖于特定模型的内部结构,天然具有跨模型的普适性。

下面这张表格摘录了论文里四个模型的核心对比数据(AUC和删除翻转率):

| 模型 | 一致性AUC(AnswerMap) | 一致性AUC(最强基线) | 删除翻转率(AnswerMap) | 删除翻转率(遮挡测试) |

| Qwen3-VL-4B | **0.824** | 0.649 | **53.4%** | 48.8% |

| Qwen3-VL-8B | **0.823** | 0.634 | **51.1%** | 50.3% |

| Qwen3-VL-30B-A3B | **0.813** | 0.671 | **45.8%** | 45.0% |

| InternVL3.5-8B | **0.768** | 0.699 | **50.4%** | 50.0% |

可以看到,在最贵的遮挡测试面前,AnswerMap依然能保持领先,而它只用了四分之一的计算成本。

局限性:这套方法也不是万能的

论文对自己的局限性说得比较坦率。首先,这个方法需要模型能接受非正方形的图片输入,因为每一条窄图本身就是细长的形状,如果某个模型的架构不支持这种输入,整套流程就跑不通。

其次,也是更有意思的一点,AnswerMap本质上只知道"哪几行、哪几列"里有目标,但不知道具体是哪一行和哪一列的交叉点。这在图里只有一个目标物体的时候没问题,但如果图里同时存在两个可能匹配查询的物体,各自占据不同的行和列,地图就会在这两个物体真实所在的格子之外,额外点亮两个其实空无一物的"幽灵格子",因为这两个格子恰好处在"高分行"和"高分列"的交叉点上,但那里实际上什么都没有。这有点像你根据"住在三楼的人"和"姓王的人"这两条线索去找人,如果楼里同时住着一个三楼的姓李的人和一楼的姓王的人,你按照行列交叉的逻辑去找,反而可能锁定一个根本不存在的"三楼姓王"的人。这是这套基于外积运算的方法与生俱来的一个盲区。

写在后面

读完这篇论文,最触动我的其实不是那些漂亮的AUC数字,而是它对"充分性"和"必要性"这两种测量方式的区分。这个区分听起来很学术,但换个说法其实特别朴素:你到底是想知道"少了它会怎样",还是想知道"只有它够不够"。这两个问题在直觉上很容易被混为一谈,但答案可能截然不同,这也是为什么传统的遮挡测试这么多年一直没能真正测准模型依赖了什么。

另一个让我印象深刻的细节,是论文里那个"图片语言先验只能整体拉高拉低地图,没法移动地图内部的分布"的论证。这不是靠调参调出来的性质,而是这套架构从设计根源上就带来的保证,因为每条窄图对模型来说都是匿名的、孤立的,它没有办法区分"这是第几条",所以哪怕模型脑子里塞满了各种常识和偏见,这些偏见也只能整体影响所有格子,没法针对某个特定格子搞小动作。这种"结构性保证"比事后统计验证更让人踏实,因为它不依赖于某次实验碰巧测出来的好结果,而是从机制上就杜绝了作弊的可能。

论文还留了一个悬而未决的问题没解决,就是前面提到的"幽灵格子"现象。如果图里有两个目标物体,模型没办法区分究竟是哪个组合才是真的。这让我好奇,如果未来有人想解决这个问题,是不是得往三维张量的方向走,而不是停留在行列外积这种二维的简化结构里?那样一来,计算成本可能又会重新涨回去,这是不是意味着"便宜"和"精确"之间永远存在一个绕不开的权衡?

Q&A

Q1:AnswerMap是什么?

A:AnswerMap是一种不需要打开模型内部、只靠模型输出概率就能生成的视觉解释方法,它把图片切成若干横条和竖条分别单独询问模型,再用概率外积拼出一张能反映模型真实关注区域的热力图。

Q2:AnswerMap和传统的注意力可视化相比有什么优势?

A:在论文的一致性检验中,AnswerMap的AUC达到0.85,注意力机制只有0.38;在删除检验中,AnswerMap能让53%的正确答案在删除对应区域后翻车,注意力只有19%,说明AnswerMap找到的区域更贴近模型真正依赖的证据。

Q3:AnswerMap除了解释模型答案还能做什么?

A:论文展示了三种实际用途,包括在模型自己指错位置时用AnswerMap的期望值重新定位、用地图最大值识别模型编造出的幻觉物体、以及把地图指出的高分区域裁剪成特写图反馈给模型,帮助纠正一半原本答错的问题。