我正在阅读人们对 DCGAN 的实现,尤其是 this one在 tensorflow 中。
在该实现中,作者绘制了鉴别器和生成器的损失,如下所示(图片来自 https://github.com/carpedm20/DCGAN-tensorflow):
鉴别器和生成器的损失似乎都没有遵循任何模式。不同于一般的神经网络,其损失随着训练迭代次数的增加而减少。训练 GAN 时如何解释损失?
最佳答案
不幸的是,就像你对 GAN 所说的那样,损失非常不直观。大多数情况下,这是因为生成器和鉴别器相互竞争,因此一个的改进意味着另一个的损失更高,直到另一个在接收到的损失上学习得更好,这搞砸了它的竞争对手,等等。
现在应该经常发生的一件事(取决于您的数据和初始化)是鉴别器和生成器损失都收敛到一些永久数字,如下所示:
(损失稍微反弹是可以的 - 这只是模型试图改进自身的证据)
这种损失收敛通常意味着 GAN 模型找到了一些最优解,在那里它不能改进更多,这也应该意味着它已经学得足够好。 (另请注意,数字本身通常提供的信息并不多。)
以下是一些小贴士,希望对大家有所帮助:
层和批量标准化,这应该有助于
收敛的稳定性。 (上图是 DCGAN 的结果,而不是 vanilla GAN)
关于neural-network - 如何解释生成对抗网络中判别器的损失和生成器的损失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42690721/