Theme
Lecture 12 / Lecture 11: Generative Adversarial Network, GAN
0. 本章核心目标:从“显式建模概率密度”走向“隐式生成真实样本”
本章要解决的问题是:如何学习真实数据分布 ,并从中生成看起来真实的新样本。传统生成模型常常试图显式建模概率密度,例如最大化 。但真实图像、语音、文本等高维数据分布极其复杂,显式 likelihood 往往难以精确计算,VAE 等模型需要近似推断,因此会引入 approximation bias。
GAN 的核心转向是:不显式写出 的密度,而是通过一个生成器 把简单噪声 映射到数据空间:
这里 通常是标准高斯或均匀分布, 是生成样本, 是生成器参数。虽然我们不直接知道 的解析密度,但 的输出隐式定义了一个生成分布 。
本章的“进化树”可以概括为:
1. 生成模型的基本定位
1.1 判别模型 vs 生成模型
判别模型学习的是:
也就是给定输入 ,预测标签 。例如输入一张图片,判断它是 elephant 还是 horse。
生成模型学习的是:
也就是给定类别 ,生成符合该类别的数据 。更一般地,如果不带条件,也可以学习:
然后从中采样生成新数据。
重要程度:★★★★★ 这是 GAN 和 VAE 一类模型的出发点。考试中经常问 discriminative model 和 generative model 的区别。
1.2 显式生成模型与隐式生成模型
显式生成模型直接估计密度 ,通常用最大似然:
其中 是训练样本, 是样本数, 是模型参数。优点是目标清晰;缺点是高维复杂数据的 likelihood 很难精确计算。
隐式生成模型不直接写出 的密度,而是定义采样过程:
其中 把简单分布中的样本变成复杂数据空间中的样本。GAN 属于隐式生成模型。
重要程度:★★★★★ 这解释了为什么 GAN 不需要显式 likelihood,也解释了它和 VAE 的根本区别。
2. GAN 的基本结构:Generator vs Discriminator
GAN 有两个网络:
是生成器,输入噪声 ,输出生成样本 。
是判别器,输入一个样本 ,输出一个标量:
表示该样本来自真实数据分布 的概率。如果 越接近 1,表示判别器越认为它是真样本;如果越接近 0,表示越认为它是生成样本。
GAN 的核心博弈是:
最终目标是:
当生成分布等于真实分布时,判别器无法区分真假:
重要程度:★★★★★ 这是 GAN 的核心直觉。考试中如果问 GAN equilibrium,答案就是 ,此时 。
3. GAN 的原始目标函数
3.1 判别器目标
课件给出的判别器 cost 是:
最小化 等价于最大化:
其中:
符号解释:
表示对真实数据分布取期望。 表示对噪声分布取期望。 是判别器认为 是真样本的概率。 是判别器认为生成样本是真样本的概率。 奖励判别器把真样本判为真。 奖励判别器把假样本判为假。
这个目标本质上就是二分类交叉熵:真实样本 label 为 1,生成样本 label 为 0。
重要程度:★★★★★
3.2 GAN minimax objective
GAN 的标准 minimax objective 是:
等价写法:
这里 最大化该目标,因为它希望正确分类真假样本; 最小化该目标,因为它希望让 尽可能接近 1,使得 变小。
重要程度:★★★★★ 这是 GAN 最核心公式,必须会写、会解释。
4. Minimax Game 的理论解释
GAN 是一个 two-player zero-sum game。两个玩家是 和 ,目标相反。
课件中写:
这表示最简单的零和设定中,生成器和判别器的损失互为相反数。均衡点是 的 saddle point,也就是一方无法单方面改进的点。
但是这里有一个训练问题:原始 minimax 的 generator loss 可能会出现梯度消失。因为当 很强时:
此时生成器从 中得到的有效梯度会很弱,导致学习困难。
重要程度:★★★★☆ 理论均衡很重要,但考试更可能考:为什么原始 GAN 会梯度消失,以及 non-saturating loss 怎么解决。
5. 最优判别器 的推导
5.1 固定生成器 ,求最优判别器
对于固定的 ,也就是固定 ,判别器最大化:
因为 诱导出生成分布 ,所以第二项可以改写为:
因此:
对每一个固定的 ,我们只需要最大化:
其中:
求导:
令导数为 0:
所以:
代回:
重要程度:★★★★★ 这是 GAN 理论证明的核心。必须会推导。
5.2 这个公式的直觉
如果某个 在真实数据中概率大,而生成器很少生成:
那么:
判别器认为它是真样本。
如果某个 主要由生成器产生,而真实数据很少出现:
那么:
判别器认为它是假样本。
如果:
那么:
判别器完全无法区分真假。
6. GAN 的全局最优性:为什么
把最优判别器代入 GAN 目标:
使用:
以及:
得到:
定义混合分布:
注意:
所以:
同理:
因此:
而 Jensen-Shannon Divergence 定义为:
所以:
因为:
且当且仅当:
时取 0,所以全局最优为:
并且:
重要程度:★★★★★ 这是本章最重要的理论证明之一。考试可能直接要求证明 GAN objective 等价于 minimizing JSD。
7. GAN 的训练过程
GAN 实际训练时不会真的让 完全达到最优,而是交替优化:
先固定 ,更新 :
再固定 ,更新 :
训练步骤可以理解为:
真实训练中通常用 Adam 或 SGD-like optimizer。每次训练同时使用两个 minibatch:一个真实样本 minibatch,一个生成样本 minibatch。
重要程度:★★★★★ GAN 训练伪代码、交替优化、两个 minibatch 是常考点。
8. GAN 的主要训练问题
8.1 Vanishing Gradients
原始 minimax generator loss 是:
生成器希望最小化它。问题在于,当判别器太强时:
此时 fake samples 被判别器高置信度识别为假。虽然 loss 数值可能不小,但通过 sigmoid classifier 反传到生成器的梯度容易饱和,导致生成器几乎无法更新。
解决方法之一是 non-saturating loss。
重要程度:★★★★★
8.2 Non-Convergence
GAN 是非凸-非凹 minimax optimization。即使理论上有 equilibrium,参数空间中的 simultaneous gradient descent 也不保证收敛。
原因包括:
都是神经网络,目标高度非凸。实际训练中, 和 的更新可能互相抵消,导致 oscillation。
重要程度:★★★★☆
8.3 Mode Collapse
Mode collapse 指生成器只覆盖真实分布的一小部分模式。例如真实数据有 9 个模式,但 GAN 只学会生成其中 1 个模式。
形式上,真实分布 可能有多个高概率区域:
但生成分布 只覆盖其中少数几个:
这会导致样本看起来局部真实,但多样性不足。
重要程度:★★★★★ mode collapse 是 GAN 最经典缺陷之一,考试非常可能问。
8.4 Mode Dropping
Mode dropping 和 mode collapse 类似,但更强调生成分布没有覆盖完整真实分布。它可能不是完全崩到一个模式,而是漏掉一些数据模式。
重要程度:★★★★☆
9. Non-Saturating GAN:解决梯度消失
原始 discriminator loss 保持不变:
但 generator loss 改为:
这个目标不再是最小化:
而是最大化:
直觉是:原始 minimax 是让 减少 正确识别 fake 的概率;non-saturating 是让 直接增加 把 fake 判为 real 的概率。
当:
时:
非常大,梯度信号强,因此生成器仍然能学习。
重要程度:★★★★★ 必须会区分 minimax loss 和 non-saturating loss。
对比表:
| 目标 | Discriminator loss | Generator loss | 主要问题/优点 |
|---|---|---|---|
| Original minimax GAN | 理论漂亮,但 太强时 梯度消失 | ||
| Non-saturating GAN | 同上 | 梯度更强,实践中更常用 | |
| Maximum-likelihood game | 同上 | (-\frac{1}{2}\mathbb{E}_z \exp) | 试图模拟 MLE / KL 目标 |
10. Maximum Likelihood Game
课件给出的 generator loss 是:
其中 是 sigmoid 的 inverse,也就是 logit function:
这个目标被解释为等价于最小化:
即:
符号解释:
是生成模型分布。 衡量用 近似 的信息损失。 这个 KL 是 forward KL,倾向于覆盖真实数据的所有模式,因此和 mode dropping 问题有关。
重要程度:★★★☆☆ 课件提到,但通常不会比 non-saturating 和 WGAN 更核心。
11. WGAN:从 JSD 到 Wasserstein Distance
11.1 为什么 JSD 会出问题
前面证明了原始 GAN 在理想情况下等价于最小化:
但在高维空间中,真实数据往往分布在低维流形上。例如图像虽然维度很高,但有效图像只占据一个低维 manifold。生成分布 也可能在另一个低维 manifold 上。
如果两个分布的支撑集几乎不重叠,那么 JSD 会饱和,导致梯度几乎为 0。也就是说,即使 离 很远,JSD 也无法提供连续有效的优化方向。
重要程度:★★★★★
11.2 Wasserstein-1 Distance / Earth-Mover Distance
WGAN 使用 1-Wasserstein distance:
符号解释:
是真实分布,等同于 。 是生成分布。 是所有 coupling distributions 的集合。 表示一种“运输计划”,说明如何把 中的质量搬运到 。 是把质量从 移到 的代价。 表示在所有运输计划中找最小运输成本。
直觉:Wasserstein distance 衡量的是“把一个分布搬成另一个分布需要付出多少最小代价”。即使两个分布没有重叠,它仍然能给出平滑、可用的距离信号。
重要程度:★★★★★
11.3 课件中的例子
设:
真实分布:
生成分布:
这表示真实样本在二维平面上的竖线 ,生成样本在竖线 。如果 ,两个分布支撑在两条平行线,几乎不重叠。JSD 容易饱和,而 Wasserstein distance 可以自然得到:
因此对 有有效梯度。
重要程度:★★★★☆
11.4 Kantorovich-Rubinstein Duality
直接优化 Wasserstein distance 中的 很难,因此 WGAN 使用对偶形式:
其中:
表示 是 1-Lipschitz function,即:
如果是 -Lipschitz:
那么目标会变成:
在 WGAN 中, 用 neural network 参数化,通常称为 critic,而不是 discriminator,因为它不输出概率,而是输出一个 real-valued score。
重要程度:★★★★★
11.5 如何保证 Lipschitz 条件
课件提到两种方式:
和:
Gradient clipping 通过限制 critic 参数范围来近似满足 Lipschitz 条件,但可能导致 capacity 受限。Gradient penalty 则直接惩罚梯度范数偏离 1,实践中更稳定。
虽然课件没有写 WGAN-GP 公式,但常见形式是:
其中 是真实样本和生成样本之间插值得到的点, 是 penalty coefficient。
重要程度:★★★★☆ 课件只提到了 gradient clipping 和 gradient penalty,但考试可能要求解释它们为什么和 Lipschitz 约束有关。
12. Unrolled GAN:缓解 mode collapse
Unrolled GAN 的核心思想是:更新生成器时,不只看当前判别器 ,而是考虑判别器未来经过 步优化后的状态。
普通 GAN 中, 可能 exploit 当前 的弱点,于是生成器学会某几个模式来骗过当前判别器,造成 mode collapse。
Unrolled GAN 做法是:
然后用第 步后的判别器参数:
来计算 generator objective,并对 反传:
关键是,更新 时会 backpropagate through discriminator’s -step optimization。这样 不能只骗当前 ,而要考虑 反应后的结果,因此可以减少 mode collapse。
课件特别强调:虽然为了更新 会 unroll steps of ,但真正保留到下一轮训练的只有 的第一次更新,而不是全部 次。这是为了避免 过拟合。
重要程度:★★★★☆
13. Conditional GAN 与 Image-to-Image Translation
13.1 Conditional GAN
普通 GAN 只从噪声生成样本:
Conditional GAN 引入条件 或输入图像 ,让生成过程可控。例如:
判别器输入 pair:
判断 是否是给定 的真实 translation。
重要程度:★★★★☆
13.2 Pix2Pix-style objective
课件中 image-to-image translation 使用 conditional GAN,并加入 L1 loss:
总目标:
符号解释:
是输入图像,例如边缘图、语义分割图、低分辨率图像。 是目标图像。 是生成的目标域图像。 是像素级 L1 reconstruction loss。 控制 GAN loss 和 L1 loss 的权重。
L1 loss 的作用是保证生成结果和 paired ground truth 对齐;GAN loss 的作用是让生成图像更真实、更符合目标域分布。
课件指出缺陷:
也就是说,在 paired image-to-image translation 中,生成器往往忽略噪声 ,输出 deterministic result,导致没有 stochastic outputs。
重要程度:★★★★★ CGAN + L1 是图像翻译、超分辨率、视频预测等任务的共同模板。
14. 其他 GAN variants 与应用
14.1 DCGAN
DCGAN 是 Deep Convolutional GAN。它把 generator 和 discriminator 改成卷积结构,更适合图像生成。Generator 常用反卷积或上采样结构,Discriminator 用 CNN 提取图像特征。
重要程度:★★★☆☆
14.2 InfoGAN
InfoGAN 的目标是无监督地学习 disentangled representations。它把 latent code 分成普通噪声和可解释因素,希望某些 latent variables 控制语义因素,例如数字类别、旋转角度、笔画粗细。
重要程度:★★★☆☆
14.3 LSGAN
LSGAN 使用 least squares loss 替代 binary cross-entropy loss。其动机是缓解梯度饱和,让 fake samples 即使在判别边界之外也有较强梯度。
重要程度:★★★☆☆
14.4 BEGAN
BEGAN 使用 equilibrium enforcing mechanism,并结合 Wasserstein-inspired loss,目标是稳定训练。
重要程度:★★☆☆☆
14.5 Progressive Growing GAN
Progressive Growing GAN 的思想是从低分辨率开始训练,例如:
逐渐增加生成器和判别器的层数,使训练更稳定,并生成高分辨率图像。
重要程度:★★★☆☆
15. GAN 的应用
GAN 的应用包括:
图像生成:从随机噪声生成 MNIST、CIFAR-10、人脸等图像。 Latent vector arithmetic:在 latent space 中做语义运算,例如:
Image-to-image translation:例如边缘图到真实图像、语义图到街景。 Next video frame prediction:给定过去帧,预测未来帧。 Super-resolution:低分辨率图像生成高分辨率图像,是 conditional GAN 的特殊形式。 Unpaired image-to-image translation:例如 CycleGAN,不需要 paired data。 Semi-supervised learning:用 discriminator/classifier 的 feature matching 帮助利用少量标签。 Discrete sequential data generation:把生成器视为 policy,用 policy gradient 处理不可微采样。
重要程度:★★★☆☆ 应用一般不会考特别细,但 conditional GAN、super-resolution、discrete sequence generation 可能会出概念题。
16. 离散序列生成:GAN + Policy Gradient
课件给出公式:
其中:
是生成器,也可以看作 policy。 是第 个 token/action。 是已经生成的前缀序列。 是判别器,提供 reward。 是 action-value function,表示在前缀 后选择 的长期回报。
课件给出的 定义是:
注意课件中写了 ,但从语义上更自然的是 :如果序列还没生成完,就用 Monte Carlo rollout 补全序列,再由判别器打分。
直觉:离散 token 采样不可微,所以不能直接把 的梯度传回 。因此把 当作 policy,把 的输出当 reward,用 policy gradient 更新。
重要程度:★★★★☆ 如果课程覆盖 SeqGAN,这个公式可能考。关键是理解:离散采样不可微,所以要用 policy gradient。
17. 方法演进总表
| 阶段 | 核心方法 | 解决什么问题 | 新问题 |
|---|---|---|---|
| 显式生成模型 | MLE, VAE | 直接建模 ,目标清晰 | 高维 likelihood 难算;VAE 有近似偏差 |
| 原始 GAN | 不显式建模密度,直接学习生成样本 | 训练不稳定、梯度消失、mode collapse | |
| Non-saturating GAN | 缓解 太强时 梯度消失 | 仍可能 non-converge 和 mode collapse | |
| Unrolled GAN | 反传穿过 步 更新 | 减少 exploit 当前 ,缓解 mode collapse | 计算成本更高 |
| WGAN | Wasserstein distance | JSD 饱和时仍提供有意义梯度 | 需要 Lipschitz 约束 |
| WGAN-GP / clipping | gradient penalty / clipping | 近似满足 Lipschitz 条件 | clipping 可能限制 capacity |
| CGAN / Pix2Pix | 条件输入 + GAN + L1 | 可控生成、图像翻译 | 可能忽略噪声 ,输出缺少多样性 |
| Progressive GAN | 逐步提高分辨率 | 高分辨率图像训练更稳定 | 架构和训练流程更复杂 |
18. 期末考试重点排序
最高优先级:必须掌握
中高优先级:需要能解释
Mode collapse、mode dropping、vanishing gradient、non-convergence 的区别。 为什么原始 GAN 理论上好,但实践训练难。 为什么 WGAN 比 JSD 更适合高维 manifold。 为什么 conditional GAN 需要把 condition 输入给 和 。 为什么 Pix2Pix 需要 loss。 为什么离散序列生成不能直接 backprop,需要 policy gradient。
较低优先级:了解即可
InfoGAN、BEGAN、Progressive GAN、latent vector arithmetic、semi-supervised GAN 的细节。
19. 一句话总结本章
GAN 的核心思想是:用一个判别器 学习真实分布和生成分布之间的 density ratio,用这个判别信号训练生成器 ,使隐式生成分布 逐渐逼近真实数据分布 。理论上,最优判别器诱导出的目标等价于最小化 Jensen-Shannon divergence;实践中,原始 GAN 会遭遇梯度消失、非收敛和 mode collapse,因此发展出了 non-saturating loss、Unrolled GAN、WGAN、CGAN 等一系列改进方法。