通俗理解 Transformer:从一句话到下一个词的魔法
本文整理自 3Blue1Brown《深度学习》系列第 5、6 章,以及 Jay Alammar 的经典图解《The Illustrated Transformer》。
目标不是推导公式,而是建立直觉——读完你应该能向别人讲清楚:Transformer 到底在干什么,以及为什么它能撑起今天所有的大模型。
一、先建立全局观:Transformer 是台"续写机器"
很多人被 Transformer 吓到,是因为一上来就看到自注意力、多头、缩放点积这些术语。其实它的核心目标极其简单:
给定一段文本,预测"下一个最可能出现的词"是什么。
它做的事就是反复「预测 → 采样 → 把新词接上 → 再预测」。所有你能感受到的"智能"——写文章、写代码、对话——都来自这个朴素的循环,加上在海量数据上的训练。
所以理解 Transformer,就是在理解:一句话是怎么一步一步变成"下一个词的概率分布"的。
下面这张图是整个数据流:
"猫 追 狗"
│
▼ ① 分词 (Tokenization)
[猫][追][狗] → token 序列
│
▼ ② 嵌入 (Embedding):每个 token → 高维向量
[cat_vec][chase_vec][dog_vec]
│
▼ ③ 注意力块 (Attention):让每个向量"吸收"上下文
│ (把"泛泛的意思"改成"结合语境的意思")
▼ ④ 前馈层 (Feed-forward):逐位置再过一遍
│ (Attention 和 FFN 交替堆叠 N 层)
▼ ⑤ 解嵌入 (Unembedding):最后一个向量 → 全词表概率分布
▼ ⑥ Softmax + 采样:按概率挑下一个 token
接下来我们逐个拆开看。
二、分词:文本怎么变成数字
模型不认识"字"或"词",它只认 token——文本被切成的子词片段。
主流算法是 BPE(Byte-Pair Encoding):从单个字符开始,把训练语料里最常相邻出现的片段不断合并,形成更大的单元。
- 例:
"transformer"可能被切成["trans", "former"];中文常按字或子词切。 - 好处:词表不需要无限大,又能用子词拼出没见过的词。
这直接关系到我们前面说的 Token 概念:一次 API 调用花的钱,就是 token 数 × 单价。所以"省 token"本质上就是省成本。
三、嵌入:把词变成"有方向的意义"
每个 token 会被映射成一个高维向量(GPT-3 是 12288 维)。关键在于:向量的方向编码了语义。
- "猫"和"狗"的向量夹角很小(都是动物),和"数据库"夹角很大。
- 衡量两个向量有多相似,用余弦相似度(cosine similarity):把两向量点积后归一化到 [-1, 1],越接近 1 越相似。
嵌入矩阵是模型最大的一块参数来源之一(GPT-3 嵌入层约 3 亿参数)。它本质上是一张巨大的"查表"——但查出来的不是死记硬背的意思,而是可以被后面注意力模块改写、校准的"初始意思"。
四、注意力机制:Transformer 的灵魂
它解决了什么问题?
一个词的含义高度依赖上下文。"bank" 是"银行"还是"河岸"?"它"指代谁?注意力让每个词能够动态地从上下文里"搬运"信息,来更新自己的向量表示。
没有注意力,模型拿到的只是孤立的词义;有了注意力,词义变成"结合语境后的词义"。
Q / K / V 的几何直觉
注意力用三个角色来完成"搬运",一个前端同学很好理解的类比:
| 角色 | 类比 | 作用 |
|---|---|---|
| Query(查询) | 你在搜索框打的关键词 | "我在找什么信息" |
| Key(键) | 每个网页的标签 / 标题 | "我能提供什么信息" |
| Value(值) | 网页的正文内容 | "真正要被搬运的信息" |
计算步骤
- 每个词通过可学习的矩阵生成 Q、K、V 三个向量。
- 用 Q·K 的点积 衡量"这个词有多想关注那个词"(相关性分数)。
- 对分数做 Softmax,变成权重(加起来等于 1)。
- 用权重对 V 做加权求和,得到"融合了上下文的新向量"。
- 把这个新向量加回原向量 —— 得到上下文感知的表示。
🔢 一个可手算的小例子
句子:"一只毛茸茸的蓝色生物在青翠的森林里游荡。"(为演示用 2 维向量,真实是上万维)
creature = [ 1.0, 0.0] fluffy = [0.0, 1.0] blue = [-1.0, 0.0]
creature的 Query 去和fluffy、blue的 Key 算点积,发现它俩相关性高。- Softmax 得到权重,比如 fluffy 0.5、blue 0.5、其他 0。
- 新的
creature向量 = 原向量 + 0.5·V(fluffy) + 0.5·V(blue)。 - 于是
creature从一个"泛泛的生物",变成了"毛茸茸 + 蓝色"的生物。
这就是注意力在做的事:把形容词的信息"搬"到名词上。 自己手算一遍,比看十遍动画都管用。
五、缩放点积注意力
真实公式(知道长什么样即可,不必推导):
Attention(Q, K, V) = softmax( Q·Kᵀ / √d_k ) · V
- 那个
√d_k(维度平方根)是缩放因子:维度一高,点积的数值会非常大,Softmax 就会"两极分化"、梯度消失。除以维度平方根刚好抵消这个效应。 - 整句注意力可以一次性用矩阵乘法并行算完——这正是 Transformer 比 RNN 快得多的根本原因。
六、掩码与位置编码
掩码(Masking):在生成时,第 i 个词不能偷看第 i+1 及之后的词,否则就"作弊"了。做法是在 Softmax 之前,把未来位置的分数设为 -∞。
位置编码(Positional Encoding):注意力本身不关心顺序——"狗追猫"和"猫追狗"在它眼里只是一堆相同向量,只是排列不同。所以必须显式注入位置信息:早期用正弦曲线,现代多用可学习的位置嵌入。
七、多头注意力
Transformer 不只算一组 Q/K/V,而是并行算很多组(GPT-3 每层 96 个头)。不同的"头"会学会关注不同的关系:有的看语法、有的看指代、有的看语义。各组结果拼接后再投影,表达能力立刻丰富起来。
八、编码器-解码器架构
2017 年的原始 Transformer(《Attention Is All You Need》)分两半:
- Encoder(编码器):读入完整输入,产出"理解后的表示",常用于翻译、分类。
- Decoder(解码器):自回归地一个字一个字生成输出。
而我们熟悉的 GPT 系列 = 只用 Decoder(配合单向注意力 + 掩码)。理解这一点,就看懂了为什么 ChatGPT 本质上是一台"续写机器"。
九、训练三阶段:为什么模型这么"懂"
- 预训练(Pretraining):在海量文本上做"预测下一个词",学会语言和世界知识。
- 微调(SFT):用人工示范数据,教它"怎么按指令对话"。
- RLHF(人类反馈强化学习):用人类偏好打分训练奖励模型,再反过来优化回答的质量与安全性。
十、上下文瓶颈:O(n²)
注意力要对所有词两两算相关性,所以计算量和显存都随序列长度的平方增长。这就是为什么存在"上下文窗口"上限(8k / 32k / 128k token),也是长文档处理必须"切分 + 检索"的根本原因。
十一、回看:这和 LLM 基础概念怎么对应
| 概念 | 在 Transformer 里的位置 |
|---|---|
| Token | 分词产物,是模型处理的原子单位 |
| 上下文窗口 | 注意力 O(n²) 限制 → 窗口不能无限长 |
| 温度 (Temperature) | Softmax 前的缩放,控制输出"稳 vs 飘" |
| 采样 (Sampling) | 按概率分布挑下一个 token,不是永远选最大 |
| 角色 (Role) | 系统 / 用户 / 助手消息 → 变成不同前缀,影响生成 |
学完这一篇,你应该能反过来解释那些基础概念:温度为什么影响"创造力",上下文窗口为什么是硬限制。
十二、延伸思考:为什么这和我们做应用有关
- RAG(检索增强):正是因为上下文窗口有限且 O(n²),我们才需要"先检索再喂给模型",而不是把整本手册硬塞进去。
- Agent 的记忆:注意力是"单次对话内的短期记忆";跨对话的长期记忆要靠外部向量库——这正是 Agent 记忆模块的设计动机。
- 工具调用:模型输出里解析出"要调哪个工具",本质还是"预测下一个 token",只是预测目标变成了结构化指令。
十三、要点回顾
读到这里,试着不看上文回答这三个问题,能答出来就说明真懂了:
- 模型怎么把一句话变成"预测下一个词"?
- 注意力机制解决了什么问题?(提示:上下文相关的词义)
- 为什么靠"预测下一个词"这种简单目标,能训练出这么强的能力?
再进阶一点:Q/K/V 分别是什么?为什么要缩放(除以 √d_k)?掩码是干嘛的?GPT 和原始 Transformer 架构差在哪?
术语表
| 术语 | 中文 | 一句话 |
|---|---|---|
| Token | 词元 | 文本被切成的子词片段,模型处理的原子单位 |
| Embedding | 嵌入 | 把 token 映射成高维向量,方向编码语义 |
| Attention | 注意力 | 让每个词从上下文搬运信息更新自身表示 |
| Query / Key / Value | 查询 / 键 / 值 | 注意力的三个角色,类比"搜索词 / 标签 / 正文" |
| Softmax | 归一化指数 | 把分数变成概率分布(和为 1) |
| Masking | 掩码 | 屏蔽未来词,防止生成时"偷看" |
| Positional Encoding | 位置编码 | 给词注入顺序信息(注意力本身无序) |
| Multi-Head | 多头 | 并行多组注意力,捕捉不同关系 |
| Encoder / Decoder | 编码器 / 解码器 | 原始 Transformer 两半;GPT 只用解码器 |
| Pretraining / SFT / RLHF | 预训练 / 微调 / 人类反馈 | 训练三阶段 |
| BPE | 字节对编码 | 主流分词算法 |
参考资源
- 3Blue1Brown《深度学习》第 5 章 · Transformer 概览(YouTube):
https://www.youtube.com/watch?v=wjZofJX0v4M - 3Blue1Brown《深度学习》第 6 章 · 注意力机制(YouTube):
https://www.youtube.com/watch?v=eMlx5fFNoYc - 第 5 章 B 站中配(中文配音):
https://www.bilibili.com/video/BV182sYz4EZf - Jay Alammar《The Illustrated Transformer》(图解原版):
https://jalammar.github.io/illustrated-transformer/
评论