English version: AI Learning Roadmap 05 · NLP & The Transformer
05 · NLP 与 Transformer
AI 学习路线图 · 第 5 站(共 9 站)
为什么这一站重要
语言是现代 AI 的主要接口。每个聊天机器人、每个带答案框的搜索引擎、每个编程助手——全都建立在一个架构之上:Transformer,出自 2017 年的论文《Attention Is All You Need》(注意力就是你所需要的一切)。如果你理解 Transformer,你就理解整个大模型时代的引擎;如果不理解,第 6 站往后的一切对你来说都是无法调试的魔法。
好消息是:你现在已经掌握了 Transformer 需要的几乎所有东西。你懂嵌入(词即向量)、懂层和梯度、懂迁移学习。这一站只加一个真正的新想法——注意力——然后展示它如何组装成 BERT、GPT 以及此后一切的架构。
核心概念
1. 为什么语言很难(以及我们如何作弊)
文本是离散的、长度可变的、且极度依赖上下文的。"bank"在"river"旁边和在"money"旁边意思完全不同。旧方法(词袋、n-gram)要么忽略顺序,要么组合爆炸。现代管线分三步处理:
- 分词(Tokenization) —— 把文本切成 token。按词切分漏掉形态变化("run"、"runs"、"running");现代子词分词器(BPE、WordPiece、SentencePiece)切成高频子词单元:
tokenization → token + ization。这让词表保持在可控规模(约 5 万 token),并处理任何词——包括生造的词。你会一直用 Hugging Face 的分词器;重要的是要知道:token ID 而不是字符,才是模型的字母表。 - 嵌入(Embedding) —— 把每个 token ID 映射成稠密向量。关键性质(从数据中学到):语义相近的词距离相近,关系变成向量运算(国王 − 男人 + 女人 ≈ 王后)。这就是分布语义学:一个词由它周围的词来刻画。(你在第 4 站见过 word2vec;现在它成为一切的输入层。)
- 位置编码 —— Transformer 同时处理所有 token,本身没有顺序概念;我们把位置信息注入每个 token 的表征,让"狗咬人" ≠ "人咬狗"。
2. 注意力:唯一的新想法
先看它解决的问题:要理解"猫追老鼠,因为它饿了"里的"它",模型必须跨距离把"它"连到"猫"——而 RNN 无法可靠地跨那么远传递信息。
注意力是对整个上下文的加权查找。 对每个 token,模型看遍其他所有 token,决定:我该以多大权重关注每一个? 具体来说,每个 token 产生三个向量:
- 查询(Query,Q) —— 我在找什么?
- 键(Key,K) —— 我包含什么?
- 值(Value,V) —— 我实际贡献什么?
然后:每个查询给每个键打分(点积 = 相似度),分数变成权重(softmax),token 的新表征就是值的加权和。大白话:"我提出我的问题,看看哪些词最相关,按相关度比例把它们的信'混合'进来。"
两个关键改进:
- 多头注意力 —— 用不同的学得投影并行跑多次注意力,让模型能同时关注不同类型的关系(句法、指代、情感、位置)。每个头是不同"镜头"。
- 自注意力 —— 每个 token 关注同一序列里的所有 token。这给了 Transformer 两大超能力:长距离依赖(任意两个 token 只隔一步)和并行性(所有 token 同时处理,不像 RNN——这正是它能扩展到数十亿参数的原因)。
代价:注意力是序列长度的 O(n²)(每个 token 关注每个 token)。1,000 token 的输入是 100 万对——可控;100,000 token 就是问题,你会在第 6 站再遇到。
3. Transformer 架构
Transformer 是一叠相同的块,每块是:
Token 嵌入 + 位置编码
│
[ 自注意力 ] ──┐
│ │ 残差连接 (+)
[ 层归一化 ] │
│ │
[ 前馈网络 ] ──┤
│ │
[ 层归一化 ] │
│ │
▼ ▼
下一个块(形状相同)
两个结构习惯解释了整个设计:
- 残差连接 —— 每个子层是
x + 子层(x)(你在 ResNet 见过)。梯度自由流动,所以可以堆 100+ 层。这是深度学习的规模化实践。 - 层归一化 —— 稳定训练(序列场景下批归一化的现代近亲)。
编码器 vs 解码器 —— 家族分叉点:
- 仅编码器(BERT、RoBERTa):双向读文本——每个 token 关注左右所有其他 token。擅长理解:分类、问答、检索。
- 仅解码器(GPT、Llama 和所有现代大模型):从左到右生成;每个 token 只能看之前的(因果掩码——否则模型能"作弊"看到答案)。擅长生成。
- 编码器–解码器(T5、BART):编码器读输入,解码器生成输出。翻译和摘要的经典选择。
**当代格局注记:**仅解码器赢了。从 GPT-4 到开源模型(Llama、Mistral、Qwen、DeepSeek)全都是为预测下一个 token 训练的解码器。今天人们说"LLM",指的就是放大了的解码器。
4. 预训练与微调 —— 配方
Transformer 的另一场革命在怎么训练,分两个阶段:
- 预训练 —— 在海量无标注文本上用自监督目标训练:
- BERT:掩码语言建模——藏起 15% 的 token,学预测它们(完形填空)。模型必须理解上下文两侧。
- GPT:下一个 token 预测——给定前缀,预测下一个 token,一遍又一遍,在数万亿 token 上。
- 不需要人工标签——文本本身就是标签。这就是规模化成为可能的原因:互联网就是数据集。
- 微调 —— 拿预训练模型,在你的小规模带标签数据集上继续训练,适配你的任务(情感、分类、摘要)。这就是迁移学习,和你在第 4 站用 ResNet 做的一模一样——大数据上预训练,小数据上适配。
结果就是定义现代 NLP 的模式:一个预训练模型,无限任务。 还有一个你会在第 6 站遇到的额外能力——上下文学习:足够大的预训练模型,往往只需提示里给几个例子就能完成新任务,完全不用更新权重。
5. Hugging Face 生态
Hugging Face 是标准工具链,它的美在于一致性:无论什么架构的模型,都共享同一套三个 API。
tokenizer—— 文本 → 输入 ID(tokenizer("你好!")),填充/截断内置。model—— 输入 ID → 预测;AutoModelForSequenceClassification、AutoModelForCausalLM等。pipeline—— 一行完成整个任务:pipeline("sentiment-analysis")("I love this!")。- Hub —— 成千上万的预训练模型和数据集,一次搜索即可。这是你下载 BERT、GPT-2、Llama 以及一切的地方。
工具与技能
- Hugging Face Transformers —— 库本身(
pip install transformers)。 - Hugging Face Datasets —— 加载标准数据集(IMDB、GLUE 等)。
- GPU(Colab/Kaggle 免费额度)用于微调。
- 可选:Weights & Biases 追踪微调运行。
动手任务
- **探索分词器(第 1 天)。**加载一个 BPE 分词器;分词一句英文和一句中文;检查 token ID;再解码回去。看看子词如何处理形态,以及词表大小如何影响每词的 token 数。
- **可视化注意力(第 2–3 天)。**加载一个小预训练模型,可视化一个句子的注意力图——原论文有经典图;
bertviz让它可交互。看"它"关注"猫"。这一刻,架构才真正变成现实。 - **微调 BERT(第 2 周)。**用 Hugging Face Trainer 在 IMDB(或任意分类数据集)上微调
bert-base-uncased做情感分类。达到 90%+ 准确率。和你第 4 站的文本分类器对比:同样的任务,但这个模型先在整个英语上预训练过。 - **用 GPT-2 生成(第 2–3 周)。**加载一个小解码器模型(GPT-2 或现代小模型);生成文本;实验 temperature(越高越狂野)和 top-p 采样;近距离观察重复——一个真实的失败模式。
- **摘要(第 3 周)。**用编码器–解码器模型(比如 BART 或 T5)通过
pipeline("summarization")摘要一篇长文;看长度控制,以及摘要如何在大长输入上退化(上下文长度问题的预告)。
里程碑检查点
满足以下条件,你才能进入第 6 站:
- 你微调了一个预训练 Transformer 做分类,而且明显胜过你第 4 站的模型。
- 你能用自己的话解释 Q、K、V——各自在"问"什么、"答"什么。
- 你能解释仅编码器、仅解码器、编码器–解码器的区别,并各举一个模型。
- 你能解释预训练和微调的区别,以及为什么无需标签就能在原始文本上预训练。
- 你生成了文本,并说出你观察到的两个失败模式。
精选资源
- Jay Alammar —— The Illustrated Transformer—— 史上最好的视觉解释;读两遍。
- Hugging Face NLP 课程—— 实践圣经;第 1–7 章覆盖这一站的一切动手内容。
- The Annotated Transformer(哈佛)—— 论文逐行、用可运行 PyTorch 实现。想多深就多深。
- 《Attention Is All You Need》(Vaswani 等,2017)—— 原论文;看完 Illustrated Transformer 后它就会变得可懂了。
- Andrej Karpathy —— Let's build GPT—— 约两小时从零构建一个 GPT;"我真的懂了"的终极时刻。
时间规划
- **总计:**约 4 周,每周 10–15 小时(约 50 小时)。
- **建议安排:**第 1 周 → 分词、嵌入、注意力(任务 1–2);第 2 周 → 架构 + 微调 BERT(任务 3);第 3 周 → 生成 + 摘要(任务 4–5);第 4 周 → 复习、读论文、里程碑。
衔接下一站
你现在理解这台引擎了。第 6 站拉远镜头,看建立在它之上的机器:当这个架构放大到数十亿参数、用大半个互联网训练时会发生什么——涌现的能力、驯服它们的对齐技术、这些模型如何上线服务,以及如何诚实地评估它们。你将完成从"Transformer 怎么工作"到"大模型到底是什么"的跨越。
No comments yet.