论文链接:Least Squares Generative Adversarial Networks

LSGAN的思想

原始GAN采用了Sigmoid+Binary Cross Entropy的损失
其存在一个问题,即G生成的图像G(z)虽然成功地让D认为是真图像,但实际上G(z)仍然和真实的图像x有很大差距
此时由于D已经被欺骗,导致G没有可更新的梯度
最终使得G生成的图像质量仍较低

我们可以根据作者的图来理解

LSGAN

其中蓝点为G生成的假图像,红点为真图像,蓝线和红线分别为原始GAN的D和LSGAN的D的判别界限

当我们试图用被D判别为真的假图像(洋红色点)去更新G的时候
若使用sigmoid+BCE损失,会发现因为loss几乎为0而产生梯度消失

因此作者提出了用least square loss训练GAN
由于成功训练的GAN的D的判别曲线应该是穿过并平分真实图像分布
而least square loss可以使生成的图像朝判别边界移动,也就同时使得假图像向真图像区域靠拢的目标函数

这种GAN称为LSGAN(Least Square GAN),其数学表达为

表明当且仅当$p{\mathrm{d}}(x)+p_g(x)=2p_g(x)$​,即$p{\mathrm{d}}(x)=p_g(x)$​时
训练目标C(G)达到最小,也即G可收敛

代码实现

结构上LSGAN和DCGAN完全相同
把损失函数换乘MSE即可