深度学习_GAN_LSGAN
LSGAN(Least Squares GAN)这篇文章主要针对标准GAN的稳定性和图片生成质量不高做了一个改进。作者将原始GAN的交叉熵损失采用最小二乘损失替代。LSGAN的Loss:minDJ(D)=minD[12Ex∼pdata(x)[D(x)−a]2+12Ez∼pz(z)[D(G(z))−b]2]\mathop{\min }\limits_DJ(D)=\mathop{\min}\li.
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[21Ex∼pdata(x)[D(x)−a]2+21Ez∼pz(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)=Gmin21Ez∼pz(z)[D(G(z))−c]2
实际实现的时候非常简单,最后一层去掉sigmoid,并且计算Loss的时候用平方误差即可。之所以这么做,作者在原文给出了一张图:
上图是作者给出的基于交叉熵损失及最小二乘损失的Loss函数。横坐标代表Loss函数的输入,纵坐标代表输出的Loss值。可以看出,随着输入的增大,sigmoid交叉熵损失很快趋于0,容易导致梯度梯度饱和问题。如果使用右边的Loss设计,则只在x=1点处饱和。因此使用LSGAN可以很好的解决交叉熵损失的问题。
更多推荐
所有评论(0)