在设定GAN的损失函数时,总会有文献说SaturatingNon-Saturating Loss functions,具体他们各是什么,以及为什么这么称呼呢?

一句话总结:非饱和损失函数能在训练早期提供更大的梯度

我们首先看一下两种的数学表达式

  1. 饱和Loss:生成器希望最小化被判断为的概率
    min⁡log⁡(1−D(G(z)))(1) \min \log(1-D(G(z))) \tag{1} minlog(1D(G(z)))(1)

  2. 非饱和Loss:生成器希望最大化被判断为的概率
    max⁡log⁡(D(G(z)))ormin⁡−log⁡(D(G(z)))(2) \max \log(D(G(z))) \tag{2}\\ \text{or} \min -\log(D(G(z))) maxlog(D(G(z)))orminlog(D(G(z)))(2)

后者能提供的梯度信息更好,为什么呢?

在训练的初始阶段,GGG 生成的样本很容易被 DDD 识别出来,也就是 D(G(z))D(G(z))D(G(z)) 趋近于0,此时饱和GAN的 Loss_G 的梯度会很小,所以饱和了。而非饱和GAN的 Loss_G 的梯度会大很多,能够为网络的权重更新提供好的梯度方向,帮助收敛,所以没饱和

在这里插入图片描述
图来自于
A Review on Generative Adversarial Networks: Algorithms, Theory, and Applications

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐