Transformer 是一种深度学习模型架构,最初由 Vaswani 等人在 2017 年论文《Attention Is All You Need》中提出。它主要用于自然语言处理(NLP)任务(如机器翻译、语言建模)以及计算机视觉任务(如图像分类)。Transformer 的核心特点是基于 注意力机制(Attention Mechanism) ,不依赖传统的序列结构(如 RNN 或 LSTM),能够高效地并行处理大规模数据。
以下是对 Transformer 架构的详细解释。
1. Transformer 的整体结构
Transformer 的架构由两个核心模块组成:
- Encoder(编码器):从输入序列中提取特征。
- Decoder(解码器):结合编码器的输出和目标序列,生成最终输出。
1.1 基本组件数量
- Encoder:由多个(通常是 6 个)编码层堆叠而成。
- Decoder:由多个(通常是 6 个)解码层堆叠而成。
每个编码层和解码层都包含两个关键子模块:
- 多头注意力机制(Multi-Head Attention)
- 前馈神经网络(Feed-Forward Neural Network)
此外,模型还使用了 残差连接(Residual Connection) 和 层归一化(Layer Normalization),以便加速训练和稳定梯度。
2. 主要组件的工作原理
2.1 输入处理
Transformer 使用嵌入层(Embedding Layer)将输入序列中的每个词或标记(Token)转化为固定维度的向量表示。
(1) Token Embedding
- 将输入序列(如单词或子词)映射到一个固定长度的向量空间。
- 假设输入序列为
x = [x_1, x_2, ..., x_n]
,每个词通过嵌入层映射为d_model
维向量。
(2) 位置编码(Positional Encoding)
由于 Transformer 没有循环和卷积结构,缺乏显式的顺序信息,因此需要通过位置编码显式加入序列位置信息。
-
位置编码是一种固定模式的向量,加入到输入的嵌入向量中。
-
常见的实现方式是使用正弦和余弦函数:
PE(pos,2i)=sin(pos100002i/dmodel)PE_{(pos, 2i)} = \sin\left(\frac{p