Transformer架构的诞生背景
在自然语言处理(NLP)领域,序列建模任务长期依赖于循环神经网络(RNN)和长短期记忆网络(LSTM)。这类模型按顺序处理输入序列,虽然能够捕捉时序依赖关系,但存在明显的局限性:一是无法并行计算,训练效率低下;二是长距离依赖衰减问题,当序列长度增加时,模型难以记住 distant tokens 之间的关联。2017年,Google在论文《Attention Is All You Need》中提出了Transformer架构,彻底摒弃了循环和卷积结构,完全基于自注意力机制(Self-Attention)实现序列建模,为NLP领域带来了革命性突破,并逐渐扩展到计算机视觉、语音处理等多个领域。
核心组件:自注意力机制
自注意力机制是Transformer的基石,其核心思想是让序列中的每个 token 与序列中的所有 token 进行交互,计算相关性得分,从而动态生成每个 token 的表示。具体而言,给定输入序列 \( X = [x_1, x_2, …, x_n] \),其中 \( x_i \in \mathbb{R}^d \)(d为模型维度),自注意力通过以下步骤计算输出:
查询(Query)、键(Key)、值(Value)的生成
首先,通过三个可学习的线性变换矩阵 \( W^Q \)、\( W^K \)、\( W^V \)(维度均为 \( d \times d_k \),\( d_k \)为键/值维度),将输入 token 转换为查询、键、值向量:
- \( q_i = x_i W^Q \)
- \( k_i = x_i W^K \)
- \( v_i = x_i W^V \)
其中,\( q_i \) 代表当前 token 的“查询”意图,用于与其他 token 的“键”匹配;\( k_i \) 是其他 token 的“键”,用于与查询匹配;\( v_i \) 是其他 token 的“值”,用于生成最终的加权表示。
注意力得分的计算与归一化
对于序列中的第 i 个 token,其与第 j 个 token 的注意力得分通过点积计算:
\( \text{score}(q_i, k_j) = q_i \cdot k_j^T \)
为了避免点积值过大导致梯度消失,需除以 \( \sqrt{d_k} \) 进行缩放:
\( \text{attention\_score}(i,j) = \frac{q_i \cdot k_j^T}{\sqrt{d_k}} \)
随后,通过 Softmax 函数将得分转换为概率分布(注意力权重):
\( \alpha_{ij} = \text{softmax}(\text{attention\_score}(i,j)) = \frac{\exp(\text{attention\_score}(i,j))}{\sum_{m=1}^n \exp(\text{attention\_score}(i,m))} \)
注意力权重 \( \alpha_{ij} \) 表示第 j 个 token 对第 i 个 token 的重要性,权重越高,说明两者关联越强。
输出向量的生成
最终,第 i 个 token 的输出向量 \( z_i \) 是所有 value 向量的加权和:
\( z_i = \sum_{j=1}^n \alpha_{ij} v_j \)
所有 token 的输出向量拼接后,形成自注意力的输出矩阵 \( Z \in \mathbb{R}^{n \times d_v} \)(\( d_v \)为值维度,通常 \( d_k = d_v \))。
多头注意力(Multi-Head Attention)

单头注意力只能捕捉一种类型的依赖关系,而实际任务中,序列可能存在多种语义关联(如语法结构、语义指代、长距离依赖等)。多头注意力通过并行多组自注意力机制,从不同子空间学习不同模式的依赖关系,最后将结果拼接并线性投影融合。
多头注意力的结构
假设有 h 个注意力头,每个头有自己的 \( W^Q_h \)、\( W^K_h \)、\( W^V_h \)(维度 \( d \times d_k \)),则第 h 个头的输出为:
\( Z_h = \text{Attention}(XW^Q_h, XW^K_h, XW^V_h) \)
将所有头的输出拼接,并通过线性变换矩阵 \( W^O \)(维度 \( h d_v \times d \))融合:
\( \text{MultiHead}(X) = \text{Concat}(Z_1, Z_2, …, Z_h) W^O \)
多头注意力的优势在于:不同头可以关注不同的语义信息,例如一个头可能关注局部语法结构,另一个头可能关注全局语义关联,从而提升模型的表达能力。实践中,h 通常取 8 或 12,\( d_k = d_v = d/h \),以保证总计算量与单头注意力相当。
位置编码(Positional Encoding)
自注意力机制本身不具备序列顺序信息,因为其计算不依赖 token 的位置。为了让模型区分 token 的顺序,Transformer引入了位置编码,将位置信息注入输入表示中。常用的位置编码是正弦编码(Sinusoidal Positional Encoding),其公式为:
\( PE_{(pos,2i)} = \sin\left(\frac{pos}{10000^{2i/d}}\right) \)
\( PE_{(pos,2i+1)} = \cos\left(\frac{pos}{10000^{2i/d}}\right) \)
其中,pos 是 token 的位置索引(从0开始),i 是维度索引(\( 0 \leq i < d/2 \)),d 是模型维度。这种编码方式具有以下特点:1)对于固定的维度 i,\( PE_{pos} \) 是 pos 的周期函数,能处理任意长度的序列;2)不同位置的编码线性可区分,便于模型学习位置关系;3)通过正弦和余弦函数的交替,使相邻位置编码的差异具有平滑性。最终,输入 token 的表示 \( x_i \) 与其位置编码 \( PE_i \) 相加,作为自注意力的输入:
\( \hat{x}_i = x_i + PE_i \)
编码器-解码器结构
Transformer采用编码器-解码器(Encoder-Decoder)架构,编码器负责处理输入序列,生成包含上下文信息的表示;解码器基于编码器的输出生成目标序列。编码器和解码器均由 N 个相同的层堆叠而成(N 通常为6)。
编码器(Encoder)
编码器由 N 个编码层组成,每个编码层包含两个子层:多头自注意力子层和前馈神经网络(Feed-Forward Network, FFN)子层,子层之间采用残差连接(Residual Connection)和层归一化(Layer Normalization)。
- 多头自注意力子层:处理输入序列,计算每个 token 的上下文表示,使用掩码机制(Mask)确保当前位置只能关注之前的 token(在解码器中需要,编码器无需掩码)。
- FFN子层:由两个线性变换和 ReLU 激活函数组成,公式为 \( \text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 \),其中 \( W_1 \in \mathbb{R}^{d \times d_f} \),\( W_2 \in \mathbb{R}^{d_f \times d} \),\( d_f \)通常为 4d,用于增强模型非线性表达能力。
- 残差连接与层归一化:每个子层的输出先与输入相加(残差连接),再进行层归一化,即 \( \text{LayerNorm}(x + \text{Sublayer}(x)) \)。残差连接缓解梯度消失问题,层归一化稳定训练过程。
编码器的输入经过 N 层处理后,输出包含全局上下文信息的序列表示 \( H = [h_1, h_2, …, h_n] \),作为解码器的输入。
解码器(Decoder)

解码器同样由 N 个解码层组成,每个解码层包含三个子层:掩码多头自注意力子层、编码器-解码器交叉注意力子层和FFN子层,同样使用残差连接和层归一化。
- 掩码多头自注意力子层:在生成目标序列的第 t 个 token 时,只能关注位置 1 到 t-1 的 token(避免“未来信息”泄露),通过在注意力得分矩阵的上三角位置添加负无穷大掩码实现。
- 编码器-解码器交叉注意力子层:查询来自解码器的上一层输出,键和值来自编码器的输出 \( H \),用于将输入序列的上下文信息注入目标序列的生成过程。
- FFN子层:与编码器中的FFN结构相同,进一步处理交叉注意力的输出。
解码器的最后一层输出通过线性层和 Softmax 函数,生成目标序列中每个 token 的概率分布,通常采用教师强制(Teacher Forcing)策略进行训练,即用真实标签作为解码器的输入(而非预测值)。
训练与优化关键技术
损失函数与优化器
Transformer通常采用交叉熵损失(Cross-Entropy Loss)作为监督信号,对于序列生成任务,通过掩码忽略填充 token(Padding Token)的损失。优化器方面,Adam 及其变种(如 AdamW)是首选,AdamW 在 Adam 的基础上加入了权重衰减(Weight Decay),正则化效果更佳。学习率调度采用 warmup 策略:训练初期线性增加学习率,达到峰值后按平方根倒数衰减,避免训练初期因学习率过大导致梯度爆炸。
残差连接与层归一化的协同作用
残差连接允许梯度直接流向低层层,缓解深度网络中的梯度消失问题;层归一化则对每个样本的特征进行归一化,使不同层的输入分布稳定。两者结合,使得Transformer能够堆叠较深的层数(如 N=6)而不显著增加训练难度。
掩码机制的重要性
在解码器中,掩码多头自注意力是确保自回归(Autoregressive)生成的关键。例如,在机器翻译任务中,生成英语句子 “I love you” 时,解码器生成 “I” 时只能关注输入序列的开头,生成 “love” 时只能关注 “I”,生成 “you” 时才能关注 “I love”,这种机制保证了生成过程的顺序性。
Transformer的变体与应用
BERT:双向编码器表示
BERT(Bidirectional Encoder Representations from Transformers)基于Transformer编码器,通过掩码语言模型(Masked Language Model, MLM)任务预训练,能够捕捉双向上下文信息。其核心创新是引入掩码 token(如 “”)预测,使模型学习词语的完整上下文表示,广泛应用于文本分类、命名实体识别、问答等下游任务。
GPT:生成式预训练Transformer
GPT(Generative Pre-trained Transformer)基于Transformer解码器,采用自回归语言模型(Autoregressive Language Model, ALM)任务预训练,即预测下一个 token。通过堆叠更多解码层(如 GPT-3 有 96 层)和扩大模型规模,GPT 展现出强大的零样本(Zero-Shot)和少样本(Few-Shot)学习能力,可用于文本生成、对话系统、代码生成等任务。
ViT:视觉Transformer
视觉Transformer(Vision Transformer, ViT)将Transformer架构引入计算机视觉领域,将图像分割为固定大小的 patches,展平后添加位置编码,作为输入送入编码器。通过大规模图像数据预训练,ViT 在图像分类任务上超越了传统卷积神经网络(CNN),证明了Transformer在视觉任务中的有效性,并扩展到目标检测、图像分割等任务。
总结与展望

Transformer架构通过自注意力机制实现了高效的并行计算和长距离依赖建模,彻底改变了NLP乃至人工智能领域的技术范式。其核心优势在于摒弃了循环结构的顺序限制,通过多头注意力和位置编码动态捕捉序列中的复杂关联,同时通过残差连接和层归一化支持深度网络训练。随着模型规模的扩大(如 GPT-3 的 1750 亿参数),Transformer展现出强大的涌现能力(Emergent Abilities),但也带来了计算资源消耗大、训练成本高等挑战。未来,研究方向可能包括:高效Transformer(如稀疏注意力、线性注意力)、低资源场景下的轻量化模型、跨模态Transformer(如 CLIP)以及与神经符号系统的结合等。Transformer架构的持续演进,将进一步推动人工智能向更通用、更高效的方向发展。
发表回复