我们从最直觉的"故事"开始,再逐步拆开 Transformer 的每一层"积木"。为了让你随时能查最新资料,我先帮你搜几份权威讲解与代码示例,然后给你一份"由浅入深"的学习路线。
下面给出一份「由浅入深」的 Transformer 学习路线,并穿插可交互/可视化的资源,让你随时能"看见"模型内部。你可以按顺序闯关,也可以按需跳读。
-
先建立"感性画面"
-
把 Transformer 想成一个「高效翻译官」:
- 它一次性"扫视"整句话,而不是逐词读。
- 扫视时,它给每个词打「注意力分数」------谁跟谁有关、谁该被重点关注。
- 多头注意力 = 同时请 8~16 个"专家"一起盯不同维度(语法、指代、情感...)。
- 没有 RNN/卷积,全靠「位置编码」告诉模型词语顺序。
先看 5 分钟动画:
https://jalammar.github.io/illustrated-transformer/ (英文,但图多,零公式也能懂)中文讲义版:
https://www.scribd.com/document/900179302/The-Illustrated-Transformer-Jay-Alammar
- 10 行代码跑通"极简 Transformer"
目标:亲手喂一句话,让它输出分类概率,并实时看到注意力热图。
推荐仓库:
https://github.com/huggingface/transformers + 博客《Tiny Encoder Transformer》
步骤: pip install streamlit transformers torch- 下载作者给出的 200 条 AG-news 小模型(<30 MB)。
streamlit run app.py→ 浏览器里输入任意中英文 → 页面右侧立即出现注意力热力图。
当你发现"it" 自动去关注 "cat" 时,对"自注意力"就瞬间有体感了。
- 交互式注意力显微镜
2.1 BertViz(三重视图)
- Head View:看每个头在句子间的连线粗细。
- Model View:12×12 鸟瞰图,一眼定位"异常头"。
- Neuron View:追踪 Query/Key 向量如何点乘出权重。
安装:
bash
pip install bertviz ipywidgets
一行代码即可把 BERT/GPT2/T5 的注意力拉出来:
python
from bertviz import head_view
head_view(attentions, tokens) # 在 Jupyter 里直接交互
2.2 exBERT(网页版)
https://exbert.net/ 输入句子即可,免安装,适合汇报演示。
- 回到论文,把公式对上直觉
论文原名:《Attention Is All You Need》
读前建议:先打印图 1(架构图),把下面 3 组公式用彩笔标在图旁:
- Scaled Dot-Product Attention
- Multi-Head Attention
- Position-wise Feed-Forward Networks
中文精读笔记(带公式逐行注释):
搜索关键词「Attention Is All You Need 中文版 笔记」即可得 PDF。
- 手写一个"小 Transformer"
目标:在 GPU<4 GB 的机器上训练字符级德语→英语翻译,验证 BLEU。
推荐视频:
B 站搜索「手写 Transformer PyTorch」系列,up 主"小森平"有 70 分钟逐行版。
关键代码量:
- Encoder/Decoder 各 6 层,嵌入 512 维,4 头注意力,共 ~8 M 参数。
- 训练 20 epoch 后 BLEU ≈ 27,足以让你调试各种注意力变体(相对位置、稀疏注意力、ALiBi)。
- 可视化高阶:把图片 ViT 也"拆开"看
如果你更关注 CV,可用同一套工具看 ViT:
python
from transformers import ViTForImageClassification, ViTImageProcessor
model = ViTForImageClassification.from_pretrained(
"google/vit-base-patch16-224", output_attentions=True)
然后复用上面的 bertviz 或自建 Streamlit 面板,即可看到:
CLS\] token 在图片里到底"盯"的是物体边缘、纹理还是背景。
示例代码与交互界面: