Transformer模型中的前馈神经网络(FFN)原理与作用详解
字数 1496 2025-11-20 02:09:05
Transformer模型中的前馈神经网络(FFN)原理与作用详解
1. 知识点描述
Transformer模型中的前馈神经网络(Feed-Forward Network, FFN)是编码器和解码器层的核心组件之一,位于自注意力机制之后。其作用是对自注意力层输出的表示进行非线性变换,增强模型的表达能力。FFN是一个简单的两层全连接网络,通过激活函数引入非线性,帮助模型学习更复杂的特征交互。
2. FFN的结构与计算步骤
FFN的结构如下(以原始Transformer论文为例):
- 输入:自注意力层的输出矩阵 \(X \in \mathbb{R}^{n \times d_{\text{model}}}\)(\(n\)为序列长度,\(d_{\text{model}}\)为隐藏层维度)。
- 第一层(扩展层):线性变换将维度从 \(d_{\text{model}}\) 扩展到 \(d_{\text{ff}}\)(通常 \(d_{\text{ff}} = 4 \times d_{\text{model}}\)),后接激活函数(如ReLU或GELU):
\[ Y_1 = \text{ReLU}(X W_1 + b_1), \quad W_1 \in \mathbb{R}^{d_{\text{model}} \times d_{\text{ff}}} \]
- 第二层(收缩层):线性变换将维度从 \(d_{\text{ff}}\) 恢复为 \(d_{\text{model}}\):
\[ Y_2 = Y_1 W_2 + b_2, \quad W_2 \in \mathbb{R}^{d_{\text{ff}} \times d_{\text{model}}} \]
- 输出:\(Y_2 \in \mathbb{R}^{n \times d_{\text{model}}}\),与输入维度一致,便于残差连接和层归一化。
3. FFN的设计动机
- 非线性增强:自注意力机制本质是线性变换的加权和,FFN通过激活函数引入非线性,使模型能拟合更复杂的函数。
- 位置独立性:FFN对序列中的每个位置独立处理(类似卷积的逐点操作),避免跨位置干扰,专注于每个位置的局部特征变换。
- 维度扩展与收缩:先扩展维度再压缩,相当于在高维空间进行特征交互,增强模型容量而不破坏输入结构。
4. FFN的变体与优化
- 激活函数选择:原始Transformer使用ReLU,后续研究采用GELU(高斯误差线性单元)或Swish,缓解ReLU的梯度消失问题。
- 参数共享:有些研究尝试在FFN层间共享部分参数(如T5模型),减少计算量。
- 稀疏化FFN:如Switch Transformer使用混合专家(MoE)结构,用多个FFN专家网络动态路由输入,提升模型规模而不显著增加计算成本。
5. FFN与自注意力的分工
- 自注意力层:捕捉序列中不同位置间的依赖关系(全局交互)。
- FFN层:对每个位置的表示进行深度加工,提取局部特征。两者结合形成“注意力+前馈”的互补结构,共同构建Transformer的强大表达能力。
6. 实际应用中的细节
- FFN通常与残差连接和层归一化结合:
\[ \text{Output} = \text{LayerNorm}(X + \text{FFN}(X)) \]
残差连接缓解梯度消失,层归一化稳定训练过程。
- 在推理时,FFN的计算可并行化(针对整个序列),效率高于递归结构(如RNN)。