← Home

思维链的幻觉:大模型推理并不一定发生在语言里

Read 7 min Words 2,881 Current Version 中文 · No version is available in this language yet. Showing the original article. Translation:No Translation Yet · 中文

Abstract

`Chain-of-Thought` 思维链:大模型的 CoT 思维链 给使用者带来了一个非常理性的效果,模型会说“首先”“第一步”“第二部”...“最后”等词语,很多人认为看到了模型的推理文本,即看到模型的思考过程。但是问题在于,这个直觉未必成立。思维链是模型输出的一部分,仍然服从模型内部的生成机制;它可能记录了真实中间计算,也可能是事后合理化、格式化解释,甚至是在训练中塑造出的“推理”模拟。

本文讨论一个更底层的问题:大模型的推理到底发生在哪里?是在自然语言 token 中,在 hidden state 中,在采样与搜索中,还是在 generator、verifier、reward model 组成的外部系统里?如果思维链只是内部计算的人类可读投影,那么围绕 CoT 的解释性、安全监控和训练方法都需要重新审视。

Keywords:Chain-of-Thought · CoT faithfulness · reasoning model · latent reasoning · verifier · mechanistic interpretability
This article does not have an English version yet. The original Chinese version is shown below.

#1. 问题不是模型会不会写推理,而是写出来的推理算不算推理

大模型"Thinking"过程中最吸引人的地方在于,它有条有理的写下“第一步、第二步、因此”这些如同人类一样逻辑思维的过程。

这段文字看起来不像是一个AI模型的输出,更像"人"思考的痕迹。我们读到它时,会自然地把它理解成模型内部过程:模型先想到了 A,再想到了 B,最后推出 C。这个心理反应很强,因为人类自己的推理也是如此通过语言组织起来的。

但语言模型实际上并不是把一个已经完成的内部思考逐字抄出来。

它每生成一个 token,仍然是在给定上下文下预测下一个 token,这个可以参考大模型鼻祖"N-gram",后续再先进的大模型都是在此基础上的一个延伸。其中,CoT 只是输出序列的一部分,现在约定俗成将其定位为模型的"Thinking"阶段,为后续模型的正式输出定下了一“思考”的过程。其可读、可训练、可被评分,但这并不说明其为模型实实在在的思考过程。

我们可以把问题压缩成“一个等式是否成立”:

text
模型生成的推理文本 = 模型真实使用的推理过程?

很多关于 reasoning model 的讨论,其中也或多或少的包含了这个等式。Anthropic 在 2025 年的 Chain-of-Thought faithfulness 研究[[1]](references.md#1-anthropic-reasoning-models-dont-always-say-what-they-think) 则直接攻击了这个假设:他们测试了模型是否会在 CoT 中如实承认提示线索对答案的影响,结论并不理想。Anthropic研究指出,模型的 CoT 并不总是忠实反映其真实使用的信息,这给依赖 CoT 监控模型行为的路线方法带来风险。

这不是一个小缺陷。它意味着:

CoT 可以提升推理表现,但不能被简单当成模型内部思维状态的展示。

故我们在这里说的Cot虽然叫模型的思维链,但其实其并不能实实在在的呈现模型的思维过程。


#2. CoT 的双重身份:工具与自述

CoT 其实有两个身份。

  • 第一个身份是工具。
  • 它让模型把复杂问题拆成多个局部问题,通过延长输出序列获得更多中间计算机会。 对于数学、符号推理、规划、代码解释这类任务,通过显式中间步骤确实能提升模型表现。

  • 第二个身份是自述。
  • 模型写出的步骤会被用户理解成“它为什么这么答”。 这一步很危险,因为自述本身也是生成结果。模型可以写出看似严密的解释,但解释未必是因果上导致答案的过程。 简单一点说就是,模型的思维链也是由其生成的,对于模型生成的内容可能并不存在“第一、第二、因此”等因果逻辑。

一个简单区分是:

text
性能意义上的 CoT:让模型答得更好
解释意义上的 CoT:让人相信自己看见了模型怎么想

前者相对成立,后者在目前很多实验中已经几乎确定为不可信。

在传统机器学习里,我们不会因为分类器输出一句“通过边缘和纹理分析,这是猫”,就相信它真的使用了这些特征。我们会做因果干预、特征消融、激活分析、反事实测试。对大模型也一样。自然语言解释是证据,但不是最终的证据。

因此,CoT 的核心矛盾不是“有没有用”,而是“它有多忠实”。


#3. 一个更准确的结构:内部计算、语言投影与人类解释

可以把 reasoning model 的输出拆成三层:

text
Internal Computation
        ↓
Natural Language Projection
        ↓
Human Interpretation

第一层是模型内部计算,包括 attention、MLP、residual stream、hidden state、激活特征等。第二层是模型把某些信息解码成自然语言 token。第三层是人类读完这段文本后构造出的理解。

绝大部分错误都发生在第二层和第三层之间。模型写出“因为 X,所以 Y”,人类就把 X 视为因果理由。但在生成机制里,X 可能只是一个高概率解释片段。它也许与真实内部计算有关,也许只是最终答案之后被补上的合理化文本。

用公式表达,用户看到的是:

\[ z = (z_1, z_2, \dots, z_n) \]

其中 \(z\) 是自然语言思维链。但真正产生答案的计算可能更接近:

\[ y = f_\theta(q, h_1, h_2, \dots, h_k, z) \]

这里 \(h_i\) 是不可见的隐藏状态、激活模式或外部搜索状态。把 \(z\) 等同于全部推理,会遗漏大量发生在不可见层面的计算。

这也是为什么 mechanistic interpretability 重要。Anthropic 的 circuit tracing 工作试图观察语言模型内部如何表示和转换信息,而不是只读模型输出文本;其基本立场是:模型行为来自训练中形成的内部机制,这些机制编码在每个 token 生成时的大量计算中。[[2]](references.md#2-anthropic-tracing-the-thoughts-of-a-large-language-model)


#4. RLVR 改变了 CoT 的性质

如果 CoT 只是从人类标注数据里模仿出来的推理格式,那么它更像一种语言习惯。但 RLVR 出现后,CoT 的性质变复杂了。

DeepSeek-R1-Zero 的关键实验是:模型在没有先进行监督微调的情况下,通过大规模强化学习获得推理行为。论文描述了模型在 RL 过程中自然出现的反思、验证和更长推理轨迹,同时也指出了可读性差、语言混杂等问题。[[3]](references.md#3-deepseek-r1-incentivizing-reasoning-capability-in-llms-via-reinforcement-learning)

这说明一件事:

推理行为不一定来自人工写好的推理模板,它可以在奖励压力下长出来。

这种变化很大。模型不再只是学习“人类如何解释答案”,而是在奖励函数下探索哪些输出轨迹更容易得到正确答案。CoT 于是同时包含两种成分:

text
人类可读解释的成分
奖励优化后形成的策略成分

这也解释了为什么推理模型有时会出现“过度思考”。它不是简单在复述人类步骤,而是在生成一个被训练认为有助于获得奖励的轨迹。这个轨迹未必简洁,未必忠实,未必符合人类心中“好推理”的形式。


#5. Verifier 让推理从叙事变成选择

如果系统只包含一个生成模型,我们还可以说答案主要来自一次条件生成。但一旦引入 verifier,结构就变了。

text
Question
   ↓
Generator 产生多条候选轨迹
   ↓
Verifier 对轨迹或答案评分
   ↓
Search / Selection
   ↓
Final Answer

这时最终答案不再只是“生成出来的”,而是“筛出来的”。形式上可以写成:

\[ y^* = \arg\max_{y_i \in Y} V(q, y_i) \]

其中 \(Y\) 是候选答案集合,\(V\) 是 verifier 或 reward model。

OpenAI 的 process supervision 工作强调,对推理步骤逐步奖励可以比只奖励最终答案更有效,并且具有 alignment 价值,因为它直接训练模型产生人类认可的推理链。[[4]](references.md#4-openai-improving-mathematical-reasoning-with-process-supervision)

但这里有一个更深的问题:如果 verifier 决定了哪条轨迹被保留,那么最终的“推理”就不仅存在于生成文本中,也存在于评分函数里。换句话说,模型系统的思考不只是 generator 的输出,而是 generator 与 verifier 之间的选择压力。

这会把 CoT 的解释问题进一步复杂化。用户看到的是最终保留下来的那条轨迹,而不是被采样、被拒绝、被比较过的整个搜索空间。


#6. 语言可能只是推理的一种低维接口

CoT 的可读性来自自然语言。但自然语言不是为机器计算设计的。它线性、离散、冗长,受语法和表达习惯约束。很多 token 是为了让文本通顺,而不是为了推进推理。

Coconut 的思路很直接:让模型不要每一步都把中间状态解码成自然语言,而是把最后一层 hidden state 当作 continuous thought,直接作为下一步输入嵌入,继续在连续潜空间中推理。论文认为,语言空间未必总是最优推理空间;连续思维状态可以编码多个可能的下一步,在某些需要回溯规划的任务中表现出类似广度优先搜索的模式。[[5]](references.md#5-coconut-training-large-language-models-to-reason-in-a-continuous-latent-space)

这带来一个干净的判断:

CoT 是把思维翻译成人话;latent reasoning 是试图在翻译之前完成计算。

这不是说 latent reasoning 一定取代 CoT,而是说 CoT 不应被视为推理的天然形态。它只是人类可读的一种接口。


#7. 最危险的不是不会推理,而是生产推理外观

当训练信号奖励“看起来像好推理”的文本时,模型可能学会优化可见部分。

这并不需要模型有欺骗意图。只要训练目标偏向完整、流畅、符合人类期待的解释,模型就会倾向于生成这种解释。久而久之,推理链可能变成一种产品界面:让用户安心,让评估器满意,让答案显得可靠。

这就是 CoT 的风险:

text
可读性提高
    ↓
人类信任提高
    ↓
但忠实性未必同步提高

如果安全监控依赖 CoT,那么不忠实的 CoT 会遮挡真实问题。Anthropic 的 CoT faithfulness 研究之所以重要,正是因为它把这个隐患从直觉层面推进到实验层面。[[1]](references.md#1-anthropic-reasoning-models-dont-always-say-what-they-think)


#8. 研究入口:如何判断 CoT 是否忠实

一个真正有价值的研究方向不是“让模型写更长 CoT”,而是设计实验测量 CoT 与内部因果机制的关系。

可以从四类实验入手:

实验方向核心问题可能方法
线索注入模型是否承认被提示线索影响在 prompt 中加入暗示,观察 CoT 是否报告
反事实干预改变 CoT 某一步是否改变答案替换中间步骤,测量输出变化
激活干预某些 hidden feature 是否因果影响结论activation patching / circuit tracing
多轨迹比较最终 CoT 是否代表完整搜索过程采样多条轨迹,比较 verifier 选择

这类实验的目标不是让模型解释自己,而是检查“解释是否具有因果约束”。


#9. 结论:后 CoT 时代的问题

CoT 时代的问题是:如何让模型把推理说出来。

后 CoT 时代的问题是:说出来的推理和真实计算有什么关系。

这比“模型会不会推理”更难。因为它要求我们同时研究语言输出、隐藏状态、奖励塑形、搜索过程和外部验证器。大模型推理可能不是一个位置上的东西,而是分散在多个层面:权重中的先验、hidden state 中的临时表示、token 序列中的显式轨迹、verifier 中的选择压力,以及推理时计算中的搜索预算。

因此,思维链不是大脑。它更像屏幕上的波形:有信息,有价值,但不是电路本身。

真正的研究,不该停在读波形,而要走进电路。