引言
深度学习领域的发展历程中,循环神经网络(RNN)和长短期记忆网络(LSTM)长期占据序列处理任务的主导地位。然而,这类模型存在固有的局限性:无法并行计算导致训练效率低下,以及依赖递归结构导致的长期依赖问题难以解决。2017年,Google研究团队在论文《Attention Is All You Need》中提出了Transformer架构,彻底改变了这一局面。Transformer完全摒弃了循环和卷积结构,仅依赖自注意力机制(Self-Attention)实现序列建模,不仅实现了高效的并行计算,还显著提升了模型对长距离依赖的捕捉能力。如今,Transformer已成为自然语言处理(NLP)领域的基石架构,并逐步扩展到计算机视觉(CV)、语音处理、多模态学习等多个领域,展现出强大的通用性和可扩展性。
Transformer整体架构概述
Transformer的核心设计是一种编码器-解码器(Encoder-Decoder)架构,主要用于处理序列到序列(Seq2Seq)任务,如机器翻译、文本摘要等。其整体结构由编码器和解码器两部分组成,每部分均由多个相同的层堆叠而成。编码器负责将输入序列映射为包含上下文信息的连续表示,解码器则基于编码器的输出生成目标序列。除了编码器和解码器,Transformer还包含输入嵌入(Embedding)和位置编码(Positional Encoding)两个关键组件,用于将离散的 token 转换为模型可处理的连续向量,并注入序列的位置信息。
具体而言,编码器由N个相同的层堆叠而成(论文中N=6),每层包含两个子层:多头自注意力机制(Multi-Head Self-Attention)和前馈神经网络(Feed-Forward Network,FFN)。子层之间采用残差连接(Residual Connection)和层归一化(Layer Normalization)技术,以稳定训练过程并加速收敛。解码器同样由N个层堆叠,但包含三个子层:掩码多头自注意力机制(Masked Multi-Head Self-Attention)、编码器-解码器注意力机制(Encoder-Decoder Attention)以及前馈神经网络。掩码机制确保解码器在生成当前 token 时只能访问已生成的 token,避免“窥视”未来信息。
输入表示层:词嵌入与位置编码
词嵌入(Token Embedding)
Transformer的输入首先通过词嵌入层将离散的 token(如单词或子词)转换为低维连续向量。与传统的独热编码(One-Hot Encoding)不同,词嵌入能够捕捉 token 之间的语义相似性:语义相近的 token 在嵌入空间中的距离更近。常见的词嵌入方法包括Word2Vec、GloVe以及基于上下文学习的动态嵌入(如BERT中的Embedding Lookup)。假设词汇表大小为V,嵌入维度为d_model,则词嵌入矩阵E∈R^(V×d_model),每个 token 的嵌入向量e∈R^d_model可表示为E中对应行的向量。
位置编码(Positional Encoding)
由于Transformer摒弃了循环结构,模型本身无法感知 token 在序列中的相对位置信息。为解决这一问题,论文提出了位置编码,将位置信息注入到词嵌入中。位置编码是一个与输入序列长度相同、维度为d_model的矩阵,其中第pos个位置的第i维编码公式如下:
- 当i为偶数时:PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
- 当i为奇数时:PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
这种设计基于正弦和余弦函数的不同频率组合,使得位置编码具有以下优势:一是对于任意固定偏移量k,PE(pos+k)可以表示为PE(pos)的线性函数,便于模型学习相对位置关系;二是正弦和余弦函数的取值范围在[-1,1]之间,不会导致嵌入向量数值过大或过小。最终,输入序列的表示为词嵌入与位置编码的逐元素相加:X = E + PE,其中X∈R^(n×d_model)为n个 token 的序列表示矩阵。
核心组件:自注意力机制
注意力机制的数学本质
注意力机制的核心思想是“查询(Query)-键(Key)-值(Value)”模型。给定查询向量Q、键向量K和值向量V,注意力权重通过Q与K的相似度计算得到,再与V加权求和,最终输出为上下文相关的表示。数学表达式为:
Attention(Q, K, V) = softmax((QK^T)/√d_k) V
其中,d_k为键向量的维度,除以√d_k是为了防止QK^T的方差过大,导致softmax函数梯度消失(梯度消失问题在深度神经网络中尤为常见)。
自注意力机制(Self-Attention)
自注意力是注意力机制的特殊形式,其中Q、K、V均来自同一输入序列。对于输入序列X∈R^(n×d_model),每个 token 的查询、键、值向量通过线性变换得到:
- Q = XW_Q,W_Q∈R^(d_model×d_k)
- K = XW_K,W_K∈R^(d_model×d_k)
- V = XW_V,W_V∈R^(d_model×d_v)
其中,W_Q、W_K、W_V为可学习的权重矩阵。通过计算Q与K^T的乘积,得到n×n的注意力分数矩阵,表示序列中任意两个 token 之间的相关性。经过softmax归一化后,注意力矩阵A∈R^(n×n)的每个元素A_ij表示第i个 token 对第j个 token 的关注程度。最终,自注意力的输出为A与V的乘积,即Z = AV∈R^(n×d_v),每个 token 的输出向量是其自身与其他 token 的加权和。
多头注意力(Multi-Head Attention)

单头自注意力只能捕捉一种类型的依赖关系,而实际任务中 token 之间的关系可能涉及语义、语法、位置等多个维度。多头注意力通过并行计算多组“Q、K、V”变换,将自注意力扩展为多个“头”,每个头学习不同的子空间表示。具体而言,对于h个头,输入X分别通过h组不同的权重矩阵{W_Q^i, W_K^i, W_V^i}(i=1,2,…,h)计算得到h组输出{Z^1, Z^2, …, Z^h},每个头的输出维度为d_v = d_model/h。所有头的输出拼接后,通过一个线性变换矩阵W_O∈R^(d_model×d_model)得到最终多头注意力输出:
MultiHead(X) = Concat(Z^1, Z^2, …, Z^h) W_O
多头注意力的设计允许模型同时关注不同位置和不同表示子空间的信息,增强了模型的表示能力。论文中设置h=8,d_k=d_v=d_model/h=64,d_model=512,此时每个头的计算维度适中,且总参数量与单头注意力相当。
编码器结构详解
编码器子层:多头注意力与前馈网络
Transformer编码器的每一层包含两个核心子层:多头自注意力子层和前馈神经网络子层。两个子层均采用残差连接和层归一化结构,即子层的输入首先通过残差连接(Add)与子层输出相加,再进行层归一化(LayerNorm)。以第l层的多头自注意力子层为例,其数学过程为:
AttentionOutput = LayerNorm(X^l + MultiHead(LayerNorm(X^l)))
其中,X^l为第l层的输入,LayerNorm(·)为层归一化操作,MultiHead(·)为多头自注意力计算。残差连接解决了深度网络中的梯度消失问题,而层归一化则通过归一化每个样本的特征分布,加速训练收敛并提升模型稳定性。
前馈神经网络子层是一个两层的全连接网络,包含一个线性变换、ReLU激活函数和另一个线性变换。其数学表达式为:
FFNOutput = LayerNorm(AttentionOutput + FFN(AttentionOutput))
FFN(x) = max(0, xW1 + b1)W2 + b2
其中,W1∈R^(d_model×d_ff),W2∈R^(d_ff×d_model),d_ff为隐藏层维度(论文中d_ff=2048)。FFN对每个 token 的表示进行独立变换,增强模型的非线性拟合能力,且可以并行计算,不影响整体效率。
编码器层的堆叠
编码器由N个相同的层堆叠而成(N=6),每一层的参数独立,但共享相同的结构。堆叠多层编码器使模型能够学习从低级到高级的抽象表示:浅层主要捕捉局部特征(如词法信息),深层则整合全局上下文(如语义和语法结构)。层与层之间的残差连接和层归一化确保信息在深层传递过程中不发生显著衰减,使得即使堆叠多层,模型仍能有效训练。
解码器结构详解
掩码多头自注意力机制
解码器与编码器的核心区别在于其自注意力机制需要“掩码”(Mask)处理。在生成目标序列的第t个 token 时,模型只能访问已生成的t-1个 token,而不能“窥视”未来的 token。掩码操作通过将注意力分数矩阵中对应未来位置的位置设为负无穷,使得softmax后这些位置的注意力权重为0。具体而言,对于解码器的输入序列Y(已生成的目标序列),其自注意力的查询向量Q_t仅依赖于前t-1个 token,而键向量K包含前t个 token。掩码矩阵M∈R^(t×t)定义为:
M_ij = 0(当i≤j时),M_ij = -∞(当i>j时)
掩码多头自注意力的计算为:
MaskedMultiHead(Y) = softmax((QK^T + M)/√d_k) V
掩码机制确保了解码器的自回归特性,使其能够模拟序列生成的逐步过程。
编码器-解码器注意力机制

解码器的第二个子层是编码器-解码器注意力,也称为“交叉注意力”。该子层的查询向量来自解码器的上一层输出,而键和向量来自编码器的输出。其作用是让解码器在生成当前 token 时,能够关注输入序列(源序列)中相关的部分。数学表达式为:
CrossAttention(Q_decoder, K_encoder, V_encoder) = softmax((Q_decoder K_encoder^T)/√d_k) V_encoder
与自注意力不同,交叉注意力的Q、K、V来自不同的序列(解码器和编码器),这使得模型能够建立源序列与目标序列之间的对齐关系,是机器翻译等任务中实现跨序列信息交互的关键。
解码器层的堆叠与输出
解码器的每一层包含三个子层:掩码多头自注意力、编码器-解码器注意力和前馈神经网络,同样采用残差连接和层归一化。N层解码器堆叠后,最终的输出通过一个线性层(将维度从d_model映射到词汇表大小V)和softmax层,生成下一个 token 的概率分布。在训练时,教师强制(Teacher Forcing)策略被广泛使用:将真实的目标序列作为解码器的输入(而非模型生成的序列),通过掩码机制确保自回归性,加速模型收敛。
训练与优化策略
损失函数与优化器
Transformer的训练通常采用交叉熵损失(Cross-Entropy Loss)作为目标函数,衡量模型生成的概率分布与真实标签之间的差异。对于序列到序列任务,损失函数是序列中每个 token 交叉熵损失的均值。优化方面,论文采用Adam优化器,并结合学习率预热(Warmup)策略:训练初期线性增加学习率,达到一定步数后按步数的负0.5次方衰减。这种策略避免了训练初期因学习率过大导致的不稳定,同时保证了后期收敛速度。
预训练与微调范式
Transformer的成功离不开预训练-微调(Pre-training and Fine-tuning)范式的推广。在大规模无标注文本上预训练模型(如BERT、GPT),学习通用的语言表示能力,然后在下游任务(如文本分类、命名实体识别)上通过微调适配特定任务。预训练目标包括掩码语言模型(MLM,如BERT)、自回归语言模型(LM,如GPT)以及序列到序列目标(如T5)。这种范式极大降低了标注数据的需求,并显著提升了模型在少样本场景下的性能。
关键变体与扩展
BERT:双向编码器的表示
BERT(Bidirectional Encoder Representations from Transformers)是Transformer编码器的扩展,采用掩码语言模型(MLM)作为预训练目标,随机遮盖输入序列中15%的 token,要求模型根据上下文预测被遮盖的 token。这种双向训练使BERT能够同时利用左侧和右侧的上下文信息,显著提升了其在文本分类、问答等任务中的性能。BERT还引入了下一句预测(NSP)任务,学习句子间的关系表示。
GPT:自回归生成模型
GPT(Generative Pre-trained Transformer)基于Transformer解码器架构,采用自回归语言模型(LM)作为预训练目标,即预测当前 token 时仅使用其左侧的上下文。GPT通过堆叠更多解码器层(如GPT-3有96层)和扩大模型参数量(达1750亿),展现出强大的零样本(Zero-shot)和少样本(Few-shot)学习能力,成为大语言模型(LLM)的代表。其变种如InstructGPT、ChatGPT通过人类反馈强化学习(RLHF)进一步提升了模型的对齐性和安全性。
跨模态扩展:Vision Transformer(ViT)
Transformer不仅在NLP领域取得成功,还被扩展到计算机视觉领域。Vision Transformer(ViT)将图像分割为固定大小的patch(如16×16像素),将每个patch展平并通过线性投影转换为向量,添加位置编码后输入Transformer编码器。ViT在图像分类任务上超越了传统CNN模型,证明了Transformer对视觉数据的强大建模能力。后续工作如Swin Transformer引入层次化结构和滑动窗口注意力,进一步提升了ViT在目标检测、语义分割等任务中的性能。
挑战与未来方向
尽管Transformer取得了巨大成功,但仍面临诸多挑战。首先是计算复杂度问题:自注意力的计算复杂度为O(n^2),其中n为序列长度,导致长序列(如长文档、高分辨率图像)处理效率低下。稀疏注意力(如Longformer、Reformer)和线性复杂度注意力(如Performer、Linear Transformer)是解决这一问题的重要方向。其次是可解释性不足:注意力权重虽能提供一定解释,但模型决策过程仍缺乏透明性,结合符号推理或因果推断可能是未来方向。此外,多模态Transformer的融合效率、小样本学习能力以及模型的部署优化(如量化、剪枝)也是当前研究的热点。
总结

Transformer架构通过自注意力机制彻底革新了序列处理模型的设计范式,其并行计算能力和长距离依赖捕捉能力使其成为深度学习领域最具影响力的模型之一。从最初的机器翻译任务到如今的大语言模型、多模态学习,Transformer展现出强大的通用性和可扩展性。尽管存在计算复杂度、可解释性等挑战,但随着稀疏注意力、高效训练等技术的不断突破,Transformer必将在更多领域发挥关键作用,推动人工智能技术的持续发展。深入理解Transformer的核心原理与设计思想,对于掌握当前AI技术前沿、开发下一代智能系统具有重要意义。
发表回复