Generative Adversarial Networks/zh
| Article | |
|---|---|
| Topic area | Deep Learning |
| Prerequisites | Neural Networks, Backpropagation, Stochastic Gradient Descent |
概述
生成对抗网络(GAN)是一类生成模型, 其中两个 神经网络 通过双人博弈联合训练。生成器网络将来自简单噪声分布的样本映射到数据空间中的候选样本, 而判别器网络则试图区分真实训练样本与生成样本。训练过程通过更新判别器以提高其分类准确率, 同时更新生成器以产生判别器无法与真实数据区分开的样本。Goodfellow 等人于 2014 年提出 GAN 后, 它在 2010 年代后期成为高保真图像合成的主流方法之一, 至今仍在基于似然的训练较为棘手或需要锐利、高频输出的领域中具有重要影响。[1] 尽管基于扩散的方法已在图像生成前沿占据主导地位, GAN 仍被用于图像到图像的转换、超分辨率、音频合成, 以及作为更大系统中的组成模块。
直觉
经典类比将生成器比作伪造者, 判别器比作侦探。伪造者制作假币, 侦探检查每张钞票并将其标记为真或假。双方在彼此的推动下不断进步: 当侦探越来越善于识别假币时, 伪造者必须制作更具说服力的赝品; 随着伪造品质量的提高, 侦探必须关注更细微的特征。达到均衡时, 伪造的钞票与真钞难以区分, 侦探的判别准确率也只能达到随机水平。
这种对抗式设定避免了显式的似然目标。GAN 并不要求生成器最大化其赋予训练数据的概率, 而仅要求GAN 的样本在某个学习得到的分类器下与训练样本在统计上不可区分。因此, 训练信号来自一个学习得到的、可自适应的评判者, 而非一个固定的损失曲面 (loss surface); 这是 GAN 样本通常比基于似然训练的模型更锐利的关键原因之一, 因为后者会将概率质量涂抹到不合理的区域。
形式化
设 $ p_{\text{data}} $ 表示真实数据的未知分布, $ p_z $ 表示一个固定的先验分布, 定义在隐向量 $ z $ 上, 通常为标准高斯分布或均匀分布。生成器 $ G_\theta : \mathcal{Z} \to \mathcal{X} $ 将隐变量映射到数据空间, 从而在 $ \mathcal{X} $ 上诱导出一个隐式分布 $ p_g $。判别器 $ D_\phi : \mathcal{X} \to (0, 1) $ 输出输入为真实样本的概率。最初的GAN 目标是极小极大价值函数
$ {\displaystyle \min_\theta \max_\phi \; V(D_\phi, G_\theta) = \mathbb{E}_{x \sim p_{\text{data}}}[\log D_\phi(x)] + \mathbb{E}_{z \sim p_z}[\log(1 - D_\phi(G_\theta(z)))].} $
对于一个固定的生成器, 最优判别器为
$ {\displaystyle D^*(x) = \frac{p_{\text{data}}(x)}{p_{\text{data}}(x) + p_g(x)},} $
将其代回可得到一个生成器目标, 在常数项之外等价于 $ p_{\text{data}} $ 与 $ p_g $ 之间的 Jensen-Shannon 散度。因此唯一的全局最小值为 $ p_g = p_{\text{data}} $, 此时判别器在所有点上输出 $ 1/2 $。该理论结果为设计提供了动机, 但本身并不能保证在现实的非凸参数化下达到收敛。
训练与推理
训练过程在 $ \phi $ 和 $ \theta $ 上交替进行 随机梯度 更新。常见的调度策略是每次生成器更新前进行一次或多次判别器更新, 因为只有较强的判别器才能为生成器提供有用的梯度。两类更新都依赖于通过判别器进行的 反向传播: 生成器的梯度是对 $ \log(1 - D_\phi(G_\theta(z))) $ 关于 $ \theta $ 沿组合网络求导得到的。
在实践中, 原始的生成器损失 $ \log(1 - D) $ 在训练早期判别器以较高置信度拒绝伪造样本时会出现饱和, 从而导致梯度消失。标准的解决方法是采用非饱和形式
$ {\displaystyle \mathcal{L}_G = -\mathbb{E}_{z \sim p_z}[\log D_\phi(G_\theta(z))],} $
该形式与原目标具有相同的不动点, 但在生成器处于劣势时能提供更强的梯度。其他常用的稳定方法包括标签平滑、对判别器施加的谱归一化、梯度惩罚, 以及在评估阶段对生成器权重使用指数移动平均。推理过程很直接: 从 $ z \sim p_z $ 中采样并返回 $ G_\theta(z) $。判别器通常在训练后被丢弃, 但有时也会被复用为感知特征提取器或评判者。
变体
GAN 变体的空间非常庞大, 下面列出几个有代表性的家族。
- DCGAN 用深度 卷积 架构取代全连接层, 并规定使用批归一化、带步长的卷积以及 ReLU/LeakyReLU 激活, 以稳定图像合成。
- 条件 GAN 将辅助信息 $ y $(如类别标签或文本嵌入)同时作为 $ G $ 和 $ D $ 的条件, 从而实现可控生成。
- Wasserstein GAN 将 Jensen-Shannon 目标替换为 Wasserstein-1 距离, 通过权重裁剪或更常见的梯度惩罚 (WGAN-GP) 来强制 1-Lipschitz 约束。该方法通常带来更稳定的训练, 且其损失与样本质量更具相关性。
- CycleGAN 通过将两个生成器与循环一致性损失 (consistency loss) 组合, 在没有成对训练数据的情况下学习未配对域之间的图像到图像的转换, 例如照片到绘画的映射。
- StyleGAN 引入了一个解耦隐变量的映射网络以及一个风格调制的合成网络, 在人脸及其他领域上多年保持了最先进的真实感水平。
- 渐进式增长从低分辨率开始训练并逐步添加层, 从而简化了高分辨率合成的优化曲面。
比较
与其他生成模型家族相比, GAN 在质量与可处理性的权衡中占据特定位置。诸如 自编码器、变分自编码器和自回归模型之类的基于似然的模型允许对对数似然进行精确或有界的评估, 但由于似然会惩罚将概率质量分配到数据支撑之外, 它们倾向于生成较为模糊的样本。GAN 通过训练一个学习到的评判者来回避该问题, 因此通常产生更锐利的输出, 但无法直接评估似然, 这使得模型选择和密度估计更加困难。
与 扩散模型 相比, GAN 在采样速度上通常要快得多, 因为通过 $ G $ 进行一次前向传播即可产生一个样本, 而扩散模型需要多次去噪步骤。然而扩散模型通常更易训练, 在数据和算力上的扩展更可预测, 并在 ImageNet 类别条件合成等基准上很大程度上超过了 GAN。近年来的工作通过将扩散蒸馏为少步采样器缩小了采样速度差距, 与此同时 GAN 研究也相应地探索了混合目标。
局限性
GAN 的训练以脆弱著称。由于目标是一个鞍点问题而非简单的最小化问题, 普通的梯度下降并不一定收敛, 振荡和发散动态都很常见。最常被提及的失败模式是模式坍缩 (mode collapse): 生成器集中于当前判别器无法拒绝的数据分布的一个小子集, 导致输出缺乏多样性。诊断模式坍缩较为困难, 因为 GAN 缺乏可处理的似然, 实践中只能依赖诸如 Inception Score 和 Frechet Inception Distance 等代理指标, 而这些指标本身也并不完美。
其他实际问题包括对架构选择和超参数的敏感性、判别器梯度消失或爆炸, 以及难以判断训练何时结束。从理论上讲, 非凸参数化下均衡的存在性与唯一性并不能得到保证, 而当 $ p_{\text{data}} $ 与 $ p_g $ 的支撑不相交时, Jensen-Shannon 散度会变得几乎不带信息, 这正是促使研究者转向 Wasserstein 类目标的动机。
应用
GAN 已被应用于图像超分辨率、图像修补、风格迁移、领域自适应、语义分割、语音和音乐生成以及物理仿真。它们也被用作其他系统中学习得到的感知损失, 以及下游分类器的数据增强器。在以采样延迟为主导的生产环境中, 单次前向传播的 GAN 生成器即便在峰值质量上不及基于扩散的模型, 仍然具有吸引力。