图解Transformer:一文看懂大模型背后的核心架构
一篇8页论文,如何改变了世界?![]()
2017年,Google团队发表了一篇名为《Attention Is All You Need》的论文。篇幅不长,只有8页。
当时谁也没想到,这篇论文提出的Transformer 架构,会在短短几年内横扫整个AI领域——GPT、BERT、DALL·E、Stable Diffusion……几乎所有2024-2026年最热门的大模型,底层都跑在这个架构上。
你可以不懂它的全部数学细节,但要理解大模型为什么"行",Transformer 是绕不开的第一站。
本文核心问题:Transformer 究竟做了什么,让整个深度学习世界心甘情愿地抛弃了统治多年的 RNN 和 CNN?
1. 为什么需要Transformer?——从RNN到注意力革命
RNN 的致命伤:串行
在 Transformer 出现之前,处理序列数据(文本、语音、时间序列)的主流架构是RNN(循环神经网络)及其变体 LSTM、GRU。
RNN 的工作方式就像读一本逐字逐句的书——你得看完第1个字,才能看第2个字,再看第3个字:
输入: "我" → "爱" → "你" ↓ ↓ ↓ RNN: h₁ ← h₂ ← h₃问题1:不能并行。训练一个句子,你得按顺序一个词一个词地算,GPU的并行能力全浪费了。
问题2:长程依赖。"我在北京生活了十年,最喜欢的还是____"——填"烤鸭"需要追溯到前面20个词。RNN 在处理这种远距离关联时,梯度会一路衰减消失(梯度消失问题)。
Attention 的破局思路
早在2014-2015年,研究者就发现:如果在 RNN 基础上加一个"注意力模块",让模型在预测每个词时回看输入序列的各个位置,效果会大幅提升。这就是Attention 机制的雏形。
而 Transformer 的激进之处在于:把 RNN 整个去掉,只用 Attention。
论文标题"Attention Is All You Need"(注意力就是你所需的一切),不只是个酷炫的口号——它直接宣判了 RNN 时代的终结。
2. 宏观俯瞰:Transformer 整体架构
先看全局,再看局部。
Transformer 的架构可以拆成两大块:
┌─────────────────────────────────┐ │ 输出序列 │ │ ↑ │ │ Linear + Softmax │ │ ↑ │ │ Decoder Block ×N │ │ ┌─────────────────────┐ │ │ │ Add & Norm (FFN) │ │ │ │ ↑ │ │ │ │ Add & Norm (Cross- │ │ │ │ Attention) │ │ │ │ ↑ │ │ │ │ Add & Norm (Masked │ │ │ │ Self-Attention) │ │ │ └─────────┬───────────┘ │ │ ↑ │ │ 输入嵌入+位置编码 │ │ ↑ │ │ 输出序列(shifted right) │ ├─────────────────────────────────┤ │ 输入序列 │ │ ↓ │ │ 输入嵌入+位置编码 │ │ ↓ │ │ Encoder Block ×N │ │ ┌─────────────────────┐ │ │ │ Add & Norm (FFN) │ │ │ │ ↑ │ │ │ │ Add & Norm (Self- │ │ │ │ Attention) │ │ │ └─────────┬───────────┘ │ │ ↓ │ └─────────────────────────────────┘简单理解:
- Encoder(编码器):读入完整的输入序列,提取语义特征
- Decoder(解码器):基于编码器的输出,一步步生成目标序列
N 表示堆叠层数——原始论文用了 N=6,而 GPT-3 的层数已经堆到了 96 层。
在切入每个组件之前,先记住一个核心概念:Transformer 的一切设计都在解决同一件事——让模型能"看到"序列中所有位置的信息。
3. 核心一:Self-Attention(自注意力机制)
这是 Transformer 的心脏。理解了这个,就理解了50%。
3.1 从"查询-键-值"说起
想象你在图书馆找一个叫《深度学习》的书:
- 你大脑中的需求就是Query(查询,Q)
- 每本书的标题/标签就是Key(键,K)
- 书的内容就是Value(值,V)
你的大脑先计算 Query 和每个 Key 的匹配度(打分),然后根据匹配度去加权读取对应 Value 的内容。
Self-Attention 做的完全是同一件事——只不过发生在词与词之间。
3.2 数学过程(别怕,就是矩阵乘法)
对于一个句子中的每个词,Self-Attention 做3步:
第1步:生成 Q、K、V 向量
每个输入词向量x分别乘以3个权重矩阵,得到对应的 Q、K、V:
Q = x · W_Q K = x · W_K V = x · W_V简化理解:每个词通过3个不同的"视角"来观察自己和它词——Q 是"我想找什么",K 是"我有什么标签",V 是"我实际提供的信息"。
第2步:计算注意力分数
每个词的 Q 和所有词的 K 做点积(dot product),得到一个分数矩阵。分数越高,说明这两个词越"相关"。
score(Q, K) = Q · K^T但原始分数容易受向量维度影响——维度越大,点积值越大。所以除以√d_k做缩放:
scaled_score = (Q · K^T) / √d_k第3步:Softmax 归一化 + 加权求和
用 softmax 把分数变成 0~1 的权重,然后用权重去加权求和所有词的 V:
Attention(Q, K, V) = softmax(Q · K^T / √d_k) · V完整公式(这是论文中最重要的一条公式):
3.3 直观理解
用一句话概括 Self-Attention——
"我"在看句子中每个词时,会问每个词"你和我的关系有多重要?",然后根据重要性聚合所有词的信息重新理解"我"。
比如句子 "The animal didn't cross the street becauseitwas too tired"——
在"it"这个位置上,Self-Attention 会让"it"看到"animal"的权重远高于"street",从而正确理解"it"指代的是动物而不是街道。
3.4 为什么叫 Self-Attention?
因为Q、K、V 都来自同一个输入序列。模型在"自己看自己",所以叫"自注意力"。
4. 核心二:Multi-Head Attention(多头注意力)
4.1 一个头看一种关系
Self-Attention 一次只能学到一种"关系模式"。但词与词之间的关系是多样化的——比如:
- 语法关系(主语-谓语)
- 语义关系(同义、反义)
- 位置关系(相邻、远距离)
解决思路:用多组 Q、K、V 并行计算,每组关注不同模式。
4.2 多头的工作方式
原始论文使用了8 个注意力头(heads):
输入 → 线性变换 → 拆成8组 Q、K、V ├── Head 1: Self-Attention → 关注语法关系 ├── Head 2: Self-Attention → 关注位置关系 ├── Head 3: Self-Attention → 关注语义关系 ├── ... └── Head 8: Self-Attention → ... 8个头的输出 → 拼接 → 线性变换 → 最终输出每个头独立计算自己的注意力分布,最后把所有结果拼起来,再做一次线性变换。
4.3 为什么多头有效?
用个类比:
一个侦探查案,8个助理分别从不同角度调查——一个查财务记录,一个查通讯记录,一个查人际关系。最后汇总,比一个人单干全面得多。
多头注意力本质上是让模型在多个表示子空间中同时学习关联模式,大大增强了表达能力。
5. 核心三:位置编码(Positional Encoding)
5.1 为什么需要它?
RNN 天然有序列顺序(a₁→a₂→a₃ 按顺序处理),但 Transformer 的 Self-Attention不关心位置。
对于 Self-Attention 来说,"我 爱 你"和"你 爱 我"的注意力分数完全相同——因为 Q/K 点积跟顺序无关。
但语言中顺序至关重要:
- "狗咬人" ≠ "人咬狗"
5.2 解决方案:给每个位置打上位置标记
Transformer 的做法是在输入词向量上叠加一个位置编码向量。位置编码 + 词向量 = 带位置信息的输入。
论文使用的公式(正弦/余弦编码):
PE(pos, 2i) = sin(pos / 10000^(2i/d_model)) PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))其中:
pos是位置序号(0, 1, 2, ...)i是维度索引d_model是模型维度(原始论文 512)
5.3 直观理解
用不同频率的正弦/余弦波来编码位置:
- 低维度→ 低频波 → 编码粗略的位置信息
- 高维度→ 高频波 → 编码精细的位置偏移
这种设计的妙处在于:模型可以学到相对位置关系(比如"第3个词和第7个词的关系"),而不只是绝对位置。
现代大模型(如 GPT、Llama)已经改用可学习的位置编码(learned positional embeddings),但底层思路是一样的——让模型感知序列顺序。
6. 训练秘籍:Mask、残差连接与 LayerNorm
6.1 Mask(掩码)
Transformer 用了两种掩码:
Padding Mask:句子长度不一样,短的句子补了填充符(padding)。计算注意力时,让模型忽略这些填充位置。
Look-ahead Mask(Decoder专用):在做翻译等生成任务时,解码器预测第3个词时不应该"偷看"第4个词。所以把未来位置的注意力分数设成负无穷(softmax 后变成0)。这就是Masked Self-Attention。
6.2 残差连接(Add & Norm)
Transformer 中的每个子层(Self-Attention 和 FFN)外面都包了一层"Add & Norm":
output = LayerNorm(x + Sublayer(x))残差连接(Add)解决了深层网络的退化问题——让梯度能直接"短路"回传,即使堆到100层也能稳定训练。
层归一化(LayerNorm)让每层的输出分布稳定,加速收敛。
6.3 前馈网络(Feed-Forward Network)
每个注意力层后面跟一个简单的前馈网络:
FFN(x) = max(0, x · W₁ + b₁) · W₂ + b₂其实就是两层线性变换 + ReLU激活函数。原始论文的维度是 2048(4×512)。
每个位置共享同一套 FFN 参数,但不同位置独立计算。它负责对注意力提取的特征做非线性变换和进一步抽象。
7. 从Transformer到大模型:GPT 与 BERT 的路线分歧
7.1 三种架构选择
原版 Transformer 是 Encoder-Decoder 结构。但后续的工作证明:不需要全都要。
| 模型 | 使用了哪个部分 | 特点 |
|---|---|---|
| BERT | 只用 Encoder | 双向理解,适合分类/问答 |
| GPT | 只用 Decoder | 单向生成,适合文本生成 |
| T5 | Encoder + Decoder | 原始结构,适合翻译/摘要 |
7.2 为什么 GPT(Decoder-Only)笑到了最后?
2020年代大模型的发展趋势很清晰:GPT 路线的 Decoder-Only 架构主导了几乎所有顶级大模型。
原因有三:
统一的预训练目标:GPT 的"预测下一个词"(next token prediction)天然适合作为通用接口——翻译、写代码、聊天、推理,全都可以统一成"预测下一个词"
规模扩展平滑:Decoder-Only 架构在扩展到百亿、千亿参数时,训练稳定性和并行效率最高
In-Context Learning:只有单向的 Decoder 架构,才能实现让人惊叹的"上下文学习"能力——给它几个例子,它就能自动学会做新任务
而 BERT 的双向能力虽然在下游任务微调时更强,但无法直接支持"零样本生成",在"规模即能力"的时代逐渐退居二线。
总结:Transformer 的设计哲学
回顾整个架构,Transformer 的成功可以归结为几个关键设计决策:
- 完全抛弃循环→ 实现并行计算,让 GPU 发挥全部实力
- 自注意力机制→ 每个位置直接"看到"所有其他位置,解决长程依赖
- 多头注意力→ 从多个角度理解词间关系
- 残差连接 + LayerNorm→ 让极深网络的训练变成现实
- 位置编码代替顺序处理→ 在保留顺序信息的同时摆脱了串行约束
Transformer 不是没有缺点——它的计算复杂度是 O(n²)(n为序列长度),处理长文本时计算量爆炸。但正因如此,才有了后续的 FlashAttention、稀疏注意力、线性注意力等优化工作——这是另一个故事了。
如果你看到了这里:你已经理解了自2017年以来AI领域最重要的架构创新。下次再看到 GPT-5、Claude-4、Llama-4 的新闻,你知道它们底层都在跑什么了。
参考资源
- Vaswani et al.,Attention Is All You Need, NeurIPS 2017
- Transformer 论文中文翻译
- Jay Alammar,The Illustrated Transformer
- Understanding Transformer Architecture (含向量数学示例)
