对应 Maps to:CMU 10-423 / 10-623 / 10-723 Generative AI(Spring 2026;Aran Nayebi、Matt Gormley),Lecture 8 · Mon 9-Feb · Diffusion models (Part II)(slides:lecture8-diffusion-vae)。 阅读材料:Ho, Jain & Abbeel (2020), DDPM;Blei, Kucukelbir & McAuliffe (2017), Variational Inference: A Review for Statisticians;Doersch (2016), Tutorial on Variational Autoencoders。 依据说明:本讲以原课第 8 讲公开的 slides 为主线:回顾 U-Net、扩散模型与 DDPM、高斯的性质、三种参数化;训练算法的几个版本(选项 A:遍历所有时间步 / 随机挑时间步;选项 B;选项 C”实践中最好”)与训练的计算图;采样算法(一般形式、高斯形式、选项 A / B / C 各自的版本);DDPM 的目标函数是 ELBO(“其中的 KL 项 希望两个条件分布尽量接近”);最后引出 VAE(GAN → VAE → 扩散模型的对照,以及讲 VAE 之前要铺垫的七件事)。ELBO 的逐项推导、少步采样(DDPM 跳步、DDIM)、余弦调度是本讲义按 Ho et al. (2020)、Song et al. (2021)、Nichol & Dhariwal (2021) 补充的。所有实验是本讲义自己设计的,不代表课堂上讲了什么。 配套代码 Code:
code/lecture08/(4 个脚本 + 1 个模块;02训练 U-Net 约 5.5 分钟,03约 2 分钟,都有--quick;其余几秒) 预计阅读时间:4 小时(含运行代码)
0. 本讲导航 · How to read this lecture
0.1 学习目标 Learning goals
学完这一讲,你应该能够:
- 写出 slides 的训练算法(选项 A / B / C)和采样算法,说明”遍历所有时间步”和”随机挑一个时间步”为什么等价。
- 从 出发推出 DDPM 的 ELBO,说出 、、 各是什么;把 化成”加权的噪声预测误差”,解释 Ho et al. 为什么把权重换成 1。
- 在 28×28 的图像上训练扩散模型,解释为什么去噪网络要用 U-Net 而不是 MLP。
- 比较 DDPM 跳步和 DDIM,解释为什么少步时 DDIM 好得多;说明”确定性采样”带来的隐空间。
- 解释噪声调度的作用,比较线性和余弦调度。
- 用”隐变量 + 变分下界”把扩散模型和 VAE 联系起来。
0.2 先修与本讲范围 Prerequisites & scope
| 默认你已经会 Assumed | 本讲只给直觉,后面再展开 Previewed only |
|---|---|
| 第 7 讲:前向过程、性质 1–3、三种参数化、U-Net | VAE 的完整推导(第 9 讲) |
| 前置讲 P2 §4:ELBO 的两种推导、 | 潜空间扩散、分类器无关引导(第 12 讲) |
| 第 6 讲 §0.4:评估生成图像的四把尺子 | 蒸馏、一致性模型等更快的采样(第 18 讲) |
0.3 本讲地图 Map
§1 训练与采样算法:slides 的几个版本
§2 目标函数从哪里来:DDPM 的 ELBO ← 代码 01
§3 在形状世界上训练:U-Net vs MLP,和 GAN 比 ← 代码 02
§4 采样要几步:DDPM 跳步 vs DDIM;确定性与插值 ← 代码 03
§5 噪声调度:线性 vs 余弦 ← 代码 04
§6 从扩散模型到 VAE
§7–11 小结、误区、练习、延伸阅读、下一讲
1. 训练与采样算法 · Training and sampling
1.1 训练:slides 的四个版本
第 7 讲 §5.1 说过:给定一个训练样本 ,我们希望 尽量接近 。参数化方式不同,训练算法就不同。slides 依次给了四个版本:
选项 A,遍历所有时间步:
for x_0 ∈ D:
for t ∈ {1, …, T}:
ε ~ N(0, I); x_t ← √ᾱ_t x_0 + √(1−ᾱ_t) ε
μ̃ ← α_t^(0) x_0 + α_t^(t) x_t
ℓ_t(θ) ← ‖μ̃ − μ_θ(x_t, t)‖²
θ ← θ − ∇_θ Σ_t ℓ_t(θ)
选项 A,随机挑一个时间步:把内层的”遍历所有 “换成 ,每个 只算一个 。
选项 B:。选项 C:——slides 标注”选项 C 实践中最好”(第 7 讲 §5.3 的实验和解释)。
“遍历所有 “和”随机挑一个 “有什么关系?对固定的 ,:随机挑一个 的梯度是”遍历所有 “的梯度的无偏估计(差一个常数 ),计算量却只有 。这和第 3 讲”用小批量代替整个数据集”是同一个道理:用一点点噪声换来巨大的计算节省。
训练的计算图(slides): 和 经过性质 1 得到 ; 和 进 U-Net 得到 ;和 比较得到损失。注意计算图里只有一次网络调用——训练时不需要走完整条马尔可夫链。
1.2 采样:slides 的五个版本
一般形式:;对 :;返回 。代入高斯:,即 。三种参数化的区别只在”怎样算出 ”:
| 第 3–4 行 | |
|---|---|
| 选项 A | |
| 选项 B | |
| 选项 C | ; |
然后都是 (最后一步 )。diffusion_lab.predict_mean 就是这张表;sample 是外面的循环。实践中还常把 截断到数据的范围(图像是 )再代入——DDPM 官方实现的默认做法,能减少越界的像素。
训练和采样的不对称:训练时每一步独立、随机挑 、一次网络调用;采样时必须从 一步步走到 1,要调用网络 次。DDPM 的 ,画一张图就要跑 1000 次 U-Net——这是扩散模型最大的代价(§4)。
2. 目标函数从哪里来:DDPM 的 ELBO · The DDPM objective
2.1 为什么要”下界”
和 GAN、VAE 一样(第 7 讲 §1),扩散模型的边缘似然
是对 维的积分,算不出来。slides 的表格写的学习目标是 ——让”前向过程给出的隐变量分布”和”模型认为的隐变量后验”接近。前置讲 P2 §4.3 证明过:对任意 ,
KL ≥ 0,所以 ELBO ≤ log p;最大化 ELBO = 在最大化似然的下界,同时让上面那个 KL 变小。扩散模型的特别之处: 是固定的前向过程,不用学(VAE 要学,第 9 讲)。
2.2 逐项拆开
把 和 代进 ELBO,关键一步是用贝叶斯公式把每个前向步”翻转”成以 为条件的反向步:
(第一个等号是马尔可夫性。)连乘时 逐项抵消(“望远镜”求和),只剩 。整理得到 Ho et al. (2020) 的式 5——负 ELBO:
- :前向过程走到底有多接近 。没有参数,不用学(第 7 讲 §3.3:约 0.013 nat)。
- :slides 的原话——“这个 KL 项希望两个条件分布尽量接近”。左边是第 7 讲的性质 2(给定 的精确反向一步),右边是学到的反向一步。这就是第 7 讲 §5.1 那句”之后我们会证明”的证明。
- :最后一步”解码”出数据的对数似然。
2.3 = 加权的噪声预测误差
两个方差相同(都取 ,第 7 讲的”想法 1”)的高斯之间的 KL 只剩均值项:
再用性质 3 把两个均值都写成噪声的形式,:
01 的第 1 部分在 1000 个随机样本上核对:KL 的闭式解和 逐个相同(最大相对误差 6e-9)。
2.4 ELBO 的权重 vs
| t | 2 | 3 | 10 | 50 | 100 | 250 | 500 | 750 | 1000 |
|---|---|---|---|---|---|---|---|---|---|
| 0.600 | 0.318 | 0.086 | 0.019 | 0.010 | 0.0054 | 0.0055 | 0.0077 | 0.0102 |
严格的 ELBO 最看重最开始的几步: 的权重是 的 59 倍, 这 99 步占了全部权重的 39%(均匀的话是 10%)。原因: 很小时后验方差 极小,均值稍偏一点 KL 就很大。
Ho et al. (2020) 的关键发现:把所有 换成 1——也就是第 7 讲的选项 C,他们叫 ——样本质量反而更好。相对于 ELBO,它降低了小 (几乎没噪声、只差一点点)的权重,把注意力挪到更难、对画面更重要的大 上。代价是 不再是似然的下界。(第 7 讲 §5.3 的三种参数化,加上这里的 ELBO,一共是同一个目标的四种时间加权。)
2.5 真的算一次:瑞士卷上的 ELBO
用第 1 部分的等式,可以拿第 7 讲训练好的”预测噪声”网络直接算 ELBO。瑞士卷的真实密度也能算(对螺线参数做数值积分),于是可以把 ELBO 和真实数据的对数似然放在一起看(01 的第 3 部分,2000 个新数据点,单位 nat):
| 项 | 平均值 | 包含几项 | 平均每项 |
|---|---|---|---|
| ( 的解码,标准差取 ) | −6.371 | 1 | −6.371 |
| () | +3.559 | 9 | +0.396 |
| +2.788 | 90 | +0.031 | |
| +2.365 | 400 | +0.006 | |
| +0.154 | 500 | +0.0003 | |
| +0.000 | 1 | +0.0001 |
- ELBO 的平均值 −2.495,真实数据的平均 −1.273:下界成立,差 1.22 nat。差距包括模型本身不完美()和下界不紧()两部分。
- 是负数:它是连续分布的 密度,解码器标准差只有 0.01,密度远大于 1。所以 ELBO 的各项不是”占百分之几”的关系。
- KL 项几乎全来自最后几步: 平均每步 0.40 nat, 每步只有 0.0003。这个模型是用 训练的,在 ELBO 最在乎的地方没用全力;想要更好的似然,可以学方差、改权重(Nichol & Dhariwal, 2021;Kingma et al., 2021)。
3. 在形状世界上训练 · DDPM on the shapes world
02 在和第 6 讲 GAN 完全相同的 8192 张形状图上(像素缩放到 )训练选项 C 的 DDPM: 的线性调度,每步 64 张,Adam(学习率 1e-3,前 200 步预热),4000 步,参数的指数滑动平均(EMA,衰减 0.995,采样用 EMA 的权重——DDPM 及之后几乎所有扩散模型都这样做,它平滑掉了 SGD 最后阶段的抖动)。
两个去噪网络:第 7 讲的小 U-Net(192,140 个参数,单线程每步约 70 ms,共 280 秒),和一个参数多 25 倍的 MLP(4,888,336 个,每步 8 ms)。
| 训练损失(最后 200 步) | t = 50 | t = 250 | t = 750 | 采样:FD↓ | 像形状的比例 | |
|---|---|---|---|---|---|---|
| U-Net | 0.0378 | 0.171 | 0.024 | 0.0017 | 12.83 | 0.10 |
| MLP | 0.1287 | 0.510 | 0.067 | 0.031 | 4460 | 0.00 |
(t = … 列是 500 张没见过的图上的噪声预测误差;采样用 DDIM 50 步,各 500 张,§4。)
MLP 版本完全画不出形状。去噪需要”同一个局部规则用在每个位置上”——这正是卷积的归纳偏置(第 5 讲、第 7 讲 §7.4)。
和第 6 讲的 DCGAN 比(用同一套尺子,DDIM 50 步):FD 12.83 vs 33.85,像形状的比例 0.10 vs 0.03。扩散模型在 FD 上明显更好;但两把”分类”尺子(裁判和形状拟合)仍然只有约 35% 的时候意见一致——和 GAN 一样,生成的形状还不够标准,“画的是哪一类”本身就说不清(第 6 讲 §4.2)。按形状拟合,十字也偏少(0.06)。
4. 采样要几步?· How many sampling steps?
4.1 两种少步采样
DDPM 跳步(respacing):只在 个均匀分布的时间步 上走。新调度的 ,于是 ——把原来连续的几小步噪声”合并”成一大步,其余公式不变(Schedule.respace)。网络还是同一个,只是每一步的步子大了。
DDIM(Song, Meng & Ermon, 2021):同一个训练好的网络,换一种确定性的反向过程。每一步先用网络估计 ,再按前向过程的闭式解把它”加噪”到下一个(更小的)噪声水平——只是加回去的不是新的随机噪声,而是网络认为”原本就在里面”的那份 :
为什么可以用同一个网络?DDPM 的训练目标只涉及边缘分布 ,不涉及”相邻两步怎样衔接”。DDIM 构造了一族不同的前向过程,它们有相同的 ,所以训练目标完全一样;其中 的那一个反向过程是确定性的。
4.2 实验
03 用 §3 的 U-Net,每种方法采 250 张(真图 250 张的 FD”满分”是 3.26):
| 方法 | 步数 | ⏱ 每张图 | FD↓ | 像形状的比例 | 边缘宽度 | 像素噪声 | 两把”分类”尺子一致 |
|---|---|---|---|---|---|---|---|
| 真实新图 | — | — | 3.26 | 1.00 | 0.61 | 0.030 | 0.98 |
| DDPM | 1000 | 317 ms | 28.76 | 0.20 | 0.86 | 0.026 | 0.40 |
| DDPM | 100 | 32 ms | 41.10 | 0.24 | 0.85 | 0.021 | 0.49 |
| DDPM | 50 | 16 ms | 41.08 | 0.29 | 0.85 | 0.019 | 0.53 |
| DDPM | 20 | 6 ms | 76.28 | 0.40 | 0.87 | 0.015 | 0.45 |
| DDPM | 10 | 3 ms | 102.75 | 0.42 | 0.93 | 0.014 | 0.38 |
| DDIM | 100 | 31 ms | 13.61 | 0.10 | 0.94 | 0.031 | 0.34 |
| DDIM | 50 | 16 ms | 12.72 | 0.10 | 0.94 | 0.029 | 0.35 |
| DDIM | 20 | 6 ms | 14.00 | 0.12 | 0.96 | 0.026 | 0.36 |
| DDIM | 10 | 3 ms | 25.42 | 0.10 | 1.02 | 0.027 | 0.35 |
(⏱ 是单线程 CPU 上的实测,每次运行略有不同。边缘宽度:拟合形状时最合适的边缘模糊程度;像素噪声:远离边缘的平坦区域里的噪声。完整的列见脚本输出。)
几个结论:
- 按 FD,DDIM 少步时稳得多:DDIM 10 步(FD 25.4)比 DDPM 跳到 10 步(102.8)好得多,DDIM 50 步(12.7)甚至比走满 1000 步的 DDPM(28.8)还好。
- 但”像形状的比例”给出了相反的趋势:DDPM 步数越少越高(1000 步 0.20 → 10 步 0.42)。看纹理就明白了:DDPM 10 步的像素噪声只有 0.014(真图 0.030、DDPM 1000 步 0.026),边缘宽度 0.93(真图 0.61)——步子太大时,每一步的高斯近似把纹理”平均掉”了,画出来的是干净、平滑、但不真实的形状。形状拟合喜欢这种图,FD 不喜欢。又一次,两把尺子给出了不同的排序。
- 为什么 DDPM 跳步不行:每一步仍然是”一个高斯”。第 7 讲 §4.2 证明过,步子越大,真正的反向一步越不像高斯,这个近似就越差。DDIM 不再假设”每一步是高斯”,而是每一步都先猜一个完整的 ,再确定性地走过去——步子大了也只是”猜得粗一点”。
- 时间:每一步跑一次 U-Net。DDPM 1000 步每张图约 0.3 秒,DDIM 50 步约 16 ms——20 倍的加速。第 18 讲会讲更激进的加速(蒸馏到几步甚至一步)。
4.3 DDIM 的确定性与插值
DDIM 是确定性的:同样的 采两次(随机种子不同),结果完全相同(最大差别 0)。于是扩散模型也有了一个像 GAN 一样的”隐空间” ,可以插值、编辑——后来很多图像编辑方法(第 14 讲的 Prompt-to-Prompt 等)都建立在这种确定性的采样上。
插值要走球面。784 维的标准高斯向量,长度几乎总是 左右(高维高斯的”薄壳”)。两个这样的向量直线插值,中点的长度只有约 ——落在训练时从没见过的地方;球面插值(slerp)保持长度不变。03 对 50 对随机起点比较插值中点生成的图:
| 起点 | 平均 | 像形状的比例 | 边缘宽度 | 像素噪声 | 裁判确信度 |
|---|---|---|---|---|---|
| 端点(α = 0) | 28.0 | 0.12 | 0.92 | 0.028 | 0.905 |
| 直线插值的中点 | 19.8 | 0.62 | 0.82 | 0.015 | 0.836 |
| 球面插值的中点 | 27.9 | 0.14 | 0.92 | 0.029 | 0.878 |
我原以为直线插值的中点会”变空白”;实际上它们仍是完整的形状,只是更干净、更平滑:像素噪声从 0.028 降到 0.015,“像形状的比例”反而从 0.12 升到 0.62——起点里的噪声少了,最后画出来的细节和纹理也少了,和 §4.2 里少步 DDPM 的情况一样,形状拟合喜欢、但这不是数据的样子。球面插值的中点和端点几乎没有区别。大模型上直线插值常常得到发灰、模糊的图,所以在高斯噪声的空间里插值通常沿着球面走(slerp)。
5. 噪声调度 · Noise schedules
slides:“我们选一个固定的 调度,使得 。“满足这个条件的调度有无数种。Nichol & Dhariwal (2021) 提出的余弦调度直接规定
04 比较两种调度():
| t | 1 | 100 | 250 | 500 | 750 | 900 |
|---|---|---|---|---|---|---|
| 线性: | 0.9999 | 0.897 | 0.524 | 0.079 | 0.003 | 0.0003 |
| 余弦: | 1.0000 | 0.972 | 0.847 | 0.494 | 0.144 | 0.024 |
用 和 的相关系数衡量一张形状图”还看得出来”的程度(200 张图的平均):
| 调度 | 几乎干净(> 0.9)的步数 | 中间(0.1–0.9) | 几乎纯噪声(≤ 0.1) | 相关降到 0.5 以下的第一步 |
|---|---|---|---|---|
| 线性 | 74 | 507 | 419 | 248 |
| 余弦 | 151 | 732 | 117 | 477 |
线性调度有 42% 的步数里图像已经几乎是纯噪声。训练好的网络在这些步上能做的很少: 时 和 的相关只有 0.045,网络估计的 还能有 0.394(它利用了”形状长什么样”的先验);但 、1000 时只剩 0.091、0.074——只能猜一个”平均的形状”。采样时每一步都要跑一次网络,线性调度把太多步花在了这里。余弦调度让 在中间下降得更平缓,把步数更均匀地分给”从清楚到模糊”的整个过程(Nichol & Dhariwal 在 32×32、64×64 的图上看到了改进)。
6. 从扩散模型到 VAE · From diffusion to VAEs
slides 的后半段回到”GAN → VAE → 扩散模型”的表格(第 7 讲 §1),这一次关注中间一列。三者都是隐变量模型,都不能直接做最大似然:
- 扩散模型: 层隐变量,每层和数据一样大;“编码器” 固定;解码器 学;目标是 ELBO(§2)。
- VAE:一层隐变量 ,通常比数据小得多;编码器 也要学;解码器 ;目标同样是 ELBO。
所以扩散模型可以看成一个”层数很多、编码器固定、每层隐变量都和数据一样大”的 VAE。反过来,VAE 要学编码器,就必须面对扩散模型没有的问题:编码器 的参数出现在”对谁求期望”里,怎样对它求梯度?slides 列出了讲 VAE 之前要铺垫的七件事:
- 自编码器(不是变分的那种);
- KL 散度;
- 变分推断(用 KL 作目标函数);
- 蒙特卡洛估计(近似期望);
- (得分函数技巧);
- 重参数化技巧(降低方差);
- 随机梯度变分贝叶斯(SGVB)。
这就是第 9 讲的内容。
7. 小结 · Summary
- 训练时随机挑一个 ,是”遍历所有 “的无偏估计,每个样本只需一次网络调用;采样时必须一步步走,要调用网络 次。
- DDPM 的目标是 ELBO:。 是”给定 的精确反向一步”和”学到的反向一步”之间的 KL,化简后是 。
- ELBO 的权重 最看重最开始的几步;Ho et al. 把它们全换成 1(),样本更好,但不再是似然的下界。
- 在 28×28 的图像上,U-Net 扩散模型的 FD 远好于 GAN;同样训练的 MLP 版本完全失败。
- DDPM 跳步在少步时退化(每一步的高斯近似失效,纹理被平均掉);DDIM 用同一个网络、确定性地采样,50 步就比 DDPM 1000 步的 FD 好。
- DDIM 让扩散模型有了确定性的”隐空间”;在高斯噪声空间里插值要走球面。
- 线性调度把太多步花在”几乎纯噪声”上,余弦调度分配得更均匀。
- 扩散模型 = 编码器固定、层数很多的 VAE;VAE 要学编码器,于是需要变分推断和重参数化(第 9 讲)。
8. 常见误区 · Common pitfalls
- “随机挑一个 训练,会漏掉一些 。” 在期望意义上每个 都被同等对待;和小批量 SGD 一样,是无偏估计。
- “DDPM 的训练目标就是 ELBO。” 严格的 ELBO 有权重 ;DDPM 实际用的是去掉权重的 ,它不是似然的下界。
- “ELBO 的每一项都是正的。” 是连续密度的负对数,可以是负数(§2.5 是 −6.37)。
- “少走几步,就是画得粗一点。” 对 DDPM 跳步来说不是:步子太大,每一步的高斯近似本身就错了,结果是纹理被平均掉、FD 大幅变差。DDIM 才是”粗一点”。
- “DDIM 要重新训练。” 不需要,它用的就是 DDPM 训练好的网络。
- “像形状的比例越高越好。” 平滑、没有纹理的图在形状拟合上得分很高(DDPM 10 步 0.42),FD 却很差。多看几把尺子。
- “在噪声空间里插值和在 GAN 的 空间里一样,直线就行。” 高维高斯的长度集中在 附近,直线插值的中点长度只有 。
9. 练习 · Exercises
练习 1(遍历 vs 随机)。 证明:对固定的 ,“随机挑一个 “的梯度乘以 ,是”遍历所有 “的梯度的无偏估计。它的方差从哪里来?
参考答案
。方差来自两处:挑到哪个 (不同 的损失量级差很多,第 7 讲 §6.4),以及每个 上随机的 。重要性采样 (按损失大小挑)可以减小第一部分(Nichol & Dhariwal, 2021)。
练习 2(望远镜)。 写出 化简后的结果,并说明它在 ELBO 里变成了哪一项。
参考答案
。和 合起来给出 ;分母的 和 那一项 (前向第一步)抵消,剩下 ,即 。
练习 3(权重)。 用 化简 ,并估算 时的值(,)。
参考答案
代入得 。:,所以 (01 的输出:0.5997)。 很大时 ,。
练习 4( 为什么是负的)。 一维数据,解码器 ,如果 恰好等于 , 是多少?
参考答案
nat。二维再乘 2:−7.37。§2.5 的 −6.37 比这个大约 1 nat,因为 并不完全等于 。连续分布的密度可以大于 1,负对数就可以是负数。
练习 5(DDIM 一步)。 设 、,当前 ,网络预测 。求 和 DDIM 的下一步 。
参考答案
(如果截断到 ,则 ,再重算 )。不截断时:。
练习 6(为什么同一个网络能用于 DDIM)。 DDPM 的训练损失 依赖前向过程的哪些性质?
参考答案
只依赖每个 的边缘 ,不依赖相邻两步的联合分布 。任何具有相同边缘的前向过程(DDIM 构造的那一族)都给出相同的训练目标,所以训练好的 对它们都适用。
练习 7(高维的”薄壳”)。 , 的均值和方差是多少? 时 大约在什么范围?两个独立的 直线插值的中点长度约是多少?
参考答案
,均值 、方差 。:,。中点 ,长度约 (03 实测 19.8)。
练习 8(余弦调度)。 余弦调度在 时 约是多少?为什么要加一个小的偏移 ?
参考答案
(04:0.494)。没有 时, 很小处 太小(噪声几乎为 0),网络在那里很难学到有用的东西;Nichol & Dhariwal 取 ,让 时的噪声标准差和像素的量化间隔(1/127.5)差不多。
10. 延伸阅读 · Further reading
- DDPM 与 ELBO:Ho, Jain & Abbeel (2020);Sohl-Dickstein et al. (2015);Luo (2022), Understanding Diffusion Models: A Unified Perspective(ELBO 的三种等价写法)。
- 采样:Song, Meng & Ermon (2021), DDIM;Lu et al. (2022), DPM-Solver;Karras et al. (2022), EDM。
- 改进训练:Nichol & Dhariwal (2021), Improved DDPM(余弦调度、学方差、重要性采样 );Kingma et al. (2021), Variational Diffusion Models(直接优化似然)。
- 变分推断:Blei, Kucukelbir & McAuliffe (2017);Doersch (2016)。
11. 下一讲预告 · Next lecture
第 9 讲把”隐变量 + ELBO”用在只有一层隐变量、而且编码器也要学的模型上:变分自编码器。
- 普通自编码器为什么不能采样;KL 散度作为目标函数会怎样;变分推断;
- 蒙特卡洛估计,以及得分函数估计为什么方差太大、重参数化怎样解决;
- 在形状世界上训练 VAE:它为什么”模糊”?VQ-VAE 怎样把图变成离散的”词”,再交给语言模型;
- 最后把 GAN、扩散模型、VAE、VQ-VAE 放在同一张表里比较。