Transformer 算法核心架构与原理详解
Transformer 的核心思想是通过完全基于注意力机制的方式来建模序列关系,而不依赖传统序列模型(如 RNN 和 LSTM)的循环结构,极大提高了训练并行性,在自然语言处理等任务中取得了显著的成果。

Transformer 的架构
Transformer 由编码器(Encoder)和解码器(Decoder)两部分组成。

编码器(Encoder)
编码器接收输入序列,将其映射为潜在表示。编码器由多个编码层堆叠组成,每个编码层包含两个子层:
- 多头自注意力机制(Multi-Head Self-Attention)
- 前馈神经网络(Feed-Forward Neural Network)
解码器(Decoder)
解码器接收编码器的输出和目标序列,生成最终输出。它由多个解码层堆叠组成,每个解码层包含三个子层:
- 多头自注意力机制(Masked Multi-Head Self-Attention)
- 编码器 - 解码器注意力机制(Encoder-Decoder Attention)
- 前馈神经网络(FFN)

核心组件
1. 输入嵌入
输入嵌入是将输入序列中的每个离散符号(例如单词或子词)转换为密集的向量表示(即嵌入向量)的过程。
计算公式如下:
- $X$:输入序列
- $E$:输入序列的嵌入表示,维度为 $(T, d_{model})$,其中 $T$ 是序列长度,$d_{model}$ 是嵌入向量维度。

2. 位置编码
由于 Transformer 没有像 RNN 或 LSTM 那样的序列顺序处理机制,它不能自动感知序列中词与词之间的顺序关系。因此,需要显式地引入位置编码来为每个词的表示添加位置信息。
位置编码通常通过正弦和余弦函数的组合来实现。
计算公式为:
$$PE(pos, 2i) = \sin(pos / 10000^{2i/d_{model}})$$ $$PE(pos, 2i+1) = \cos(pos / 10000^{2i/d_{model}})$$
其中:
- $pos$ 是序列中某个元素的位置(从 0 开始)。
- $i$ 是位置编码向量中的维度索引。
- $d_{model}$ 是嵌入向量的维度。








