1. 引言
Transformer 是近年来自然语言处理(NLP)领域最具革命性的架构之一。自 2017 年 Google 在论文《Attention Is All You Need》中提出以来,它彻底改变了序列建模的范式,取代了传统的循环神经网络(RNN)和卷积神经网络(CNN),成为大语言模型(如 GPT、BERT、T5 等)的核心基础。
本文将深入解析 Transformer 的核心原理、关键组件,并探讨其如何演进为当今主导 AI 发展的基石模型。
2. Transformer 的核心思想
Transformer 的核心创新在于完全基于注意力机制(Attention Mechanism) 来建模序列中任意两个位置之间的依赖关系,摒弃了 RNN 的序列递归计算。这带来了两大优势:
- 并行化能力:由于不依赖前一时刻的隐藏状态,序列中所有位置的表示可以同时计算,极大提升了训练效率。
- 长距离依赖建模:自注意力机制允许模型直接关注序列中任何位置的 token,无论距离多远,有效缓解了 RNN 中的梯度消失问题。
3. 架构总览
标准的 Transformer 模型采用编码器-解码器(Encoder-Decoder)结构,但后续很多模型(如 BERT、GPT)只使用了其中一部分。
渲染错误: Mermaid 渲染失败: Parse error on line 2: ...ubgraph Encoder编码器 (N×) E1[多头自 -----------------------^ Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', 'STADIUMEND', 'SUBROUTINEEND', 'PIPE', 'CYLINDEREND', 'DIAMOND_STOP', 'TAGEND', 'TRAPEND', 'INVTRAPEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got 'PS'
编码器 :由 N 个相同的层堆叠而成。每层包含一个多头自注意力(Multi-Head Self-Attention) 子层和一个前馈网络(Feed-Forward Network) 子层,每个子层外围都有残差连接(Add)和层归一化(Norm)。
解码器:同样由 N 个相同的层堆叠。每层包含三个子层:
- 掩码多头自注意力层:确保在预测当前位置时,只能看到之前的位置(防止信息泄露)。
- 多头交叉注意力层:让解码器关注编码器的输出。
- 前馈网络层。
4. 关键组件详解
4.1 注意力机制(Attention)
注意力函数可以描述为将一个查询(Query)和一组键值对(Key-Value)映射到输出的过程。输出是值的加权和,权重由查询与对应键的兼容性函数计算得出。
缩放点积注意力(Scaled Dot-Product Attention) 是 Transformer 使用的形式:
Attention(Q,K,V)=softmax(QKTdk)V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk QKT)V
其中 dkd_kdk 是键向量的维度,缩放因子 dk\sqrt{d_k}dk 用于防止点积结果过大导致 softmax 梯度消失。
4.2 多头注意力(Multi-Head Attention)
与其使用单一的注意力函数,模型将查询、键、值投影到不同的、维度更低的子空间(头)上,并行执行注意力函数,最后将结果拼接并再次投影。
MultiHead(Q,K,V)=Concat(head1,...,headh)WO \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h)W^O MultiHead(Q,K,V)=Concat(head1,...,headh)WO
where headi=Attention(QWiQ,KWiK,VWiV) \text{where head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) where headi=Attention(QWiQ,KWiK,VWiV)
这允许模型共同关注来自不同表示子空间的信息。
4.3 位置编码(Positional Encoding)
由于自注意力本身不具备序列顺序信息,需要显式地注入位置信息。Transformer 使用正弦和余弦函数来生成位置编码:
PE(pos,2i)=sin(pos/100002i/dmodel) PE_{(pos, 2i)} = \sin(pos / 10000^{2i/d_{model}}) PE(pos,2i)=sin(pos/100002i/dmodel)
PE(pos,2i+1)=cos(pos/100002i/dmodel) PE_{(pos, 2i+1)} = \cos(pos / 10000^{2i/d_{model}}) PE(pos,2i+1)=cos(pos/100002i/dmodel)
其中 pospospos 是位置,iii 是维度。这种编码方式使得模型能够轻松学习到相对位置关系。
4.4 前馈网络(Feed-Forward Network)
每个注意力子层后面跟着一个全连接的前馈网络,它对每个位置独立且相同地应用两次线性变换,中间有一个 ReLU 激活函数:
FFN(x)=max(0,xW1+b1)W2+b2 FFN(x) = \max(0, xW_1 + b_1)W_2 + b_2 FFN(x)=max(0,xW1+b1)W2+b2
5. Transformer 的演进与变体
5.1 仅编码器模型(Encoder-Only)
- 代表:BERT、RoBERTa、ALBERT
- 特点:专注于理解输入文本的上下文表示,适用于分类、问答、命名实体识别等任务。通过掩码语言模型(MLM)进行预训练。
5.2 仅解码器模型(Decoder-Only)
- 代表:GPT 系列、LLaMA、PaLM
- 特点:专注于自回归文本生成。模型在训练时使用因果注意力掩码(Causal Attention Mask),确保每个 token 只能关注自身及之前的 token。这是当前大语言模型(LLM)的主流架构。
5.3 编码器-解码器模型(Encoder-Decoder)
- 代表:原始 Transformer、T5、BART
- 特点:适用于序列到序列(Seq2Seq)任务,如翻译、摘要、对话生成。
6. 代码示例:实现一个简化的自注意力层
以下是一个使用 PyTorch 实现的简化版缩放点积注意力层:
python
import torch
import torch.nn as nn
import torch.nn.functional as F
class ScaledDotProductAttention(nn.Module):
def __init__(self, d_k, dropout=0.1):
super().__init__()
self.d_k = d_k
self.dropout = nn.Dropout(dropout)
def forward(self, q, k, v, mask=None):
# q, k, v: [batch_size, seq_len, d_k]
attn_scores = torch.matmul(q, k.transpose(-2, -1)) / (self.d_k ** 0.5) # [batch_size, seq_len, seq_len]
if mask is not None:
attn_scores = attn_scores.masked_fill(mask == 0, -1e9)
attn_weights = F.softmax(attn_scores, dim=-1)
attn_weights = self.dropout(attn_weights)
output = torch.matmul(attn_weights, v) # [batch_size, seq_len, d_k]
return output, attn_weights
# 使用示例
batch_size = 2
seq_len = 10
d_k = 64
attention = ScaledDotProductAttention(d_k=d_k)
q = torch.randn(batch_size, seq_len, d_k)
k = torch.randn(batch_size, seq_len, d_k)
v = torch.randn(batch_size, seq_len, d_k)
output, weights = attention(q, k, v)
print(f"Output shape: {output.shape}") # [2, 10, 64]
print(f"Attention weights shape: {weights.shape}") # [2, 10, 10]
7. 总结与展望
Transformer 架构以其强大的并行能力和卓越的建模性能,已成为现代 AI 的基石。从最初的机器翻译模型,到如今千亿参数的大语言模型,其核心的注意力机制展现了惊人的可扩展性和通用性。
未来的发展方向可能包括:
- 效率优化:如稀疏注意力、线性注意力,以降低计算和内存开销。
- 架构创新:探索超越标准 Transformer 的下一代骨干网络。
- 多模态融合:将 Transformer 更有效地应用于图像、音频、视频等多模态数据。
理解 Transformer 不仅是掌握当前 AI 技术的关键,也是探索未来智能模型发展的起点。