Wasserstein GAN的训练稳定性

时间:2020-04-06 18:00:15

标签: python keras neural-network

我正在与Wasserstein GAN进行一个项目,更具体地说是与Wasserstein GAN的改进版本一起实施。关于wGAN的稳定性和培训过程,我有两个理论问题。首先,众所周知,损失函数的结果与生成的样本(that is stated here)的结果的质量相关。是否有其他书目支持该论点?

第二,在我的实验阶段,我注意到使用wGAN训练我的体系结构比使用简单版本的GAN快得多。这是常见的行为吗?对此是否还有一些文献分析?

此外,还有一个有关使用Wasserstein损失保证的连续函数的问题。我在实践中理解此概念时遇到一些问题,这意味着正常的GAN丢失不是连续函数吗?

2 个答案:

答案 0 :(得分:4)

  1. 您现在可以检查Inception ScoreFrechet Inception Distance。还有here。问题在于,GAN没有统一的目标函数(有两个网络),没有一致的评估和比较GAN模型的方法。相反,人们会设计与图像分布和生成器分布相关的度量。

  2. 由于与普通GAN(Wasserstein度量,权重裁剪和梯度惩罚(如果使用的话))相比,使用更稳定的训练程序,
  3. wGAN可能会更快。我不知道是否有关于速度的文献分析,对于WGAN而言,并非总是比简单的GAN更快。 WGAN无法找到像GAN这样的最佳纳什均衡。

  4. 考虑两个分布:p和q。如果这些分布重叠,即它们的域重叠,则KL或JS散度是可区分的。当p和q不重叠时会出现问题。像在WGAN纸示例中一样,在2D空间上说两个pdf,即V =(0,Z),Q =(K,Z),其中K不同于0,Z是从均匀分布中采样的。如果您试图很好地获取这两个pdf的KL / JS散度的导数,则不能。这是因为这两个差异将是一个二进制指示符函数(相等或不相等),并且我们不能采用这些函数的导数。但是,如果我们使用Wasserstein损失或地球移动距离,则可以采用它,因为我们将其近似为空间上两点之间的距离。 短故事:如果分布有重叠,则正常GAN损失函数是连续的,否则是离散的。

希望这会有所帮助

答案 1 :(得分:0)

稳定 WGAN 训练的最常见方法是将早期 W-GAN 中使用的梯度裁剪技术替换为梯度惩罚 (WGAN-GP)强>。这种技术似乎优于原始 WGAN。可以在此处找到描述什么是 GP 的论文: https://arxiv.org/pdf/1704.00028.pdf

此外,如果您需要有关如何实现这一点的任何帮助,您可以查看我在此处找到的一个不错的存储库: https://github.com/kochlisGit/Keras-GAN

您还可以使用其他技巧来提高生成图像的整体质量,如存储库中所述。例如:

  1. 在随时间衰减的鉴别器的输入中添加随机高斯噪声
  2. 随机/自适应数据增强
  3. 单独的假/真批次

相关问题