Transformer 是一种基于注意力机制(Attention)构建的模块化神经网络结构。它的核心思想是:在处理一个序列时,能够同时考虑所有历史状态与当前状态,并进行加权融合,从而基于更全面的上下文信息来预测未来的状态。在自然语言处理领域,基于 Transformer 的语言模型以词序列作为输入,根据给定的上文来预测下一个词出现的概率。本文将深入解析 Transformer 的基本原理,并阐述如何利用它构建强大的语言模型。
Transformer 本质上是由两种基本模块重复堆叠构成的网络:
- 注意力(Attention)模块
- 全连接前馈(Fully-connected Feedforward)模块
其中,自注意力模块由自注意力层(Self-Attention Layer)、残差连接(Residual Connections)和层正则化(Layer Normalization)组合而成。全连接前馈模块则由全连接前馈层、残差连接和层正则化组成。两个模块的结构如下图所示:


下面我们详细拆解每个组件的原理与作用。
1.1 注意力层(Attention Layer)
注意力机制是 Transformer 的灵魂,它使模型能够动态地关注输入序列中不同部分的信息。

1.2 全连接前馈层(Fully-connected Feedforward Layer)
该层占据了 Transformer 模型近三分之二的参数量,主要负责信息的非线性变换与记忆。它可以被视作一种 Key-Value 模式的记忆存储与管理模块。全连接前馈层包含两层线性变换,中间以 ReLU 函数作为激活层。设其输入为 ( x ),则该层的计算可表示为:

其中,( W_1 )、( W_2 ) 和 ( b_1 )、( b_2 ) 分别是两层对应的权重与偏置参数。第一层的输出可类比为神经记忆中的“键(Key)”,而第二层的输出则对应“值(Value)”。
1.3 层正则化(Layer Normalization)
层正则化用于稳定训练过程,加速收敛。它对单个样本的所有特征维度进行标准化。

1.4 残差连接(Residual Connections)
引入残差连接能有效缓解深层网络中的梯度消失问题。在基础的 Transformer 编码块中,存在两个残差连接:
- 将自注意力层的输入通过一条捷径(Skip Connection)叠加到其输出上,再送入层正则化。
- 将全连接前馈层的输入通过捷径叠加到其输出上,再送入层正则化。
这种将层正则化置于残差连接之后的架构被称为 Post-LN Transformer。与之相对的是 Pre-LN Transformer,它将层正则化放在残差连接之前。两者各有优劣:Post-LN 应对表征坍塌(Representation Collapse)的能力更强,但缓解梯度消失稍弱;Pre-LN 则能更好地处理梯度消失,但对表征坍塌的抵抗力略弱。

2 Encoder-Decoder 原始架构
原始的 Transformer 采用经典的 Encoder-Decoder 架构,整体结构如图所示:

- Encoder 部分:由 N 个(原论文中 N=6)相同的编码层(Encoder Layer)堆叠而成。每个编码层包含一个自注意力模块(Query, Key, Value 来源相同)和一个全连接前馈模块。
- Decoder 部分:同样由 N 个解码层(Decoder Layer)堆叠而成。每个解码层包含:
- 一个掩码自注意力模块(防止看到未来信息)
- 一个交叉注意力模块(Query 来自解码器,Key 和 Value 来自编码器最终的输出)
- 一个全连接前馈模块
值得注意的是,Transformer 的 Encoder 和 Decoder 部分可以独立用于构建不同类型的语言模型,分别对应 Encoder-Only 模型(如 BERT)和 Decoder-Only 模型(如 GPT 系列)。
在 Transformer 架构的基础上,通过设计不同的预训练任务,可以训练出功能各异的语言模型:
- Encoder-Only 模型:利用 Transformer 的 Encoder,结合“掩码语言模型”(Masked Language Model)等任务进行训练,例如 BERT。
- Encoder-Decoder 模型:同时使用 Encoder 和 Decoder,结合“文本到文本”的多种任务进行训练,例如 T5。
- Decoder-Only 模型:仅使用 Transformer 的 Decoder 部分,通过“下一词预测”(Next Token Prediction)任务进行训练,例如 GPT-3。
下面以最常见的“下一词预测”任务为例,简要说明训练一个 Decoder-Only 的 Transformer 语言模型的流程。
模型的目标是最大化给定上文情况下,下一个词出现的概率。对于一个包含 ( T ) 个词的序列 ( s = (w_1, w_2, ..., w_T) ),其损失函数通常定义为负对数似然:
[
\mathcal{L} = -\sum{i=1}^{T-1} \log P(w{i+1} | w_1, ..., w_i; \Theta)
]
其中,模型参数 ( \Theta ) 通过反向传播和梯度下降进行优化。
训练完成后,模型可通过自回归(Auto-regressive) 方式生成文本:首先输入起始词,模型预测出第一个词;然后将预测出的词与输入拼接,作为新的输入预测下一个词,如此循环迭代,直至生成完整序列。与训练 RNN 类似,Transformer 在预训练阶段通常也采用“教师强迫(Teacher Forcing)”策略。
优势与挑战:
相较于 RNN 的串行处理,Transformer 的并行输入特性使其能够充分利用现代硬件进行并行计算,极大提升了训练效率。然而,这种并行性也带来了挑战:其自注意力模块的计算复杂度随输入序列长度呈平方级增长(O(n²)),这给处理超长文本序列带来了显著的计算和内存压力。