生成器和鉴别器的损失如何减少?

数据挖掘 深度学习 生成模型
2022-01-30 14:51:33

这篇论文中,有一个关于 gans 损失如何通过 epochs 的图。

图 2:

图 2

这些当然是平均损失。

鉴别器损失和生成器损失如何减少?

real_y = discriminator(real_sample)
fake_y = discriminator(generator(noise))
discriminator_loss = real_y-fake_y+1 # nicer, it is between 0 and 2

fake_y = discriminator(generator(noise))
generator_loss = fake_y

我预计其中一项损失会随着另一项损失的减少而增加。因为他们使用相同的计算fake_y和 一个减少-fake_y和另一个fake_y一个优化器赚得fake_y更少,而另一个优化器赚得更多。

也许损失函数没有像我说的那样计算。

在广泛使用的类比中:

简单来说,生成器就像一个伪造者试图生产一些假冒材料,而鉴别器就像警察试图检测伪造的物品。

我们可以通过 100 个赝品中有多少次能识别出真假和伪造者在 100 个赝品中欺骗警察来衡量警察的好坏。

那不是说如果警察变得更好,伪造者就会变得更糟吗?(如果使用上述衡量它们有多好的方法)

因此,我们将无法同时看到他们两个都很好!但论文中的图表表明并非如此。

我错过了什么?

2个回答

在该图的小节中,他们计算了 100 次迭代的平均损失,这就是损失单调递减的原因,因为平均而言,损失确实随着训练而减少。

您的推断是正确的,如果这是在逐次迭代的基础上报告的,则损失将是锯齿形曲线,与平滑曲线相比,它看起来不太美观。

如评论中所述,如果是 Wasserstein 距离,则损失可以单调减少到 0。Wasserstein 距离计算为supfLkExPX[f]ExPθ[f]其中第一项是函数(鉴别器)对批次的期望,第二项是在鉴别器上计算的生成器生成的数据。请注意,通过这个公式,它返回 -Wasserstein 距离。fk

这是因为 WGan 中的鉴别器不是分类器,其工作方式与传统 GAN 不同。你是 100% 正确的,在正常的 GAN 中,如图所示,两种损失都减少是没有任何意义的。