本文档提供了生成对抗网络(GANs)的技术概述,涵盖了它们的架构、工作原理、训练方法、变体和应用。GANs 是一类通过对抗过程进行生成式建模的深度学习框架。本页面重点介绍 GANs 的基本概念和技术方面,作为网络架构系列的一部分,补充了卷积神经网络和循环神经网络的介绍。
来源: README.md
GANs 由两个神经网络组成,它们在一个零和博弈框架中相互竞争
生成器网络:将随机噪声转换为类似于训练数据的合成数据样本。
判别器网络:尝试区分来自训练数据的真实样本和由生成器产生的虚假样本。
GAN 的基本组成部分可以用数学方式表示为
| 组件 | 数学表示 | 目的 |
|---|---|---|
| 生成器 (Generator) | G(z; θg) | 将噪声向量映射到数据空间 |
| 判别器 | D(x; θd) | 输出 x 来自真实数据的概率 |
| 损失函数 | minG maxD V(D, G) = Ex∼pdata[log D(x)] + Ez∼pz[log(1 - D(G(z)))] | 最小最大目标函数 |
来源: README.md
GAN 训练涉及一个对抗过程,其中生成器和判别器相互竞争
训练过程可以分解为以下技术步骤
判别器训练:
生成器训练:
从噪声先验 p_g(z) 中采样 m 个噪声样本 {z^(1), ..., z^(m)} 的小批量
通过下降其随机梯度来更新生成器:∇_θg [1/m Σ_i=1^m log(1 - D(G(z^(i))))]
或者,为避免梯度饱和:∇_θg [1/m Σ_i=1^m -log(D(G(z^(i))))]
来源: README.md
已经开发了多种 GAN 架构来解决特定的挑战或应用
| GAN 变体 | 关键创新 | 主要应用 |
|---|---|---|
| DCGAN | 具有架构约束的卷积架构 | 图像生成 |
| CGAN | G 和 D 的条件信息 | 受控生成 |
| WGAN | Wasserstein 距离作为损失度量 | 提高稳定性 |
| CycleGAN | 非配对图像到图像转换 | 域迁移 |
| ACGAN | 判别器中的辅助分类器 | 类别条件生成 |
| StyleGAN | 基于风格的生成器,具有渐进式增长 | 高质量图像合成 |
| InfoGAN | 互信息最大化 | 解耦表示 |
| BEGAN | Wasserstein 自编码器判别器 | 平衡训练 |
| LSGAN | 最小二乘损失函数 | 稳定性改进 |
来源: README.md
GANs 已成功应用于众多领域
值得注意的应用实例包括
来源: README.md
GANs 在训练过程中面临一些技术挑战
问题:生成器产生有限种类的样本,未能捕获完整的数据分布。
解决方案
问题:训练过程中出现振荡和不收敛。
解决方案
GAN 性能的定量评估
| 指标 | 描述 | 度量 |
|---|---|---|
| Inception Score (IS) | 使用预训练分类器来衡量质量和多样性 | 生成样本的质量和多样性 |
| Fréchet Inception Distance (FID) | 真实样本和生成样本的特征表示之间的距离 | 分布相似性 |
| 精确率和召回率 | 分别评估保真度和多样性 | 质量和多样性之间的权衡 |
| 感知路径长度 | 衡量潜在空间的平滑度 | 解耦质量 |
来源: README.md
实现有效 GANs 的技术考量
架构设计:
训练稳定性:
超参数设置:
训练期间评估:
来源: README.md
GAN 框架对应于一个具有价值函数 V(G, D) 的最小最大双人博弈
$$\min_G \max_D V(D, G) = \mathbb{E}{x \sim p{data}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_z(z)}[\log(1 - D(G(z)))]$$
其中
为了获得最佳训练,判别器旨在最大化 V(D, G),而生成器旨在最小化它。
来源: README.md