附录 E — 延伸阅读与开源项目
这份附录不是”参考文献列表”,是”读什么的顺序”。
每一篇都标了三件事:它能给你什么、可以跳过什么、读之前需要哪一章。
E.1 怎么读一篇论文
三遍读法(Keshav 的经典方法,改成了这本书的语境):
第一遍(10 分钟):只读标题、摘要、图、结论。
问自己三个问题:
- 它解决什么问题?
- 它改了什么?(数据、结构、目标函数、采样)
- 它的图里,哪一张是”核心证据”?
第二遍(1 小时):读方法,跳过证明。
重点看:条件的形状(第 8 章那四个问题)、训练的配置(丢弃率、batch)、 以及”它和 baseline 的唯一差别”。
第三遍(半天):复现一个数。
不复现,你永远不知道它的”提升”来自哪里。 这本书的每一章都是按第三遍的标准写的。
① 条件从哪来?(文本/图像/布局) ② 怎么进模型?(拼接/AdaGN/交叉/联合/旁路) ③ 在哪一层?(几层、什么分辨率) ④ 怎么训练?(丢弃率、caption 来源、batch)
四个问题答不上来的论文,可复现性要打问号。
E.2 按章列原始论文
E.2.1 第 1 章 注意力
Vaswani et al. (2017). Attention Is All You Need. 读什么:§3.2 的缩放点积、§3.3 的多头、图 1。 跳过:训练细节、机器翻译的实验。 注意:论文里对”为什么除以 \sqrt{d_k}“只有一句脚注——本书第 1 章把它算了出来。
Bahdanau, Cho, Bengio (2014). Neural Machine Translation by Jointly Learning to Align and Translate. 读什么:注意力最早的样子——它是从”翻译对齐”里长出来的。 跳过:RNN 的实现细节。 读它能得到什么:理解”注意力”最初不是”自己看自己”。
Su et al. (2021). RoFormer: Enhanced Transformer with Rotary Position Embedding. 读什么:§3 的旋转构造。 跳过:实验部分。 配第 1 章 §1.9 读。
Dao et al. (2022). FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness. 读什么:为什么”不把矩阵写出来”能快 2–4 倍。 跳过:CUDA 实现。 读它能得到什么:知道”O(N^2)“是计算复杂度,不是显存复杂度。
Ainslie et al. (2023). GQA: Training Generalized Multi-Query Transformer Models. Shazeer (2019). Fast Transformer Decoding: One Write-Head is All You Need. 读什么:MQA/GQA 怎么省 KV 缓存。 配第 1 章 §1.8 读。
E.2.2 第 2 章 Block
Ba, Kiros, Hinton (2016). Layer Normalization. 读什么:为什么是”每个 token 自己归一化”而不是 batch 维。 跳过:RNN 的实验。
Xiong et al. (2020). On Layer Normalization in the Transformer Architecture. 读什么:Pre-LN 和 Post-LN 的梯度分析。 读它能得到什么:理解”为什么现在的模型几乎都用 Pre-LN”。
Zhang & Sennrich (2019). Root Mean Square Layer Normalization. Shazeer (2020). GLU Variants Improve Transformer. 读什么:两个”去掉一点东西反而更好”的例子。 配第 2 章的 Block 变体读。
E.2.3 第 3 章 训练与推理
Radford et al. (2019). Language Models are Unsupervised Multitask Learners (GPT-2). 读什么:§2 的输入表示、§3 的生成。 跳过:zero-shot 的实验列表。
Brown et al. (2020). Language Models are Few-Shot Learners (GPT-3). 读什么:§2 的模型规模、§3 的 in-context learning。 注意:它和本书的关系是”同一个结构,放大 1000 倍”。
Kaplan et al. (2020). Scaling Laws for Neural Language Models. Hoffmann et al. (2022). Training Compute-Optimal Large Language Models (Chinchilla). 读什么:两篇一起读,看”参数和数据该怎么分配”的结论怎么变。 跳过:拟合细节。
Holtzman et al. (2019). The Curious Case of Neural Text Degeneration. 读什么:top-p 的动机——为什么”取最大”会退化。 配第 3 章的采样实验室读。
E.2.4 第 4 章 可解释性
Jain & Wallace (2019). Attention is not Explanation. Wiegreffe & Pinter (2019). Attention is not not Explanation. 读什么:两篇对着读。它们的争论比结论更有价值。 读它能得到什么:知道”注意力图≠解释”不是一个新发现,是一个老争论。
Abnar & Zuidema (2020). Quantifying Attention Flow in Transformers. 读什么:attention rollout 的公式(第 8 章引用过)。 注意:它解决的是”多层怎么合并”,不解决”权重是不是因果”。
Vig (2019). A Multiscale Visualization of Attention in the Transformer Model (BertViz). 读什么:不用读,去用。它是一个工具,不是一篇理论。
E.2.5 第 5 章 扩散的数学
Sohl-Dickstein et al. (2015). Deep Unsupervised Learning using Nonequilibrium Thermodynamics. 读什么:扩散模型的最初想法。 跳过:物理类比。 读它能得到什么:知道”加噪去噪”不是 2020 年才有的。
Ho, Jain, Abbeel (2020). Denoising Diffusion Probabilistic Models. 读什么:§3 的 ELBO 分解、§4 的简化目标。 必读:这是整本书下篇的源头。 配附录 A.2 读。
Song et al. (2021). Score-Based Generative Modeling through Stochastic Differential Equations. 读什么:§3 的 SDE、§4 的 probability flow ODE。 跳过:§5 的采样器细节(第 6 章再读)。 读它能得到什么:理解”扩散=解微分方程”。
Nichol & Dhariwal (2021). Improved Denoising Diffusion Probabilistic Models. 读什么:余弦调度、学习的方差。 配第 5 章 §5.8 读。
Salimans & Ho (2022). Progressive Distillation for Fast Sampling of Diffusion Models. 读什么:v-预测的定义(附录里)。 注意:正文第 5 章 §5.7 关于”动态范围”的论证,原始出处在这里。
E.2.6 第 6 章 采样器
Song, Meng, Ermon (2020). Denoising Diffusion Implicit Models (DDIM). 读什么:§3 的非马尔可夫前向、§4 的确定性采样。 必读:第 6 章的主角。
Lu et al. (2022). DPM-Solver: A Fast ODE Solver for Diffusion Probabilistic Model Sampling. 读什么:为什么”指数积分器”比 Euler 好。 跳过:收敛性证明。
Liu et al. (2022). Pseudo Numerical Methods for Diffusion Models on Manifolds (PNDM). Karras et al. (2022). Elucidating the Design Space of Diffusion-Based Generative Models (EDM). 读什么:EDM 的 §3——它把”噪声调度、采样器、训练目标”拆成三个正交的轴。 读它能得到什么:一张比本书更完整的”设计空间”地图。
Dhariwal & Nichol (2021). Diffusion Models Beat GANs on Image Synthesis. 读什么:分类器引导的推导。 配第 7 章读。
Chen (2023). On the Importance of Noise Scheduling for Diffusion Models. 读什么:为什么”调度”比”结构”更重要。 配第 5 章 §5.8 读。
E.2.7 第 7 章 CFG
Ho & Salimans (2022). Classifier-Free Diffusion Guidance. 读什么:整篇(很短)。这就是第 7 章的源头。 注意:它没有解释”为什么 w>1 会外推”——那是第 7 章补的。
Saharia et al. (2022). Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding (Imagen). 读什么:§3 的 CFG rescale、§4 的 T5 vs CLIP 对比。 读它能得到什么:知道”图文对齐”不等于”适合做条件”。
Gandikota et al. (2023). Erasing Concepts from Diffusion Models. 读什么:负向引导的机制与副作用。 配第 7 章的负引导实验读。
E.2.8 第 8 章 文本条件
Radford et al. (2021). Learning Transferable Visual Models From Natural Language Supervision (CLIP). 读什么:§2 的对比学习、§3 的 prompt engineering。 必读:所有 CLIP 系文本编码器的源头。
Rombach et al. (2022). High-Resolution Image Synthesis with Latent Diffusion Models. 读什么:§3 的潜空间、§3.3 的交叉注意力。 必读:Stable Diffusion 的论文。
Podell et al. (2023). SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis. 读什么:§2 的两个文本编码器、§3 的 refiner。 配第 8 章”走一遍 SDXL”读。
Esser et al. (2024). Scaling Rectified Flow Transformers for High-Resolution Image Synthesis (SD3/MMDiT). 读什么:§3 的 MMDiT、§4 的联合注意力。 必读:第 8 章”条件注入谱系”的 ④。
Zhang, Rao, Agrawala (2023). Adding Conditional Control to Text-to-Image Diffusion Models (ControlNet). 读什么:§3 的零卷积。 配第 8 章”旁路注入”读。
Ye et al. (2023). IP-Adapter: Text Compatible Image Prompt Adapter for Text-to-Image Diffusion Models. 读什么:§3 的解耦交叉注意力。
Li et al. (2023). GLIGEN: Open-Set Grounded Text-to-Image Generation. 读什么:§3 的 grounding token。 配第 8 章”空间条件”读。
Chefer et al. (2023). Attend-and-Excite: Attention-Based Semantic Guidance for Text-to-Image Diffusion Models. Feng et al. (2023). Structured Diffusion Guidance. 读什么:两种”改注意力分配”的思路。 配第 8 章”属性泄漏”读。
Gal et al. (2022). An Image is Worth One Word: Personalizing Text-to-Image Generation using Textual Inversion. Ruiz et al. (2023). DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation. 读什么:两种”教模型一个新词”的极端做法。 配第 8 章”教模型一个新词”读。
Yuksekgonul et al. (2023). When and Why Vision-Language Models Behave Like Bags-of-Words. 读什么:第 8 章”CLIP 为什么不懂顺序”的实证来源。 必读:如果你关心组合性。
Hertz et al. (2022). Prompt-to-Prompt Image Editing with Cross Attention Control. 读什么:用注意力图做编辑的可能与边界。
E.3 教材与综述
| 书/综述 | 适合谁 | 读法 |
|---|---|---|
| Goodfellow et al., Deep Learning (2016) | 想补基础 | 第 6–8 章(前馈、正则、优化) |
| Prince, Understanding Deep Learning (2023) | 想要一本现代的 | 全书,尤其第 12、17 章 |
| Murphy, Probabilistic Machine Learning | 想要概率视角 | 第 2、3、11 章 |
| Yang et al., Diffusion Models: A Comprehensive Survey (2022) | 想纵览扩散 | 读第 2–4 节,其余当索引 |
不要从头读教材。 带着一个具体问题去读一章,比通读三章有用。
E.4 课程与博客
Karpathy, Neural Networks: Zero to Hero. 看什么:从零写 GPT 的那几集。 配第 1–3 章看。 他讲”为什么要缩放”的角度和本书不同,可以对照。
Harvard NLP, The Annotated Transformer. 看什么:逐行实现。 配第 1 章看。 注意它是 2018 年的版本,没有 RoPE、没有 Pre-LN。
Jay Alammar, The Illustrated Transformer. 看什么:图。它的图比大多数论文清楚。 跳过:文字部分(比较浅)。
Lilian Weng, Lil’Log。 看什么:What are Diffusion Models?(2021)、Controllable Neural Text Generation(2021)。 她的博客是”综述 + 公式”的最佳平衡。
3Blue1Brown, Transformers 系列与 Diffusion 系列。 看什么:直觉。不要指望它给你推导。
HuggingFace, Diffusion Models Course. 看什么:notebook。和本书的写法互补:他们用 diffusers,本书从零写。
E.5 开源项目
按”读代码的难度”排序,从易到难。
| 项目 | 是什么 | 读什么 |
|---|---|---|
karpathy/nanoGPT |
300 行的 GPT | model.py 全文 |
karpathy/minGPT |
更小的 GPT | model.py |
lucidrains/denoising-diffusion-pytorch |
极简 DDPM | denoising_diffusion_pytorch.py 的 p_sample |
crowsonkb/k-diffusion |
采样器大全 | k_diffusion/sampling.py |
huggingface/diffusers |
工业级管线 | schedulers/ 和 pipelines/ |
facebookresearch/DiT |
DiT 官方实现 | models.py 的 DiTBlock |
Stability-AI/generative-models |
SD3 官方 | mmdit.py |
black-forest-labs/flux |
FLUX 推理 | model.py 的双流/单流块 |
comfyanonymous/ComfyUI |
节点式工作流 | comfy/ 的采样节点 |
AUTOMATIC1111/stable-diffusion-webui |
最流行的 UI | modules/processing.py 的 CFG 循环 |
① 先跑通,再读。 一个跑不起来的仓库,读它等于读天书。
② 从”最小的那个文件”开始。 nanoGPT/model.py 只有 300 行,比 diffusers 的一个 pipeline 还短。
③ 带着一个问题读。 “CFG 在哪里做的?”——找到那一行,比通读整个仓库有用。
E.6 数据集与基准
| 名字 | 是什么 | 注意 |
|---|---|---|
| LAION-5B | 58.5 亿图文对,网页抓取 | 2023 年因内容问题被撤下 |
| CC12M | 1200 万图文对 | 比 LAION 干净,但小 |
| DataComp | 数据筛选的基准 | 比的是”同样的算力,谁的数据好” |
| COCO | 检测/描述的标准集 | 小,但标注质量高 |
| T2I-CompBench | 组合性基准 | 用 VQA 判属性/关系/数量 |
| GenEval | 组合性基准 | 用检测器判物体/颜色/位置 |
| DrawBench | 提示词集合 | 没有自动指标,靠人评 |
| PartiPrompts | 提示词集合 | 同上 |
用这些基准时,先看它们的判据是什么(第 8 章”真实模型怎么测”一节)。 一个用 VQA 打分的基准,会继承 VQA 的偏差。
E.7 一份十二周阅读计划
每周 5–8 小时。
| 周 | 读什么 | 配哪一章 |
|---|---|---|
| 1 | Attention Is All You Need | 1 |
| 2 | RoFormer + FlashAttention | 1 |
| 3 | Layer Normalization + Pre-LN 论文 | 2 |
| 4 | GPT-2 + Chinchilla | 3 |
| 5 | Attention is not Explanation(两篇对照) | 4 |
| 6 | DDPM | 5 |
| 7 | Score-Based SDE + 附录 A | 5 |
| 8 | DDIM + DPM-Solver | 6 |
| 9 | EDM | 6 |
| 10 | CFG + Imagen | 7 |
| 11 | LDM + SDXL | 8 |
| 12 | SD3/MMDiT + ControlNet | 8 |
每一周的最后一步:用本书的玩具模型复现那篇论文的一个数。 复现不了,说明你没读懂——回去读第二遍。
E.8 一页论文笔记模板
读完第三遍,用这一页把论文压缩成你能复述的东西。
标题:
一句话问题:
它改了什么: □数据 □结构 □目标 □采样 □训练
核心图: 第 __ 页 / 图 __
这张图证明了:
它没证明:
关键假设:
1.
2.
我能复现的那个数:
数值: 正文第 __ 页
我的结果:
差异及原因:
它和本书哪一章最近:
用到的机制:
不同的地方:
一个可做的后续实验:
填不满的格子,就是你还没读懂的地方。
因为超过一页,你会开始抄论文,而不是理解论文。
一页逼你做三件事:选出核心图、写出关键假设、找到一个可复现的数。
这三件事,正好对应”读懂了”的三个标准。
读三篇:DDPM、DDIM、CFG。
它们是这本书下篇的三根柱子: DDPM 给了目标,DDIM 给了速度,CFG 给了控制。 其余的都是在这三根柱子上加东西。