gpt4 book ai didi

python - Wasserstein 损失可以是负数吗?

转载 作者:行者123 更新时间:2023-11-28 18:57:03 30 4
gpt4 key购买 nike

我目前正在使用(大约)Wasserstein 损失在 keras 中训练 WGAN,如下所示:

def wasserstein_loss(y_true, y_pred):
return K.mean(y_true * y_pred)

然而,这种损失显然可以是负数,这让我很奇怪。

我对 WGAN 进行了 200 个 epoch 的训练,得到了下面的 critic Wasserstein 损失训练曲线。 Wasserstein loss training curve

以上loss计算方式

d_loss_valid = critic.train_on_batch(real, np.ones((batch_size, 1)))
d_loss_fake = critic.train_on_batch(fake, -np.ones((batch_size, 1)))
d_loss, _ = 0.5*np.add(d_loss_valid, d_loss_fake)

生成的样本质量很好,所以我认为我正确地训练了 WGAN。但是,我仍然不明白为什么 Wasserstein 损失可能为负而模型仍然有效。根据 WGAN 原论文,Wasserstein loss 可以作为 GAN 的性能指标,那么我们应该如何解读呢?我是不是误解了什么?

最佳答案

Wasserstein 损失是地球运动距离的度量,它是两个概率分布之间的差异。在 tensorflow 中,它被实现为 d_loss = tf.reduce_mean(d_fake) - tf.reduce_mean(d_real) 如果 d_fake 在另一个方面移动得太远,它显然会给出一个负数d_real 分布的一侧。您可以在您的情节中看到它,在训练过程中,您的真实分布和虚假分布会改变边,直到它们收敛于零附近。因此,作为性能测量,您可以使用它来查看生成器与真实数据的距离以及它现在位于哪一侧。

查看分布图:

enter image description here

附言这是交叉熵损失,而不是 Wasserstein。也许this article如果您还没有阅读它,可以为您提供更多帮助。然而,另一个问题是优化器如何将负损失最小化(至零)。

关于python - Wasserstein 损失可以是负数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57104606/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com