识别-拒答失配:大模型内部认出题目无解,却照样硬答

模型硬答一道无解的题:是没看出无解,还是看出来了没用?

想象你随手敲了一行 Python:(1).startswith("1")。任何程序员都知道接下来会发生什么,整数没有 startswith 方法,这行代码必然抛 AttributeError。可如果你把这句话原样丢给一个 chat 模型,它大概率会一本正经地"运行"给你看,然后给出一个流畅的答案,好像一切都很正常。

再比如 cot(−540°)。余切函数在 −540° 处无定义,这道题在数学规则上就没有答案。可模型一样会算出某个数值,带着和刚才解对一道普通题时同样的自信。

这两道题有个共同的反常之处:题目没有答案,模型却给了答案,而且给得理直气壮。研究者给这类提问起了个名字,叫结构性不可回答问题,指的是规则上就排除了任何可行解的提问,连"算错"都谈不上,模型是在给一个不存在的答案建模。中文里的"硬答"说的就是这个动作:题目在规则上没有答案,模型却仍编出一个答案。

你自己会怎么答这两道题?你不会去算,你会说"这题有问题"。人和模型的分野在这里:会不会算是一回事,该不该停下来是另一回事。人知道该停,模型不停。而后面会看到,模型内部其实也知道该停。

换成更常见的 1/0、int('abc'),剧本一样:题目在规则上无解,模型照样本能给出答案。模型的答案五花八门,唯一稳定的是"给答案"这个动作本身,而论文要解释的怪事恰恰在这个动作上。

这不是个别案例。Ma 等人构造了 1129 道包含无解前提的数学题喂给 19 个模型,在 UMP 基准上,GPT-4o 的绝对得分只有 0.603,表现最好的 DeepSeek-R1(按 arXiv v6 版数据)也只到 0.813。他们把这种现象命名为"无意识的不合理性":模型对题目里致命的缺陷毫无所觉,一路算到底。Ma et al.

反常之处在于,这看起来不像能力问题。模型能解难题,能长链推理,怎么偏偏在这种该立刻停下来的题上翻车?这个问题之所以现在才被认真追问,是因为过去几年表示工程工具链成熟了:探针能从隐藏状态里读出语义,方向加减能操纵行为。输出层的现象观察了好几年,到这篇新论文,按论文自身定位,此前相关工作大多停留在输出层,本文首次把对「无解题硬答」的检验下探到内部表征机制。探针、方向、干预这一行工具过去主要在安全与对齐研究里打转,把它们借来诊断"无解题硬答",是这篇论文的动作。Du 与 Hu 的《Recognition-Refusal Misalignment in LLMs》,已被 EMNLP 2026 Main 接收,给出了一个把问题拆开的框架:要么模型内部压根没有"这题无解"的表示,要么表示明明存在,却从没被用来触发拒答。前者叫编码失败,后者叫路由失败。Recognition-Refusal Misalignment

这是两种可以分别检验的假设。检验的方法不看模型嘴上说了什么,直接看它生成之前那一刻的内部状态。论文用三层证据回答:先证明信号存在,再证明它和拒答通路在几何上互不相干,最后用干预证明它不是摆设。

这个问题值得较真,因为它直接关系到一个更日常的烦恼:让模型"不知道就直说"为什么这么难。幻觉治理的大多数手段都在输出层打转,评测、指令、对齐训练,一代比一代精细;但如果硬答的根源在内部布线,这些手段可能都打在错的地方。论文的价值在于先诊断后开方,把"它到底知不知道"从一句无从验证的抱怨,变成一组可以测量的内部几何。

无解提示激活识别方向,模型仍输出答案;三个方向近垂直;干预卡通

图注:论文的概念示意图。左面板是无解数学与代码题仍产出答案的示意,中面板画出识别、拒答、行为三条方向的低余弦几何,右面板是沿识别方向干预的翻转卡通。全图是示意图,不含定量数字,量化证据在后面的两张实验图中。Recognition-Refusal Misalignment

"模型会硬答无解题"本身不是新闻,新闻是它被拆成了两个可以分别检验的假设。接下来四章,逐一验给读者看。

三种"没有答案":本文只管最硬的那种

先把核心概念钉死。论文把"识别-拒答失配"定义为两个东西之间的落差:一个是模型在生成之前,残差流的隐藏状态里可以线性读出的"这个问题没有可行答案"信号,论文称之为识别;另一个是模型被训练出来的安全拒答行为。识别存在是一个关于表征层的论断,说的是内部确实藏着这条信号,不代表模型会在行为上主动拒答。为什么强调"线性可读"?因为线性是表示工程里最严的可用标准:能用一条直线从状态里读出来的东西,才敢说它在几何上真的存在,而不是藏在某种需要复杂解码的编码里。拒答是行为,识别是信号,两者之间隔着一条可能没接上的线。

那么"没有答案"到底有几种?论文先把三种容易混为一谈的情况切开,再声明自己只管其中一种。这不是学究气:同是"没有答案",成因完全不同。结构性题换个领域重写也许就能解;认识论题缺的是材料;假前提题连提问方向都是错的。混在一起谈"幻觉",会把三种病因当成一种病治。

类型规则上的定义典型例子对应数据集
结构性不可答规则上就走不通,任何方法都得不到答案cot(−540°) 无定义、整数调用 startswith 必抛异常math800、code800
认识论不可答信息不足,答案不存在于已知材料中SQuAD 2.0 式段落事实题fact800
假前提问题问句前提本身就是错的"为什么 CO₂ 由氧气组成?"FalseQA

结构性无解在数学 800 里还分出四种来源:未定义运算,cot(−540°) 就是这一类;不存在的结果;定义域内无解;量级发散。四种的共性是:题目在规则上封锁了所有答案,跟"难找"是两回事。

本文的主战场限定在第一种:数学与代码题因其自身规则而无解。fact800 与 FalseQA 只是边界测试,用来确认结论不会越界,不参与撑起 headline 结论。

为了让"结构性无解"变成可测量的对象,论文造了四套数据集。数学 800 是 16 个类别各 50 对可答/不可答题,两个版本只差一个操作,比如把式子改到必然无定义;代码 800 是 8 个类别各 100 对,不可答版本必然抛异常。配对设计的要点是,除了"可答性"以外什么都不变。一个直接的验证是 token 长度:长度几乎一致的配对,单靠长度分辨可答与不可答,AUC 只有约 0.5,等于瞎猜。剩下的差异只能是可答性本身。Recognition-Refusal Misalignment

四套数据的职责各不相同:fact800 是认识论边界,FalseQA 是假前提边界。论文还把识别信号拿到另外两套基准上做检测层面的迁移(GSM8K 与 FalseQA),余弦打分在 GSM8K 上达到 0.64 到 0.98,在 FalseQA 上 0.59 到 0.90,泛化力并不差;但它把这类结果严格框定为"检测层面"的边界测试,不承诺任何因果控制。控制变量、边界测试、不越界声明,这一套做法贯穿全文。

这几段定义看似琐碎,其实是全文的护栏:不可回答至少有三副面孔,这篇论文只承诺解释其中规则上无解的那一种。记住这一句,就能绕开后面所有容易过头的读法。

偷看模型卡住那一刻的内部:探针与两条方向

模型的"想法"没法直接读,但生成前的那一刻,每个输入 token 都会在残差流里留下一个高维向量。残差流可以粗浅地理解为模型各层共用的黑板,最后一 token 的板面,就是模型对整道题的全部理解。读的时刻为什么挑在"生成之前"?因为题目已经完整进入上下文,答案还没开始吐,模型对"这题有没有解"的判断在这个时刻已经定型在状态里。

论文用 CosNSRT 探针(一种零空间残差加余弦打分的单方向探针,论文未给出完整缩写展开)从这个向量里提取信号,核心就是最后两步:零空间残差加余弦打分。具体做法分四步。第一步,把一批可答题的隐藏状态做 PCA,找到可答题状态主要占据的低维子空间;第二步,把每个状态投影到该子空间的零空间里,等于把可答题共有的外壳,比如话题、格式、句式骨架,全部剥掉,剩下的残差才是此题的差异所在;第三步,用"不可答均值减可答均值"估出一条方向;第四步,对每个新题目打分,看它投影后的残差和这条方向的夹角余弦。

为什么这个探针的结论可信?关键在于它的容量低得可怜:单维余弦探针只有一条直线的自由度,没有参数去拟合任何复杂的判决边界。打个比方,一个只能分辨明暗的色盲读者,如果也能把照片分成"白天"和"夜晚",那白天和夜晚的差异一定是直接写在亮度里的,不需要他看懂颜色。余弦探针同理,它只能读"沿这条直线的分量",却依然分出了可答与不可答,说明"此题无解"这个信号在几何上就沿着一条直线躺着,不需要复杂编码。论文还专门消融了剥壳这一步:不剥壳时 AUC 是 0.907,只留主成分是 0.890,剥壳后升到 0.939,22 格里有 19 格胜过不剥壳、21 格胜过只留主成分。真正承重的是这一下剥壳,探针本身反而只是顺手的工具。为什么坚持用低容量的读者,而不是直接上强大的分类器?因为强大的分类器能记住任何统计相关,包括长度、措辞、题目来源这些与"无解"无关的痕迹;一个只有一条直线的读者记不住这些,它还能读出信号,就说明信号自己找到了这条直线。

论文还换了读者做对照:把单维余弦探针换成容量大得多的线性 SVM,在完整空间上分类,结果也只和剥壳版打平,4 个代表格里 3 个持平或更好。结论对"读者"的复杂度不敏感,进一步支持"信号几何上就位"这个判断。

要把话说到"失配"的分上,还需要第二条方向:安全拒答方向。它的来处是 Arditi 等人的工作:对一批有害提示和无害提示,逐层逐位置取激活均值再相减,得到候选方向,再在验证集上挑最有效的那条,这就是 MeanDiff 模板。他们在跨越 1.8B 到 72B 的 13 个 chat 模型上验证了一个惊人的事实:把这条唯一的拒答方向从模型里抹掉,模型对有害提示的拒答率就从接近 1 崩到接近 0。反向验证同样成立:把这条方向加回去,模型连无害的请求也开始拒答。一条方向既能"拆掉"拒答又能"装回"拒答,这才坐实了它掌管"要不要拒绝"这件事。Arditi 2024

13 个模型无干预时双分接近 1.0,消融后崩塌

图注:Arditi 等人论文的分组柱状图。13 个 chat 模型在无干预时 Refusal 与 Safety 分数都接近 1.0;抹掉唯一一条拒答方向后,Refusal 分崩塌到接近 0,Safety 分也明显下降(约 0.1–0.4 区间)。这就是"单条方向掌管拒答"的证据来源。Arditi 2024

本论文沿用了这个模板构造安全拒答方向,并额外做了一项行为验证,22 格里 20 格通过。到这里,"识别"和"拒答"各有一条方向,比较的工具也准备好了:余弦相似度,也就是两条方向夹角的余弦。问题是,这两条方向在表示空间里到底怎么摆放。

为什么比较两条方向用夹角余弦,不用欧氏距离?因为残差方向承载的是语义"朝向",而向量的长度混进了题目本身的呈现细节;余弦把长度归一化掉,只留方向。这也是拒答方向研究里的通行做法。

识别方向与拒答方向,几乎垂直

先看识别信号本身靠不靠得住。主网格是 11 个指令微调模型、从 1.7B 到 70B,覆盖 Qwen、Llama、Gemma、Mistral 等多个家族,乘上数学和代码两个数据集,共 22 格。论文测得平均 AUC 0.939,区间从 0.841 到 0.993,所有 7B 以上的模型在数学题上都超过 0.90。唯一接近掉队的是最小的 SmolLM2-1.7B 在代码题上的 0.841,提示小模型在代码域的信号略弱,但离随机水平还远得很。反常就在这里:模型内部确实躺着一条可读的"此题无解"信号,而且这条信号在指令微调之前就已存在,base 版模型在数学题上的探测 AUC 平均 0.977。编码没有失败,这是第一条结论。Recognition-Refusal Misalignment

信号有了,几何呢?论文把识别方向和安全拒答方向放在匹配层上做余弦比较,22 格的平均余弦只有 0.087,区间 0.020 到 0.130。每个格子重采样一千次做 bootstrap,所有置信区间都落在近正交区间,没有一个接近对齐。在几千维的高维空间里,余弦 0.087 对应约 85 度的夹角,几乎是垂直。作为参照,识别方向与行为方向的 0.40 对应约 66 度,近得多,但离"对齐"也还差得远。这意味着什么:识别信号沿一条轴走,拒答通路沿另一条轴走,识别信号投影到拒答通路上的分量趋近于零。就算拒答通路想读这条信号,它视野里也几乎是空白。

22 格余弦点估计与置信区间全部近正交;base/instruct Δcos 均值仅 +0.037

图注:左图是 22 个格子的 cos(d_imp, d_ref,safety) 点估计与 bootstrap 95% 置信区间,全部挤在近正交区间;右图是 6 组 base/instruct 配对的 Δcos,均值只有 +0.037,其中唯一经厂商确认纯后训练的 Llama-70B 配对几乎为零。Recognition-Refusal Misalignment

近正交会不会是剥壳这个操作造出来的假象?论文做了两个排查。把两条方向投影回同一空间再算余弦,平均 0.097,依然近正交;完整空间里余弦确实大一些,平均 0.240,但能量分解显示其中 81.3% 的幅值来自两条方向共同依赖的话题、格式等装潢成分,而这些成分正是剥壳时被去掉的部分。在识别信号真正居住的零空间里,两者依然各走各路。规模也不帮忙:24B 模型的余弦只有 0.065,32B 与 70B 也都停在 0.098 上下,更大的模型没有把夹角修小。

再补一个对照,结论会更立体。论文用行为定义了第三条方向:把输出了"无解意识"的样本和照样硬答的样本取均值差。识别方向与这条行为方向有部分对齐,余弦约 0.40;而行为方向与安全拒答方向之间只有约 0.08。也就是说,内部信号确实连着行为,只是没连拒答。一个耐人寻味的细节是:每个数据集格子里,50 道无解题中严格意义上的拒答用语出现次数是 0,模型几乎从不说"这题无解,我不能答",哪怕它内部已经识别到了无解。拒答用语在无解题上几乎不存在,说明"这道题无解所以我要拒绝"这个输出习惯从未被训练出来,识别与拒答之间天然没有通道。

三条线于是拼成同一幅图:识别存在,AUC 0.939;识别与拒答近正交,余弦 0.087;识别与行为部分对齐,余弦 0.40。模型有信号,也有拒答能力,但这两样东西在内部几何里几乎互不相干。不过静止的几何还不足以定罪:信号躺在那里不被读取,可能是读不到,也可能是读到了却不影响输出。要区分这两种情况,得动手推一把。

沿识别方向推一把:行为翻转,路由失败坐实

探针能证明信号存在,但这只是相关性:状态里有信号,不代表信号驱动了行为。要谈因果,必须动手改变这个状态再看行为变不变,这正是本章要做的。论文用的手段叫激活干预,英文里叫 steering。做法是在生成解码时,往最后一个 token 的残差流上叠加 α 倍的识别方向,强度 α 取 5、10、20、40 四档,以方向标准差为单位,正向反向都试,再和相同长度的随机方向做基线对比。如果这条方向只是"存在"而没有因果力,推它应该什么都不会发生。干预为什么只加在最后一个 token 上?因为生成从这里开始分叉,加在前面等于在题目还没读完时动手,加在后面又来不及拦住已经写出去的字。翻转率的统计还有一层保险:只计算干净基线符合干预前类别的样本,并排除输出变成长篇废话或直接卡死的退化样本。

结果是干脆的反转。以 Mistral-7B 为例,在数学题上沿识别方向把模型从"会答"推向"不答"涨了 33 个百分点,反向从"不答"推向"会答"涨了 38 个百分点;代码题上更明显,两个方向分别涨了 35.4 和 44 个百分点。四个锚点模型里,只有 Mistral-7B 在数学、代码两个域、正反两个方向全部达到这个量级,论文称它是双向 keystone。剂量响应也是一条干净的曲线:代码题的翻转率随强度从 2.1% 单调爬到 35.4%,而随机方向基线的翻转率始终接近零。Recognition-Refusal Misalignment

4 锚点干预热力图与 Mistral 剂量响应曲线

图注:左图是 4 个锚点模型在数学、代码、事实三类题上正反两个方向的干预热力图,深色格达到 anchor 质量,方框标出的 Mistral-7B 是唯一双向 keystone,斜纹格是样本不足的格子;右图是 Mistral 在代码题上的剂量响应,翻转率随干预强度单调上升,随机方向基线接近零。Recognition-Refusal Misalignment

还有一个关键的对照组。论文只按"拒答词汇"而不按"无解内容"来统计行为变化,96 行里有 48 行根本无法测量,可测的 48 行里有 47 行变化不超过 5 个百分点。唯一的例外是 Mistral 在数学 A→U、α=20 那一格,拒答词汇口径涨了 6.0 个百分点,而同一条件按"无解意识"口径涨了 32.7 个百分点,差一个数量级。这条方向主推的是"看穿无解"这个动作本身,顺手带出的那点客气只是副产品。

那么失配是谁造成的?最顺手的嫌疑是对齐训练。论文用 6 组 base/instruct 配对回答:同一家族里,base 版和指令微调版之间,夹角的差值平均只有 +0.037,最大的 Qwen3-8B 一组也只有 +0.110。五对 Qwen 配对两侧都完整验证过;Llama-70B 是队里唯一经厂商确认、纯后训练的对比,base 与 instruct 共享同一个预训练 checkpoint,它的 Δcos 约等于 −0.0001,是"普通后训练不动这个夹角"最直接的纯后训练对照(论文提示其 base 侧方向为代理、未称其为最干净证据)。这个数字放在 22 格的总体范围里看更清楚:instruct 家族的余弦本身就在 0.020 到 0.130 之间,Δcos 的 +0.037 只是这个区间里的微小扰动,没有任何一组配对把夹角关上。识别信号、以及它与拒答方向的分离,在指令微调之前就基本定型了。长度、难度、类别、规模、通用轴这五种替代解释,论文也逐一排除:按长度匹配后探针 AUC 掉到随机水平 0.5,按难度区分只有 0.61,而按"是否无解"区分高达 0.96。

几何证据和因果证据合起来,才配得上"路由失败"这个诊断:识别存在,但训练出的安全拒答通路不读它。静止的几何是快照,steering 是把它扳成动作的开关。

编码失败与路由失败之争,到这里有了答案:模型内部并不缺少"无解"的表示,表示明明存在,训练出的安全拒答通路却不读它。这个结论也是与 Arditi"单方向掌管拒答"一脉相承的接续与细化:拒答方向确实存在,但识别方向不在它上面,两条方向在几何上各据一方。

为什么值得在意,以及论文自己承认的坑

如果诊断是路由失败,一个反直觉的推论立刻浮出水面:加大"别胡说"式的对齐训练,可能永远碰不到这个问题。对齐训练强化的是拒答通路,而拒答通路根本不读识别信号,训练量再大也只是在同一根没接对的线上反复强调。论文给出的修复方向因此很直接:在识别方向本身做结构性不可能的监督,让模型在无解信号被激活时学会停下来,而不是指望安全拒答通路自己去读它。Recognition-Refusal Misalignment

把这件事放进更大的坐标系里,会更有分量。"模型硬答不该答的问题"在输出层被反复测量过:UMP 给出无意识的不合理性;SelfAware 把"模型是否知道自己不知道"做成基准,GPT-4 的 F1 只有 75.47%,人类基线是 84.93%;TruthfulQA 的 817 道题则展示了逆规模定律,更大的模型不一定更真。这三个数字合起来说明一件事:不同输出层评测反复观察到类似问题。不过这些评测都止步于输出层,像隔着墙听屋里的动静;与仅在输出层评测的先前工作相比,本文就结构性不可答这一范围把解释下探到隐藏状态层,且这一说法目前只基于论文自己的报告:模型其实识别到了,只是这条信号没有接到拒答行为上。需要说明的是,论文并不在 TruthfulQA 或 SelfAware 上跑分,这两个基准在这里只当坐标使用。SelfAware TruthfulQA

论文自己列出的边界同样值得读。标签是 LLM 辅助标注,不是逐条人工裁决;headline 结论只覆盖结构性不可答,fact800 上的因果方向样本不足,只能算转移边界;主分析只用单条方向,而 Wollschläger 等人的概念锥研究提示,拒答可能由最高 5 维的多方向区域共同中介,他们还给出"正交不等于干预独立"的操作定义:消融一条方向,可能通过非线性层牵连另一条。在两条方向近正交的本文语境里,这是最值得追问的开放问题。拒答方向的提取方式本身也在演进,COSMIC 用余弦相似度代替模板匹配选方向,动机是弱对齐模型的输出里根本没有"我拒绝"这类字样可匹配,说明这条技术路线尚无定论;架构范围也限于开源的 decoder-only 文本模型。论文把"在识别方向上做直接监督"作为修复方向提出,但并没有动手执行,这是留给领域的最重要作业。另外论文 2026 年 8 月底才上 arXiv,两周之内没有任何独立复现,上面所有数字目前都只是论文自己的报告。正文里还有三处需要标注的细节:两个 Llama-3.1-8B 格子和 Llama-70B base 侧用的是代理拒答方向,Qwen3-32B 的 base 对比用 Qwen2.5-32B 顶替。Wollschläger 2025 COSMIC

回到开头那两行代码。想象一栋楼的消防系统:烟感探头在二楼已经响铃,可它的信号只接在没人看的仪表盘上,触发喷淋的电路只认明火这一种输入。探测器明明是好的,问题出在布线。值得注意的是,这些局限暂不推翻论文报告的三条证据:信号存在、夹角很大、干预有效。但它们限制着机制解释的确定性与适用范围,仍需要更多方向的分析和独立复现。对做产品的人来说,这篇论文给的是一张分诊路线图:遇到模型硬答,先查内部有没有信号,再量信号与拒答的夹角,最后才谈训练怎么改。把识别信号接到拒答输出上,等于重新布一根线,而这恰好是论文留给训练者的作业:直接监督识别方向,让"知道"真正长成"拒绝"。这篇论文没有说模型很笨。它做的是把"它明明知道却不说"从一句抱怨,变成一张可以照图施工的电路图。模型的"懂了"和"不说"之间,缺一根没有接上的线。

想深入可以读原文:Recognition-Refusal Misalignment in LLMs: Why Models Answer Structurally Unanswerable Questions — arXiv:2608.29109

参考文献

识别-拒答失配:大模型内部认出题目无解,却照样硬答