← 文章 · English version

研究综述

大模型对自己的推理“知道”多少?来自模型内部的证据

一句话回答 —— 比它说出来的多,但比你能利用的少。隐藏状态能以 0.95 AUROC 预测思维链是否出错,而模型嘴上依然很自信;同一个推理概念写成散文、代码或数学,会落到同一个 10 维子空间里;而且这个子空间不只是输出读出方向的伪装。但这些信号只能用来诊断:沿着它们去调整,没能修正错误。

思维链给了我们一段看起来像推理的文字。我的三篇论文看的是文字底下的隐藏状态:模型对自己的推理表示了什么?这些表示可信吗、能用吗?

模型常常知道自己的推理在出错

在隐藏状态上训练的线性探针,预测一条思维链是否正确的 AUROC 达到 0.95,在第一步推理时就已有 0.79。模型口头报告的置信度几乎不变:错误的推理是 4.55/5,正确的是 4.87/5;只看生成文字的分类器只有 0.59。这个现象在 1.5B 到 72B 的 Qwen、Llama、Phi 模型上都成立,在 DeepSeek-R1 这类强化学习训练的推理模型上也成立(0.852 AUROC)。阅读:大模型知道自己的思维链错了吗?。

但“知道”不等于“能修好”

很自然的下一步是用这个信号去纠正模型。论文测试了四种干预:激活引导、探针引导的 best-of-N、自我纠错和激活修补。四种都失败了,激活修补还让输出完全失去连贯。这个信号反映的是计算质量,而不是能改变计算方向的杠杆。它实际的用处是报警,例如把很可能出错的答案交给校验器或人工复核。

一个概念,三种写法

在 5 个大模型(1.6B–8B)里,同一个推理概念写成英文散文、Python 代码或数学符号,都会落到中间层一个共享的格式无关推理子空间(FARS)。一个 10 维的基底把概念结构放大约 3 倍、同时压低形式信息;在不同写法之间只替换这 10 个维度,就能保留 90–96% 的模型输出,而替换全部激活只保留 44–56%。最大的分歧不在自然语言和形式符号之间,而在陈述式和过程式之间:散文和数学彼此兼容得多,与代码则差得远。阅读:大模型用英语、代码和数学推理的方式一样吗?。

这会不会只是 logit lens 的伪装?

一个能改变行为的子空间,也可能只是对齐了模型输出 token 时用的方向。一种只用模型权重的双向检验,测量子空间与 unembedding 矩阵主导方向的重合程度,并用面向读出的对照来校准。在 26 个模型上,从激活中提取的概念子空间在前十个读出方向上的平均能量只有 0.38–0.80%,而下一个 token 的对照约是 FARS 的 13 倍。这个表示位于读出之前。阅读:概念子空间只是 logit lens 的“伪装”吗?。

实际意味着什么

常见问题

思维链能忠实反映大模型的推理过程吗?

不可靠。研究中,隐藏状态以 0.95 AUROC 预测推理出错,而模型口头置信度依然很高(错误时 4.55/5,正确时 4.87/5),只看文字的分类器只有 0.59。

能从隐藏状态检测出大模型的推理错误吗?

能。隐藏状态上的线性探针预测思维链正确性的 AUROC 为 0.95,第一步推理时已有 0.79,在 Qwen、Llama、Phi 和 DeepSeek-R1 上都成立。

能通过调整隐藏状态来修正大模型的推理错误吗?

这项研究里不能。激活引导、探针引导的 best-of-N、自我纠错和激活修补都失败了;这个错误信号只能诊断,不能用来纠错。

大模型对代码、数学和自然语言的表示一样吗?

对推理概念来说大体一样:它们共享中间层一个 10 维的格式无关推理子空间。散文和数学之间的兼容性远高于它们与代码之间。

本文涉及的论文


本文由袁傲杰(Aojie Justin Yuan,USC Fortis Lab)撰写,内容均来自上面列出的论文;每节末尾链接到对应论文的详细解读。