先记住一句话

VAE 学可采样的概率 latent,GAN 用判别器提供“像不像真的”梯度,diffusion 学会逆转逐步加噪;latent diffusion 再把昂贵去噪移到压缩空间。

真实样本 x设计破坏 / latent / 对手构造训练 target优化生成器从随机 z / noise 采样
VAE$x→q(z|x)→z→\hat x$
|
GAN$z→G(z)→D(\cdot)$
|
Diffusion$x_0→x_t→\hat\epsilon→x_0$
它们不是三个不同 decoder 名称,而是三套不同的概率建模与训练信号。

1. 生成模型究竟要学什么?

分类模型学习 $p(y\mid x)$;生成模型希望学习数据分布 $p(x)$,或者条件分布 $p(x\mid c)$。学会后可以从随机变量出发采样新样本:

$$z\sim p(z),\qquad x\sim p_\theta(x\mid z,c)$$

关键难点是高维图像的 likelihood 难直接计算,且“像真实数据”存在许多可能答案。VAE、GAN、diffusion 给出三种不同训练路线。

2. VAE:可推断、可采样的 latent space

Encoder 不输出一个确定点,而是输出近似后验 $q_\phi(z\mid x)$ 的均值与方差;用 reparameterization trick 采样:

$$z=\mu_\phi(x)+\sigma_\phi(x)\odot\epsilon,\quad \epsilon\sim\mathcal N(0,I)$$

Decoder 根据 $z$ 重建 $x$。VAE 最大化 Evidence Lower Bound(ELBO),常写成最小化:

$$\mathcal L_{VAE}=\underbrace{-\mathbb E_{q(z|x)}\log p_\theta(x|z)}_{\text{reconstruction}}+\underbrace{D_{KL}(q_\phi(z|x)\Vert p(z))}_{\text{regularization}}$$

重建项要求保留样本信息,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)$:

$$D_{KL}=\tfrac12(\mu^2+\sigma^2-1-\ln\sigma^2)=\tfrac12(4+0.25-1+1.386)=2.318$$

若重建 loss 0.4,总 loss 约 2.718。

3. GAN:生成器与判别器对抗

Generator $G(z)$ 把噪声变成样本;Discriminator $D(x)$ 区分真实与生成。原始 minimax 目标:

$$\min_G\max_D\;\mathbb E_{x\sim p_{data}}\log D(x)+\mathbb E_{z\sim p(z)}\log(1-D(G(z)))$$

判别器学习“当前生成哪里不像真”,它的梯度不断给生成器提供可学习的感知标准。GAN 不需要显式计算 pixel likelihood,曾显著提升图像锐利度和感知质量。

但这是两个网络的动态博弈:一方过强会让另一方梯度差,训练可能振荡;生成器也可能只覆盖少数容易骗过判别器的模式,即 mode collapse。Wasserstein loss、谱归一化、架构与正则改进都在缓解稳定性问题。

例 2:原始 GAN 判别目标

一批只有一个真实样本和一个生成样本,$D(x)=0.9$、$D(G(z))=0.2$,判别器最大化:

$$\log0.9+\log(1-0.2)=-0.105-0.223=-0.328$$

若生成器成功把 $D(G(z))$ 推到 0.8,第二项变为 $\log0.2=-1.609$,判别器的目标明显恶化,双方目标相互牵制。

4. Diffusion:先定义破坏过程,再学逆过程

Forward process 用许多小步给真实数据加高斯噪声,直到接近标准高斯。任意时间 $t$ 可直接采样:

$$x_t=\sqrt{\bar\alpha_t}x_0+\sqrt{1-\bar\alpha_t}\epsilon,\quad\epsilon\sim\mathcal N(0,I)$$

网络接收 $x_t,t$ 和可选条件 $c$,常训练为预测加入的噪声:

$$\mathcal L=\mathbb E_{x_0,t,\epsilon}\|\epsilon-\epsilon_\theta(x_t,t,c)\|_2^2$$

推理从纯噪声 $x_T$ 开始,重复调用网络逐步得到 $x_0$。每个训练样本的 target 噪声明确,loss 稳定;模型能覆盖复杂多模态分布。主要代价是采样需要多步网络评估。

例 3:一步 forward noising

一维数据 $x_0=2$,取 $\bar\alpha_t=0.64$、采样噪声 $\epsilon=-0.5$:

$$x_t=\sqrt{0.64}\,2+\sqrt{0.36}(-0.5)=0.8\times2-0.3=1.3$$

若网络预测 $\hat\epsilon=-0.3$,噪声 MSE 为 $(-0.5-(-0.3))^2=0.04$。

5. 条件生成与 guidance

文字、类别、深度图或其他条件可通过 cross-attention/特征拼接进入 denoiser。Classifier-free guidance 同时训练有条件和空条件预测,采样时外推:

$$\hat\epsilon=\epsilon_{uncond}+w(\epsilon_{cond}-\epsilon_{uncond})$$

较大 $w$ 通常增强条件一致性,却可能降低多样性并导致过饱和。Guidance scale 是条件服从与样本自然度的旋钮,不是越大越好。

例 4:classifier-free guidance 外推

$\epsilon_{uncond}=0.6$、$\epsilon_{cond}=0.2$、$w=3$:

$$\hat\epsilon=0.6+3(0.2-0.6)=-0.6$$

结果甚至越过 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。挑战是去噪步数与实时控制延迟,以及怎样在闭环执行中不断重规划。

方法训练信号典型优势典型难点
VAEELBO:重建 + 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 秒,不含其他开销。

原始资料

VAEGANDDPMLatent Diffusion