我正在阅读人们对 DCGAN 的实现,尤其是 tensorflow中的这个。
在该实现中,作者绘制了鉴别器和生成器的损失,如下所示(图片来自https://github.com/carpedm20/DCGAN-tensorflow):
判别器和生成器的损失似乎都没有遵循任何模式。不同于一般的神经网络,其损失随着训练迭代的增加而减少。训练 GAN 时如何解释损失?
我正在阅读人们对 DCGAN 的实现,尤其是 tensorflow中的这个。
在该实现中,作者绘制了鉴别器和生成器的损失,如下所示(图片来自https://github.com/carpedm20/DCGAN-tensorflow):
判别器和生成器的损失似乎都没有遵循任何模式。不同于一般的神经网络,其损失随着训练迭代的增加而减少。训练 GAN 时如何解释损失?
不幸的是,就像你对 GAN 所说的那样,损失是非常不直观的。大多数情况下,它发生在生成器和判别器相互竞争的事实,因此对一个的改进意味着另一个的损失更高,直到另一个对接收到的损失学习得更好,从而搞砸了它的竞争对手,等等。
现在应该经常发生的一件事(取决于您的数据和初始化)是鉴别器和生成器的损失都收敛到一些永久数字,如下所示:( 损失反弹一点是可以的 - 这只是证据模型试图改进自己)
这种损失收敛通常意味着 GAN 模型找到了一些最佳值,但它无法进一步改进,这也应该意味着它已经学得足够好。(另请注意,数字本身通常不是很丰富。)
以下是一些旁注,希望对您有所帮助: