深入理解 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 的核心。给定一个序列,自注意力允许每个位置关注序列中的所有其他位置,计算它们之间的相关性。

工作原理:

  1. 对于输入序列中的每个词,我们生成三个向量:Query(查询 Q)Key(键 K)Value(值 V)
  2. 用当前词的 Q 与所有词的 K 做点积,得到注意力分数
  3. 通过 Softmax 归一化,得到注意力权重
  4. 用注意力权重对所有 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
2
MultiHead(Q, K, V) = Concat(head_1, ..., head_h) × W_O
where head_i = Attention(QW_Q^i, KW_K^i, VW_V^i)

典型的配置是 8 个头(h=8),每个头的维度 d_k = d_model / h = 768 / 8 = 96

为什么多头有效?

  • 不同的头可以关注不同的语义关系:有的头关注语法结构,有的头关注实体关系,有的头关注情感色彩
  • 这就像让多个专家同时阅读一篇文章,每个人关注不同的重点,最后汇总所有视角的理解

2.3 位置编码(Positional Encoding)

Self-Attention 本身是位置无关的——无论词的顺序如何变化,计算结果都一样。这显然不符合语言规律,”我爱你”和”你爱我”意思完全不同。

Transformer 使用位置编码(Positional Encoding)来解决这个问题:将词的位置信息注入到输入表示中。

原始论文使用正弦和余弦函数:

1
2
PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
  • pos 是词的位置(0, 1, 2, …)
  • i 是维度索引

为什么用正余弦? 因为它可以让模型容易学习到相对位置关系——对于任意偏移 kPE(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 的出现是深度学习领域的里程碑事件:

  1. 统一了 NLP 领域:BERT、GPT、T5 等模型证明了 Transformer 架构的强大通用性
  2. 跨模态扩展:ViT(视觉Transformer)、Audio Spectrogram Transformer 将 Transformer 扩展到图像、音频领域
  3. Scaling Law:Transformer 架构配合大数据和大算力,展现了惊人的 Scaling 特性——模型越大,性能越强
  4. 催生了 GPT、BERT、ChatGPT 等划时代产品

总结

Transformer 之所以强大,核心在于三点:

  • 并行计算:摆脱了 RNN 的顺序依赖
  • 全局注意力:任意位置之间可以直接交互
  • 可扩展性:架构简洁清晰,容易 scale up

理解 Transformer 是理解大语言模型的基石。下一篇文章我们将深入探讨 Tokenizer——大模型如何理解和处理文本。


相关文章: