WGAN与WGAN-GP

省流

*生成对抗网络(GAN)在图像生成等任务上表现出色,但传统的 GAN 训练存在诸多问题,如模式崩溃(Mode Collapse)梯度消失或爆炸等。为了解决这些问题,WGAN(Wasserstein GAN)及其改进版本 WGAN-GP(WGAN with Gradient Penalty)被提出,使得 GAN 的训练更加稳定,并能够生成质量更高的样本。*

传统的GAN模型的很多问题来自于它的损失函数的数学缺陷上。使用原损失函数其实是等价于去优化一个JS散度,假如两个分布完全没有重合的情况下,损失函数值是一个常数log2,这个时候梯度为0,这一点对于模型训练是致命的,会导致梯度消失的问题,那么如何修改这个损失函数,才能使得缓解这个问题呢,所以研究人员提出了使用 Wasserstein 距离来替代原设计。

从直观上来看,Wasserstein 好像就是将原损失函数的取对数的操作取消掉,成为

  • 批评器的损失函数
    $$ L_D = E[D(X)] - E[D(G(Z))] $$
  • 生成器的损失函数
    $$ L_G = -E[D(G(Z))] $$

为了使得这一替换有效,模型必须满足 1-李普希兹 函数条件,这一点需要使用 梯度裁剪梯度惩罚 的操作。

最终证明效果很好。

WGAN 简介

WGAN(Wasserstein GAN)由 Martin Arjovsky 等人在 2017 年提出,并在论文《Wasserstein GAN》中进行了详细介绍。WGAN 通过引入Wasserstein 距离(也称 Earth Mover’s Distance, EMD) 来度量真实分布和生成分布之间的差距,从而改善训练稳定性。

WGAN 的改进点

相较于传统 GAN,WGAN 主要有以下改进:

  1. 引入 Wasserstein 距离
    • 传统 GAN 使用 JS 散度(Jensen-Shannon Divergence)度量真实分布和生成分布的差异,但容易导致梯度消失。
    • WGAN 采用 Wasserstein 距离(EMD),它可以提供更稳定的训练信号。
  2. 去掉 Sigmoid 及交叉熵损失
    • WGAN 直接使用神经网络的输出值作为衡量分布距离的指标,不再使用 Sigmoid 激活函数。
  3. 使用权重裁剪(Weight Clipping)
    • WGAN 要求判别器(Critic)的参数保持在一定范围(如 [-0.01, 0.01]),以满足 1-Lipschitz 条件。
  4. 不再使用传统的判别器(Discriminator),改用批评器(Critic)
    • 批评器不再输出样本是真假,而是输出 Wasserstein 距离的估计值。

WGAN 结构

生成器(Generator)

  • 生成器的结构与普通 GAN 类似,输入为随机噪声 Z,输出为生成的图像 G(Z)
  • 目标是最小化 Wasserstein 距离,使生成样本的分布接近真实分布。

批评器(Critic)

  • 取代传统判别器,输入为真实图像 X 或生成图像 G(Z)
  • 输出一个任意实数,其值用于衡量真实数据和生成数据的 Wasserstein 距离。
  • 训练时优化 Wasserstein 损失,使得批评器可以正确衡量两者的距离。

WGAN 损失函数

  • 批评器的损失函数
    $$ L_D = E[D(X)] - E[D(G(Z))] $$
  • 生成器的损失函数
    $$ L_G = -E[D(G(Z))] $$

WGAN-GP 简介

虽然 WGAN 通过权重裁剪保证了 1-Lipschitz 条件,但这种方法存在一定的弊端,如梯度消失、参数空间受限。为了解决这些问题,Gulrajani 等人提出了 WGAN-GP(WGAN with Gradient Penalty),用**梯度惩罚(Gradient Penalty)**取代权重裁剪。

WGAN-GP 的改进点

  1. 去掉权重裁剪,改用梯度惩罚
    • 直接限制批评器的梯度范数,使其满足 1-Lipschitz 条件。
  2. 更稳定的训练
    • 由于不再强制限制参数范围,模型可以更自由地学习复杂分布。

WGAN-GP 的损失函数

  • 批评器的损失函数
    $$ L_D = E[D(X)] - E[D(G(Z))] + \lambda E[(||\nabla_{\hat{x}} D(\hat{x})||_2 - 1)^2] $$
    其中:

    • ( \lambda ) 是梯度惩罚项的权重,一般设为 10。
    • ( \hat{x} ) 是真实样本和生成样本之间的插值。
    • 目标是让梯度范数接近 1,以满足 1-Lipschitz 条件。
  • 生成器的损失函数(与 WGAN 相同):
    $$ L_G = -E[D(G(Z))] $$

WGAN-GP 训练过程

  1. 批评器训练
    • 使用真实数据 X 和生成数据 G(Z) 计算 Wasserstein 距离。
    • 计算梯度惩罚项,调整批评器的参数。
  2. 生成器训练
    • 生成器更新参数,使 D(G(Z)) 尽可能大,即最小化 Wasserstein 距离。
  3. 交替训练
    • 通常训练 5 次批评器,再训练 1 次生成器

WGAN 和 WGAN-GP 的对比

WGAN WGAN-GP
Lipschitz 约束 权重裁剪 梯度惩罚
训练稳定性 相对稳定 更加稳定
适用于高维数据 可能受限 适用于更复杂的数据
生成质量 良好 更高质量

WGAN / WGAN-GP 的应用

WGAN 及 WGAN-GP 由于训练稳定,广泛应用于图像生成、风格迁移、数据增强等任务。例如:

  • 高质量人脸生成(如 CelebA 数据集)
  • 医学影像合成(用于补充训练数据)
  • 图像超分辨率

总结

WGAN 通过 Wasserstein 距离提高了 GAN 训练的稳定性,而 WGAN-GP 进一步优化了 Lipschitz 约束,使得训练更加稳定,生成效果更好。两者的主要改进点包括:

  • WGAN 引入 Wasserstein 距离,改进损失函数,但仍需权重裁剪。
  • WGAN-GP 用梯度惩罚替代权重裁剪,提高稳定性
  • WGAN-GP 适用于更复杂的数据分布,效果更优。

WGAN 和 WGAN-GP 的提出极大地推动了 GAN 的发展,后续许多生成模型(如 StyleGAN)都在其基础上进行改进。

Contents
  1. 1. 省流
  2. 2. WGAN 简介
    1. 2.1. WGAN 的改进点
  3. 3. WGAN 结构
    1. 3.1. 生成器(Generator)
    2. 3.2. 批评器(Critic)
    3. 3.3. WGAN 损失函数
  4. 4. WGAN-GP 简介
    1. 4.1. WGAN-GP 的改进点
    2. 4.2. WGAN-GP 的损失函数
  5. 5. WGAN-GP 训练过程
  6. 6. WGAN 和 WGAN-GP 的对比
  7. 7. WGAN / WGAN-GP 的应用
  8. 8. 总结
|