省流
*生成对抗网络(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 主要有以下改进:
- 引入 Wasserstein 距离:
- 传统 GAN 使用 JS 散度(Jensen-Shannon Divergence)度量真实分布和生成分布的差异,但容易导致梯度消失。
- WGAN 采用 Wasserstein 距离(EMD),它可以提供更稳定的训练信号。
- 去掉 Sigmoid 及交叉熵损失:
- WGAN 直接使用神经网络的输出值作为衡量分布距离的指标,不再使用 Sigmoid 激活函数。
- 使用权重裁剪(Weight Clipping):
- WGAN 要求判别器(Critic)的参数保持在一定范围(如 [-0.01, 0.01]),以满足 1-Lipschitz 条件。
- 不再使用传统的判别器(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-Lipschitz 条件。
- 更稳定的训练:
- 由于不再强制限制参数范围,模型可以更自由地学习复杂分布。
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 训练过程
- 批评器训练
- 使用真实数据
X
和生成数据G(Z)
计算 Wasserstein 距离。 - 计算梯度惩罚项,调整批评器的参数。
- 使用真实数据
- 生成器训练
- 生成器更新参数,使
D(G(Z))
尽可能大,即最小化 Wasserstein 距离。
- 生成器更新参数,使
- 交替训练
- 通常训练 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)都在其基础上进行改进。