Transformer 模型架构详解与核心原理
1. 背景与动机
2017 年,Google 在论文《Attention Is All You Need》中提出了 Transformer 模型。该模型彻底改变了自然语言处理(NLP)领域,其核心在于使用 Self-Attention 结构取代了传统的 RNN(循环神经网络)或 CNN(卷积神经网络)结构。
相比 RNN,Transformer 最大的优势在于并行计算能力。RNN 必须按时间步顺序处理数据,导致训练速度慢且难以捕捉长距离依赖(Vanishing Gradient Problem)。Transformer 通过自注意力机制,能够直接计算序列中任意两个位置的关系,无论它们之间的距离多远。
2. Transformer 整体架构
Transformer 本质上是一个 Encoder-Decoder 架构。输入序列经过编码器(Encoder)处理,输出序列由解码器(Decoder)生成。
2.1 编码器(Encoder)
编码器由 N 个相同的层堆叠而成(论文中 N=6)。每一层包含两个子层:
- 多头自注意力机制(Multi-Head Self-Attention)
- 前馈神经网络(Position-wise Feed-Forward Networks)
每个子层周围都有残差连接(Residual Connection),随后是层归一化(Layer Normalization)。
2.2 解码器(Decoder)
解码器同样由 N 个相同的层堆叠而成。除了上述两个子层外,中间还插入了一个Encoder-Decoder Attention层,用于关注编码器的输出。
3. 核心组件详解
3.1 词嵌入(Embedding)
输入序列首先通过词嵌入层转换为向量。在原始论文中,词向量的维度为 512。词嵌入仅发生在最底层的编码器中,后续编码器接收上一层的输出。
3.2 自注意力机制(Self-Attention)
Self-Attention 允许模型在处理某个词时关注句子中的其他词。计算过程涉及三个矩阵:Query (Q), Key (K), Value (V)。
3.2.1 缩放点积注意力(Scaled Dot-Product Attention)
公式如下: $$ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V $$ 其中 $d_k$ 是 Key 向量的维度。除以 $\sqrt{d_k}$ 是为了防止点积结果过大,导致 Softmax 梯度消失。
3.2.2 多头注意力(Multi-Head Attention)
为了增强模型的表达能力,Transformer 将 Q、K、V 分别映射到 h 个不同的子空间(h=8),并行进行注意力计算,最后拼接并线性变换。 $$ \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h)W^O $$ $$ \text{where } \text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) $$ 这使得模型能够在不同子空间中关注不同的信息特征。
3.3 前馈网络(Feed-Forward Network)
这是一个全连接网络,对每个位置独立应用。通常包含两个线性变换,中间使用 ReLU 激活函数: $$ \text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 $$ 输入和输出维度通常为 512,中间层维度为 2048。
3.4 残差连接与层归一化
每个子层后都添加残差连接 $x + \text{Sublayer}(x)$,并使用 LayerNorm 稳定训练。这有助于解决深层网络梯度消失问题。
3.5 位置编码(Positional Encoding)
由于 Self-Attention 不保留序列顺序,Transformer 需要显式的位置信息。论文采用正弦和余弦函数生成位置编码: $$ PE_{(pos, 2i)} = \sin(pos / 10000^{2i/d_{model}}) $$ $$ PE_{(pos, 2i+1)} = \cos(pos / 10000^{2i/d_{model}}) $$ 这种设计使得模型能够学习到相对位置关系,并能泛化到比训练集更长的序列。


