Transformer架构详解

Transformer 架构详解

概述

Transformer 是 Google 团队在 2017 年论文《Attention Is All You Need》中提出的深度学习架构。它完全基于注意力机制,摒弃了传统的循环(RNN)和卷积(CNN)结构,成为当今几乎所有大语言模型(GPT、Claude、DeepSeek 等)的基础架构。

📄 摘要: 核心思想
Attention Is All You Need — 只用注意力机制就能完成序列到序列的转换任务,而且效果更好、训练更快。

为什么需要 Transformer?

传统模型的问题

在 Transformer 之前,序列处理任务(翻译、文本生成等)主要依赖 RNNLSTM

1
2
3
4
RNN 处理方式(串行):
1 → 词2 → 词3 → 词4 → 词5 → 输出
↓ ↓ ↓ ↓ ↓
隐藏态 → 隐藏态 → 隐藏态 → 隐藏态 → 隐藏态
问题 说明
串行计算 必须逐词处理,无法并行,训练速度慢
长距离依赖 句子太长时,前面的信息会”遗忘”(梯度消失)
信息瓶颈 所有信息压缩到固定大小的隐藏状态中

Transformer 的解决方案

1
2
3
4
5
6
Transformer 处理方式(并行):
12345
↕ ↕ ↕ ↕ ↕ ← 每个词同时关注所有其他词
[======注意力机制======]

输出
优势 说明
完全并行 所有词同时计算,训练速度大幅提升
直接关联 任意两个词之间直接建立联系,不受距离限制
可扩展性 模型规模可以轻松扩大(堆叠更多层)

整体架构

Transformer 采用经典的编码器-解码器(Encoder-Decoder) 结构:

graph LR
    A[输入序列] --> B[编码器 ×6]
    B --> |语义向量| C[解码器 ×6]
    D[输出序列-已生成部分] --> C
    C --> E[输出预测]

ℹ️ 信息: 架构参数(原始论文)

  • 编码器层数:6 层
  • 解码器层数:6 层
  • 模型维度 $d_{model}$:512
  • 注意力头数:8 个
  • 前馈网络维度 $d_{ff}$:2048

核心组件一:注意力机制(Attention)

什么是注意力

注意力机制的本质是:对输入信息的不同部分分配不同的关注权重

📋 示例: 类比
阅读”小明昨天买了一本,他觉得很好“时:

  • 理解”他”→ 高度关注”小明”(指代关系)
  • 理解”好看”→ 关注”书”(修饰对象)
  • “昨天”→ 关注度较低(与当前词关系不大)

缩放点积注意力(Scaled Dot-Product Attention)

这是 Transformer 中注意力的基本计算单元。

三个核心向量:

向量 全称 含义 类比
Q Query(查询) “我在找什么?” 搜索关键词
K Key(键) “我有什么标签?” 文档标题
V Value(值) “我的实际内容” 文档内容

计算公式:

$$
\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
$$

分步理解:

  1. $QK^T$(点积)— 计算 Query 与每个 Key 的相似度
  2. $\div \sqrt{d_k}$(缩放)— 防止点积值过大导致 softmax 梯度消失
  3. softmax(归一化)— 将相似度转为概率权重(总和为 1)
  4. $\times V$(加权求和)— 用权重对 Value 加权,得到最终输出

💡 提示: 形象理解
就像在图书馆找书:

  1. 你带着问题(Q) 去搜索
  2. 每本书有一个标签(K)
  3. 你比较问题和每个标签的相关程度
  4. 然后按相关程度,提取每本书的内容(V) 做加权混合

自注意力(Self-Attention)

当 Q、K、V 都来自同一个输入序列时,就是自注意力。每个词都在”关注”同一句话中的其他词。

示例: 处理句子”The animal didn’t cross the street because it was too tired”

1
2
3
4
5
6
7
8
9
10
11
12
"it" 的注意力分布:
The → 0.02
animal → 0.68 ← 高权重!"it" 指代 "animal"
didn't 0.01
cross → 0.03
the → 0.01
street → 0.05
because 0.02
it → 0.08
was → 0.03
too → 0.02
tired → 0.05

自注意力让模型学会了it 指代 animal 这种语义关系。

核心组件二:多头注意力(Multi-Head Attention)

为什么需要多头?

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

📋 示例: 类比
分析”张三在北京的公司做了一个优秀的项目”:

  • 头 1 关注:谁做的?→ 张三
  • 头 2 关注:在哪做的?→ 北京
  • 头 3 关注:做了什么?→ 项目
  • 头 4 关注:做得怎样?→ 优秀

计算过程

graph TD
    A[输入] --> B1[头1: Q1,K1,V1]
    A --> B2[头2: Q2,K2,V2]
    A --> B3[...]
    A --> B4[头8: Q8,K8,V8]
    B1 --> C1[注意力1]
    B2 --> C2[注意力2]
    B3 --> C3[...]
    B4 --> C4[注意力8]
    C1 --> D[拼接 Concat]
    C2 --> D
    C3 --> D
    C4 --> D
    D --> E[线性变换]
    E --> F[输出]

公式:

$$
\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, …, \text{head}_h)W^O
$$

$$
\text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V)
$$

每个头使用独立的投影矩阵 $W_i^Q$、$W_i^K$、$W_i^V$,学习不同的注意力模式,最后拼接结果并做线性变换。

核心组件三:位置编码(Positional Encoding)

为什么需要位置编码?

Transformer 的注意力机制是位置无关的——“我爱你”和”你爱我”在注意力计算中没有区别。因此需要显式地注入位置信息

正弦余弦编码

原始 Transformer 使用固定的正弦/余弦函数生成位置编码:

$$
PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{model}}}\right)
$$

$$
PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{model}}}\right)
$$

  • $pos$:词在句子中的位置(0, 1, 2, …)
  • $i$:向量维度的索引
  • $d_{model}$:模型维度(512)

特点:

特性 说明
唯一性 每个位置有唯一的编码向量
相对关系 位置间的距离可以通过线性变换表示
可外推 理论上可以处理训练时没见过的更长序列
无需学习 固定公式,不占用模型参数

与输入嵌入的结合方式:直接相加。

$$
\text{输入} = \text{词嵌入(Embedding)} + \text{位置编码(PE)}
$$

📝 注意: 现代改进
后续模型采用了更先进的位置编码方案:

  • 可学习位置编码(GPT 系列)— 位置编码作为可训练参数
  • RoPE 旋转位置编码(LLaMA、DeepSeek)— 将位置信息融入注意力计算
  • ALiBi(BLOOM)— 基于距离的注意力偏置

核心组件四:前馈神经网络(FFN)

每一层注意力之后,都跟着一个逐位置的前馈网络

$$
\text{FFN}(x) = \text{ReLU}(xW_1 + b_1)W_2 + b_2
$$

  • 两层全连接:$d_{model}(512) \to d_{ff}(2048) \to d_{model}(512)$
  • 先升维再降维,中间用 ReLU 激活
  • 每个位置独立计算(不同位置共享参数)

💡 提示: 作用
注意力机制负责”信息汇聚”(词与词之间的交互),FFN 负责”信息变换”(对每个位置的特征做非线性变换),两者互补。

核心组件五:残差连接与层归一化

每个子层(注意力或 FFN)都包裹了残差连接(Residual Connection)层归一化(Layer Normalization)

$$
\text{output} = \text{LayerNorm}(x + \text{Sublayer}(x))
$$

1
2
3
4
输入 x ─────────────────────┐
│ │ (残差连接:跳跃连接)
↓ ↓
[子层: 注意力/FFN] ───→ [相加] ───→ [LayerNorm] ───→ 输出
组件 作用
残差连接 缓解深层网络的梯度消失问题,让信息可以”跳过”子层直接传递
层归一化 稳定训练过程,加速收敛

编码器结构

编码器由 6 个相同的层 堆叠而成,每层包含两个子层:

1
2
3
4
5
6
7
8
9
10
11
12
13
编码器单层结构:

输入

[多头自注意力] ←── Q, K, V 均来自输入

[Add & LayerNorm] ←── 残差 + 归一化

[前馈神经网络]

[Add & LayerNorm] ←── 残差 + 归一化

输出 → 传递到下一层 / 传递到解码器

编码器特点:

  • 自注意力是双向的,每个词能看到所有位置
  • 6 层堆叠逐步加深对输入的理解
  • 最终输出一组上下文相关的向量表示

解码器结构

解码器同样由 6 个相同的层 堆叠,每层包含三个子层:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
解码器单层结构:

已生成的输出

[掩码多头自注意力] ←── 只能看到当前位置之前的词

[Add & LayerNorm]

[多头交叉注意力] ←── Q 来自解码器,K/V 来自编码器输出

[Add & LayerNorm]

[前馈神经网络]

[Add & LayerNorm]

输出 → 传递到下一层

掩码自注意力(Masked Self-Attention)

生成第 $t$ 个词时,只允许关注位置 1 到 $t-1$,通过掩码矩阵实现:

1
2
3
4
5
6
7
掩码矩阵示例(4个词):

词1 词2 词3 词4
词1 [ 0 -∞ -∞ -∞ ] ← 词1只能看自己
词2 [ 0 0 -∞ -∞ ] ← 词2能看词1和自己
词3 [ 0 0 0 -∞ ] ← 词3能看词1、2和自己
词4 [ 0 0 0 0 ] ← 词4能看所有

$-\infty$ 经过 softmax 后变为 0,从而屏蔽未来位置的信息。

交叉注意力(Cross-Attention)

  • Q 来自解码器当前层
  • K、V 来自编码器最终输出

这让解码器在生成每个词时,都能”查阅”编码器对输入的完整理解。

输出层

解码器的输出经过最后两步转换为词的预测:

  1. 线性层 — 将解码器输出映射到词汇表大小的向量
  2. Softmax — 转换为概率分布,选择概率最高的词作为预测

$$
P(\text{下一个词}) = \text{softmax}(W \cdot h_{decoder} + b)
$$

Transformer 的三种变体

架构 结构 代表模型 适用任务
Encoder-Only 仅编码器 BERT、RoBERTa、ERNIE 文本分类、命名实体识别、情感分析
Decoder-Only 仅解码器 GPT 系列、LLaMA、Claude、DeepSeek 文本生成、对话、代码生成
Encoder-Decoder 完整结构 T5、BART、mBART 机器翻译、文本摘要、问答

⚠️ 重要: 当前趋势
Decoder-Only 架构已成为绝对主流。 GPT-4、Claude、Gemini、DeepSeek 等顶尖大模型都采用此架构。原因是:

  1. 架构更简单,易于扩展
  2. 预训练目标(下一词预测)天然适配
  3. 通过 Prompt 即可适应多种任务,无需编码器

训练细节

损失函数

使用交叉熵损失,衡量模型预测的词概率分布与真实词之间的差距。

优化器

使用 Adam 优化器,配合特殊的学习率调度策略(Warmup):

$$
lr = d_{model}^{-0.5} \cdot \min(step^{-0.5}, \ step \cdot warmup_steps^{-1.5})
$$

先线性增大学习率(warmup),再按步数的平方根衰减。

正则化

技术 说明
Dropout 注意力权重和 FFN 输出施加 dropout($p=0.1$)
Label Smoothing 标签平滑($\epsilon=0.1$),防止过度自信

总结

Transformer 核心组件速览

组件 作用 关键公式/机制
自注意力 捕捉序列内部的依赖关系 $\text{softmax}(QK^T/\sqrt{d_k})V$
多头注意力 多角度理解文本 多组 Q/K/V 并行计算后拼接
位置编码 注入词序信息 正弦/余弦函数
前馈网络 逐位置特征变换 两层全连接 + ReLU
残差 + LayerNorm 稳定深层训练 $\text{LN}(x + \text{Sublayer}(x))$

Transformer 的历史地位

graph LR
    A[Transformer 2017] --> B[BERT 2018]
    A --> C[GPT 2018]
    B --> D[RoBERTa]
    C --> E[GPT-2/3/4]
    A --> F[T5 2019]
    E --> G[ChatGPT 2022]
    A --> H[ViT 2020]
    G --> I[Claude / Gemini / DeepSeek ...]

Transformer 不仅革新了 NLP,还扩展到了计算机视觉(ViT)、语音(Whisper)、多模态(GPT-4V)等领域,是当代 AI 的基石架构。

相关链接

  • 大模型学习路线
  • LLM应用开发
  • Prompt Engineering详解
  • 编码器和解码器是什么

Transformer架构详解
https://zmmmmy.github.io/2026/02/24/Transformer架构详解/
作者
ZhiMy
发布于
2026年2月24日
许可协议