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

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

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

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

scoreGenerator = 的意思是 ( Y ^ 生成的 ) ,

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

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

scoreDisriminator = 1 2 的意思是 ( Y ^ 真正的 ) + 1 2 的意思是 ( 1 Y ^ 生成的 ) ,

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

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

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

收敛失败

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

鉴频器占主导地位

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

这张图显示了鉴别器压倒发电机的例子。注意,生成器的分数接近于零,并且不会恢复。在这种情况下,鉴别器对大多数图像进行了正确的分类。反过来,产生器也不能产生欺骗鉴别器的图像,从而无法学习。

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

  • 对真实图像随机赋假标签对鉴别器的损害(单边标签翻转)

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

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

  • 通过减少滤波器的数目来损害鉴别器

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

发电机占主导地位

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

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

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

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

  • 通过增加dropout层损害发电机

  • 通过减少滤波器的数量来损害发生器

模式崩溃

模式坍缩是指GAN产生具有许多重复(模式)的少量图像。当生成器无法学习丰富的特征表示时,就会发生这种情况,因为它学会了将相似的输出关联到多个不同的输入。若要检查模式崩溃,请检查生成的图像。如果输出中几乎没有多样性,而且其中一些几乎完全相同,则很可能出现模式崩溃。

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

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

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

  • 增加生成器的过滤器数量,使其能够生成更广泛的特性

  • 对真实图像随机赋假标签对鉴别器的损害(单边标签翻转)

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

另请参阅

||||||

相关的话题