第十七章 扩散模型背后的数学理论
上一章用手感走了一遍加噪和去噪。这一章只留两句硬的:正向可以一步跳到任意 t;反向的真实分布没有解析解,所以才训练网络。β 太大,反向会变成多峰,更难近似。
- 一q(xt|xt−1) 是高斯。连乘之后仍是高斯。
- 二于是 xt = √ᾱt x0 + √(1−ᾱt) ε。
- 三q(xt−1|xt) 一般没有闭式,图 17.4。
- 四预测噪声和预测原图是同一件事的两种说法。
书 §17.1–17.2 · 图 17.2–17.6 · p.297–310
17.1 正向:一步采样到 xt
每一步混入噪声,系数由 βt 管。令 αt = 1 − βt,ᾱt 是 α 连乘。高斯相加还是高斯,所以不必从 0 走到 t,可以直接:
xt = √ᾱt x0 + √(1−ᾱt) ε,ε ∼ N(0, I)
图 17.2–17.3 · p.298。原图的权重 √ᾱ 随 t 变小,噪声权重 √(1−ᾱ) 变大。
书 §17.1 · 图 17.2–17.3 · p.298
拖 t,看两份权重
示意调度:ᾱ 从 1 降到接近 0。不是书上某一张具体表,用来建立「此消彼长」。
训练时随机抽 t,用这个公式造 xt,再让网络猜 ε。
接下节。倒放为什么不能写成同样漂亮的一行?
17.2 反向没有解析解
想从 xt 回到 xt−1,需要 q(xt−1|xt)。贝叶斯能写形式,但边缘 q(xt−1) 是数据分布——复杂、多峰。图 17.4:去噪的解析解算不了。
图 17.5:βt 大(正向噪声大),反向分布呈多峰。图 17.6:βt 小,反向接近高斯,网络才好学。所以扩散要把每一步的噪声加得很碎。
实践中网络可以预测 ε,也可以预测 x0 或均值。它们由上面那行公式连着,可以互相换算。
书 §17.2 · 图 17.4–17.7 · p.300–303
切换训练目标的说法
两种说法对着同一行公式。工程上预测 ε 更常见,和上一章一致。
下一章。无条件生成只会「随便出一张图」。加上类别或文本,才听得懂「画一只猫」。
合上这一章
- 正向一步到位。xt 是原图和噪声的加权。
- 反向无闭式。才需要 U-Net。
- β 要小步。反向才接近高斯。
章末自测
讲完了。下面几题核对本讲刚说过的概念。点选立刻看对错;做错也不会锁下一章。