CoT(思维链)在工程应用中的终极形态,就是 ReAct 架构里的那个 Thought 环节。
一、 拓扑结构的严格对比
1. CoT (Chain of Thought) 的原生结构:闭卷考试
最初的 CoT 论文解决的是大模型做数学题和逻辑推理的问题。它的流转结构是线性的:
Input→Thought (打草稿)→Final Answer\text{Input} \rightarrow \text{Thought (打草稿)} \rightarrow \text{Final Answer}Input→Thought (打草稿)→Final Answer
- 致命缺陷 :它是**"闭卷考试"**。大模型在输出
Thought时,只能从自己千亿参数的 Transformer 权重(Parametric Memory)里死记硬背。如果它不知道苹果现任 CEO 是谁,它的Thought就会一本正经地胡说八道(产生幻觉),然后得出一个完全错误的Final Answer。
2. ReAct (Reasoning + Acting) 的原生结构:开卷考试 + 动手实验
ReAct 论文的作者(姚顺雨等人)极其聪明地发现:既然 CoT 能提供逻辑推理能力(Reasoning),那我们为什么不给它加上一套动作执行系统(Acting)?
于是,拓扑结构变成了无限循环的螺旋上升:
Input→Thought1→Action1→Observation1→Thought2→⋯→Final Answer\text{Input} \rightarrow \text{Thought}_1 \rightarrow \text{Action}_1 \rightarrow \text{Observation}_1 \rightarrow \text{Thought}_2 \rightarrow \dots \rightarrow \text{Final Answer}Input→Thought1→Action1→Observation1→Thought2→⋯→Final Answer
- 本质揭秘 :你总结得极其完美。在这个螺旋中,每一次的 Thoughtn\text{Thought}_nThoughtn 就是一次微型的 CoT! * 降维打击 :有了
Action和Observation的介入,大模型的 CoT 不再是"闭卷瞎猜",而是基于你 Java 宿主程序刚刚查回来的真实客观世界数据(Observation)去进行下一步的逻辑推理。
二、大模型的参数化记忆
1、 记忆的来源:极其暴力的"预测下一个词"与反向传播
大模型的"死记硬背",发生在它出厂前的几个月里。这个阶段消耗了成千上万张显卡。
假设在预训练时,模型阅读到了一篇新闻,里面有一句话:"苹果现任 CEO 是 蒂姆 库克"。
第 1 帧:正向传播(Forward Pass)------ 愚蠢的瞎猜
- 初始状态下,模型里的所有矩阵(我们之前推演的 WQ,WK,WVW_Q, W_K, W_VWQ,WK,WV 以及 FFN 的权重矩阵)里面装的全是随机生成的浮点数。
- 当输入
["苹果", "现任", "CEO", "是"]时,经过几十层矩阵乘法,最后 Softmax 输出一个概率分布。 - 因为矩阵是随机的,模型可能给"乔布斯"分配了 80% 的概率,给"蒂姆"分配了 0.001% 的概率。
第 2 帧:计算损失(Loss Calculation)------ 发现错误
- 系统的正确答案(真实语料)是"蒂姆"。
- 底层会计算一个叫做**交叉熵损失(Cross-Entropy Loss)**的数学公式,量化模型错得有多离谱:
L=−∑yilog(y^i)L = -\sum y_i \log(\hat{y}_i)L=−∑yilog(y^i)
这里它发现自己预测"蒂姆"的概率太低了,算出来的误差 LLL 非常大。
第 3 帧:反向传播(Backpropagation)与参数更新 ------ 形成"记忆"的瞬间
- 这一步是深度学习的灵魂!微积分里的**链式法则(Chain Rule)**出场。
- 计算机沿着 Transformer 网络从后往前,计算这个误差 LLL 对每一个矩阵里的每一个浮点数(参数 WWW)的偏导数(梯度 ∂L∂W\frac{\partial L}{\partial W}∂W∂L)。
- 然后,使用优化器(如 Adam)对矩阵里所有的数字进行微小的调整:
Wnew=Wold−α∂L∂WW_{\text{new}} = W_{\text{old}} - \alpha \frac{\partial L}{\partial W}Wnew=Wold−α∂W∂L
(α\alphaα 是学习率,决定了调整的幅度)。
物理意义的蜕变 :
经过这一次极其微小的加减法运算后,网络里那些负责处理"苹果"、"CEO"的矩阵参数发生了一丝丝偏转。
当模型在几百 GB 的语料中,第十次、第一百次看到"苹果 CEO 是蒂姆·库克"时,这个梯度下降的过程就会反复执行。最终,这几个词之间的关联,被永远地"蚀刻(Hardcoded)"在了这几千亿个浮点数矩阵的排列组合中。
这就是大模型的记忆------它不是文本,而是多维空间中向量转换的概率倾向。
2、 记忆物理上存在哪里?------ FFN 层的"键值对"本质
回到我们之前拆解的 Transformer 架构。知识到底储存在哪一层?
学术界目前的研究表明,大部分客观事实(Factual Knowledge)主要存储在 Transformer 的**前馈神经网络层(Feed-Forward Network, FFN)**中。
回忆一下 FFN 的公式(包含两次线性映射):
FFN(x)=GELU(xW1+b1)W2+b2\text{FFN}(x) = \text{GELU}(x W_1 + b_1) W_2 + b_2FFN(x)=GELU(xW1+b1)W2+b2
在这里,你可以把 W1W_1W1 和 W2W_2W2 这两个极其庞大的矩阵,理解为一个极其模糊、连续的高维 Hash Map(哈希表):
- 第一层矩阵 W1W_1W1 就像是哈希表的 Key(键) 。它负责"模式匹配"。当输入向量 xxx 包含了"苹果 CEO"的抽象语义时,xxx 乘以 W1W_1W1 后,会在某几个特定的神经元上产生极高的激活值(就像触发了某个 Key)。
- 第二层矩阵 W2W_2W2 就像是哈希表的 Value(值) 。那些被高强度激活的神经元,再乘以 W2W_2W2 时,就会把"蒂姆·库克"的高维特征释放出来,混入到最终的输出向量中。
所以,"蒂姆·库克"这个知识点,实际上被彻底打碎,分布在了 W1W_1W1 和 W2W_2W2 矩阵的千千万万个浮点数权重(Weights)之中。
3、 为什么叫"闭卷考试"?这种记忆有什么致命缺陷?
现在你完全理解了:当用户在推理阶段(Inference)问"苹果 CEO 是谁"时,大模型的参数 WWW 已经是冻结(Frozen)的了。它不能再去网上查资料,也不能执行梯度下降来修改自己的矩阵。它只能顺着这些被固化好的浮点数,硬算一遍矩阵乘法。这就叫闭卷考试。
这也是为什么这种"参数化记忆"在 Agent 开发中面临着三大绝症:
- 知识衰减与过时:如果模型是 2023 年预训练的,矩阵里刻下的就是当年的知识。到了 2026 年,苹果换 CEO 了,但模型的矩阵已经冻结,它依然会输出旧答案。你想改?只能花几百万美金重新算一遍梯度下降(微调)。
- 长尾知识的幻觉 :对于"苹果 CEO"这种在语料里出现过几万次的高频知识,矩阵被雕刻得极深,模型记得很牢。但如果你问"你们公司昨天的财务报表第三行是什么",这个知识在预训练语料里根本不存在(或者只出现过一次),矩阵里没有形成对应的"凹槽",模型就会强行用其他相近的概率去瞎编(幻觉)。
- 不可追溯 :你无法像
SELECT * FROM table那样去查大模型为什么得出这个结论。它只是矩阵相乘后的概率最大值,没有"数据来源"。