POPE 的幻觉分数,有多少取决于「怎么把回答读成 yes/no」?

速览

POPE 的分数是「模型行为 × 读出协议」,而读出协议从没被评测规范固定过

这篇论文做了一件此前没人系统做过的事:固定模型、固定题目、固定指标,只改「把模型输出变成 yes/no 标签」这一条规则,POPE 在 adversarial 划分上的 F1 就相差 6.13 分。论文名是 Token-Set Choice Confounds POPE,它把「答案抽取」从评测的实现细节提升为被审计的自变量,并且明确拒绝把结论推到「别人的增益都是假的」那一步。Token-Set Audit

要看清这件事的分量,先要知道被审计的 POPE 长什么样。POPE 出自 2023 年的 EMNLP,它把对象幻觉评测改成一组二元提问,模板是 Is there a/an <object> in the image?,答案只有 Yes 与 No。真值物体与不存在的物体按 1:1 配对,负样本的采法分三种:random 随机取图中没有的物体,popular 取全数据集里最高频却不在此图中的物体,adversarial 取与图中真值物体共现最频繁却仍然缺席的物体,难度依次递增。指标是 Accuracy、Precision、Recall 和 F1,其中 F1 是主指标。POPE

POPE 之所以要放弃原来的开放式描述评测,是因为 CHAIR 那套指标既受指令措辞和描述长度影响,又依赖人工编写的解析规则,很容易误判。换成封闭式提问之后,评测链路变成一条直路:先取图中物体,再采负样本,再把两者套进模板轮询模型,最后由评测脚本把模型的回答变成 yes 或 no 标签,再算指标。

图注:POPE 的评测流程示意。一张海滩照片经人工标注或 SEEM 自动分割得到真值物体,再经负采样产出图中不存在的物体,两种物体最后一起套进模板变成 yes/no 提问。这里要看清的是流程末端那一步,也就是把模型的回答变成 yes 或 no 标签,本文审计的正是它。POPE

问题就出在这条链路的末端。读出这一步在 POPE 的规范里几乎没被写下来,而 POPE 论文自己也承认了这一点。它的局限章第三条写道,POPE 用基于匹配的方法判断模型答的是 Yes 还是 No,但模型偶尔不会显式给出这两个词,这可能导致评测不准。POPE

而官方实现的现状比这更微妙。核对 RUCAIBox/POPE 仓库可以看到,唯一的打分脚本 evaluate.py 走的是生成后字符串匹配:先按句点只保留第一句,去掉逗号,按空格切词,命中 No、not、no 三个词之一就判 no,否则一律判 yes。整个仓库没有任何 token id、tokenizer 或 logit 相关代码,也从不发布 yes/no 的预测级结果文件,更不记录模型回答的首 token。POPE repo

这直接纠正了一个流传很广的说法。「POPE 官方就是比较两个 token 的 logit」没有官方代码依据,官方口径是默认肯定的字符串匹配。至于为什么封闭式提问会成为通行做法,一份 2026-09 修订的幻觉综述给过坐标:幻觉评测分判别式与生成式两类,判别式就是一连串二元提问,而这一类设计早被质疑过语言先验、参数知识压过视觉证据、以及 Yes 偏置。Hallucination Survey

至于「评测协议本身是混淆变量」这个思路并不新鲜。文本任务上早有实证表明,同一模型、同一任务,只改提示排版就能把分数大幅拉开,而那是纯文本任务上的量级,不能直接搬到多模态。Prompt Format 这篇论文的新意不在于提出这个思路,而在于把它做成了可复现、可量化、并且有明确机制的一条审计。

模型只生成带空格的「 Yes」「 No」,两 token 读出比的是两个从未出现的 ID

机制可以完整推导,结论是两 token 读出比较的那两个 ID,在这条提示下从未被生成过。链条只有四步。被审计的模型是 LLaVA-1.5-7B,它的语言底座是 LLaMA-2 系的 Vicuna v1.5,用的是 32000 词表的 SentencePiece tokenizer;官方对话模板在助手轮追加 ASSISTANT:,并且不带尾随空格。LLaVA-1.5

SentencePiece 会给位于词首的 token 加一个空格字节。因为模板以 ASSISTANT: 结尾,回答词正好被顶到词首位置,于是模型实际上只会产出两种带前导空格的表层形式,' Yes' 和 ' No',对应词汇表 ID 3869 与 1939。而那个被广泛使用的两 token 读出,比较的是 ID 3582(yes)与 1217(no)两个位置的 logit,也就是不带空格的那对形式。

这里可以打个比方把结构说清楚:这相当于从两个从未进入候选名单的人里挑一个。解码器每一步只会把概率质量分给少数几个 token,而在这条提示下,它分给的是带空格的 ' Yes' 与 ' No';两 token 读出拿去比较的 3582 与 1217,恰恰是被解码器排除掉的那两个候选。所以它比的不是模型想说什么,而是两个模型从来没说过的东西谁大谁小。Token-Set Audit

讲解:模型为何只生成带空格的 Yes

论文用 9,000 道题的贪心解码记录把这件事钉死了。三个划分各 3,000 题,首 token 落在 ' Yes'(3869) 上共 3,893 次、落在 ' No'(1939) 上共 5,107 次,而 3582 与 1217 一次都没有出现过,其余六个候选表层形式同样是零次。这不是偶尔读错,而是结构性的读错。

图注:一次生成、两种读出、两套分数。提示以 ASSISTANT: 结尾,模型只生成带空格的 ' Yes'(3869) 或 ' No'(1939);红色支路是两 token 读出,比较 ID 集合 {3582, 1217},与生成结果不匹配,adversarial 上 yes-rate 读成 0.760、F1 为 0.761;蓝色支路是八 token 读出,集合含 3869 与 1939,yes-rate 0.452、F1 0.822;底部差值为 6.13 分。Token-Set Audit

论文推荐的替代方案是八 token 读出:把四种 yes 写法 {3582, 8241, 4874, 3869} 和四种 no 写法 {1217, 3782, 694, 1939} 各自取最大 logit,再比大小。取最大值而不是求和或 softmax,理由是贪心解码只会发射 logit 最高的那一个 token,max 聚合与解码行为一致。

这个「同一语义的不同写法在分摊概率质量」的现象并不是本文第一次指出。2021 年的一篇工作给它起了名字叫表层形式竞争,并用一个例子讲清了直觉:人类答题是从给定选项里勾一个,模型却是给所有可能的字符串都分配概率,于是像 Bathtub 和 A bathtub 这类写法相同概念的字符串会互相分流,导致概率最高的答案未必是语义上正确的那个。Surface Form Competition 需要说明层级差异:那篇工作的竞争发生在整条答案字符串之间,任务是纯文本多选;本文的竞争发生在二元标签词表内部的 token ID 之间。两者只共享概念内核,不能互相推演,本文的 6.13 分位移也不能用它来解释。

还有一个细节值得记住:9,000 条记录只保存了 ID 3582 与 1217 的 logit 差值符号,没有保存数值。所以论文明确不对这两个被排除候选的 logit 绝对值作任何断言,只说它们每次都输给带空格的变体。

同一批输出换一种读法:adversarial 上 F1 差 6.13 分,精度从 0.63 到 0.87

把两种读出放在同一批预测上跑一遍,位移的幅度和来路都清楚了。在 adversarial 划分的 3,000 题上,两 token 读出的 F1 是 0.7608,precision 0.6307,recall 0.9587,yes-rate 0.760;八 token 读出的 F1 是 0.8221,precision 0.8658,recall 0.7827,yes-rate 0.452。同一批题目、同一个模型、同一套指标,差值 6.13 分。popular 与 random 上分别是 5.37 分与 3.16 分,方向一致、幅度递减。

划分读出F1PrecisionRecallYes-rate位移
adversarial两 token0.76080.63070.95870.760+6.13
adversarial八 token0.82210.86580.78270.452
popular两 token0.79610.67970.96070.707+5.37
popular八 token0.84980.91400.79400.434
random两 token0.83970.74590.96070.644+3.16
random八 token0.87130.96520.79400.411

位移的来路很清楚。adversarial 上模型给出 1,644 个 ' No',其中 924 个被两 token 规则读成了 yes;这 924 个里有 660 个落在真负例上,变成了假正例。反过来,三个 split 合计 3,893 个 ' Yes' 没有一个被读成 no(adversarial 上为 1,356 个)。所以在标签 1:1 平衡的题目上,两 token 读出等于用 0.760 的 yes 偏置买来 0.9587 的召回,代价就是精度掉到 0.6307。这些数字说明读出的位移不是四舍五入的噪声,它单独一项就能造成 0.24 的精度差距。Token-Set Audit

图注:adversarial 三千题在两种读出下的混淆矩阵。左图为两 token 协议,假正例计 842,precision 0.6307;右图为八 token 协议,同一批题目下假正例只剩 182,precision 0.8658。两图对应的是同一批模型行为,差别只在读出,色深表示计数高低而不是概率。计数只适用于 adversarial 划分。Token-Set Audit

更麻烦的是,那个「固定 ID」连跨模型常量都不是。一种是逐字搬运 LLaVA-1.5 的 LLaMA-2 词表 ID,另一种是用各模型自己的 tokenizer 现场导出单 token 的 yes/no ID,还有一种是贪心解码后解析首个 yes/no 子串。搬运 ID 的读出在 LLaVA-1.6-Mistral-7B 和 Qwen2-VL-7B 上 F1 直接归零,因为它们的词表在这些 ID 上没有 yes/no 概率质量,两次比较每次都给出同一结果;而在共享 LLaMA 家族 ID 的 mPLUG-Owl2 与 InstructBLIP 上仍能工作。tokenizer 导出的读出在五个模型的每个划分上都稳定在 0.80 到 0.92,模型之间的差异这时才是真实的精度差异。字符串解析在 InstructBLIP 上塌到 0.6667 的全 yes 地板,原因在解析而不在模型,解码文本不以答案 token 开头,首个 yes/no 子串取错了位置。

图注:同一批表层形式在不同词表下映射到不同 token ID。左块 LLaVA-1.5-7B 用 LLaMA-2 词表,' Yes'=3869 与 ' No'=1939 被标为实际生成;右块 LLaVA-1.6-Mistral-7B 用 Mistral 词表,Yes=5592 与 No=1770 是单 token,带空格的四种被切成两个 token,进不了首 token 比较。这是词表切分差异,不是模型能力差异。Token-Set Audit

论文还留了一条读者能自己验的路径。9,000 条预测级记录公开可下载,每题记录 question_id、label、两种读出下的预测标签和首 token ID,不用跑 GPU 就能复算 F1 与 yes-rate,也能核对 3582 和 1217 是否真的从未出现。需要提醒一句,这份资产与论文同源,属于作者自带的复现材料,不是第三方独立验证。

顺带一提,作者还花了约 90 GPU 小时试了九个推理期修正方法,没有一个超过八 token 基线的 0.8221;3,000 题的注意力探针则显示,预测错误的样本反而把更多注意力放在图像 token 上,与「增强 grounding 就能纠正」的假设方向相反。这说明 adversarial 划分的抵抗本来就是按设计工作的。

读出没对齐之前,已发表的 POPE 增益数字不可比

把这条逻辑推到已发表工作上,得到的是一个克制但很硬的结论:跨研究的 POPE 增益目前无法比较。论文调研了六篇在 POPE 上报告增益的幻觉缓解工作,逐篇记录它们自报的基线、结果、增益,以及论文自己声明的读出方式。六篇的读出一栏全部是「未声明」。

工作时间自报 adversarial 基线到结果增益声明的读出
Huo et al.202480.90 → 82.50+1.60未声明
Chen et al.2025-0381.00 → 81.80+0.80未声明
Tang et al.(VisFlow)2025-0673.54 → 84.35+10.81未声明
Seo et al.2025-1079.30 → 80.00+0.70未声明
Jiang et al.(Active-Look)2026-0475.06 → 80.82+5.76未声明
Jana et al.2026-0582.07 → 83.03+0.96未声明

两个数字值得停一下。第一,在同一个冻结 checkpoint 上,这六篇自报的基线从 73.54 一路到 82.07,跨度 8.53 分;光是其中三篇的 73.54、79.30、81.00 就已经跨了 7.46 分。第二,adversarial 上的自报增益区间是 +0.70 到 +10.81,其中五篇的增益小于读出单独造成的 6.13 分位移。也就是说,同一批模型输出只换一种读法,能移动的分数比其中五篇论文报告的全部改进还大。Token-Set Audit

唯一被展开核对的是增益最大的那一篇。VisFlow 的提问模板、3,000 条测试用例、贪心解码与最大生成长度都写清楚了,但全文含附录对答案读出规则零命中,也没有声明推理精度,并且截至核对时点没有公开实现。VisFlow 需要强调:未声明不等于未使用,不能从任何一篇的基线数值反推它用了哪种读出,也不能把本文作者自己的 0.8221 当作别人的基线,因为那个参照跑在 4-bit NF4 量化下,混进去的是读出效应加精度差。2026 年的那篇 Active-Look 只报 adversarial 一个划分,同样对读出与精度保持沉默;这里还要留意它的 arXiv 记录摘要字段被错置成了另一篇论文的内容,引用时须以全文为准。Active-Look

作者在这里划了一条很清楚的边界,这条边界本身就是结论的一部分。他明确拒绝写一个形如「N 篇论文的增益蒸发」的标题式断言,因为可核实读出的论文数量是零,所以谁也不能判定那些增益变大还是变小。论文的原话是,这里没有任何结果说明这些方法对 LLaVA-1.5-7B 无效,或者其实际增益低于报告值,每种增益在配对协议下的大小至今未知。Token-Set Audit

所以这一章的结论要两面一起读。可以确认的是位移的量级本身不容忽视,6.13 分超过了其中五篇所报的对抗增益;不能确认的是任何一篇方法是否有效。要让后一个问题可解,前提是读出与数值精度固定并记录下来的配对重跑,而这件事目前一次都没有做到。

把读出当成协议记下来:四条实践清单,以及它明确的适用边界

论文给读者的落点是四条成本很低的建议,加上一条被划得很窄的适用边界,而这两样东西都围绕同一件事:把读出当成评测协议的一部分记下来。第一,逐题记录模型生成的首 token ID 以及它的解码串,事后就不必再猜读出约定。第二,在确切使用的提示模板下核对 yes/no token 集,不同后缀会把首 token 概率质量推到不同的表层形式上。第三,优先使用 tokenizer 导出的单 token logit 读出,它只依赖 logit 向量,不依赖生成循环返回什么文本。第四,发布预测级记录,让审稿人能自行重算任何聚合量并独立核对读出约定。

第三条建议有可以直接照抄的实现形态:用模型自己的 tokenizer 编码 ["yes", "Yes", " yes", " Yes"] 与 ["no", "No", " no", " No"],只保留长度为一的单 token 结果,生成时限制 max_new_tokens=1 并不采样,最后比较两边的最大 logit。关键过滤条件就是「只保留单 token」,在 Mistral 词表下带空格的四种写法会被切成两个 token 从而被静默排除,这正是它和固定八 token 读出在不同模型上表现不同的原因。同样一段代码在论文的五个模型上无需改动即可运行,除了初始化时编码四个短字符串之外不增加生成开销。要迁移的是这套诊断流程,而不是固定的八个 ID。配套的 pope-audit 包把这些常量与指标函数做成了公开接口,另有 100 题诊断脚本用于确认 argmax 落在 token 集内,缺 ID 就先补集合。ugaa-research

第四条建议的必要性,在官方仓库那里能看到反面对照。POPE 官方从不发布 yes/no 的预测级结果文件,也不记录模型回答的首 token,所以在它的上游产物上「换一种读出重新打分」根本做不到。

同类失效也不止发生在 POPE。在细粒度情绪识别基准上,只改读出就能把结论从「通用模型不行、必须训专用模型」翻转成「通用模型越过人类锚点」;更干净的是那篇论文的对照实验,把同一批已经存盘的连续概率在 0.5 处阈值化,不跑任何新推理、题目一字不改,收益就消失了,二值化后的落点甚至低于生成式读出的平均水平。这说明收益来自连续概率,而不是「把问题改成了二元形式」这件事本身。Readout Failure

图注:丢掉梯度就丢掉收益。实心方块表示同一批已存盘答案按连续 P(yes) 读出的落点,范围 0.507 到 0.586;空心方块是把同一批答案在 0.5 处阈值化后的落点,范围 0.254 到 0.423,每对点以灰线相连;圆圈标出生成式读出的范围,竖直虚线是 0.468 的人类锚点。两组落点之间的差距只来自读出方式,题目本身一字未改。Readout Failure

同时也要看到这套思路的边界。另一篇把基准审计做成常规流水线的工作,把检测器搬到 951 道 yes/no 题的 HallusionBench 上时发现自己失去校准,用逐题视觉增益去还原基准自己的设计标签只达到 AUC 0.49,也就是随机水平;零增益超额虽然仍然显著,但校准检验没过。Benchmark Audit 这提示的是同一件事:POPE 这类二元基准恰恰落在现成审计工具的已验证范围之外,它需要的是本文这种针对读出本身的审计。

论文自己把适用范围划得很窄,而且拒绝越界。技术面上它只覆盖 LLaMA 家族 tokenizer 加 ASSISTANT: 模板加贪心解码加二元问答;主审计只用一个 checkpoint 和一种 4-bit NF4 量化,所以 6.13 分位移在更高数值精度下是否同量级尚无答案;九个推理期修正只在 adversarial 划分上跑过;跨模型只有五个;6.13 分位移也还没有第三方独立复现,论文目前是 workshop poster 级预印本。

把读出当成协议的一部分记录下来并公布出去,是读者今天就能做、成本最低、也最能改变一篇评测论文可信度的一步。至于那些已发表的增益到底有多大、是否成立,得等有人把读出与精度对齐之后重跑一遍才能回答,而这正是这篇论文留给社区的作业。

想深入可以读原文:Token-Set Choice Confounds POPE: A Systematic Audit of Yes/No Extraction in VLM Hallucination Evaluation — arXiv:2610.25964

参考文献

  1. Kesav Kumar Jayakumar, Karthigeyan Thilak. Token-Set Choice Confounds POPE: A Systematic Audit of Yes/No Extraction in VLM Hallucination Evaluation. arXiv:2610.25964. https://arxiv.org/abs/2610.25964
  2. Yifan Li, Yifan Du, Kun Zhou, Jinpeng Wang, Wayne Xin Zhao, Ji-Rong Wen. Evaluating Object Hallucination in Large Vision-Language Models(POPE). EMNLP 2023, arXiv:2305.10355. https://arxiv.org/abs/2305.10355
  3. RUCAIBox/POPE 官方代码与数据仓库. https://github.com/RUCAIBox/POPE
  4. Haotian Liu, Chunyuan Li, Yuheng Li, Yong Jae Lee. Improved Baselines with Visual Instruction Tuning(LLaVA-1.5). arXiv:2310.03744. https://arxiv.org/abs/2310.03744
  5. ugaa-research 配套复现资产(pope-audit 包与 9,000 条预测级记录). https://github.com/Kesav2k04/ugaa-research
  6. Ari Holtzman, Peter West, Vered Shwartz, Yejin Choi, Luke Zettlemoyer. Surface Form Competition: Why the Highest Probability Answer Isn't Always Right. arXiv:2104.08315. https://arxiv.org/abs/2104.08315
  7. Quantifying Language Models' Sensitivity to Spurious Features in Prompt Design. ICLR 2024, arXiv:2310.11324. https://arxiv.org/abs/2310.11324
  8. Lexiang Tang et al. Not All Tokens and Heads Are Equally Important: Dual-Level Attention Intervention for Hallucination Mitigation(VisFlow). arXiv:2506.12609. https://arxiv.org/abs/2506.12609
  9. Yubo Jiang et al. Global Context or Local Detail? Adaptive Visual Grounding for Hallucination Mitigation(Active-Look). arXiv:2604.24396. https://arxiv.org/abs/2604.24396
  10. Tobias Hallmen, Fabian Deuser, Robin-Nico Kampa, Norbert Oswald, Elisabeth André. The Failure Is in the Readout: Fine-Grained Emotion Recognition Benchmarks Measure Elicitation, Not Perception. arXiv:2610.08162. https://arxiv.org/abs/2610.08162
  11. Denis Degtiarev et al. Auditing VLM Benchmarks from Existing Evaluation Runs. arXiv:2610.13548. https://arxiv.org/abs/2610.13548
  12. Yinghao Guo et al. Hallucination in Multimodal Foundation Models: A Survey on Causes, Corrections, and Evaluations. arXiv:2410.15359. https://arxiv.org/abs/2410.15359
POPE 的幻觉分数,有多少取决于「怎么把回答读成 yes/no」?