生成模型全景图:自回归模型,VAE,GAN 与扩散模型原理解析
生成模型与自监督表示学习都能使用无标签数据,但关注点不同:表示学习希望得到适合迁移的特征 $f(x)$,生成模型则希望学习数据分布并采样得到新的 $x\sim p_{data}$,也就是学习生成更符合输入数据的样本。
自回归模型将图像生成的概率分布分解为一系列条件概率的乘积。即假设当前像素的值仅依赖于之前的像素。
利用概率链式法则 (Chain Rule):
\[p(x) = p(x_1, x_2, \dots, x_T) = \prod_{t=1}^{T} p(x_t | x_1, \dots, x_{t-1})\]训练时所有真实像素都已知,因此可以并行计算每个位置的条件概率,这叫 teacher forcing;采样时 $x_t$ 必须等待 $x_{<t}$ 生成完成,所以仍是串行过程。模型还必须人为选择像素或 token 的顺序,这个顺序决定条件依赖怎样展开。
Autoencoder 自编码器
普通 Autoencoder 只保证训练样本能被重建,但这没有意义,我们更希望模型可以生成不同的、但是符合原输入范式(分布)的样本。但是普通的 AE 因为 z 位于自由训练得到的 latent space,在这个空间中可能存在大片“空洞”,不规则、不连续,在这个 latent space 中随机采样得到的 $z$ 未必能解码为合理图像。而 VAE 的改变就在于同时约束每个样本的后验接近统一先验(高斯分布),使潜在空间连续且可采样。
VAE 是一种潜在变量模型 (Latent Variable Model)。它不直接拟合 $P(x)$,而是引入潜在变量 $z$,通过编码器和解码器学习数据的压缩表示。
| Encoder (推断网络):$q_\phi(z | x)$,将输入 $x$ 映射到潜在空间分布(通常预测均值 $\mu$ 和方差 $\sigma$)。 |
| Decoder (生成网络):$p_\theta(x | z)$,从潜在向量 $z$ 还原图像 $x$。、 |
VAE 无法直接最大化 $\log p(x)$,转而最大化下界 (ELBO):
\[L(\theta, \phi; x) = \mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] - D_{KL}(q_\phi(z|x) || p(z))\]这个下界来自恒等式:
\[\log p_\theta(x) =\operatorname{ELBO}(x) +D_{KL}\big(q_\phi(z|x)\|p_\theta(z|x)\big).\]| KL 散度非负,所以最大化 ELBO 等价于一边提高数据似然的下界,一边让近似后验 $q_\phi(z | x)$ 接近真实后验。 |
| 第二项 (Regularization):KL 散度,强迫潜在分布 $q(z | x)$ 接近标准正态分布 $\mathcal{N}(0, I)$。 |
为了让网络可导(Backpropagation),将随机采样 $z \sim \mathcal{N}(\mu, \sigma^2)$ 改写为:
\[z = \mu + \sigma \odot \epsilon, \quad \epsilon \sim \mathcal{N}(0, I)\]这样随机性转移到了 $\epsilon$ 上,网络参数 $\mu$ 和 $\sigma$ 变得可导。
基于博弈论 (Game Theory),由两个网络进行对抗训练。不显式建模 $P(x)$,而是学习一种从随机噪声映射到数据分布的变换。
原始 minimax generator loss 为 $\mathbb E_z[\log(1-D(G(z)))]$。当判别器很强时,Sigmoid 已接近饱和,generator 梯度可能很小。实践中常改用非饱和目标:
\[\mathcal L_G=-\mathbb E_z\log D(G(z)),\]它与原目标具有相同最优点,但训练早期能提供更强梯度。
受非平衡热力学启发。通过定义一个逐步加噪的前向过程,并学习一个去噪的反向过程来生成图像。
前向过程 (Forward Process / Diffusion):
| $q(x_t | x_{t-1})$:逐步向数据添加高斯噪声。 |
定义 $\alpha_t=1-\beta_t$、$\bar\alpha_t=\prod_{s=1}^{t}\alpha_s$,任意时刻都能从 $x_0$ 直接采样:
\[q(x_t\mid x_0) =\mathcal N\left( \sqrt{\bar\alpha_t}x_0, (1-\bar\alpha_t)I \right).\]反向过程 (Inverse Process / Denoising):
| $p_\theta(x_{t-1} | x_t)$:训练神经网络来模拟反向去噪过程。 |
神经网络通常参数化反向高斯分布的均值,写成:
\[p_\theta(x_{t-1}\mid x_t) =\mathcal N(\mu_\theta(x_t,t),\Sigma_t).\]常见实现不直接预测 $\mu_\theta$,而是预测生成 $x_t$ 时加入的噪声 $\epsilon$,再由已知公式换算反向均值。
条件生成把文本、类别或其他模态条件 $c$ 输入去噪网络。Classifier-Free Guidance 同时训练有条件与无条件预测,并在采样时组合:
\[\hat\epsilon =\epsilon_\theta(x_t,t,\varnothing) +w\left[ \epsilon_\theta(x_t,t,c) -\epsilon_\theta(x_t,t,\varnothing) \right].\]$w$ 越大,结果通常越符合条件,但多样性可能下降,过大还会产生失真。
直接在高分辨率像素空间反复运行 U-Net 成本很高。Latent Diffusion 先用 Autoencoder 把图像压缩到潜空间,在 latent 上扩散,最后解码回像素:
这种设计以少量重建损失换取大幅计算节省。Stable Diffusion 属于这一类,而不是在原始像素上直接扩散。
| 特性 | Autoregressive (PixelCNN) | VAE (变分自编码器) | GAN (生成对抗网络) | Diffusion (扩散模型) |
|---|---|---|---|---|
| 核心思想 | 链式法则,逐像素预测 | 压缩编码 + 概率重构 | 两个网络博弈对抗 | 逐步加噪 $\to$ 逐步去噪 |
| 生成质量 | 较好 | 一般 (偏模糊) | 高,但可能模式坍塌 | 通常很高且覆盖较好 |
| 生成速度 | 慢 (串行) | 快 (单次前向) | 快 (单次前向) | 慢 (多次迭代) |
| 训练稳定性 | 稳定 (最大似然) | 稳定 (ELBO) | 不稳定 (极难调参) | 稳定 |
| 密度估计 | 显式 (Explicit) | 近似 (Approximate) | 隐式 (Implicit) | 近似/显式 |
| 主要缺陷 | 推理慢 | 图像模糊 | 模式坍塌 (Mode Collapse) | 计算成本高 |
选择模型时没有绝对赢家:Autoregressive 模型提供清晰似然和稳定训练;VAE 给出结构化潜空间;GAN 推理快且图像锐利;Diffusion 训练稳定、模式覆盖好,但采样需要多步迭代。
Here are some more articles you might like to read next: