核心概念:用生成长度换计算深度
一、FFN 是什么?Transformer 的"计算单元"
在理解思维链之前,需要先知道大模型的核心架构: Transformer 的内部结构长什么样。
Transformer 的每一层都由两个核心组件串联组成:
plaintext
输入 Token
↓
[ Attention(注意力机制) ] ← 负责"看哪里":决定当前 Token 要关注上下文中的哪些位置
↓
[ FFN(Feed-Forward Network,前馈神经网络) ] ← 负责"想什么":对 Attention 的输出做非线性变换,提取更深层的特征
↓
输出(传入下一层)
FFN 的结构非常简单,本质是两个线性变换 + 一个激活函数:
plaintext
FFN(x) = 激活函数( x · W₁ + b₁ ) · W₂ + b₂
-
W₁、W₂是参数矩阵,在训练时学习,推理时固定不变 -
激活函数(如 ReLU、GELU)引入非线性,让模型能学习复杂模式
-
FFN 的"宽度"通常是 Attention 维度的 4 倍,承载了大量的知识存储
一个直觉:如果说 Attention 是在"查字典"(决定关注哪些上下文),那 FFN 就是在"做推理"(基于查到的内容得出结论)。研究表明,模型记忆的大量事实知识主要存储在 FFN 的参数矩阵里。
二、先理解"计算深度"的约束
Transformer 架构有一个关键特性:每次生成一个 Token,计算过程是固定的。
每一层都是"Attention + FFN"的组合,N 层叠加形成完整的前向传播:
plaintext
输入 → [Attention + FFN]₁ → [Attention + FFN]₂ → ... → [Attention + FFN]ₙ → 输出一个 Token
比如 GPT-4 有 120 层,无论你的问题是"1+1=?"还是"证明黎曼猜想",模型都只走这 120 层(每层各一次 Attention + FFN),然后输出一个 Token。
这就是计算深度固定的含义:不管问题多难,每生成一个 Token,只能经过固定层数的 Attention + FFN 计算,无法"多想一会儿"。
三、用一个数学题来对比
题目:小明有 23 个苹果,给了小红 7 个,又买了 15 个,最后给了 8 人每人 2 个,还剩几个?
没有思维链:一次前向传播直接跳答案
plaintext
输入:小明有 23 个苹果...还剩几个?
模型:→ → → → → → [96层计算] → 输出 Token "9"
模型要在 96 层内同时完成:
-
23 - 7 = 16
-
16 + 15 = 31
-
8 × 2 = 16
-
31 - 16 = 15
这四步全压缩在一次计算里,容量不够,很容易出错。
有思维链:多次前向传播,每次只算一小步
plaintext
输入:小明有 23 个苹果...还剩几个?请一步一步思考。
第1次生成:"小明原来有 23 个苹果" ← 第1次前向传播
第2次生成:"给了小红 7 个,剩 16 个" ← 第2次前向传播(看到了上一步的结果)
第3次生成:"又买了 15 个,现在有 31 个" ← 第3次前向传播(看到了 16)
第4次生成:"给了 8 人每人 2 个,共 16 个" ← 第4次前向传播
第5次生成:"31 - 16 = 15,还剩 15 个" ← 第5次前向传播
关键点 :每次生成新 Token 时,之前生成的所有文字都会成为输入上下文。
所以到第 5 次计算时,模型的输入是:
"小明有 23 个苹果...给了小红 7 个,剩 16 个...现在有 31 个...共 16 个...31 - 16 = ?"
它只需要做最后一步减法,非常轻松。
四、核心对比表
| 维度 | 没有思维链 | 有思维链 |
|---|---|---|
| 生成的 Token 数 | 少(直接输出答案) | 多(输出中间过程) |
| 每次前向传播的难度 | 极高(要一步到位) | 低(每步只算一小步) |
| 前向传播的次数 | 1 次 | N 次 |
| 总计算量 | 1 次 × 极高难度 | N 次 × 低难度 |
| 出错概率 | 高 | 低 |
一句话 :Transformer 单次计算能力有上限,思维链通过把"一道难题"拆成"N 道简单题",每道简单题用一次前向传播解决,用输出更多文字(生成长度)的代价 ,换来了等效更深的推理能力(计算深度)。
五、直观类比
想象你要徒手计算 347 × 289:
-
没有思维链:大脑直接算,很容易出错
-
有思维链:在草稿纸上一步一步写:
-
289 × 7 = 2023
-
289 × 40 = 11560
-
289 × 300 = 86700
-
2023 + 11560 + 86700 = 100283
-
草稿纸上的每一行 ,就是模型生成的每一个中间步骤。每一步你只需要做一个简单乘法,写到纸上之后,下一步可以直接用这个结果继续算。
草稿纸 = 上下文窗口,多写几行 = 生成更多 Token = "生成长度"增加了
六、延伸洞察
-
为什么推理模型更慢更贵:推理模型在"想"的阶段生成了大量思维链 Token(即使用户看不到),本质就是在用生成长度换计算深度。
-
为什么对简单问题没效果:对于"中国的首都是哪里"这类问题,一次前向传播足够,不需要多步推理,CoT 反而是浪费。
-
CoT 最适合的场景:数学计算、逻辑推理、多步骤规划------任何需要"中间状态"才能推进的任务。