LSGAN(Least Squares GAN)这篇文章主要针对标准GAN的稳定性和图片生成质量不高做了一个改进。作者将原始GAN的交叉熵损失采用最小二乘损失替代。LSGAN的Loss:

min ⁡ D J ( D ) = min ⁡ D [ 1 2 E x ∼ p d a t a ( x ) [ D ( x ) − a ] 2 + 1 2 E z ∼ p z ( z ) [ D ( G ( z ) ) − b ] 2 ] \mathop{\min }\limits_DJ(D)=\mathop{\min}\limits_D[{\frac{1}{2}}{\rm E}_{x\sim{p_{data}}(x)}[D(x)-a]^2 + {\frac{1}{2}}{\rm E}_{z\sim{p_z}(z)}[D(G(z))-b]^2] DminJ(D)=Dmin[21Expdata(x)[D(x)a]2+21Ezpz(z)[D(G(z))b]2]

min ⁡ G J ( G ) = min ⁡ G 1 2 E z ∼ p z ( z ) [ D ( G ( z ) ) − c ] 2 \mathop{\min }\limits_GJ(G)=\mathop{\min}\limits_G{\frac{1}{2}}{\rm E}_{z\sim{p_z}(z)}[D(G(z))-c]^2 GminJ(G)=Gmin21Ezpz(z)[D(G(z))c]2

实际实现的时候非常简单,最后一层去掉sigmoid,并且计算Loss的时候用平方误差即可。之所以这么做,作者在原文给出了一张图:

在这里插入图片描述

上图是作者给出的基于交叉熵损失及最小二乘损失的Loss函数。横坐标代表Loss函数的输入,纵坐标代表输出的Loss值。可以看出,随着输入的增大,sigmoid交叉熵损失很快趋于0,容易导致梯度梯度饱和问题。如果使用右边的Loss设计,则只在x=1点处饱和。因此使用LSGAN可以很好的解决交叉熵损失的问题。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐