Transformer架构的诞生背景
在Transformer架构出现之前,自然语言处理(NLP)领域长期依赖于循环神经网络(RNN)和长短期记忆网络(LSTM)等序列模型。这些模型通过处理序列中的每个元素,并维护一个隐藏状态来捕捉上下文信息,但存在明显的局限性:一是串行处理导致训练效率低下,无法充分利用并行计算;二是长距离依赖问题,当序列长度增加时,梯度消失或爆炸使得模型难以捕捉相距较远的元素之间的关联。2017年,Google在论文《Attention Is All You Need》中提出了Transformer架构,彻底摒弃了循环结构,完全基于注意力机制实现并行计算,显著提升了模型性能和训练效率,成为现代NLP乃至人工智能领域的基石。
Transformer的核心架构设计
整体结构:编码器-解码器框架
Transformer采用编码器-解码器(Encoder-Decoder)架构,编码器负责处理输入序列并将其转换为连续的表示向量,解码器则基于这些表示向量生成输出序列。编码器和解码器均由N个相同的层堆叠而成,原始论文中N=6。这种堆叠设计允许模型在不同层次上捕捉不同抽象级别的特征,浅层可能关注局部语法结构,深层则捕捉语义层面的全局依赖。
输入表示:词嵌入与位置编码
Transformer的输入首先通过词嵌入层(Embedding Layer)将离散的 token 转换为低维连续向量。与RNN不同,Transformer本身不具备处理序列顺序的能力,因此需要显式引入位置信息。位置编码(Positional Encoding)是解决这一问题的关键,它将 token 在序列中的位置信息编码为一个向量,与词 embedding 相加后作为输入。原始Transformer采用正弦和余弦函数生成的位置编码:
- 对于偶数位置:$PE_{(pos,2i)} = \sin(pos/10000^{2i/d_{model}})$
- 对于奇数位置:$PE_{(pos,2i+1)} = \cos(pos/10000^{2i/d_{model}})$
其中,$pos$ 是 token 的位置索引,$i$ 是维度索引,$d_{model}$ 是 embedding 维度。这种设计使得位置编码具有可推广性,能够处理训练时未见的序列长度。
自注意力机制:Transformer的核心创新
单头自注意力的计算过程
自注意力(Self-Attention)是Transformer的核心组件,其核心思想是让序列中的每个 token 都能够与序列中的所有 token(包括自身)进行交互,计算加权表示。具体计算步骤如下:
- 生成查询(Query)、键(Key)、值(Value)向量:对于输入序列中的每个 token,通过三个不同的线性变换矩阵($W^Q$、$W^K$、$W^V$)将其转换为对应的 Q、K、V 向量。假设输入 token 的 embedding 为 $x$,则 $Q = xW^Q$,$K = xW^K$,$V = xW^V$。
- 计算注意力分数:通过 Q 和 K 的点积衡量 token 之间的相关性。对于第 $i$ 个 token 的查询向量 $Q_i$ 和第 $j$ 个 token 的键向量 $K_j$,注意力分数为 $Q_i \cdot K_j$。为了防止点积值过大导致 softmax 梯度消失,分数会除以 $\sqrt{d_k}$($d_k$ 是 K 向量的维度)。
- 归一化注意力权重:对注意力分数应用 softmax 函数,得到归一化的注意力权重 $\alpha_{ij}$,表示第 $j$ 个 token 对第 $i$ 个 token 的重要性。
- 加权求和输出:将注意力权重与对应的 V 向量相乘后求和,得到第 $i$ 个 token 的自注意力输出 $Z_i = \sum_j \alpha_{ij} V_j$。
整个过程的矩阵形式可表示为:$Attention(Q,K,V) = \text{softmax}(\frac{QK^T}{\sqrt{d_k}})V$。
多头注意力机制
单头自注意力只能从一种角度捕捉 token 之间的关系,多头注意力(Multi-Head Attention)通过并行使用多个“头”来增强模型的表达能力。具体而言,将 Q、K、V 向量分别投影到 $h$ 个不同的子空间(每个子空间对应一个头),每个头独立执行自注意力计算,最后将所有头的输出拼接并通过线性变换得到最终结果:

$\text{MultiHead}(Q,K,V) = \text{Concat}(head_1, head_2, …, head_h)W^O$
其中,$head_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V)$,$W_i^Q$、$W_i^K$、$W_i^V$ 是每个头对应的线性变换矩阵,$W^O$ 是输出投影矩阵。多头注意力允许模型同时关注不同位置和不同表示子空间的信息,例如一个头可能关注局部语法结构,另一个头可能关注全局语义依赖。
编码器层的详细结构
编码器层的核心组件
每个编码器层由两个子层组成:多头自注意力子层和前馈神经网络(Feed-Forward Network, FFN)子层。两个子层都采用了残差连接(Residual Connection)和层归一化(Layer Normalization)技术。
- 多头自注意力子层:如前所述,用于捕捉输入序列内部的依赖关系。该子层接收上一层输出的输入(初始为添加了位置编码的词 embedding),输出每个 token 的上下文相关表示。
- 前馈神经网络子层:由两个线性变换和一个非线性激活函数(ReLU)组成,结构为 $\text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2$。FFN 对每个 token 的表示进行独立变换,增强模型的非线性表达能力,通常隐藏层维度是 $d_{model}$ 的4倍(原始论文中为2048,$d_{model}=512$)。
- 残差连接与层归一化:每个子层在计算前都会将输入添加到子层的输出中(残差连接),然后进行层归一化。残差连接解决了深层网络中的梯度消失问题,层归一化则通过规范化每个样本的特征分布,加速模型收敛。
编码器层的完整计算流程可表示为:$\text{LayerNorm}(x + \text{Sublayer}(\text{LayerNorm}(x)))$,其中 $\text{Sublayer}$ 代表多头自注意力或 FFN 子层。
解码器层的特殊设计
解码器层的三个子层
解码器层比编码器层多一个子层,且每个子层都采用残差连接和层归一化。其核心结构包括:
- 掩码多头自注意力子层(Masked Multi-Head Self-Attention):与编码器的自注意力类似,但需要引入掩码机制。在生成第 $i$ 个 token 时,只能关注到位置 $1$ 到 $i-1$ 的 token,而不能看到后续 token(防止“未来信息泄露”)。通过在注意力分数矩阵的上三角位置(对应未来位置)设置负无穷大,使得这些位置的 softmax 输出为0,实现掩码效果。
- 编码器-解码器注意力子层(Encoder-Decoder Attention):也称为交叉注意力(Cross-Attention),其查询向量来自解码器上一层的输出,键和值向量来自编码器的最终输出。这使得解码器能够关注输入序列中与当前生成 token 最相关的部分,实现“对齐”功能。
- 前馈神经网络子层:结构与编码器层的 FFN 相同,用于进一步处理解码器的表示。
解码器层的计算流程为:$\text{LayerNorm}(x + \text{Sublayer}_i(\text{LayerNorm}(x)))$,其中 $i=1,2,3$ 分别对应上述三个子层。
输出层与训练技术
输出层:线性变换与Softmax
解码器最后一层的输出通过一个线性变换层(投影层)映射到词汇表大小的维度,然后应用 softmax 函数生成每个 token 的概率分布。在训练阶段,模型通过交叉熵损失函数优化,目标是最大化正确 token 的概率。推理阶段则采用贪心搜索(Greedy Search)或束搜索(Beam Search)等策略从概率分布中选取最可能的 token 序列。

关键训练技术
Transformer的训练依赖于多项关键技术,这些技术对模型性能至关重要:
- 标签平滑(Label Smoothing):在训练时,将正确 token 的概率从1略微降低(如0.1),同时将其他 token 的概率均匀分配。这可以防止模型过度自信,提高泛化能力。
- Adam 优化器与学习率预热:采用带有动量修正的 Adam 优化器,并设计了两阶段学习率调度:先进行线性预热(Warmup),在前 4000 步将学习率从 0 增加到设定值(如 $1e-4$),之后按步数的平方根倒数衰减。这种策略避免了训练初期的梯度震荡,加速了模型收敛。
- Dropout 正则化:在 embedding 层、编码器和解码器的子层输出以及 FFN 的内部层应用 dropout,防止模型过拟合。原始论文中 dropout 概率设置为 0.1。
Transformer的变体与扩展应用
预训练语言模型:BERT与GPT
Transformer架构催生了众多预训练语言模型(Pre-trained Language Models, PLMs),其中最具代表性的是BERT和GPT。BERT(Bidirectional Encoder Representations from Transformers)基于Transformer编码器,通过掩码语言模型(MLM)和下一句预测(NSP)任务进行预训练,能够捕捉双向上下文信息,适用于文本分类、命名实体识别等下游任务。GPT(Generative Pre-trained Transformer)基于Transformer解码器,采用自回归语言模型进行预训练,专注于单向文本生成,如对话系统、文本续写等任务。
超越NLP领域的扩展
Transformer架构的成功不仅限于NLP,还扩展到计算机视觉(CV)、语音处理、多模态学习等领域。在CV中,Vision Transformer(ViT)将图像分割成固定大小的 patch,将其视为序列输入 Transformer 编码器,在图像分类任务上取得了与CNN相当甚至更好的性能;在语音处理中,Conformer 模型结合了 CNN 的局部特征提取能力和 Transformer 的全局依赖建模能力,成为语音识别的主流架构;在多模态领域,CLIP 通过对比学习对齐图像和文本的表示,实现了零样本图像分类能力。
Transformer的优势与挑战
核心优势
- 并行计算能力:摒弃循环结构,所有 token 可并行处理,大幅提升训练和推理效率,适合大规模数据集训练。
- 长距离依赖建模:自注意力机制直接计算任意两个 token 之间的关联,不受序列长度限制,有效解决了RNN的长距离依赖问题。
- 强大的表示能力:多头注意力和堆叠层设计使模型能够捕捉多层次的抽象特征,适用于复杂的序列到序列任务。
面临的挑战
- 计算复杂度高自注意力机制的时间复杂度为 $O(n^2)$,其中 $n$ 是序列长度。当序列较长时(如文本摘要、长文档理解),内存和计算消耗会急剧增加,限制了其在超长序列上的应用。
- 数据需求量大:Transformer参数量庞大(如BERT-Base有110M参数),需要海量数据进行预训练才能发挥性能,对计算资源和数据质量要求较高。
- 可解释性不足:尽管注意力权重可以提供一定的可解释性,但模型内部的决策机制仍较难理解,尤其在处理复杂语义时,注意力分布与人类认知可能存在差异。
总结与未来展望

Transformer架构通过自注意力机制和并行计算设计,彻底改变了人工智能领域的研究范式,成为现代深度学习模型的基石。从最初的机器翻译任务到如今的通用人工智能(AGI)探索,Transformer及其变体不断推动着技术边界。未来,针对Transformer的计算效率优化(如稀疏注意力、线性注意力)、长序列处理能力提升(如Transformer-XL、Compressive Transformer)以及与符号推理、知识图谱的结合,将是重要的研究方向。同时,随着模型规模的持续增长,如何降低训练成本、提升模型泛化性和安全性,也是亟待解决的关键问题。Transformer架构的发展不仅体现了深度学习的强大潜力,也为构建更智能、更通用的人工智能系统开辟了新的道路。
发表回复