FFN(前馈网络)
Transformer中每个Block内的两层全连接网络,对每个token独立做非线性变换。如果说注意力层负责token间的"信息交换",FFN就负责每个token自身的"信息加工",两者分工互补。
FFN(前馈网络)
一句话理解
Transformer 中的 FFN 是一个两层全连接网络,对每个 token 独立做非线性变换——注意力层管"交换信息",FFN 管"加工信息"。
结构
FFN(x)=W2⋅activation(W1⋅x+b1)+b2- 第一层线性变换:维度从 dmodel 扩展到 dff(通常 4 倍,如 768 → 3072)
- 激活函数:原始论文用 ReLU,现代模型常用 GELU 或 SwiGLU
- 第二层线性变换:维度从 dff 压缩回 dmodel
先扩展再压缩的设计("瓶颈"结构),让模型在高维空间中做非线性变换,再映射回原始维度。
关键特征:token 独立
FFN 对每个 token 独立处理,不涉及 token 之间的交互。这与 Self-Attention 形成互补:
| 组件 | 作用域 | 职责 |
|---|---|---|
| Self-Attention | token 之间 | 信息交换——"谁跟谁有关" |
| FFN | 单个 token | 信息加工——非线性特征变换 |
参数占比
在 Transformer 中,FFN 的参数量通常占总参数的 2/3 左右。虽然结构简单,但它是模型存储知识的主要场所——研究表明,FFN 的权重矩阵实质上在做"键值记忆",类似于一个巨大的查找表。
引用本术语的文章