ARTICLE · 1315216
AI 知识课 06|大模型的"知识"存在哪
先说人话:会议室与档案室
把一层 Transformer 想成一间办公室,里面有两间屋子。
注意力是会议室:各个 token 围坐一圈互相交流,谁的信息重要就多听谁的。它的强项是"关系"——这个词和那个词有什么牵连。
FFN 是档案室:每个 token 交流完毕后,单独走进档案室查资料。它不跟别人讨论,只对着自己的笔记查档案:这组特征让我想起了什么事实?查到了就记在笔记上带出来。
为什么说档案室存的是"知识"?因为模型在预训练时读过的世界事实——"巴黎是法国首都""水的化学式是 H₂O"——大部分不以注意力的形式存储,而是压缩在 FFN 这两层矩阵的权重里。研究者的形象说法叫键值记忆假说:FFN 的第一层矩阵是一排"检索标签"(键),第二层矩阵是标签背后挂着的一堆"知识卡片"(值)。输入特征撞上了哪张标签,就把对应的卡片取出来。
所以一个粗略但好用的分工是:注意力负责"找信息",FFN 负责"想起知识"。
原理拆解:两层矩阵的知识仓库

第 1 步|两层 MLP 的标准式。FFN 写出来是 FFN(x) = W₂ · act(W₁x + b₁) + b₂。文字化:先用第一层矩阵把特征投影到一个高维空间(这一步叫"扩张"),逐元素过一个激活函数,再用第二层矩阵投回原来的维度("收缩")。进多大、出多大,维度不变,这样残差连接才能把它加回主干——上一课的成果在这里用上了。
第 2 步|4 倍扩张比。原始 Transformer 里,中间层的宽度是模型维度的 4 倍:d_model = 512 时,FFN 中间层是 2048。为什么要先撑大再压回?直觉是:在更高维的空间里,特征更容易被"分开摆放",每个方向可以专职检测一种模式。参数也大头在这里:W₁ 是 512×2048,W₂ 是 2048×512,加起来约 210 万参数,是同层注意力四个投影矩阵总和的两倍多。说 FFN 承载了模型约三分之二的参数,就是这两块大矩阵贡献的。
第 3 步|激活函数:从 ReLU 到门控。撑大之后要过激活函数,早期用 ReLU(负数归零),后来换成更平滑的 GELU。而如今主流大模型(LLaMA、Qwen 等)用的是 SwiGLU:把扩张层拆成两份,一份过激活函数算出"信号",另一份原样算出"闸门",两者逐元素相乘再投回。文字化:一份内容决定"说什么",一份门控决定"放多少出来"。这个门控结构让 FFN 的表达更精细,实证效果也更好。
第 4 步|键值记忆的运作。按键值记忆假说,W₁ 的每一行是一个"模式检测器"(键):输入特征和这一行点积越大,说明当前 token 的上下文越符合这个模式(比如"出现在首都这个词附近");激活函数把这个匹配度变成开门力度;W₂ 对应的列就是门后挂的"知识卡片"(值):一种可能是把某个具体事实相关的信息写进输出,另一种可能起到抑制某些不合逻辑预测的作用。成千上万个这样的"标签-卡片"对叠加起来,FFN 的输出就是这一次查询取回的知识总和。
第 5 步|逐 token 独立。注意 FFN 对序列里的每个 token 各自独立地做同样的变换:同一个 W₁、W₂ 用在所有位置上。它不像注意力那样混合 token 之间的信息。每个位置带着自己在注意力阶段"搜集来的上下文"进档案室,查回来的知识写进自己的表示——跨 token 的交流仍然全部由注意力负责。
跑一个具体例子:一个神经元的心算
把规模缩到最小:模型维度 d = 4,FFN 中间层就设 2 个神经元,看其中一个怎么"查卡片"。
输入某 token 的特征 x = [2, 1, 0.5, −3]。设这个神经元检测的模式是"数值大且为正":权重 w = [1, 1, −1, 0],偏置 b = −1。
先算加权和:z = 2×1 + 1×1 + 0.5×(−1) + (−3)×0 + (−1) = 2 + 1 − 0.5 − 1 = 1.5。
过 ReLU:负数归零,正数保留 → 输出 1.5,匹配成功,开门力度 1.5。假如输入换成 [−2, 1, 0.5, −3]:z = −2 + 1 − 0.5 − 1 = −2.5,ReLU 后归零——模式不匹配,这张知识卡片今天不开门。
真实模型里这样的"标签"有几千到几万个,每个 token 的 FFN 输出是所有被激活卡片按力度加权叠加的结果:一部分卡片写入事实性内容,一部分卡片压低不合理的走向,最后由 W₂ 汇总投回原维度。

常见误解:三个最容易踩的坑
一、"FFN 只是个附带的全连接层,重头戏都在注意力。"恰恰相反。按参数量算,FFN 占了 Transformer 约 60%–70%;按可解释性研究(如 ROME 系列工作)的结论,改写模型的事实性知识,定位和修改的往往正是 FFN 的权重。把 FFN 当配角,会严重低估它。
二、"FFN 也在做 token 之间的信息交流。"不。FFN 是逐位置独立的:每个 token 各查各的档案,互不通气。跨 token 的信息流动只发生在注意力子层。也正因为独立,FFN 的计算可以完全并行,推理时算力主要消耗在这里(模块四讲 KV Cache 时还会再算这笔账)。
三、"激活函数随便选一个都行,只是历史习惯。"激活函数承担着"开多大门"的功能,不是可以随意替换的螺丝钉。ReLU 是硬开关,GELU 是平滑开关,SwiGLU 干脆给每个神经元配了一个专属闸门。从 ReLU 到 SwiGLU 的演进,本质是让"匹配→取卡"这个查询动作做得更准、更省参数。
30 秒小结 + 2 道自测题
1. FFN = 两层 MLP:先 4 倍扩张、过激活、再投回原维度,逐 token 独立计算;
2. 参数大头在 FFN(约三分之二),键值记忆假说认为事实知识就压缩在这两层矩阵里:W₁ 是检索标签,W₂ 是知识卡片;
3. 激活函数从 ReLU、GELU 演进到 SwiGLU 门控,决定"匹配到模式后开多大的门"。
自测 1:为什么 FFN 的中间层要扩张到 4 倍,而不是直接用一个方阵(d×d)做变换?
自测 2:把某一层的 FFN 整个删掉、只留注意力子层(残差结构照旧),模型的哪些能力最可能受损?哪类能力基本不受影响?
——答案——
第 1 题:两层 d→4d→d 的矩阵参数量是 8d²,比一层 d×d 方阵的 d² 大得多,模型容量主要来自这里。同时高维中间层让不同模式在空间里分得更开,每个神经元可以更专职地检测一种模式;先扩张再收缩还配合激活函数形成了"稀疏开关"——大部分神经元处于关闭状态,只让匹配的少数模式放行。
第 2 题:最可能受损的是事实性知识与"想起什么"的能力——按键值记忆假说,世界事实主要存在 FFN 权重里,删掉后模型会变得"会推理但没学问",常见事实答错、用词缺乏具体细节。基本不受影响的是纯粹的 token 间关系运算,比如指代消解、邻近词依赖这类注意力擅长的模式。当然整体能力会全面下降,因为删层也破坏了深度的积累,但下降最明显的方向是知识 recall。
下一课预告:注意力加 FFN,一个 Transformer 块就齐了。但 2017 年的原始 Transformer 其实是两座塔——编码器读入源句子,解码器逐词生成译文,中间靠一种"交叉注意力"架桥。下一课:第 7 课 · 编码器与解码器:原始 Transformer 全貌。
本文由 AI 辅助生成,经人工审核后发布。图片来自公开网络,版权归原作者所有,如有侵权请联系删除。















































































