第2章:Transformer架构——LLM的心脏,你必须了解的结构
系列导读:本章是系列中最偏技术原理的一章。如果你不需要深挖底层,可以跳过神经网络和注意力机制的具体数学,但Attention 机制的概念建议不要跳过,它是理解一切 LLM 能力的基础。
一、为什么 Transformer 如此重要?
在 Transformer 之前,NLP 主要用 RNN(循环神经网络)和 LSTM(长短期记忆网络)。它们的致命问题在于:无法并行计算——处理一个句子,必须一个词一个词地按顺序来,后面的词必须等前面的处理完。
Transformer(2017年 Google 提出,论文《Attention Is All You Need》)革命性地用**自注意力机制(Self-Attention)**替代了顺序依赖,实现了:
- 全并行计算:句子中所有词同时处理
- 无限感知距离:一个词可以直接「看到」句子里的任何一个词,无论多远
- 极强的可扩展性:奠定了「大」模型的基础
二、Transformer 的整体架构
LLM(尤其是 GPT 系列)用的是 Decoder-only 架构,只保留 Transformer 的解码器部分。一张图说清楚:
输入文本 → Token Embedding + 位置编码 → N个解码器层 → 输出概率分布 → 选词 → 生成文本
每层解码器内部包含两个核心子模块:
1. 多头自注意力(Multi-Head Self-Attention)
这是 Transformer 的灵魂。
自注意力的核心思想:计算句子中每个词与其他所有词之间的关联强度,然后根据关联强度加权聚合信息。
比如输入句子:「猫坐在垫子上,因为它很暖和。」
传统序列模型处理「它」时,只能看到前面的词,难以判断「它」到底指猫还是垫子。而 Transformer 的注意力机制让「它」直接去「问」前面的所有词:「你跟我关系近吗?」
结果「垫子」和「暖和」得分最高,「猫」得分次之——模型就明白「它=垫子」了。
三步走:Query, Key, Value
这是注意力机制最经典也最容易被误解的部分。
- 每个词拿出一组「查询向量」(Query):“我有问题要问别人”
- 每个词拿出一组「键向量」(Key):“这是我对自己的描述,来和我匹配”
- 每个词拿出一组「值向量」(Value):“如果匹配上了,这是我贡献的信息”
过程如下:
- 每个词的 Query 向量,与所有词的 Key 向量做点积 → 得到一个注意力分数
- 分数经过 softmax 归一化 → 得到权重
- 用权重加权所有词的 Value 向量 → 得到这个词的新表示
数学公式:
Attention(Q, K, V) = softmax(Q·K^T / sqrt(d_k)) · V
注意除以 sqrt(d_k) 的缩放步骤——在维度很高时,点积结果会变得极大,softmax 会退化成接近 one-hot 的极端分布,缩放可以平滑它。
多头(Multi-Head)
一套 Query/Key/Value 不够用,来多套——比如8套或16套。
每套「头」关注不同的语言模式:
- 第1个头关注语法关系(主语-谓语)
- 第2个头关注语义相似度
- 第3个头关注位置相邻关系
- 第4个头关注代词指代
最后把多个头的结果拼接起来,用一个线性变换合并。多头让每个数学空间「各司其职」,信息更丰富。
2. 前馈神经网络(Feed-Forward Network, FFN)
自注意力之后,每个词向量经过两层全连接网络:
FFN(x) = ReLU(xW1 + b1)W2 + b2
它的作用是把注意力的结果做一个非线性映射,增加模型的表达能力。你可以把它理解为让每个词在注意力的基础上「深度加工」一下。
现代大模型常用 GELU 或 SwiGLU 替代 ReLU,性能更好。
三、位置编码:为什么需要它?
Transformer 的注意力机制是「全连接」的——它不在乎词在句子中的位置。但自然语言里位置极重要:「我打你」和「你打我」意思完全不同。
位置编码(Positional Encoding)就用来注入位置信息。早期用正弦余弦函数生成位置向量,加到词向量上。现代大模型多用可学习的位置嵌入(Learnable Positional Embedding)或旋转位置编码(RoPE)。
**RoPE(旋转位置编码)**是当代大模型(LLaMA、智谱、通义等)的主流选择。思路很巧妙:
不把位置信息作为外部向量注入,而是让注意力计算中的 Query 和 Key 向量根据距离做「旋转」,旋转角度由位置决定,距离越远旋转角度越大。这样模型能学习到「距离越远的词,关联越弱」的偏置。
四、Layer Normalization:训练稳定的基石
Transformer 层数很深(GPT-3 有96层),深网络里信号的分布会一层层漂移,导致训练不稳定。
Layer Norm 在每一层内部对输入进行归一化,把值拉到均值为0、方差为1的分布。这样多层叠加时信号不会爆炸也不会消失。
现代变体常用 RMSNorm(Root Mean Square Norm),计算更简洁,LLaMA 等模型在用。
五、现代 LLM 对 Transformer 的改造
| 原设计 | 改进 | 代表模型 |
|---|---|---|
| LayerNorm → 先归一化再注意力 | Pre-Norm:先归一化再进入子层 | GPT-3、LLaMA 等 |
| ReLU 激活 | SwiGLU/GELU 激活 | GPT-4、LLaMA |
| 原版位置编码 | RoPE 旋转位置编码 | LLaMA、智谱 |
| 全部密集层 | MoE(混合专家)稀疏激活 | Mixtral、GPT-4 |
| 全局注意力 | 滑动窗口注意力/稀疏注意力 | Longformer、Mistral |
六、为什么理解 Transformer 结构很重要?
你可以「用」GPT 而不了解 Transformer,但如果你要做 LLM 工程优化,以下问题都绕不开底层结构:
- KV Cache 优化:Transformer 解码时每步都要计算所有 Key 和 Value,重算太浪费。缓存历史 KV 能把时间复杂度从 O(n²) 降到 O(n)。
- 注意力幻方:长上下文时自注意力的计算复杂度是 O(n²),这是 LLM 最大的性能瓶颈。
- 量化推理(8bit/4bit):知道矩阵乘法的内部结构,才知道哪些权重可以降精度而不影响效果。
- Prompt 压缩:理解位置编码和注意力的偏置,才知道如何让模型更关注关键信息。
七、本章小结
- Transformer = 自注意力 + 前馈 + 位置编码,三者缺一不可
- 自注意力让任意两个词之间直接通信,打破了序列模型的时间依赖
- Multi-Head 让多维度语义模式并行计算
- 现代大模型在位置编码、归一化方式、激活函数上做了显著优化
- Transformer 架构的天花板决定了 LLM 能力的上限:O(n²) 的注意力复杂度是核心瓶颈
思考题
- 为什么 Transformer 的自注意力是 O(n²),这对长上下文意味着什么?
- 多头注意力中,不同的「头」真的会学到不同的模式吗?你怎么验证这件事?