GAN——LSGANs(最小二乘GAN)

来源:互联网 发布:大数据 课程 编辑:程序博客网 时间:2024/06/01 07:30
转:http://blog.csdn.net/victoriaw/article/details/60755698#lsgans的损失函数表达式

LSGANs基本思想

LSGANs的英文全称是Least Squares GANs。这篇文章针对的是标准GAN生成的图片质量不高以及训练过程不稳定这两个缺陷进行改进。改进方法就是将GAN的目标函数由交叉熵损失换成最小二乘损失,而且这一个改变同时解决了两个缺陷。

为什么最小二乘损失可以提高生成图片质量? 
我们知道,GANs包含两个部分:判别器和生成器。判别器用于判断一张图片是来自真实数据还是生成器,要尽可能地给出准确判断;生成器用于生成图片,并且生成的图片要尽可能地混淆判别器。 
本文作者认为以交叉熵作为损失,会使得生成器不会再优化那些被判别器识别为真实图片的生成图片,即使这些生成图片距离判别器的决策边界仍然很远,也就是距真实数据比较远。这意味着生成器的生成图片质量并不高。为什么生成器不再优化优化生成图片呢?是因为生成器已经完成我们为它设定的目标——尽可能地混淆判别器,所以交叉熵损失已经很小了。而最小二乘就不一样了,要想最小二乘损失比较小,在混淆判别器的前提下还得让生成器把距离决策边界比较远的生成图片拉向决策边界。这一段总结起来就是图1: 
这里写图片描述

补充:作者是把决策边界作为中介,认为生成图片真实数据之间的距离可以由生成图片和决策边界之间的距离来反映。这是因为学到的决策边界必须穿过真实数据点,否则就是学习过程饱和了。在未来工作中作者也提到可以改进的一点就是直接把生成图片拉向真实数据,而不是拉向决策边界。

为什么最小二乘损失可以使得GAN的训练更稳定呢?作者对这一点介绍的并不是很详细,只是说sigmoid交叉熵损失很容易就达到饱和状态(饱和是指梯度为0),而最小二乘损失只在一点达到饱和,如图2所示: 
这里写图片描述

sigmoid损失处于饱和状态应该是和WGANs中提到的JS散度为常数一致,此时生成网络的梯度为0。


LSGANs的损失函数表达式

最小二乘损失函数:

minDJ(D)=minD12ExPr[D(x)a]2+12EzPz[D(G(z))b]2

minGJ(G)=minG12EzPz[D(G(z))c)]2

其中,D(x;θD)表示判别器,G(z;θG)表示生成器,随机变量z服从标准正态分布。常数a、b分别表示真实图片和生成图片的标记;c是生成器为了让判别器认为生成图片是真实数据而定的值。 
作者证明了上述优化目标函数在ac=1ab=2的情况下等价于最小化pr+pg2pg之间的Pearson卡方散度。

作者设置a=c=1b=0

0 0