第十八章 条件扩散模型
无条件扩散会出图,但你说了不算。把类别或文本嵌进 U-Net,生成才听指挥。分类器指引要另训一个分类器;无分类器指引(CFG)让同一张网有时看见条件、有时看不见,推理时把两条估计做差。
- 一条件 = 额外嵌入,加到时间步旁边。
- 二得分函数 ∇ log p(x) 指向「更像数据」的方向。图 18.5。
- 三分类器指引:另训分类器,用 ∇ log p(y|xt) 推一把。
- 四CFG:ε̃ = εuncond + γ (εcond − εuncond)。γ 越大越听条件。
书 §18 · 图 18.1–18.12 · p.311–336
18.1 向扩散模型添加条件
图 18.1–18.4:在网络里加嵌入层,类别或文本变成向量,与时间嵌入一起送进残差块。图 18.2 对照「预测 xt−1 的均值」和「预测噪声」两条头。
书 §18.1–18.2 · 图 18.1–18.4 · p.311–313
点一个类别
示意:条件嵌入接进 U-Net。不是真的在生成 MNIST。
训练 CFG 时,会随机把条件换成「空」,让网络学会无条件这条路。
接下节。从得分函数看,指引究竟在推哪个方向。
18.3 得分函数
得分 ∇x log p(x) 是一张「往密度高的地方指」的箭头场。图 18.5。扩散里预测噪声,和估计这个得分是亲戚。式 (18.6) 的证明在 §18.3.2。
书 §18.3 · 图 18.5–18.7 · p.321–323
接下节。有条件时,得分多了一项 ∇ log p(y|x)。
18.4–18.5 分类器指引和无分类器指引
分类器指引:单独准备一个分类器 pφ(y|xt),反传得到 ∇ log p(y|xt),加到无条件得分上。图 18.8–18.10。缺点:要多训一个分类器,还得在噪声图上也能分类。
无分类器指引把贝叶斯展开之后得到式 (18.19):从无条件得分出发,沿「有条件 − 无条件」的方向走 γ 倍。图 18.11。实现:同一网络,推理时跑两遍(空条件 / 真条件),再线性组合。
§18.6 点到 Stable Diffusion:在潜空间扩散,才能上高清。图 18.12。
书 §18.4–18.6 · 式 (18.19) · 图 18.11–18.12 · p.324–336
拖 γ:无条件箭头 + γ × 差值
示意一维。γ=0 等于无条件;γ 大则更听条件,也更容易走极端。
人话:先问「随便画什么」,再问「画猫」,把两者差乘上 γ 加回去。γ 就是你有多强迫它像猫。
下一章。把 CLIP 文本嵌入经先验译成 CLIP 图像嵌入,再当条件喂给解码器:DALL-E 2。
合上这一章
- 条件嵌入进 U-Net。
- 分类器指引要另训分类器。
- CFG 用 γ 混合有条件和无条件。
- SD 在潜空间做这件事。
章末自测
讲完了。下面几题核对本讲刚说过的概念。点选立刻看对错;做错也不会锁下一章。