在 1.3 节中,我们曾把 LLM 的推理能力比作“直觉很快但容易粗心的实习生”:面对数学题或代码题,它常常一步跳到位,结果却是错的。而思维链(Chain-of-Thought, CoT) 就是让这个实习生“在草稿纸上写下步骤”的关键技术。它不仅是当前提升大模型推理表现最经济有效的手段,也是理解“LLM 究竟有没有推理能力”这一争议的最佳切入点。
一、CoT 是什么:让模型“边想边说”
思维链 是一种提示(Prompting)技术,核心操作极其简单:在提问时,要求模型不要直接给出最终答案,而是显式生成中间推理步骤,最后再得出结论。
典型形式有两种:
- Zero-shot CoT:直接在问题后面追加一句 "Let's think step by step"(让我们逐步思考)。这是 2022 年提出的经典发现——仅凭这七个单词,就能让模型在数学基准测试(如 GSM8K)上的准确率提升 20%–40%。
- Few-shot CoT:在 Prompt 中给出 2–3 个带详细推导过程的示例,让模型模仿这种“先分析、后结论”的格式。
关键认知:CoT 生成的“思考过程”不是内部隐藏状态的解码,而是实实在在的文本 Token。模型在输出 "首先,我们需要计算..." 时,它正在做自回归生成(1.1 节)——每一个中间词都是基于已生成的上文重新计算概率后接出来的。这意味着,CoT 本质上是把一次“短跑”变成了“接力跑”。
二、为什么 CoT 有效?四个底层机制
CoT 不是魔法,它的效果可以从 Transformer 的物理结构和自回归机制中找到解释。
1. 测试时计算的深度扩展(Test-time Compute Scaling)
直接回答问题时,模型需要在极少数几步内就从问题映射到答案,这相当于让大脑做“心算”。而 CoT 强制模型把推理过程展开成更长的 Token 序列,相当于在草稿纸上写竖式。
- 计算量增加:生成 100 个 Token 的推理链,意味着模型进行了 100 次前向传播(或一次 KV-Cache 复用的长序列生成),每一步都有机会重新校准注意力权重。
- 局部错误更容易被修正:当模型写到
"等等,这样算的话余数不对..."时,它实际上是在利用自回归机制对前序步骤进行自我修正——尽管这种修正并不总是成功。
2. 注意力机制的重新调度(与 3.3 节呼应)
Transformer 的自注意力(Self-Attention)允许任意位置直接交互,但直接回答时,模型可能一次性“看全”问题后,把注意力过度集中在某些表面线索上。
CoT 的中间步骤起到了注意力路标的作用:
- 第一步提取题干中的关键数字;
- 第二步识别运算关系;
- 第三步执行计算。
每生成一步,模型都会重新计算注意力分布,相当于对原始问题进行分层的、有焦点的再理解。这缓解了长文本中信息稀释的问题。
3. 隐式知识的显式化
在预训练阶段(4.1 节),模型从海量代码、数学教材、科学论文中内隐地学到了大量逻辑转移模式,比如 "if x > 0, then log(x) is defined"。但这些知识以分布式形式存储在数百亿参数中(1.1 节)。
直接回答时,模型走的是“快思考”(System 1)路径:参数直接映射到答案,容易跳过关键约束。CoT 强制进入“慢思考”(System 2)模式,通过生成文本把隐式的逻辑链条显式化、外化,从而降低跳步导致的错误。
4. 对齐阶段的行为强化(与 5.1 节呼应)
现代 LLM 在 SFT(监督微调)和 RLHF 阶段接触了大量高质量解释性文本:教程、问答社区的长文、教师板书式的详细解答。人类标注者也更偏好“有过程、有依据”的回答。因此,模型被训练成了一个“解释癖”——它天然倾向于在被要求时,输出结构化的推导过程。
三、推理能力从何而来:预训练、规模与对齐的三重奏
CoT 能生效的前提是模型参数里已经存储了可被显式调用的推理模式。这种能力不是 Prompt 凭空赋予的,而是三个阶段叠加的结果:
1. 预训练:从“接龙”中吸收逻辑结构
CLM(因果语言建模,4.1 节)的目标函数——预测下一个 Token——迫使模型学习严格的顺序依赖。代码中的缩进结构、数学证明中的 "∵...∴..."、法律文书中的 "鉴于...因此...",都是高度结构化的因果链。模型在压缩这些数据时,无意中内化了逻辑转移概率。
2. 规模:涌现的门槛(与 2.1 节呼应)
CoT 的增益并非在所有模型上都成立。研究表明,在参数量较小的模型(通常 < 10B)上,要求它“逐步思考”往往适得其反——它可能生成无关的废话,甚至把简单问题复杂化。
只有当模型规模跨过某个阈值(因架构和数据质量而异,通常在数十亿到百亿级),内部参数空间才具备足够 capacity 来编码多步逻辑模式。此时,CoT 才像一把钥匙,解锁了原本沉睡在参数中的能力。这就是 1.3 和 2.4 节提到的“涌现”(Emergence)。
3. 对齐:把推理变成习惯
未经对齐的基座模型(Base Model)虽然也能做 CoT,但输出格式不稳定,可能中途开始背诗或跑题。SFT 和 RLHF(5.1–5.2 节)把“遵循指令 + 结构化输出”刻进了行为模式里。拒绝采样(5.4 节)等技术进一步筛选出推理最严谨的数据,强化了高质量 CoT 的分布。
四、从线性链到树状探索:CoT 的进阶形态
基础 CoT 是一条单一路径,容易“一错到底”。工程上常用的增强策略包括:
| 技术 | 原理 | 适用场景 |
|------|------|----------|
| Self-Consistency(自一致性) | 生成多条独立 CoT,对最终答案投票 | 数学题、客观逻辑题,利用采样随机性覆盖不同解法 |
| Tree of Thoughts(ToT) | 允许模型在推理中生成多个候选分支,自我评估后剪枝或回溯 | 需要探索的开放问题(如 24 点游戏、创意策划) |
| Step-aware Verification | 让模型或外部验证器对每一步进行检验,错误时回退 | 高风险的科学计算、代码生成 |
这些变体的共同思想是:不再把推理视为单向接龙,而是有选择的搜索过程。这一定程度上弥补了标准 CoT“一条路走到黑”的缺陷。
五、能力边界:CoT 不是万能药
尽管 CoT 大幅提升了表现,但它并未改变 LLM 的概率本质(1.1 节)。使用时必须清醒认识其边界:
1. 错误累积效应
每一步的中间结论都会被后续步骤无条件接受。如果第二步算错了 "2+3=6",第三步会基于 6 继续算下去,而且语气依然自信。这与人类在草稿纸上发现笔误不同——模型没有真正的“质疑”机制,只有概率上的偏离。
2. 训练分布的硬边界
CoT 再漂亮,也只是在复现训练数据中的解题模板。对于完全脱离分布的抽象逻辑(例如基于一套全新公理的几何体系),CoT 只是让“一本正经地胡说八道”看起来更有条理。
3. 幻觉与推理的叠加
中间步骤可能引用根本不存在的定理、编造的变量名或错误的事实(6.4 节)。这使得 CoT 的可解释性陷阱尤为危险——用户看到“过程详细”,就误以为“结果可信”。
4. 成本与延迟的暴涨
生成一条 500 Token 的 CoT,推理成本(显存带宽、计算量、API 费用)和响应延迟可能直接翻 3–5 倍。在 1.4 节的工程层视角下,这是需要在业务中严格权衡的。
六、工程实践指南
基于以上原理,在实际落地中建议遵循以下原则:
- 该用才用:数学、代码、逻辑判断、多条件规则匹配时,CoT 收益最大;简单事实问答、情感分析、创意写作无需 CoT,徒增成本。
- 示例质量 > 数量:Few-shot CoT 时,2–3 个步骤清晰、与目标问题同构的示例,远比 10 个杂乱示例有效。避免示例中的推理路径本身就有瑕疵。
- 结构化输出:要求模型按固定格式输出(如
"### 分析:... ### 计算:... ### 结论:..."),既方便前端解析,也能通过格式约束减少跑题。 - 结合工具校验:对关键步骤,不要只信任文本推导。可让模型在 CoT 中生成 Python 代码或调用计算器(6.3 节工具调用),用外部系统验证数值正确性。
- 监控“自信的错误”:在评估(Eval)阶段,不仅要看最终答案对错,还要抽样检查中间步骤。统计“步骤错误但答案碰巧对”或“步骤看似合理但答案错”的比例,这比只看最终准确率更能反映真实推理水平。
小结
思维链的本质,是利用 LLM 自回归生成的特性,在测试阶段扩展计算深度,将参数中隐式存储的逻辑模式显式化为可读的推理序列。它不是让模型学会了逻辑,而是激活并结构化其已内隐编码的逻辑模式。
正因如此,CoT 的效果受制于模型规模、训练数据中的逻辑密度以及对齐质量。它像一面放大镜:模型本身有推理潜能时,CoT 能将其放大;模型本身缺乏某类逻辑模式时,CoT 只是把盲目猜测包装成了流畅的叙述。
在 6.3 节中,我们将讨论工具调用(Function Calling)——这是解决 CoT“闭门造车”问题的关键技术。当模型不再只靠内部参数做纯文本推演,而是能调用计算器、搜索引擎或代码解释器时,它的推理才真正开始与外部世界的事实和精确计算打通。