附录 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 给了控制。 其余的都是在这三根柱子上加东西。