LLM 拒答的两条轴:模型知道“不该答”,却不一定会说出来
一个大语言模型拒绝回答,通常被我们想成一件事:它“不够确定”。
如果模型对答案很有把握,就回答;如果概率低、熵高、候选答案分散,就拒答。很多 hallucination 检测和 selective prediction 方法,本质上都在调这样一根尺:置信度过线就放行,没过线就拦住。
这篇论文最有价值的地方,是把这根尺掰断了。它说:一个模型答不答,不只有“会不会答对”这一件事。还有另一件更前置的问题:这个问题本身该不该被回答?一个普通可答问题被模型答错,和一个带假前提、无确定答案的问题被模型流畅回答,是两类风险。前者是执行失败,后者是合规失败。把它们都塞进“置信度低”里,正是很多拒答系统看起来合理、实际漏掉危险问题的原因。

先把几个概念放在桌面上
我们先不急着看表格。想象三类问题。
第一类是 C:问题可答,而且模型答对了。比如问“法国首都是哪里”,模型说巴黎。第二类是 W:问题可答,但模型答错了。比如同一个问题,模型说里昂。第三类是 U:问题不该被直接回答。它可能没有确定答案,也可能带着假前提,比如“为什么拿破仑发明了互联网?”一个安全的模型不应该顺着这个前提往下编。
论文关心的“答案正确性”(correctness)主要区分 C 和 W:这次尝试有没有成功。“问题可答性”(answerability)主要区分 C/W 和 U:这次尝试本身是否 admissible,是否应该发生。普通输出置信度像考完试后的自信程度;隐藏状态探针则像在模型内部问:它在看到题目时,是否已经感觉到“这个题的前提不稳”。真正的拒答系统,需要同时管住两件事:别把错答案说出去,也别把不该回答的问题当成正常问题回答。
一根置信度尺为什么会失效?
直觉上,我们可能会说:如果问题有假前提,模型应该也会不自信吧?它不知道拿破仑发明互联网,输出概率应该低,熵应该高,最终自然会被置信度阈值拦住。
问题是,大模型经常不是这样工作的。它可以对一个不成立的前提非常流畅地续写。它不一定先停下来检查“这个问题是否有合法答案”,而是把用户问题当成一个文本续写任务:给出一个听起来像答案的段落。
论文在 SelfAware benchmark 上把这个直觉做成了同一批决策上的三状态几何。实验用五个 instruction-tuned 模型,来自三个模型家族:Gemma 2 2B-it、Qwen2.5-3B、Qwen2.5-7B、Llama-3.1-8B、Qwen2.5-14B。每个模型在平衡样本上各回答一次,记录两类输出置信度特征:greedy answer 的平均 token log-probability,以及 first-token predictive entropy;同时记录 prompt-token 的 hidden states,再训练同容量的 L2 正则 logistic readout。
如果输出置信度真能承担“拒答总开关”,它应该既能读 correctness,也能读 answerability。但表 1 给出的结果很尖锐:输出特征读“正确性”的 AUROC 还能到 0.64–0.84;读“可答性”却只有 0.54–0.67,而且没有随模型变大改善。14B 上甚至是 0.54。相反,隐藏状态读“可答性”几乎到顶:0.97–0.99。

这里最关键的不是“探针很强”这句泛泛结论,而是三类点在二维空间里的摆放方式。以 Gemma 2B 为例,普通 answer-confidence 的标准化均值是 C=0.77、W=-0.23、U=-0.05。它能把 C 和 W 拉开,C-W gap 是 1.00;但它几乎分不开 W 和 U,差值 -0.19,置信区间 [-0.43, 0.06] 包含 0。也就是说,在输出置信度眼里,“可答但答错”和“根本不该答”很像。
hidden answerability readout 则反过来:C=0.90、W=0.86、U=-0.90。它几乎不区分 C 和 W,因为两者都可答;但它把 W 和 U 拉开 1.76。论文把这个叫 crossed geometry:同一批决策,不是沿一条轴从好到坏排列,而是形成一个 L 形。置信度管“尝试是否成功”,可答性管“尝试是否合规”。
作者还专门排除了一个容易想到的反驳:是不是因为 answerability probe 训练时把 C 和 W 都标成 answerable,所以它当然会把 C/W 放在一起?他们改成只用 C-versus-U 训练方向,完全不让 W 参与训练,再看 held-out W 落在哪里。结果 W 仍然和 C 在一起、远离 U;W-versus-U AUROC 是 0.97–0.98。也就是说,这个 collapse 不是标签设计硬塞进去的,而是 hidden state 里确实存在这样的可答性方向。
但这不是“隐藏状态神谕”的故事
如果文章写到这里就停,结论会太漂亮,也太危险。SelfAware 的 answerable 和 unanswerable 问题来自不同来源和语义类别,本来就有词面差异。论文很诚实地做了一个 surface confound 检查:只用问题文本的 hashed bag-of-words logistic,就能以 0.87 AUROC 预测 answerability。
这个数字很重要。它说明 SelfAware 上 0.97–0.99 的 hidden probe 表现,不能被解释成“模型内部独有的深层理解”。相当一部分信号在表面词汇里就能被读出来。论文的正确说法不是“输出完全不知道可答性”,而是更窄也更可靠的一句:普通 answer-likelihood,也就是我们常拿来做拒答阈值的输出置信度,读不到可答性。
显式问模型“你能正确回答这个问题吗?”也能恢复一部分信号。P(IK) elicitation 在 Gemma 2B 上到 0.88,在 Llama 8B 上到 0.81,但 Qwen 系列只有 0.61–0.66,而且仍然达不到 hidden readout。论文还做了 surface-disjoint transfer:用 SelfAware 训练的 probe 去读一个关于虚构国家 vs 真实国家的 matched-template set,AUROC 是 0.76;反向迁移是 0.64。这个控制告诉我们:可答性方向有一部分不是某个 benchmark 的词面捷径,但 SelfAware 本身确实不干净。
这就是这篇论文的一个优点:它没有把 probe 的高分包装成神秘发现,而是把 claim 缩到证据能支撑的位置。真正更自然、也更难的测试,要看假前提。
假前提:模型最容易“自信地犯规”的地方
CREPE benchmark 更接近日常产品里的风险。它的所有问题都来自 Reddit ELI5,同一个来源、相邻时间段;其中大约四分之一带 false presupposition。比如问题表面上像一个普通求解释的问题,但里面嵌了一个不成立的事实。如果模型顺着解释,就是在承认那个假前提。
论文在 CREPE 官方 test split 上取 500 个正常问题和 500 个 false-presupposition 问题,使用同样协议。因为 ELI5 答案是长文,CREPE 只提供 admissibility 轴,不提供容易 alias-match 的 correctness 轴。
结果比 SelfAware 更像真实警报。raw answer-confidence 检测假前提的 AUROC 只有 0.49–0.58;训练过的 output readout 也只有 0.50–0.58。也就是说,模型对假前提问题和正常问题一样流畅、一样自信。直接问模型也帮不了太多:P(IK) 只有 0.54–0.66,P(True) self-evaluation 只有 0.54–0.58,premise-check elicitation 在四个模型上 0.64–0.67,在 Qwen2.5-3B 上甚至 0.43。论文特别提到,Qwen2.5-7B 的 premise-check score 均值在 sound questions 上是 0.93,在 false-premise questions 上仍有 0.84;换句话说,即使被要求检查前提,它也大多说“前提没问题”。

内部信号没有 SelfAware 那么夸张,但仍然明显更强。CREPE 上 hidden logistic readout 是 0.69–0.73,difference-of-means direction 是 0.74–0.78,SelfAware→CREPE transfer 是 0.65–0.70。bag-of-words surface bound 只有 0.59,远低于 SelfAware 的 0.87。这组数的含义很克制:自然假前提上的可答性信号不是近乎完美的,但它确实比所有输出侧信号更可用。论文摘要里把它概括为 internal linear readouts 0.69–0.77,而输出自评最高也只到 0.67。
这对安全评测很有启发。我们常说模型“知道自己不知道”。这篇论文提醒我们,要区分三层:第一,模型内部是否编码了某种不可答信号;第二,模型是否会在普通回答中显露这个信号;第三,模型被明确要求自检时,是否能可靠报告这个信号。CREPE 的结果显示,第一层有,第二层几乎没有,第三层也很弱。
只靠提示词让模型检查前提,为什么会误伤?
如果隐藏状态里有信号,一个自然想法是:我们能不能不训练探针,只在 prompt 里加一句“如果问题包含假设错误,请指出它而不是回答”?
论文做了一个很有教学意义的 pilot。对象是 Llama-3.1-8B,120 个 false-premise 和 120 个 sound CREPE 问题,全部来自 admissibility probe 没训练过的那半数据。标准 prompt 下,模型明确 contest false premise 的比例是 0%。它基本都顺着答了。
challenge prompt 下,情况看似改善:它 contest 了 74% 的 false-premise 问题。但坏消息是,它也 contest 了 57% 的正常问题。也就是说,提示词不是让模型获得了分辨能力,而是把它的“怀疑阈值”整体推低了。它开始到处找毛病,甚至对没问题的问题编造 premise denial。论文给的例子包括把“白天必须开车灯”或“Neosporin 是抗生素”之类的前提错误地否定。
这正好解释了为什么“让模型自我纠错”经常不稳定:如果模型本来不能可靠判断哪类输入有问题,那么强行要求它质疑,只会把错误从“盲目回答”换成“盲目反驳”。
探针的作用不是替模型写答案,而是路由行为。论文用 out-of-sample hidden probe 决定什么时候使用 challenge prompt:只有 answerability score 低时才挑战。把路由预算固定在 35% 问题上,probe-gated policy 在 Llama 上 contest 42% 的 false premise,同时只误伤 14% 的 sound questions。随机 gate 在同样预算下是 26% / 20%;always challenge 是 74% / 57%。Qwen2.5-7B 的复现实验也类似:always challenge 是 76% / 78%,几乎没有分辨;probe-gated 是 41% / 16%。

这里仍然有边界。contest 了假前提,不代表修正一定正确。论文用 NLI 对 challenge outputs 和 CREPE gold corrections / annotated presuppositions 做校验,Llama 有 47% 的 false-premise items 得到 NLI-validated correct contest,Qwen 是 61%。Llama 中,39% 同时 explicit 且 validated;explicit contests 里有 53% validated。没有通过的部分,有些是 NLI 漏判,有些是真正把纠错也编错了。换句话说,探针能改进“什么时候该切换行为”,但“切换后能不能正确解释前提错在哪里”仍然是另一个瓶颈。
拒答策略也应该有两份风险证书
论文最后把这个几何变成一个 policy 问题。设三类样本为 C、W、U。一个 policy 选择 emit 或 abstain。它要同时控制两种风险:对 U 仍然 emit 的风险 RU,以及对 W 仍然 emit 的风险 RW;同时尽量保留对 C 的覆盖率 CovC。
单轴策略都不够。只按 answer-confidence 阈值做 conformal abstention,因为 W 和 U 在这条轴上重叠,要压住 RU 就会过度拒答;论文报告它能认证时的 C-coverage 只有 0.12–0.31,test coverage 在任何模型上都不超过 0.41,14B 上还直接认证失败。只按 answerability 阈值也不行,因为 C 和 W 在 answerability 轴上重叠;它不能把 wrong answer 风险压到模型自身错误率以下。
Factorized Abstention 的规则很简单:同时过两道门才回答。answerability score sA 要高于阈值 τA,confidence score sC 要高于阈值 τC。阈值在 tuning split 上选好,冻结后在独立 certification split 上用 Clopper–Pearson upper bounds 做风险认证,目标是 αU=0.15、αW=0.50、δ=0.10。
关键结果在 8B 和 14B 上最有意义。Llama-3.1-8B 的 factorized policy 同时认证两份风险预算,C-coverage 是 0.75;只用 answer-confidence 的认证覆盖率是 0.31。也就是题目里那个很适合被记住的数字:0.75 vs 0.31。在 Qwen2.5-14B 上,factorized policy 是唯一认证成功的策略,C-coverage 0.47;输出置信度在那里反而最盲。
但论文没有把矩形门说成最优。learned two-signal scalar combiner 在能认证的地方覆盖率更高:Gemma 上 0.88,8B 上 0.81,高于 factorized 的 0.75。问题是,融合成一个标量以后,你失去了“每条轴分别担保什么”的可解释证书。如果部署场景需要分别报告“不可答问题被回答的风险不超过多少”和“可答但答错仍被回答的风险不超过多少”,factorized form 的价值就在这里。
还有一个很现实的限制:wrong-answer budget 被模型准确率卡住。2B–3B 模型在 SelfAware answerable items 上准确率只有 0.28–0.30;想压住 W 风险,就会被迫拒答大多数问题。8B 准确率到 0.42,认证才变得更可用。作者还做了 100 次 resplit audit:在已发证书的 replicate 中,unanswerable budget 在 held-out test 上从未被违反;wrong-answer budget 的违反率是 0 到 5.6%,与每个 bound 5% allowance 大体一致。Llama 8B 有 68/100 次 resplit 能发证,Gemma 2B 只有 18/100 次,说明认证可重复性也随能力变化。
这篇论文证明了什么,又没证明什么?
它证明了几件相当具体的事。
第一,在 SelfAware 的同一批决策上,C/W/U 不是沿单一置信度轴排列,而是呈现互补几何:输出置信度分 C vs W/U,hidden answerability 分 U vs C/W。这个模式在 2B 到 14B、五个 instruction-tuned 模型上出现;不过论文正文对“稳定到 8B”更谨慎,因为 14B 使用 4-bit quantization,7B/8B 使用 8-bit quantization,虽然 3B 上验证了量化管线的一致性。
第二,在自然假前提 CREPE 上,普通输出置信度和多种显式自评都很弱,hidden/internal direction 仍有中等信号。这个结论比 SelfAware 更有安全意义,因为 CREPE 的两类问题来自同一用户分布,surface confound 小得多。
第三,内部可答性信号不只是离线指标。它可以路由 premise-check prompt,减少“总是质疑”的误伤;也可以和 correctness/confidence 轴组合,产生双风险认证的拒答策略。
但它没有证明几件同样重要的事。
它没有证明 hidden states 天然拥有完美的“真理传感器”。CREPE 上最可靠的内部 AUROC 也只是 0.69–0.77 区间,远不是可直接上线的神谕。它没有证明所有输出方法都无效;论文没有评估 sampling-based semantic entropy,输出 baselines 是 single-pass 的 confidence readouts、P(IK)、P(True) 和 premise-check。它也没有证明因果性:不同于 Slobodkin et al. 和 Lavi et al. 的一些工作,这篇论文没有对 answerability direction 做 causal intervention。它的证据主要是 observational plus policy。
还有规模边界。论文自己写得很清楚:这些模型仍小于 frontier 级别,70B 及以上模型可能有更好的显式自评;hidden correctness readout 已经从 3B 到 8B 明显变强。SelfAware 的 correctness 又依赖 alias matching,正确答案数量少;CREPE 的假前提标注也有歧义。认证 splits 里 wrong-answerable items 只有 18–22 个,所以 αW 比 0.5 更紧时,无论信号质量如何都很难认证。所有数据都是英文。
真正的启发:把“不知道”拆成结构化状态
这篇论文的贡献,不是第一次发现“模型隐藏状态知道不可答”。作者自己也承认,Slobodkin et al.、Lavi et al.、query-level uncertainty、P(True)/P(IK) 等工作都已经很接近。它真正推进的是一个系统设计观念:拒答不是把所有不确定性揉成一个分数,而是把失败模式拆成结构化状态。
在产品里,这个区别很实际。一个医疗问答模型答错一个正常问题,和它顺着用户的假前提编出一个病因,是不同事故。一个企业知识库 bot 不知道某份文件里的事实,和用户问了一个根本不存在的合同条款,也是不同事故。前者需要更好的 correctness reader,后者需要 answerability / premise reader。用一根置信度尺,不仅解释不了事故,也很难给出可审计的风险边界。
更大的方向,是论文结尾暗示的 open-world boundary:系统应该显式知道哪些问题落在它能闭世界判断的区域内,哪些在边界之外。今天的 LLM 往往把“低支持度”当成“可能错”,再把“可能错”压进一个拒答阈值。但很多时候,真正要表达的是:这个问题的前提不被接受,或者这个对象不在可判定域里。
如果我们把拒答看成二维甚至多维逻辑组合,安全系统就不再只是“置信度校准器”,而更像一个有命名谓词的路由器:这个问题可答吗?这个答案可信吗?这个前提被支持吗?这个领域在系统能力边界内吗?每个谓词都有自己的证据、自己的阈值、自己的风险证书。
这比“一句话让模型更谨慎”麻烦得多。但 CREPE 的结果已经说明,单靠谨慎提示词会让模型到处误伤;而普通置信度会让假前提安静穿过去。真正可靠的拒答,可能必须先承认一件事:模型不是只有“知道/不知道”两种状态,它至少有“会不会答对”和“该不该作答”两条轴。
参考
- Benedikt J. Wagner, “Two Axes of LLM Abstention: Answer Correctness and Question Answerability”, arXiv:2607.08456v1, 2026.
- SelfAware: Yin et al., “Do large language models know what they don’t know?”, ACL Findings 2023.
- CREPE: Yu et al., “CREPE: Open-Domain Question Answering with False Presuppositions”, ACL 2023.