Neural network 如何解释鉴别器';s损耗和发电机';在生成性对抗网络中的损失?

Neural network 如何解释鉴别器';s损耗和发电机';在生成性对抗网络中的损失?,neural-network,deep-learning,generative-adversarial-network,Neural Network,Deep Learning,Generative Adversarial Network,我正在阅读人们对DCGAN的实现,特别是在tensorflow中 在该实现中,作者绘制了鉴别器和生成器的损失,如下所示(图像来自): 鉴别器和发生器的损耗似乎都不符合任何模式。与一般的神经网络不同,它的损失随着训练迭代次数的增加而减少。培训GANs时如何解释损失?不幸的是,正如您所说,GANs的损失非常不直观。大多数情况下,这是由于生成器和鉴别器相互竞争的事实,因此对一个的改进意味着对另一个的损失更高,直到另一个更好地了解收到的损失,从而使其竞争对手陷入困境,等等 现在应该经常发生的一件事(

我正在阅读人们对DCGAN的实现,特别是在tensorflow中

在该实现中,作者绘制了鉴别器和生成器的损失,如下所示(图像来自):


鉴别器和发生器的损耗似乎都不符合任何模式。与一般的神经网络不同,它的损失随着训练迭代次数的增加而减少。培训GANs时如何解释损失?

不幸的是,正如您所说,GANs的损失非常不直观。大多数情况下,这是由于生成器和鉴别器相互竞争的事实,因此对一个的改进意味着对另一个的损失更高,直到另一个更好地了解收到的损失,从而使其竞争对手陷入困境,等等

现在应该经常发生的一件事(取决于您的数据和初始化)是鉴别器和发电机损耗都会收敛到一些永久性的数字,如下所示: (损失稍微反弹是可以的——这只是模型试图自我改进的证据)

这种损失收敛通常意味着GAN模型找到了一些最佳点,但不能进一步改进,这也意味着它已经学得足够好了。(还要注意的是,这些数字本身通常信息量不大。)

以下是一些旁注,我希望能有所帮助:

  • 如果损失没有很好地收敛,这并不一定意味着模型没有学到任何东西-检查生成的示例,有时它们表现得足够好。或者,您可以尝试更改学习速率和其他参数
  • 如果模型收敛良好,仍然检查生成的示例-有时生成器会发现鉴别器无法与真实数据区分的一个或几个示例。问题是它总是给出这几个,没有创造任何新的东西,这被称为模式崩溃。通常,在数据中引入一些多样性会有所帮助
  • 由于香草甘斯是相当不稳定的,我建议使用,因为它们包含一些功能,如卷积 层和批处理规范化,这应该有助于 收敛的稳定性。(上图是DCGAN而非普通GAN的结果)
  • 这是一些常识,但仍然是:与大多数神经网络结构一样,调整模型,即改变其参数或/和架构以满足您的特定需求/数据可以改进模型或破坏模型
我想你指的是鉴别器,而不是测定器。@MatiasValdenegro感谢你指出。古德费罗的GAN论文谈论的是可能性,而不是损失。你能说说情节到底描述了什么吗?换句话说,损失到底意味着什么?任何方程式或描述都会很有用。有关DCGAN代码,请参考以下github目录:您将能够在那里找到model.py中定义的损耗。有关损失的一般公式,请参考以下文件第3.1节:根据使用的GAN类型,可能会有不同的定义。