主要内容

监控GAN培训进度,识别常见故障模式

训练GANs可能是一项具有挑战性的任务。这是因为在训练过程中,生成器网络和鉴别器网络相互竞争。事实上,如果一个网络学习太快,那么另一个网络就可能无法学习。这通常会导致网络不能收敛。为了诊断问题并在从0到1的范围内监视生成器和鉴别器实现各自目标的情况,您可以绘制它们的分数。有关显示如何训练GAN并绘制生成器和鉴别器分数的示例,请参见训练生成对抗网络(GAN)

鉴别器学会将输入图像分类为“真实的”或“生成的”。鉴别器的输出对应于一个概率 Y 输入图像属于“real”类。

生成器评分是生成图像的鉴别器输出对应的概率的平均值:

scoreGenerator 的意思是 Y 生成的

在哪里 Y 生成的 包含生成图像的概率。

考虑到 1 Y 是图像属于“生成”类的概率,判别器得分是输入图像属于正确类的概率的平均值:

scoreDiscriminator 1 2 的意思是 Y 真正的 + 1 2 的意思是 1 Y 生成的

在哪里 Y 真正的 包含实数图像的鉴别器输出概率,且传递给鉴别器的实数图像和生成图像的数量相等。

在理想情况下,两个分数都是0.5。这是因为鉴别器不能区分真实和虚假的图像。然而,在实践中,此场景并不是您可以成功实现GAN的唯一情况。

要监视训练进度,您可以随着时间的推移直观地检查图像,并检查它们是否在改进。如果图像没有改善,那么可以使用评分图来帮助诊断一些问题。在某些情况下,分数图会告诉你继续训练没有意义,你应该停止,因为出现了无法恢复的失败模式。以下部分将告诉您在评分图和生成的图像中寻找什么,以诊断一些常见的故障模式(收敛故障和模式崩溃),并建议您可以采取的改进训练的可能行动。

收敛失败

当训练过程中发生器和鉴别器没有达到平衡时,就会发生收敛故障。

鉴频器占主导地位

当生成器得分达到零或接近零,而鉴别器得分达到一或接近一时,就会发生这种情况。

这幅图显示了鉴别器压过发生器的一个例子。注意,生成器得分接近零,并且无法恢复。在这种情况下,鉴别器对大多数图像进行了正确的分类。反过来,生成器不能产生任何欺骗鉴别器的图像,因此不能学习。

如果在多次迭代中分数没有从这些值中恢复,那么最好停止训练。如果出现这种情况,那么尝试通过以下方法平衡生成器和鉴别器的性能:

  • 通过对真实图像随机给予虚假标签(单边标签翻转)来削弱鉴别器

  • 通过添加dropout层来削弱鉴别器

  • 通过增加卷积层中滤波器的数量来提高生成器创建更多特征的能力

  • 通过减少其过滤器的数量来削弱鉴别器

有关显示如何翻转真实图像的标签的示例,请参见训练生成对抗网络(GAN)

发电机占主导地位

当生成器评分达到1或接近1时,就会发生这种情况。

这幅图显示了一个发生器压倒鉴别器的例子。注意,对于多次迭代,生成器的得分为1。在这种情况下,生成器几乎总是学会如何欺骗鉴别器。当这种情况发生在训练过程的早期,生成器很可能学习一个非常简单的特征表示,这很容易骗过鉴别器。这意味着生成的图像可能非常差,尽管有很高的分数。注意,在这个例子中,鉴别器的得分并不是非常接近于零,因为它仍然能够正确地对一些真实的图像进行分类。

如果在多次迭代中分数没有从这些值中恢复,那么最好停止训练。如果出现这种情况,那么尝试通过以下方法平衡生成器和鉴别器的性能:

  • 通过增加过滤器的数量来提高鉴别器学习更多特征的能力

  • 通过添加辍学层损害发电机

  • 通过减少滤波器的数量来削弱生成器

模式崩溃

模式崩溃是指GAN产生的图像种类少,但有很多重复(模式)。当生成器因为要学习将相似的输出与多个不同的输入相关联而无法学习丰富的特征表示时,就会发生这种情况。要检查模式崩溃,请检查生成的图像。如果输出中几乎没有多样性,而其中一些几乎相同,那么很可能存在模式崩溃。

这幅图显示了模式坍塌的一个例子。注意,生成的图像图包含许多几乎相同的图像,尽管对生成器的输入是不同的和随机的。

如果你观察到这种情况,那么尝试通过以下方法来增加生成器的能力,以创建更多不同的输出:

  • 增加生成器输入数据的维度

  • 增加生成器的过滤器数量,以允许它生成更多种类的特征

  • 通过对真实图像随机给予虚假标签(单边标签翻转)来削弱鉴别器

有关显示如何翻转真实图像的标签的示例,请参见训练生成对抗网络(GAN)

另请参阅

||||||

相关的话题