这是从《深度学习知识框架》里拆出来的专题文章,专门讲生成模型。
很多人第一次接触生成模型时,最容易混乱的地方是:
GAN、VAE、Diffusion都是在“生成”,但到底差在哪?- 为什么以前大家老提
GAN,现在又经常聊Stable Diffusion? - 三者是替代关系,还是各有适用场景?
这篇文章就按“核心思想 → 结构 → 优缺点 → 应用场景”的顺序,把它们梳理清楚。
目录
1. 先建立总印象
这三类模型虽然都能“生成新图片”,但方法完全不同:
- GAN:两个网络对抗,越斗越强
- VAE:先把数据压到一个有规律的潜在空间,再从里面采样生成
- 扩散模型:先把图像加噪声毁掉,再学会一步步去噪恢复
如果只记一句话,可以先记这个:
GAN靠“对抗”,VAE靠“压缩+采样”,Diffusion靠“逐步去噪”。
2. GAN:靠对抗博弈学会生成
GAN 全称是 Generative Adversarial Network(生成对抗网络)。
它最有名的地方,是把“生成”这件事变成了一个对抗游戏。
2.1 基本结构
随机噪声 z → 生成器 G → 假图片
↓
真实图片 ────────────→ 判别器 D → 判断真假
- 生成器 G:负责“造假图”
- 判别器 D:负责“分真假”
2.2 它是怎么学的?
训练时,两边目标相反:
- 判别器想把真图和假图区分开
- 生成器想骗过判别器
于是两者不断拉扯,最后的理想状态是:
生成器造出来的图,连判别器都很难分辨真假。
2.3 GAN 的优点和难点
优点:
- 生成结果很锐利
- 推理很快,通常一次前向传播就能出图
难点:
- 训练不稳定
- 容易出现模式崩塌(mode collapse)
模式崩塌的意思是:生成器学会了少数几种“足够像”的样本,但不会覆盖整个数据分布。比如它只会画几种固定角度的人脸,看起来很像,但变化不够丰富。
2.4 典型应用
StyleGAN 就是 GAN 家族里非常经典的代表,常用来生成人脸、头像、艺术图像等。
3. VAE:先学压缩空间,再从空间里采样
VAE 全称是 Variational Autoencoder(变分自编码器)。
它和 GAN 最大的不同是:不对抗,而是先学习一个“有结构的压缩空间”。
3.1 基本结构
原始图片 x → 编码器 E → 潜在分布 N(μ, σ)
↓ 采样 z
解码器 D ← z → 重建图片
3.2 关键思想
普通自编码器是“压缩后再还原”,而 VAE 更进一步:
- 编码器输出的不是一个固定点
- 而是一个概率分布(均值
μ和方差σ)
这样做的好处是,潜在空间会更连续、更平滑,方便我们直接采样生成新样本。
3.3 损失函数怎么理解?
VAE 的损失通常分成两部分:
- 重建损失:让还原出来的图尽量接近原图
- KL 散度:让潜在分布尽量靠近标准正态分布
N(0, 1)
这样一来,生成阶段就很方便了:
直接从
N(0, 1)里随机采样一个z,交给解码器,就能生成一张新图。
3.4 VAE 的特点
优点:
- 训练稳定
- 潜在空间连续,适合插值和表示学习
缺点:
- 图像常常比 GAN 模糊一些
所以 VAE 很适合用来做:
- 特征学习
- 降维
- 可控生成
- 图像压缩
4. 扩散模型:从纯噪声一步步去噪成图
扩散模型这几年特别火,像 Stable Diffusion、DALL·E、Midjourney,背后都离不开这条思路。
它的核心想法非常直观:
先把一张清晰图逐步加噪声,最后毁成纯噪声;再训练模型学会反过来一步步去噪,把图恢复出来。
4.1 正向过程:加噪
清晰图片 x₀ → x₁ → x₂ → ... → x_T(纯噪声)
这个过程通常是固定的,不需要学习。
4.2 反向过程:去噪
纯噪声 x_T → 去一点噪 → 再去一点噪 → ... → 清晰图片 x₀
模型真正要学的,就是每一步“该去掉多少噪声”。
4.3 为什么它这么强?
因为这种“逐步修复”的方式,通常比 GAN 那种一次性生成更稳定,也更容易和文本条件结合。
比如输入一句:
- “一只坐在窗边看雨的橘猫”
- “赛博朋克风格的城市夜景”
模型就能在去噪的每一步里,把文本语义不断注入进去。
4.4 扩散模型的优缺点
优点:
- 生成质量高
- 训练相对稳定
- 文本控制能力很强
缺点:
- 推理慢,需要多步去噪
- 计算开销通常更大
5. 三者对比
| 维度 | GAN | VAE | 扩散模型 |
|---|---|---|---|
| 核心机制 | 对抗博弈 | 压缩 + 采样 | 逐步去噪 |
| 生成质量 | 高,但不稳定 | 往往偏模糊 | 目前通常最高 |
| 训练稳定性 | 较差,容易崩 | 较稳定 | 稳定,但训练慢 |
| 可控性 | 一般 | 潜在空间可插值 | 文本条件控制很强 |
| 生成速度 | 很快 | 很快 | 较慢 |
| 代表应用 | StyleGAN | 表示学习、压缩 | Stable Diffusion、DALL·E |
如果只从“直观感受”来记:
GAN:像高手造假,出图利落但训练脾气大VAE:像先学坐标系,再从坐标里采样生成Diffusion:像雕刻家,从一团噪声里一点点雕出清晰图像
6. 怎么选、怎么学
6.1 如果你只是想建立理解框架
建议顺序:
- 先懂
VAE,因为结构最容易讲清 - 再看
GAN,理解“对抗训练”为什么难 - 最后看
Diffusion,理解为什么它成为现在主流
6.2 如果你想做项目
- 想做高质量图像生成:优先了解扩散模型
- 想做潜在空间分析、插值、压缩:VAE 很合适
- 想理解经典生成思路,或者做人脸生成类实验:GAN 仍然值得学
6.3 和 CV 的关系
如果你后面准备学图像分类、检测和分割,可以继续看这篇:
生成模型最重要的不是死记公式,而是理解“它到底怎么生成”的直觉。只要这层想明白,再看论文和代码就不会那么抽象。