模型架构 进阶

FFN

别名:前馈网络 / Feed-Forward Network

Transformer 中逐位置的两层前馈网络,负责非线性变换并占据大量参数。

更新于 2026/11/08
架构Transformer参数

一句话定义

FFN 是 Transformer 每个层里注意力之后的子层:对每个 token 独立地做「升维 → 激活 → 降维」,不与其他位置交互。

结构

典型结构是两层线性变换加一个非线性激活:

  • 第一层把维度扩展到中间维度,常见是原维度的 4 倍。
  • 激活函数做非线性变换,常见 GeLU、SwiGLU。
  • 第二层把维度压回原维度,便于残差相加。

因为它对每个位置独立计算,所以没有跨 token 的信息混合;跨位置的信息交换全部由 Attention 完成。

FFN:升维 → 激活 → 降维 → 残差相加

为什么它很重要

在多数 Transformer 中,FFN 的参数量占全模型的一半以上,甚至接近三分之二。注意力决定「看哪里」,FFN 则承担大量的特征变换和知识存储。很多模型容量扩展,本质上是在扩大 FFN 的中间维度。中间维度通常取 4 倍,是扩容时最常调整的超参数之一;越大容量越强,显存和计算也越高,因此它常被当作模型容量的旋钮。推理时它的权重读取也是显存带宽压力的一部分。

与其他结构的关系

  • MoE 把单个 FFN 换成多个专家 FFN,再加一个路由网络,让每个 token 只经过少数专家。
  • 一些高效架构用门控线性单元(GLU)变体替代普通两层结构,在相近参数量下提升效果。
  • 并行化时 FFN 往往是显存和通信的主要压力来源。

用在哪里

  • 理解 Transformer 参数量分布、模型扩容和推理显存时。
  • MoE、GLU 等架构改动的起点;调 FFN 中间维度就是调模型容量。

常见误区

  • FFN 不是「全连接分类头」,它在每一层内部都重复出现。
  • FFN 不做位置混合,不要把它和注意力混为一谈。
  • 参数量大不等于计算量同比例大:MoE 就是利用这个差异做稀疏激活。

相关概念

  • Transformer:FFN 所属的主干结构。
  • MoE:用多个专家替代单个 FFN。
  • MHA:与 FFN 交替堆叠的注意力子层。