第 18 章 GAN
GAN 是生成对抗网络。它由两个模型组成:生成器和判别器。
| 模块 | 作用 |
|---|---|
| 生成器 | 从随机噪声生成假样本 |
| 判别器 | 判断样本是真实样本还是生成样本 |
GAN 的训练像一个对抗过程:生成器希望骗过判别器,判别器希望识别真假。
18.1 生成器
生成器接收随机噪声
其中
生成器的目标是让
18.2 判别器
判别器接收一个样本
如果输入是真实样本,希望
18.3 对抗目标
GAN 的经典目标为:
判别器最大化这个目标:
- 对真实样本输出高概率。
- 对生成样本输出低概率。
生成器最小化这个目标:
- 让
尽量接近 1。 - 让生成样本更难被判别器识别。
18.4 训练过程
GAN 通常交替训练:
- 固定生成器,训练判别器识别真实样本和生成样本。
- 固定判别器,训练生成器骗过判别器。
- 重复上述过程。
训练不是普通的单模型最小化,而是两个模型之间的动态博弈。
18.5 为什么 GAN 难训练
GAN 难训练的原因包括:
| 问题 | 含义 |
|---|---|
| 训练不稳定 | 生成器和判别器能力不断变化 |
| 梯度消失 | 判别器太强时,生成器得到的有效梯度很弱 |
| 模式崩溃 | 生成器只生成少数类型样本 |
| 评价困难 | 生成质量和多样性不容易用单一指标衡量 |
模式崩溃是 GAN 的典型问题。例如真实数据有 10 类图像,但生成器只学会生成其中 1 类,并且这些图像能骗过判别器。
18.6 DCGAN
DCGAN 把卷积神经网络用于 GAN。
生成器通常使用转置卷积或上采样逐步放大特征图;判别器使用卷积网络判断图像真假。
DCGAN 的意义在于:它把 GAN 和 CNN 结合起来,使 GAN 在图像生成中更稳定、更有效。
18.7 条件 GAN
普通 GAN 只从噪声生成样本,无法指定生成类别。条件 GAN 会加入条件
判别器也接收条件:
这样模型可以生成指定类别或满足指定条件的样本。
18.8 GAN 和自编码器的区别
| 模型 | 核心目标 | 生成方式 |
|---|---|---|
| 自编码器 | 重构输入 | 编码后解码 |
| VAE | 重构 + 潜空间正则 | 从先验采样再解码 |
| GAN | 让生成样本骗过判别器 | 从噪声直接生成 |
GAN 通常能生成更清晰的图像,但训练稳定性差;VAE 训练更稳定,但生成结果可能偏平滑。