深入理解 Transformer 架构
深入理解 Transformer 架构
如果说深度学习是 AI 的电力,那么 Transformer 就是产生这份电力的发电机。
一、为什么需要 Transformer?
在 Transformer 出现之前,RNN(循环神经网络)系列模型是序列建模的主流。但 RNN 有一个致命的缺陷——顺序处理。处理一个长度为 512 的句子,RNN 必须逐字依次计算,无法并行,导致训练速度极慢。更糟糕的是,当序列过长时,早期的信息会被”稀释”,产生长距离依赖问题。
2017 年,Google 在论文《Attention Is All You Need》中提出了 Transformer,完全抛弃了 RNN 结构,仅使用注意力机制,彻底解决了并行问题和长距离依赖问题。
二、核心组件详解
2.1 自注意力机制(Self-Attention)
Self-Attention 是 Transformer 的核心。给定一个序列,自注意力允许每个位置关注序列中的所有其他位置,计算它们之间的相关性。
工作原理:
- 对于输入序列中的每个词,我们生成三个向量:Query(查询 Q)、Key(键 K)、Value(值 V)
- 用当前词的 Q 与所有词的 K 做点积,得到注意力分数
- 通过 Softmax 归一化,得到注意力权重
- 用注意力权重对所有 V 加权求和,得到输出
1 | Attention(Q, K, V) = Softmax(QK^T / √d_k) × V |
其中 √d_k 是缩放因子,防止点积值过大导致 Softmax 梯度消失。
一个直观的比喻: 想象你在图书馆找一本书。Q 就像你的问题(我想看关于 AI 的书),K 是每本书的目录简介,V 是书的实际内容。Attention 机制就是根据你的问题,在所有书中找出最相关的那几本,并提取其中的关键信息。
2.2 多头注意力(Multi-Head Attention)
单一 Attention 只能捕获一种类型的相关性。Multi-Head Attention 将 Q、K、V 分别投影到多个子空间,在不同的子空间分别计算 Attention,从而捕获多种不同的语义关联。
1 | MultiHead(Q, K, V) = Concat(head_1, ..., head_h) × W_O |
典型的配置是 8 个头(h=8),每个头的维度 d_k = d_model / h = 768 / 8 = 96。
为什么多头有效?
- 不同的头可以关注不同的语义关系:有的头关注语法结构,有的头关注实体关系,有的头关注情感色彩
- 这就像让多个专家同时阅读一篇文章,每个人关注不同的重点,最后汇总所有视角的理解
2.3 位置编码(Positional Encoding)
Self-Attention 本身是位置无关的——无论词的顺序如何变化,计算结果都一样。这显然不符合语言规律,”我爱你”和”你爱我”意思完全不同。
Transformer 使用位置编码(Positional Encoding)来解决这个问题:将词的位置信息注入到输入表示中。
原始论文使用正弦和余弦函数:
1 | PE(pos, 2i) = sin(pos / 10000^(2i/d_model)) |
pos是词的位置(0, 1, 2, …)i是维度索引
为什么用正余弦? 因为它可以让模型容易学习到相对位置关系——对于任意偏移 k,PE(pos+k) 可以表示为 PE(pos) 的线性函数。
后续工作(如 RoPE、ALiBi)提出了更有效的位置编码方案,这些在现代大模型中被广泛使用。
2.4 前馈神经网络(FFN)
每个 Transformer 层还包含一个前馈神经网络:
1 | FFN(x) = ReLU(x × W₁ + b₁) × W₂ + b₂ |
FFN 通常是两层线性变换,中间使用 ReLU 激活。它占每个 Transformer 层参数量的约 2/3,是模型容量的大部分来源。
2.5 残差连接与层归一化
每个子层(Multi-Head Attention 和 FFN)都使用了残差连接(Residual Connection)和层归一化(Layer Normalization):
1 | output = LayerNorm(x + Sublayer(x)) |
残差连接让梯度可以顺畅地流过深层网络,使得训练非常深的模型成为可能。层归一化则稳定了训练过程。
三、编码器与解码器
Transformer 包含两个部分:
编码器(Encoder)
- 由 N 个相同的 Transformer 层堆叠而成(原始论文 N=6)
- 每个层包含:Multi-Head Self-Attention + FFN
- 双向注意力,每个位置可以关注上下文的所有位置
- 用途:文本理解、分类、实体识别等任务
解码器(Decoder)
- 同样由 N 个相同的 Transformer 层堆叠而成
- 每个层包含:Masked Multi-Head Self-Attention + Cross-Attention(关注编码器输出)+ FFN
- Masked 的原因:训练时使用 Teacher Forcing,预测第
t位置的词时只能看到1~t-1的内容,不能”作弊”看到后面的词 - 用途:文本生成、机器翻译等自回归任务
GPT 系列是纯解码器架构,BERT 是纯编码器架构,而原始 Transformer 和 T5 是编码器-解码器架构。
四、计算复杂度
Self-Attention 的计算复杂度为 O(n² · d),其中 n 是序列长度,d 是模型维度。这成为了 Transformer 扩展到超长序列的主要瓶颈。
| 操作 | 时间复杂度 | 空间复杂度 |
|---|---|---|
| Self-Attention | O(n² · d) | O(n²) |
| 逐位置 FFN | O(n · d²) | O(n · d) |
这就是为什么很多高效注意力变体(如 FlashAttention、Ring Attention)受到广泛关注——它们试图将 O(n²) 的空间复杂度降低。
五、Transformer 的影响
Transformer 的出现是深度学习领域的里程碑事件:
- 统一了 NLP 领域:BERT、GPT、T5 等模型证明了 Transformer 架构的强大通用性
- 跨模态扩展:ViT(视觉Transformer)、Audio Spectrogram Transformer 将 Transformer 扩展到图像、音频领域
- Scaling Law:Transformer 架构配合大数据和大算力,展现了惊人的 Scaling 特性——模型越大,性能越强
- 催生了 GPT、BERT、ChatGPT 等划时代产品
总结
Transformer 之所以强大,核心在于三点:
- 并行计算:摆脱了 RNN 的顺序依赖
- 全局注意力:任意位置之间可以直接交互
- 可扩展性:架构简洁清晰,容易 scale up
理解 Transformer 是理解大语言模型的基石。下一篇文章我们将深入探讨 Tokenizer——大模型如何理解和处理文本。
相关文章: