Transformer 架构

是什么

Transformer 是 2017 年 Google 在论文《Attention Is All You Need》中提出的神经网络架构。它抛弃了传统的循环结构(RNN/LSTM),完全依赖**注意力机制(Attention)**来处理序列数据。

Transformer 是当今几乎所有大语言模型的底层引擎。GPT、Claude、Gemini、Llama 都是 Transformer 的变体。

一句话理解:Transformer 让模型在处理每个词时,能同时”看到”句子中的所有其他词,并自动判断哪些词最重要。


为什么需要 Transformer

RNN/LSTM 的瓶颈

在 Transformer 之前,NLP 主要依赖 RNN(循环神经网络)和 LSTM(长短期记忆网络):

RNN 处理方式(串行):
词1 → 词2 → 词3 → 词4 → ... → 词N
       ↓      ↓      ↓              ↓
      状态1→ 状态2→ 状态3→ ...→   状态N

问题:

  • 串行计算:必须按顺序逐词处理,无法并行,训练速度慢
  • 长距离依赖丢失:信息在传递过程中逐渐衰减,句首的信息到句尾可能已经”忘了”
  • 梯度消失/爆炸:序列越长,反向传播越困难

Transformer 的解法

Transformer 处理方式(并行):
词1  词2  词3  词4  ...  词N
 ↕    ↕    ↕    ↕        ↕
 全部互相关注(Self-Attention)
  • 并行计算:所有 Token 同时处理,充分利用 GPU
  • 全局视野:任意两个 Token 之间都能直接交互,不存在距离限制
  • 可扩展性:架构天然适合”堆大”——更多层、更多参数、更多数据

整体架构

原始 Transformer 是**编码器-解码器(Encoder-Decoder)**结构,但现代 LLM 主要使用其中的一部分:

架构类型结构代表模型适用任务
Encoder-Only只有编码器BERT、RoBERTa文本分类、命名实体识别
Decoder-Only只有解码器GPT、Claude、Llama文本生成、对话、代码
Encoder-Decoder完整结构T5、BART翻译、摘要

当前主流 LLM(GPT-4、Claude、Llama)都是 Decoder-Only 架构。以下重点讲解这种结构。


核心组件

一个 Decoder-Only Transformer 由 N 个相同的 Transformer Block 堆叠而成(GPT-3 有 96 层,Llama 3 70B 有 80 层)。每个 Block 包含:

输入 Token Embedding + 位置编码
        ↓
┌─────────────────────────┐
│   Masked Self-Attention  │ ← 核心:理解上下文关系
│         + 残差连接        │
│         + 层归一化        │
├─────────────────────────┤
│   前馈网络(FFN)         │ ← 存储"知识"
│         + 残差连接        │
│         + 层归一化        │
└─────────────────────────┘
        ↓
    (重复 N 次)
        ↓
  线性层 + Softmax → 概率分布

1. Embedding + 位置编码

Token ID 首先被转换为高维向量(Embedding),然后叠加位置信息:

Token Embedding

Token "猫" → ID 2847 → 查表 → [0.12, -0.45, 0.78, ..., 0.33](如 4096 维)

每个 Token 对应一个高维向量,这个向量包含了该 Token 的语义信息。详见 03-Embedding 与向量表示

位置编码(Positional Encoding)

Transformer 并行处理所有 Token,天然不知道”顺序”。位置编码向模型注入位置信息,让模型知道”猫”在句子中的第几个位置。

主流方案:

  • 绝对位置编码:为每个位置分配固定向量(原始 Transformer)
  • 旋转位置编码(RoPE):通过旋转矩阵编码相对位置(Llama、Qwen 等使用)
  • ALiBi:在注意力分数上加位置偏置(部分模型使用)

2. 自注意力机制(Self-Attention)

这是 Transformer 的灵魂。自注意力的核心思想:对于每个 Token,计算它与所有其他 Token 的相关程度,据此加权汇总信息。

Q、K、V 三元组

每个 Token 的 Embedding 通过三个线性变换,生成三个向量:

  • Query(Q):当前 Token 的”提问”——“我应该关注谁?”
  • Key(K):每个 Token 的”标签”——“我有什么信息?”
  • Value(V):每个 Token 的”内容”——“如果你关注我,这是你能拿到的信息”

计算过程

Attention(Q, K, V) = softmax(Q × K^T / √d_k) × V

用人话说:

  1. Q × K^T:用 Query 去”匹配”所有 Key,得到相关性分数
  2. / √d_k:除以维度的平方根,防止分数过大导致 softmax 梯度消失
  3. softmax:将分数归一化为概率分布(所有权重之和为 1)
  4. × V:用权重对 Value 做加权求和,得到最终输出

直觉理解

以”那只猫坐在垫子上,它很开心”为例,当模型处理”它”这个 Token 时:

"它"的 Query 会与所有 Token 的 Key 计算相关性:
  "那"   → 0.01(弱相关)
  "只"   → 0.01
  "猫"   → 0.85(强相关!"它"指代"猫")
  "坐"   → 0.03
  "在"   → 0.01
  "垫子" → 0.02
  "上"   → 0.01
  "它"   → 0.05
  "很"   → 0.01

模型自动学会了:“它”应该主要关注”猫”,因为”它”是”猫”的指代。

Masked Attention

在 Decoder-Only 架构中,为了保持自回归特性(只能看到前面的 Token,不能偷看后面的),使用 Mask(掩码) 遮蔽未来位置:

Token:  词1  词2  词3  词4
词1:    ✓    ✗    ✗    ✗
词2:    ✓    ✓    ✗    ✗
词3:    ✓    ✓    ✓    ✗
词4:    ✓    ✓    ✓    ✓

词3 只能关注词1、词2、词3,不能看到词4。这确保了生成时的因果性。

3. 多头注意力(Multi-Head Attention)

一个注意力头只能捕捉一种类型的关系。多头注意力让模型同时从多个”角度”理解文本:

头1:关注语法关系(主语-谓语)
头2:关注指代关系(代词-名词)
头3:关注语义相似性
头4:关注位置临近关系
...

每个头独立计算 Q、K、V 和注意力,然后将所有头的输出拼接起来:

MultiHead(Q, K, V) = Concat(head_1, head_2, ..., head_h) × W_O

典型配置:GPT-3 使用 96 个注意力头,每头维度 128,总维度 12288。

4. 前馈网络(FFN)

注意力层之后是一个两层全连接网络,对每个 Token 独立做非线性变换:

FFN(x) = 激活函数(x × W_1 + b_1) × W_2 + b_2

直觉理解:

  • 注意力层负责”Token 之间的信息交换”——谁和谁相关
  • FFN 层负责”知识存储与转换”——将交换来的信息做深层处理

研究表明,模型的大量”世界知识”存储在 FFN 的权重中。

5. 残差连接 + 层归一化

每个子层(注意力、FFN)都有:

输出 = LayerNorm(x + SubLayer(x))
  • 残差连接(+x):允许信息”跳过”当前层直接传到下一层,防止深层网络退化
  • 层归一化(LayerNorm):稳定每层输出的分布,加速训练收敛

KV Cache:推理加速

自回归生成时,每生成一个新 Token 都需要对所有已有 Token 重新计算注意力。KV Cache 是关键优化:

  • 缓存已计算过的 K 和 V 向量,新 Token 只需计算自己的 Q 和新的 K、V
  • 将推理复杂度从 O(n²) 降低到每步 O(n)
  • 代价:需要大量 GPU 显存存储缓存

这就是为什么长上下文模型需要更多显存——KV Cache 与序列长度成正比。


与其他架构的对比

维度RNN/LSTMTransformerMamba(SSM)
计算方式串行并行并行
长距离依赖弱(信息衰减)强(直接关注)强(选择性状态)
训练效率
推理效率线性二次方(注意力)线性
主流地位已过时当前主流新兴挑战者

为什么 Transformer 能”堆大”

Transformer 的成功不仅在于架构本身,还在于它的可扩展性

  • 并行友好:Self-Attention 的矩阵运算天然适合 GPU
  • Scaling Laws:OpenAI 研究发现,模型性能与参数量、数据量、计算量之间存在幂律关系——投入越多,性能越好(在一定范围内)
  • 统一架构:同一套架构处理文本、代码、图像、音频,无需为每种模态设计专门结构

延伸阅读