Appearance
Transformer简介
一句话理解 Transformer
Transformer 是一种完全基于注意力机制(Attention)的神经网络架构,它抛弃了传统循环神经网络(RNN)的逐词串行处理方式,能够并行地建模序列中任意两个位置之间的关系。
它由 Google 团队在 2017 年的论文 《Attention Is All You Need》 中提出,最初用于机器翻译,如今已成为几乎所有大语言模型(GPT、BERT、LLaMA、Claude、文心一言等)的共同地基。
可以这样类比:如果说 RNN 是「一个字一个字读、读完后面忘了前面」,那么 Transformer 就是「整篇文章一次摊在桌上,随时可以抬头看任意两句之间的联系」。
为什么要学习 Transformer
┌──────────────────────────────────────────────┐
│ 你每天都在用的 AI │
│ ChatGPT / 文心一言 / 通义千问 / DeepSeek ... │
└───────────────────────┬──────────────────────┘
│ 底层架构都是
▼
┌───────────────────────┐
│ Transformer │
└───────────────────────┘- 它是大模型的地基:不理解 Transformer,就无法真正理解 LLM 为什么强、为什么会「幻觉」、上下文长度意味着什么。
- 它能迁移到多个领域:文本(NLP)、图像(ViT)、语音(Whisper)、多模态(GPT-4V)都在用它。
- 面试与工程都需要:无论是算法岗面试还是 AI 应用开发,注意力机制几乎是必考/必用知识点。
Transformer 解决了什么问题
在 Transformer 之前,处理「序列」(一句话、一段音频、一串像素)的主流是 RNN / LSTM。它们有三个硬伤:
| 问题 | RNN/LSTM 的表现 | Transformer 的解法 |
|---|---|---|
| 无法并行 | 必须 t=1→2→3 顺序计算,训练慢 | 一次性处理整个序列,GPU 拉满 |
| 长距离依赖弱 | 句子开头到结尾信息被反复衰减 | 任意两位置直接「一跳」相连 |
| 梯度消失 | 序列一长梯度就传不回去 | 注意力 + 残差连接缓解 |
核心突破:自注意力(Self-Attention)
Transformer 的关键创新是自注意力:序列里的每个词,都可以直接「看」其他所有词,并根据相关性加权聚合信息。
句子: "猫 因为 饿 了 所以 吃 鱼"
"吃" 这个词在计算自己的新表示时,会问:
┌──────── 谁和"吃"最相关? ────────┐
猫 → 0.45 (谁在吃? 权重高)
鱼 → 0.38 (吃什么? 权重高)
饿 → 0.10
了 → 0.02
... → ...
└─────────────────────────────────┘
新表示 = 0.45·猫 + 0.38·鱼 + 0.10·饿 + ...正因为这种「谁和谁相关我就多关注谁」的能力,Transformer 天然擅长捕捉语义关系。
Transformer 的整体结构鸟瞰
先混个脸熟,后续章节我们会逐块拆解。原始 Transformer 是一个 编码器(Encoder)+ 解码器(Decoder) 的结构:
输入: "I love you" 目标: "我爱你"
│ │
▼ ▼
┌────────────────┐ ┌────────────────┐
│ 输入嵌入+位置编码 │ │ 输出嵌入+位置编码 │
└───────┬────────┘ └───────┬────────┘
│ │
▼ ▼
┌────────────────┐ 跨注意力 ┌────────────────┐
│ │ ─────────────► │ │
│ Encoder 堆叠 │ │ Decoder 堆叠 │
│ (N 层) │ │ (N 层) │
│ │ │ │
└────────────────┘ └───────┬────────┘
│
▼
┌──────────────┐
│ Linear+Softmax│
└──────┬───────┘
▼
预测下一个词的概率一个 Encoder/Decoder 层内部,都由三件套组成:
- 注意力子层(Self-Attention / Cross-Attention)
- 前馈网络子层(Feed-Forward Network, FFN)
- 残差连接 + 层归一化(Add & LayerNorm)
三种使用范式
后来的模型发现,不一定 Encoder 和 Decoder 都要用,于是衍生出三大流派:
Encoder-only Encoder-Decoder Decoder-only
(理解任务) (翻译任务) (生成任务)
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Encoder │ │ Encoder │──► │ Decoder │
│ │ │ │ Dec │ ×N │
│ BERT │ │ Transformer│ │ GPT │
└──────────┘ └──────────┘ └──────────┘
分类/抽取/检索 翻译/摘要 续写/对话/代码- BERT(Encoder-only):擅长「读懂」文本,用于分类、抽取、检索。
- 原始 Transformer / T5(Encoder-Decoder):擅长「输入一段、输出另一段」,用于翻译、摘要。
- GPT(Decoder-only):擅长「续写」,是今天对话式大模型的主流。
本教程会先把机制讲透,再分别拆解这三种架构,最后带你动手训练一个 Decoder-only 的 NanoGPT。
学完你将能回答
- 为什么 Transformer 能并行、而 RNN 不能?
- Q、K、V 到底是什么,为什么要除以 √d?
- 多头注意力比单头好在哪?
- 位置编码为什么必要,正弦编码和 RoPE 有什么区别?
- 如何从零搭一个能生成文本的小 Transformer?