FFN 前馈网络:逐位加工与专家存储

02-架构解剖 核心 约 15 分钟 #FFN#前馈网络#GELU#SwiGLU#知识存储 更新 2026-10-02
当前状态:未学
本文基于模型知识整理(生成时未联网核对),FFN 研究建议对照 "Transformer FFN's Key-Value Memory"(Geva et al. 2021)复核。

一句话定义

FFN 是 Block 内的逐 token 两层 MLP:$FFN(x)=W_2\,\sigma(W_1x+b_1)+b_2$(常带升维 4 倍中间层)——注意力负责 token 间混合,FFN 负责 token 独立的非线性加工;近年研究认为它是模型的"知识存储器"(事实与模式以键值对形式存在于此)。

为什么重要

FFN 占 Transformer 参数的约 2/3——是参数大头与"知识"的主要储藏地(模型编辑研究:改 FFN 权重可改写模型记住的事实)。MoE(kp-022)替换的正是 FFN;激活函数的演化(ReLU→GELU→SwiGLU)也发生在这里。不懂 FFN,就无法理解参数量、知识与 MoE。

前置知识

kp-006(Block 结构);两层 MLP 的基本概念。

核心概念

  • 标准结构:升维(d→4d)→ 非线性 → 降维(4d→d),逐 token 独立作用(无跨 token 混合)。位置-wise:同样的 MLP 套在每个位置上。
  • 激活函数演化:ReLU → GELU(平滑版 ReLU,BERT/GPT-2)→ SwiGLU(Llama 系:门控线性单元 $\sigma(W_1x)\otimes W_3x$,三矩阵结构、同参数量下更优——现代默认)。
  • 知识存储假说(Geva 2021):第一层 W₁ 是"键"(检测输入的模式/主题),第二层 W₂ 是"值"(存储对应的输出知识)——"凯撒大帝生于罗马"类事实被分散编码为键值对;模型编辑(ROME/MEMIT)直接改写这些键值。
  • 参数大头:标准 4 倍升维下 FFN 参数 ≈ 8d²/层 vs 注意力 ≈ 4d²/层——FFN 占 2/3;MoE 的"专家"就是并联的多组 FFN(kp-022)。
  • SwiGLU 的维度调整:三矩阵结构下为保持参数量,中间维常取 8d/3 再取整到 8 倍数(Llama 的 hidden 11008 即此)。

原理与机制

为什么"混合"与"加工"要分离:注意力的 softmax 是对 token 的加权——若把非线性加工混进注意力,权重与加工互相纠缠难以优化;分离后注意力专注"路由"(谁的信息流向谁)、FFN 专注"计算"(信息如何变换)——职责单一化是训练稳定与缩放友好的深层原因之一。

为什么知识住在 FFN:事实检索是"模式→补全"的映射,恰好是两层 MLP 的表达形(键匹配+值输出);模型编辑实验(改 FFN 即改事实)与"知识神经元"探针研究支持此假说。注意力的角色则是"在上下文中路由这些知识"。

升维为什么是 4 倍:经验起点(原论文)+ 扩容提高单层容量;SwiGLU 时代在等参数约束下调整为 8/3 倍——"4"是历史惯性而非理论必然,缩放定律(kp-015)给过 d_ff/d 比例的建议。

图示

标准FFN:  FFN(x) = W₂·σ(W₁x + b₁) + b₂    (d→4d→d)
SwiGLU:   FFN(x) = (Swish(W₁x) ⊗ W₃x)·W₂  (三矩阵, Llama系)
角色分工: 注意力=token间路由 ; FFN=token内计算/知识
知识假说: W₁=键(模式检测) , W₂=值(知识补全)
参数占比: FFN ≈ 2/3 总参数 (MoE 替换对象 kp-022)

直观类比

Block 像"编辑部":注意力是"圆桌会议"(记者互相通气),FFN 是"每位记者回到工位独自写稿"(查资料、调用知识、成文)。FFN 的 4 倍中间层像"大书架"——模型记住的事实摆在书架上,会议(注意力)决定这页稿子去书架取哪本书。

实例或案例

  • ROME 模型编辑:定位"凯撒死于…"相关事实的 FFN 层与键值,直接改 W₂ 一行即可改写模型记忆——知识存储假说的实验证明。
  • Llama 的 SwiGLU:所有现代开源模型跟进——激活函数演化的当代定局。
  • MoE:8 个专家 FFN 按路由器激活 2 个——参数巨大、计算稀疏(kp-022)。

常见误区

  • 误区一:"FFN 不重要,注意力才重要"。FFN 占参数 2/3 且承担知识存储;"注意力 hype"掩盖了 FFN 的容量角色。
  • 误区二:"FFN 内部有 token 间交互"。完全没有——FFN 对每个位置独立同函数作用;混合只发生在注意力(kp-006 的分工纪律)。
  • 误区三:"激活函数随便选"。GELU/SwiGLU 与 ReLU 在深模型中的训练稳定性与最终质量有实测差异——现代配方选 SwiGLU 是有实验背书的。

与其他知识点的关系

  • kp-006:Block 中的配对角色。
  • kp-022:MoE=FFN 的并联扩展。
  • kp-030:模型编辑/知识注入的安全应用。

自测题

  1. 写出标准 FFN 公式与典型中间维倍数。

答:$W_2\sigma(W_1x+b_1)+b_2$,中间维 4d(SwiGLU 时代 8d/3 取整)。

  1. "知识存储在 FFN"的证据是什么?

答:模型编辑实验(ROME/MEMIT 定位改写 FFN 键值即改事实)+ 键值记忆假说的探针分析。

  1. SwiGLU 与标准 FFN 的结构差异?

答:门控版 $(Swish(W_1x)\otimes W_3x)W_2$——三个矩阵、门控相乘,等参数下实测更优。

延伸阅读

  • Geva 等, "Transformer FFN Layers Are Key-Value Memories"(EMNLP 2021)。
  • Shazeer, "GLU Variants Improve Transformer"(2020,SwiGLU 出处)。
  • Meng 等, "Locating and Editing Factual Associations in GPT"(NeurIPS 2022,ROME)。