FFN(前馈网络)
FFNTransformer 里的 MLP 层
亦作、亦称:前馈网络 · Feed-Forward Network
前馈网络(FFN,Feed-Forward Network)是 Transformer 每层中对单个 token 独立进行非线性变换的子模块,与自注意力机制共同构成 Transformer 的两大核心组件。它通常占整个模型参数量的三分之二左右,并被研究者视为模型存储「事实知识」的主要场所。
概述
前馈网络(FFN,Feed-Forward Network)是 Transformer 每层中对单个 token 独立进行非线性变换的子模块,与自注意力机制共同构成 Transformer 的两大核心组件。它通常占整个模型参数量的三分之二左右,并被研究者视为模型存储「事实知识」的主要场所。
基本定义与结构
FFN 在 Transformer 每层中紧跟自注意力子层出现,对序列中每个位置的向量独立做非线性映射。
- 逐位置独立:FFN 不跨 token 交互,每个位置的向量单独经过同一组权重变换,因此又称「逐位置前馈网络」(position-wise FFN)。
- 三步结构:升维线性层 → 非线性激活 → 降维线性层,原始公式为 FFN(x) = max(0, xW₁ + b₁)W₂ + b₂。
- 维度约定:原论文设 dmodel = 512,隐层宽度 dff = 2048(约 4 倍),此 4× 扩展比成为后续模型的默认配置。
- 参数占比高:FFN 的参数量约占单 Transformer 层参数的 2/3,是模型最大的参数块。
- 残差与归一化:FFN 输出经残差相加后再过 Layer Norm,形成完整的「Add & Norm」结构。
在 Transformer 中的作用
自注意力负责「混合」不同位置的信息,FFN 则负责对每个 token 的表示做深度非线性加工。
- 特征精炼:在注意力完成上下文聚合后,FFN 对单个 token 向量进一步变换,提升表征质量。
- 非线性来源:自注意力机制本身近似线性运算,FFN 中的激活函数是模型主要的逐 token 非线性来源。
- 知识存储:研究表明 FFN 的键值(key-value)结构隐式存储了大量事实三元组,被称为「知识神经元」(knowledge neurons)。
- 参数共享策略:同层内所有位置共用同一组 FFN 权重,但不同 Transformer 层之间权重独立学习。
激活函数的演进
从 ReLU 到门控变体,现代大语言模型的 FFN 激活函数持续升级。
- ReLU:原始 Transformer 采用,简单高效,但存在「神经元死亡」(dead neurons)问题。
- GeLU:GPT 与 BERT 系列引入,平滑近似 ReLU,在大多数任务上优于 ReLU。
- SwiGLU / GeGLU:Noam Shazeer 于 2020 年在《GLU Variants Improve Transformer》中提出门控线性单元变体,通过两路线性投影的逐元素积实现门控,显著优于 ReLU/GeLU 基线,现已成为 LLaMA、Mixtral 等主流模型的标配。
- 三矩阵结构:采用 SwiGLU 时,FFN 由两个输入投影和一个输出投影共三个矩阵构成,与原始两矩阵结构不同,隐层宽度通常调整为 8/3 × dmodel 以保持参数量不变。
与混合专家(MoE)的关系
混合专家架构本质上是对 FFN 的结构性改造,二者密切相关。
- 替换逻辑:MoE 用 N 个并行 FFN「专家」替换单个稠密 FFN,每次前向传播只激活其中 K 个。
- 路由机制:一个轻量级 路由器(router) 决定每个 token 被分配给哪些专家 FFN。
- 参数与算力解耦:总参数量随专家数量线性增长,但每 token 实际计算量保持不变,实现「参数增长不增算力」。
- 代表模型:Mixtral 8×7B、DeepSeek-V2、GPT-4(据推测)均采用 MoE-FFN 结构。
知识编辑与可解释性
FFN 被认为是模型事实记忆的核心,催生了一系列知识编辑方法。
- 键值记忆视角:Geva 等人(2021)将 FFN 的下层权重解读为「键」、上层权重解读为「值」,发现特定神经元对应特定事实。
- ROME:通过秩一矩阵更新精准修改 FFN 中的特定事实,无需重新训练整个模型。
- MEMIT:ROME 的批量扩展版,可一次性编辑数千条事实。
- 稀疏激活研究:ReLU FFN 中大量神经元输出为零,利用这种稀疏性可在不损失精度的前提下减少推理计算。
参数规模与计算开销
FFN 是 Transformer 中参数量和计算量最集中的组件,对推理性能影响显著。
- 计算量:单次前向传播 FLOPs 约为 2 × seq_len × dmodel × dff × 2(两层矩阵乘),是推理耗时的主要来源之一。
- 显存压力:推理时 FFN 权重需常驻显存,是大模型显存占用的主要来源。
- 并行友好:两次密集矩阵乘法天然适合 GPU/TPU 大规模并行加速。
- 压缩目标:对 FFN 做剪枝或量化(如 GPTQ、AWQ)可显著压缩模型体积,是模型压缩的主要对象。
发展脉络
FFN 的演化贯穿 Transformer 发展史。
- 2017:Vaswani 等人在《Attention Is All You Need》中固化「ReLU + 4× 扩展比」的 FFN 标准结构。
- 2018:GPT 与 BERT 分别采用 GeLU 激活,FFN 性能小幅提升。
- 2020:Shazeer 发表《GLU Variants Improve Transformer》,提出 SwiGLU/GeGLU 门控变体。
- 2021:Geva 等人发表「Transformer Feed-Forward Layers Are Key-Value Memories」,将 FFN 解释为知识存储结构,开启知识编辑研究。
- 2022:LLaMA 采用 SwiGLU,固化门控 FFN 为开源大模型事实标准;ROME 知识编辑方法发布。
- 2023—2024:MoE-FFN 架构(Mixtral 8×7B、DeepSeek-MoE)在开源社区普及,稀疏 FFN 成为扩展模型规模的主流路径。
常见误解
日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。
- 「Transformer 里的 MLP 层」
- 「每个 token 独立过的小网络」
- 「参数大户之一」
相关术语
和本术语关联紧密的其他词条,便于串联理解。
🎯 考点练习
含该术语的高频面试题,含标准答案与追问。
- 高级场景查看详解 →
如何估算 Transformer 模型的参数量与训练显存占用?
参数量约 12·L·d²;训练显存=参数+梯度+优化器状态(Adam)+激活。
- 高级概念查看详解 →
混合专家模型(MoE)的原理和优势是什么?
MoE 用门控网络把每个 token 路由到少数专家 FFN,稀疏激活让总参数巨大而单 token 计算量很低,兼顾容量与效率。
- 中级概念查看详解 →
TensorFlow 中的计算图是什么?
TensorFlow 计算图将运算表示为有向无环图中的节点,边表示张量依赖;1.x 需先建图再用 Session 执行,2.x 默认即时执行但可用 tf.function 编译为图。
- 中级概念查看详解 →
TensorFlow Lite 是什么?适用于哪些场景?
TensorFlow Lite 是 TensorFlow 的移动端与嵌入式推理引擎,通过转换与量化压缩模型,在 Android、iOS、树莓派等边缘设备上低延迟运行深度学习模型。
延伸阅读
从知识库精选 3 篇文章,帮助深入理解该术语。
外部参考
维基百科:查看「FFN」词条本页内容为本站原创撰写;维基百科链接仅作延伸参考。
