GAN(生成对抗网络)的损失函数通常包含两部分,一部分是判别器(Discriminator)的损失函数,另一部分是生成器(Generator)的损失函数。
判别器损失函数
判别器的目标是区分生成的图像(fake)和真实的图像(real)。通常使用二分类交叉熵损失函数,其公式如下:
L_D = E_{x ~ p_{data}(x)}[log D(x)] + E_{z ~ p_{z}(z)}[log(1 - D(G(z)))]
其中,E_{x ~ p_{data}(x)}
表示真实数据分布的期望,E_{z ~ p_{z}(z)}
表示生成器先验分布的期望,D(x)
是判别器对输入图像 x 的输出,G(z)
是生成器根据先验分布 z 生成的图像。
生成器损失函数
生成器的目标是生成尽可能逼真的图像,以欺骗判别器。生成器的损失函数通常与判别器的损失函数相对立,其公式如下:
L_G = E_{z ~ p_{z}(z)}[log(D(G(z)))]
这里,E_{z ~ p_{z}(z)}
表示生成器先验分布的期望,D(G(z))
是判别器对生成器生成的图像 G(z) 的输出。
JS散度和Wasserstein GAN
-
JS散度 :JS散度(Jensen-Shannon Divergence)是一种衡量两个概率分布之间差异的指标,它在GAN中用于改进损失函数,以解决KL散度的不对称性问题。
-
Wasserstein GAN :Wasserstein GAN使用Wasserstein距离作为损失函数,它是一种衡量分布之间差异的指标,比JS散度和KL散度有更好的理论性质。
训练过程
GAN的训练过程是一个二元极小极大博弈问题,即同时最小化判别器的损失函数和最大化生成器的损失函数。训练时,通常先固定判别器训练生成器,然后固定生成器训练判别器,交替进行,直到收敛。
以上是GAN损失函数的基本介绍。