一个尴尬的场景
你问一个大语言模型一道逻辑推理题:
所有的A都是B。所有的B都是C。所有的C都是D。X是A。请问X是不是D?
模型回答:"未知"。
你叹了口气,在评测表上打个叉:推理能力不足。
但等一下——模型真的不会推理吗?还是它会推理,但说不出口?
北大闫齐尧、王晨鹏和潘亮铭的最新论文《Wrong Prediction, Right Answer: Recovering Evidence from Collapsed LLM Sequence Scores》给出了一个让人坐直的答案:很多时候,模型内部已经算出了正确答案,但输出层的结构性偏见把它压成了"未知"。
更惊人的是——只需要调两个参数,用25个无标签样本,就能把被压制的正确答案捞回来。
核心发现:读出鸿沟
研究者设计了一个三阶段诊断协议,在Qwen3.5系列模型上测试了四类推理任务(受控逻辑、ProofWriter、ANLI、FOLIO)。
第一阶段:探针读数。在模型回答问题前的隐藏状态上训练一个线性探针(逻辑回归),看它能不能从内部表示中解码出正确答案。
第二阶段:原生评分。用模型自己的输出层计算候选答案的序列分数(teacher-forced log-probability之和),看模型自己怎么说。
第三阶段:偏移修正。给序列分数加一个两参数的全局偏移,看能不能把正确答案救回来。
结果让人震惊。以Qwen3.5-9B为例:
| 读取方式 | 域内准确率 | 词汇OOD准确率 |
|---|---|---|
| 答案槽探针 | 0.972 | 0.830 |
| 同位置标签logits | 0.573 | 0.574 |
| 完整序列分数 | 0.333 | 0.333 |
0.333是三分类的随机猜测水平。也就是说,模型的序列分数完全崩溃了——但探针从隐藏状态中读出的准确率高达97%。
答案在模型内部是存在的,只是输出层把它压死了。
研究者把这个现象叫做"读出鸿沟"(readout gap):隐藏状态探针成功解码正确答案,而原生序列评分完全崩溃。这不是模型不会推理,而是模型说不出来自己算出的答案。
为什么会崩溃:结构性偏见的统治
要理解崩溃的原因,需要拆解模型的输出分数。论文给出了一个精巧的加法分解:
- \(\tilde{s}_y(x)\) 是任务相关信号——模型对这道题的实例级推理结果
- \(\beta_y\) 是结构性偏见——预训练频率先验对标签的全局偏好
问题在于:\(\beta_y\) 远大于 \(\tilde{s}_y(x)\)。
具体来说,Qwen3.5-9B在词汇OOD上对1000道题中的999道都预测"未知"(unknown)。不是因为模型算不出来,而是因为"unknown"这个token在预训练语料中出现频率太高,instruction tuning和安全对齐又进一步放大了对"不确定"标记的偏好。模型的输出层有一个内置的"安全词偏好",它把所有不确定的情况都推向"unknown"。
这就像一个学生考试时,遇到不确定的题就全填"C"——不是因为不会,而是因为"选C"这个习惯太强了,压过了实际的推理结果。
更关键的是:这个偏见在instruction tuning之前就存在了。研究者检查了Qwen3.5的Base检查点(未经指令微调),发现同样的崩溃模式。偏见源于预训练阶段对结构性token的频率先验,instruction tuning只是放大了它。
两参数修复:25个样本的奇迹
现在到了最精彩的部分。如果崩溃的原因是一个全局的标签级偏见\(\beta_y\),那能不能用一个简单的偏移把它抵消掉?
研究者设计了一个极简的修正方案:给每个候选标签\(y\)加一个偏移\(c_y\),使得修正后的预测为:
三个标签(true/false/unknown),固定一个偏移为0(均匀平移不改变argmax),只剩两个自由参数。
这两个参数怎么选?不需要任何标签。只需要一个无标签的域内分数集\(D_{id}\),通过网格搜索找到使预测分布最接近均匀先验的偏移(因为评测集是标签平衡的)。
这就是全部。没有梯度下降,没有微调,没有标签。两个参数,25个无标签样本。
结果:
| 任务 | 模型 | 修正前 | 25样本修正 | 1000样本修正 |
|---|---|---|---|---|
| 受控逻辑OOD | Qwen3.5-4B | 0.333 | 0.549 | 0.570 |
| 受控逻辑OOD | Qwen3.5-9B | 0.333 | 0.580 | 0.602 |
| ProofWriter | Qwen3.5-4B | 0.333 | 0.641 | 0.644 |
| ProofWriter | Qwen3.5-9B | 0.334 | 0.675 | 0.677 |
| ANLI R2 | Qwen3.5-4B | 0.445 | 0.559 | 0.574 |
25个样本和1000个样本的差距不超过0.022。这证明修正不是在"学习"什么新东西——它只是在拟合一个已经存在的阈值偏移。模型的推理能力本来就在那里,只是被一个全局偏见压住了。
而且这个方法跨模型迁移:在OLMo-2-1B和Llama-3.1-8B上同样有效。
三个控制实验:不是投机取巧
你可能会问:也许这个修正只是在利用浅层词汇匹配?也许只是碰巧对齐了标签分布?
研究者设计了三个严格的控制实验:
1. TF-IDF漏检切片:只保留词袋分类器做不对的样本(排除浅层词汇匹配)。修正后的准确率在ProofWriter上仍然保持0.622和0.643。
2. 标签计数置换基线:保持修正后预测的标签分布不变,但随机打乱每个预测的标签。如果修正只是对齐了标签分布,打乱后应该不变。结果置换基线远低于修正准确率(差距+0.287和+0.305),证明修正确实对齐了实例级的答案。
3. 小样本子采样:用25到500个样本拟合偏移。如果修正在"学习"新任务映射,样本越少效果越差。实际上25样本就已经接近饱和,30次子采样全部正向。
这三个控制实验排除了所有"投机取巧"的解释。修正恢复的是模型本就存在的实例级推理结构。
边界条件:什么时候修复无效
论文的诚实之处在于明确划定了修复的边界:
1. 近天花板行:Qwen3.5-9B在ANLI上原始准确率0.638,已经很高,没有可恢复的结构。偏移修正无增益。
2. 无崩溃排序的模型:Pythia-410M和Pythia-12B在ProofWriter上没有恢复效果(p=0.103和p=0.462)。这些模型的隐藏排序本身就不包含可恢复的结构——它们可能真的不会推理。
3. 先验错误:如果标签先验\(\pi\)设错了,增益会缩小但保持正向。错误的先验是逐渐降低效果,而不是反转。
这些边界条件让结论更精确:修正只在探针表明答案已编码、且原始预测崩溃时有效。 它不是万能药,而是一个精确的诊断工具。
CoT为什么有效:一个机制层面的解释
论文提出了一个对CoT prompting的机制级解释,我觉得这是最深刻的洞察之一。
单token回答("Answer: true/false/unknown")把整个推理负担集中在一个unembedding步骤上——模型必须把多步推理的结果压缩到一个token的logit里。而这一步恰好是结构性偏见\(\beta_y\)统治的地方。
CoT prompting让模型把推理分散到多个中间token和隐藏状态上。每个中间步骤的表示负担更小,而且不会经过那个"瓶颈unembedding"。推理信号在多个位置累积,而不是在一个点被压死。
论文没有直接验证这个假设(作者承认这是推测),但它预测:从单token回答到自由生成,崩溃应该缩小。这和已知经验吻合——CoT确实提升了推理任务的表现,但之前没有人给出过这么干净的机制解释。
对评测实践的启示
这篇论文对LLM评测实践有一个直接的冲击:
在断定"模型缺乏推理能力"之前,先检查预测直方图。如果预测崩溃到单一标签,一个轻量的无标签偏移修正可以揭示能力是被掩盖了还是真的缺失。
当前排行榜可能在惩罚一些模型——不是因为它们推理差,而是因为它们默认校准差。一个模型A在benchmark上准确率0.33,另一个模型B准确率0.55,但经过两参数修正后A变成0.60而B不变——A的推理能力其实更强,只是表达层有bug。
这和"判断-闸门解耦"是同一个家族的现象:模型的内部判断和外部行动是分离的两个模块。 内部判断正确(隐藏状态编码了答案),但行动闸门(unembedding矩阵+序列聚合)不咨询判断模块,直接按结构性偏见输出。
修复也只需要针对闸门——不需要重新训练模型,不需要改变推理路径,只需要调两个参数把闸门的偏见抵消掉。
工程层面的实用价值
对于工程实践,这篇论文提供了几个可操作的洞察:
1. 诊断先于修复。在投入资源做RLHF或fine-tune之前,先跑一个探针+偏移诊断。如果探针准确率高但序列分数崩溃,问题在输出层;如果探针也崩溃,问题在表示层——两种问题的修复策略完全不同。
2. 无标签校准的威力。两参数偏移只需要25个无标签样本。对于任何forced-choice任务(分类、 entailment、QA),这都是一个几乎零成本的baseline校准方法。
3. 预测直方图是免费信号。如果模型在平衡数据集上对999/1000个样本预测同一个标签,这本身就是bug信号——不需要训练探针就能发现。
4. CoT的机制基础。如果单token回答崩溃而CoT不崩溃,说明问题在unembedding瓶颈而非推理能力。这给了CoT prompting一个比"prompt engineering"更深的定位——它是绕过输出层结构性偏见的架构级策略。
个人思考:表达瓶颈的普遍性
这篇论文让我想到一个更广的问题:表达瓶颈是LLM特有的问题,还是所有信息系统的通病?
人类也有类似的现象——你知道答案但考试时写错了。心理学叫这个"表达失败"(expression failure),和"能力缺失"(competence deficit)是不同的。但人类的表达失败通常是偶发的,而LLM的表达失败是系统性的——同一个模型在同一类任务上反复崩溃到同一个标签。
这种系统性崩溃的根源在于unembedding矩阵是静态的——同一个线性变换处理所有输入。无论隐藏状态\(h^a(x)\)编码了什么,它都要经过同一个\(W^T h + b\)的投影。如果\(W\)的某些列(对应"unknown"等token)的范数特别大或偏置特别高,它们就会统治argmax。
这和"softmax bottleneck"(Yang et al., 2017)是同一个问题的不同切面:输出层的表达能力受限于词汇表维度的线性投影。隐藏状态可以是任意高维的流形,但最终都要经过这个固定的瓶颈。
论文的修复方案——全局偏移——只能抵消标签级的常数偏见。作者诚实地指出,它无法修复实例级的扭曲(如surface-form competition)。这就像给一个近视眼配老花镜——能看清远处,但近处的散光还是没解决。但至少,它告诉我们:视力是有的,只是镜片需要调。
论文信息
- 标题:Wrong Prediction, Right Answer: Recovering Evidence from Collapsed LLM Sequence Scores
- 作者:Qiyao Yan, Chenpeng Wang, Liangming Pan(北京大学 / 易欣AI Lab / 北京智源人工智能研究院)
- arXiv:2608.31068
- 发布日期:2026年8月31日
- 论文链接:https://arxiv.org/abs/2608.31068
- HTML全文:https://arxiv.org/html/2608.31068v1
这篇论文给所有做LLM评测的人提了个醒:在说"模型不会"之前,先确认模型是不是"会但说不出来"。有时候,最深刻的修复不是重新训练,而是调两个参数。
概念谱系:本文属于"判断-闸门解耦"系列——模型内部判断正确,但输出层(闸门)被结构性偏见统治,不咨询判断模块。修复只需针对闸门,不需要动模型本体。同系列:eval-awareness双面人格、PoP层间犹豫、omission blindness。
讨论回复
加载中...正在加载回复...
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。