Skip to content

s13 图像生成:GAN、VAE 与扩散模型

让神经网络"创造"图像 —— 三种生成范式的原理与对比


一、生成模型的目标

图像生成的核心是学习数据分布 p(x)。给定训练样本 {x1,x2,...,xN}(如 MNIST 手写数字),生成模型的目标是学会一个新的分布 pθ(x),使得 pθ(x)pdata(x)

一旦学好了 pθ(x),我们就可以从中采样:每次从 pθ(x) 中抽取一个样本,就得到一张新的、逼真的图像。

三种主流方法以完全不同的方式逼近 p(x)

方法建模方式采样方式
GAN隐式(不需要显式 p(x)从噪声 z 经生成器映射到图像
VAE显式(优化 ELBO)从学到的潜变量后验中采样
Diffusion显式(最小化去噪误差)从纯噪声逐步去噪恢复图像

二、GAN:生成对抗网络 (2014)

2.1 核心思想:博弈论

GAN 由两个网络组成,它们相互对抗、共同进化:

  • 生成器 G:接收随机噪声 zpz(通常是高斯分布),输出一张假图像 G(z)。目标是"骗过"判别器。
  • 判别器 D:接收一张图像(可能是真的也可能是假的),输出一个概率 D(x)[0,1] 表示图像为真的概率。目标是正确区分真假。

2.2 数学形式:Minimax Game

GAN 的训练是一个极小极大博弈:

minGmaxDV(D,G)=Expdata[logD(x)]+Ezpz[log(1D(G(z)))]

拆解这行公式:

  • Expdata[logD(x)]:判别器看到真实图像时,希望输出接近 1(真实),即 logD(x) 尽可能大。
  • Ezpz[log(1D(G(z)))]:判别器看到假图像 G(z) 时,希望输出接近 0(虚假),即 log(1D(G(z))) 尽可能大。
  • 生成器的目标相反:希望 D(G(z)) 接近 1,即 log(1D(G(z))) 尽可能

2.3 训练过程

GAN 采用交替训练策略:

  1. 训练判别器:固定 G,优化 D 以更好地区分真假
  2. 训练生成器:固定 D,优化 G 以生成更逼真的图像
  3. 交替重复,直到 G 生成的图像足以以假乱真

理论上,当 D(x)=12 对所有 x 成立时(即判别器完全无法区分),生成器达到了最优——此时 G(z)pdata

2.4 GAN 的训练困难

GAN 训练出了名的不稳定,主要问题包括:

  • 模式坍塌(Mode Collapse):生成器学会了"作弊"——不管输入什么 z,都输出相同的少数几张看起来逼真的图像。生成的分布只覆盖了真实分布的少数几个模式。
  • 梯度消失:当判别器太强时,D(G(z))0log(1D(G(z)))0,生成器的梯度几乎为 0,无法学习。
  • 训练振荡GD 的博弈可能不会收敛,而是在不同策略间来回振荡。

GAN 对抗博弈——生成器 vs 判别器


三、VAE:变分自编码器 (2013)

3.1 核心思想:潜变量建模

VAE 假设图像是由一个低维潜变量 z 通过某种方式"生成"的:p(x)=p(x|z)p(z)dz

由于这个积分在大多数情况下不可解,VAE 转而优化一个下界(ELBO, Evidence Lower Bound):

LVAE=Eqϕ(z|x)[logpθ(x|z)]重构损失(重建 fidelity)DKL(qϕ(z|x)p(z))KL 散度(潜空间正则化)
  • qϕ(z|x) (Encoder):将输入 x 编码为潜变量分布参数 (μ,σ)
  • pθ(x|z) (Decoder):从潜变量 z 重建出图像 x^

3.2 重参数化技巧

VAE 的一个关键创新是重参数化技巧(Reparameterization Trick)

如果直接从 N(μ,σ2) 采样 z,采样操作是不可微的,梯度无法从 decoder 传回 encoder。重参数化技巧将采样分解为:

z=μ+σε,εN(0,1)

这样 zμσ 是可微的,梯度可以顺利通过。ε 是随机性来源,μσ 是 encoder 的输出参数。

3.3 VAE 的优缺点

  • 优点:潜空间平滑、有结构,两个相近的 z 值产生相似的图像,可以做插值(interpolation);训练稳定。
  • 缺点:生成的图像往往较模糊。这是因为 VAE 优化的是逐像素的 MSE/BCE 重构损失,导致网络倾向于输出像素值的"平均值"——多个可能的模式被平均掉,产生模糊效果。

VAE 架构——编码器、潜空间与重参数化


四、扩散模型 (2020+)

4.1 核心思想:渐进去噪

扩散模型的灵感来源于非平衡热力学。它包含两个过程:

前向过程(Forward Process)q:向图像逐步添加高斯噪声,经过 T 步后变成纯噪声。

q(xt|xt1)=N(xt;1βtxt1,βtI)

其中 βt 是噪声调度(noise schedule),通常从 β1104 线性增长到 βT0.02

反向过程(Reverse Process)pθ:学习一个去噪网络 ϵθ,从纯噪声 xT 开始,逐步去除噪声,恢复出清晰的图像。

pθ(xt1|xt)=N(xt1;μθ(xt,t),Σθ(xt,t))

4.2 DDPM 的训练目标

Denoising Diffusion Probabilistic Models (DDPM) 的核心发现是:反向过程的训练可以简化为一个噪声预测任务

Lsimple=Et,x0,ϵ[ϵϵθ(α¯tx0+1α¯tϵ,t)2]

翻译成通俗语言:

  1. 从训练集中取一张图像 x0
  2. 随机选一个时间步 t
  3. 按照前向过程的公式给 x0 加噪声,得到 xt=α¯tx0+1α¯tϵ
  4. 训练网络 ϵθxt 中预测出所加的噪声 ϵ
  5. 这就是一个简单的回归任务!

4.3 采样(推理)

训练完成后,生成图像的过程是从纯噪声出发,一步步反向去噪:

  1. xTN(0,I)(纯噪声)
  2. For t=T,T1,...,1:
    • xt1=1αt(xt1αt1α¯tϵθ(xt,t))+σtz
  3. 输出 x0(生成的图像)

这个过程通常需要数百甚至上千步,这也是扩散模型生成速度慢的原因。

扩散模型——前向加噪与反向去噪


五、Stable Diffusion (2022)

Stable Diffusion 将扩散模型从三个维度做了关键改进:

  1. 潜空间扩散(Latent Diffusion):不像 DDPM 那样在像素空间做扩散,而是先训练一个 VAE 将图像压缩到潜空间,在潜空间中做扩散过程。这将计算量降低了一个数量级。
  2. 文本条件(Text Conditioning):将文本 prompt 通过 CLIP 文本编码器转为嵌入向量,通过交叉注意力(Cross-Attention)注入到去噪 U-Net 中。这使得生成过程可以受文本控制。
  3. Classifier-Free Guidance:同时训练条件模型和无条件模型,在推理时通过 $ \hat{\epsilon}\theta(x_t, c) = \epsilon\theta(x_t, \varnothing) + w \cdot (\epsilon_\theta(x_t, c) - \epsilon_\theta(x_t, \varnothing)) $ 增强文本控制力度。

六、三种方法的对比

特性GANVAEDiffusion
生成质量高(锐利)较低(模糊)极高(锐利+多样)
多样性低(模式坍塌)高(覆盖整个分布)高(覆盖整个分布)
训练稳定性极不稳定稳定稳定
采样速度快(一次前向)快(一次前向)慢(数百步→数十步)
潜空间无显式潜空间有结构的潜空间固定维度的噪声空间
理论基础博弈论/极小极大变分推断/ELBO随机微分方程/得分匹配

三种方法各有千秋:

  • GAN 适合需要高速推理且对锐度要求高的场景(如实时视频特效)。
  • VAE 适合需要平滑潜空间和结构化的场景(如潜在空间插值、属性编辑)。
  • Diffusion 是当前生成质量的标杆(Stable Diffusion, DALL-E 3, Midjourney),但推理速度仍然是瓶颈。

生成模型对比——GAN vs VAE vs Diffusion


七、本节小结

概念一句话
GAN生成器与判别器的对抗博弈,minGmaxDV(D,G)
模式坍塌GAN 生成器只学会生成少数模式,多样性不足
VAE编码器→潜变量→解码器,优化 ELBO = 重构损失 + KL 散度
重参数化z=μ+σε,使采样可微
扩散模型前向逐步加高斯噪声,$q(x_t
扩散模型反向学习去噪网络从噪声恢复图像
DDPM 训练预测所加噪声 ϵ,简单回归任务
Stable Diffusion在潜空间做扩散 + 文本交叉注意力引导
采样速度GAN/VAE 快(单次前向),Diffusion 慢(迭代去噪)

至此,我们完成了从图像分类(s10/s11)到目标检测(s12)再到图像生成(s13)的完整旅程。这三个方向构成了计算机视觉的核心支柱:识别、定位、创造

📥 Code

FileViewDownload
demo.pyOpenDownload
exercise.pyOpenDownload

参考

  1. Goodfellow, I. J., et al. (2014). Generative Adversarial Nets. NeurIPS 2014. (GAN) [arXiv:1406.2661]
  2. Kingma, D. P. & Welling, M. (2014). Auto-Encoding Variational Bayes. ICLR 2014. (VAE) [arXiv:1312.6114]
  3. Ho, J., Jain, A., & Abbeel, P. (2020). Denoising Diffusion Probabilistic Models. NeurIPS 2020. (DDPM) [arXiv:2006.11239]
  4. Rombach, R., et al. (2022). High-Resolution Image Synthesis with Latent Diffusion Models. CVPR 2022. (Stable Diffusion) [arXiv:2112.10752]