先记住一句话
VAE 学可采样的概率 latent,GAN 用判别器提供“像不像真的”梯度,diffusion 学会逆转逐步加噪;latent diffusion 再把昂贵去噪移到压缩空间。
1. 生成模型究竟要学什么?
分类模型学习 $p(y\mid x)$;生成模型希望学习数据分布 $p(x)$,或者条件分布 $p(x\mid c)$。学会后可以从随机变量出发采样新样本:
关键难点是高维图像的 likelihood 难直接计算,且“像真实数据”存在许多可能答案。VAE、GAN、diffusion 给出三种不同训练路线。
2. VAE:可推断、可采样的 latent space
Encoder 不输出一个确定点,而是输出近似后验 $q_\phi(z\mid x)$ 的均值与方差;用 reparameterization trick 采样:
Decoder 根据 $z$ 重建 $x$。VAE 最大化 Evidence Lower Bound(ELBO),常写成最小化:
重建项要求保留样本信息,KL 项让各样本 posterior 接近统一 prior,使随机采样和 latent interpolation 有意义。两项有张力:正则太强会丢细节,太弱则 latent space 难采样。
简单 pixel likelihood 往往把多种可能输出平均,造成模糊;但 VAE 的可编码 latent 和概率解释非常重要,latent diffusion 的压缩 autoencoder 也继承了这条路线。
例 1:reparameterization 与 VAE loss
Encoder 给 $\mu=2$、$\sigma=0.5$,一次采样 $\epsilon=-1$,则 $z=2+0.5(-1)=1.5$。若一维 posterior 为 $\mathcal N(2,0.5^2)$、prior 为 $\mathcal N(0,1)$:
若重建 loss 0.4,总 loss 约 2.718。
3. GAN:生成器与判别器对抗
Generator $G(z)$ 把噪声变成样本;Discriminator $D(x)$ 区分真实与生成。原始 minimax 目标:
判别器学习“当前生成哪里不像真”,它的梯度不断给生成器提供可学习的感知标准。GAN 不需要显式计算 pixel likelihood,曾显著提升图像锐利度和感知质量。
但这是两个网络的动态博弈:一方过强会让另一方梯度差,训练可能振荡;生成器也可能只覆盖少数容易骗过判别器的模式,即 mode collapse。Wasserstein loss、谱归一化、架构与正则改进都在缓解稳定性问题。
例 2:原始 GAN 判别目标
一批只有一个真实样本和一个生成样本,$D(x)=0.9$、$D(G(z))=0.2$,判别器最大化:
若生成器成功把 $D(G(z))$ 推到 0.8,第二项变为 $\log0.2=-1.609$,判别器的目标明显恶化,双方目标相互牵制。
4. Diffusion:先定义破坏过程,再学逆过程
Forward process 用许多小步给真实数据加高斯噪声,直到接近标准高斯。任意时间 $t$ 可直接采样:
网络接收 $x_t,t$ 和可选条件 $c$,常训练为预测加入的噪声:
推理从纯噪声 $x_T$ 开始,重复调用网络逐步得到 $x_0$。每个训练样本的 target 噪声明确,loss 稳定;模型能覆盖复杂多模态分布。主要代价是采样需要多步网络评估。
例 3:一步 forward noising
一维数据 $x_0=2$,取 $\bar\alpha_t=0.64$、采样噪声 $\epsilon=-0.5$:
若网络预测 $\hat\epsilon=-0.3$,噪声 MSE 为 $(-0.5-(-0.3))^2=0.04$。
5. 条件生成与 guidance
文字、类别、深度图或其他条件可通过 cross-attention/特征拼接进入 denoiser。Classifier-free guidance 同时训练有条件和空条件预测,采样时外推:
较大 $w$ 通常增强条件一致性,却可能降低多样性并导致过饱和。Guidance scale 是条件服从与样本自然度的旋钮,不是越大越好。
例 4:classifier-free guidance 外推
$\epsilon_{uncond}=0.6$、$\epsilon_{cond}=0.2$、$w=3$:
结果甚至越过 conditional prediction 0.2;guidance 是外推而不是普通插值。
6. Latent Diffusion 为什么更便宜?
Pixel-space diffusion 在高分辨率张量上反复运行 U-Net/Transformer 很贵。Latent diffusion 先训练 autoencoder:
image x → encoder → compact latent z
diffusion in z-space
generated z → decoder → image
压缩去掉感知上不重要的高频冗余,denoiser 在更小空间工作;最后 decoder 恢复像素。代价是生成上限受 autoencoder 重建质量约束,过度压缩会丢文字、细纹理或小物体。
例 5:空间压缩的计算量级
512×512 RGB 图像有 $512^2\times3=786{,}432$ 个标量。若 VAE latent 是 64×64×4,只有 $16{,}384$ 个,数量约少 48 倍。实际 denoiser 成本还取决于通道宽度与网络层数。
7. 为什么 diffusion 也适合动作?
同一观测下可能存在多条合理动作轨迹,例如从杯子左侧或右侧抓取。直接 MSE 回归可能平均成一条不可行动作;diffusion 可以表示多峰 action distribution,并一次生成 action chunk。挑战是去噪步数与实时控制延迟,以及怎样在闭环执行中不断重规划。
| 方法 | 训练信号 | 典型优势 | 典型难点 |
|---|---|---|---|
| VAE | ELBO:重建 + KL | 可推断 latent、采样与插值 | 重建/先验权衡,可能模糊 |
| GAN | 对抗判别 | 快速单次生成、感知锐利 | 训练不稳、mode collapse |
| Diffusion | 噪声/score/velocity 预测 | 训练稳定、覆盖复杂分布 | 多步采样昂贵 |
自测:先算后展开
1. VAE 的 KL 项在约束什么?
让每个样本的近似 posterior 接近共同 prior,从而使 latent 空间可连续采样,而不是只形成互不相连的编码点。
2. Diffusion 为什么训练可随机抽一个 $t$,采样却要走多步?
训练时已知真实 $x_0$,可直接构造任意 $x_t$;生成时没有 $x_0$,只能从噪声沿学到的逆动态逐步推进。
3. Latent diffusion 把什么成本降下来了?
把反复去噪从高分辨率像素空间移到压缩 latent,降低每一步的空间尺寸和计算量。
4. $x_0=1,\bar\alpha=0.81,\epsilon=2$ 时 $x_t$ 是多少?
$0.9\times1+\sqrt{0.19}\times2\approx0.9+0.872=1.772$。
5. 采样 50 步,每步 denoiser 20 ms,总网络时间约多少?
$50\times20=1000$ ms,即约 1 秒,不含其他开销。