摘要
Regular GANS:鉴别器作为分类器使用sigmoid cross entropy 损失函数
问题:梯度消失
LSGAN:鉴别器采用最小二乘损耗函数
好处:更高的质量、更加的稳定
重要的改变:将交叉熵损失函数换成最小二乘损失函数
这样改变的好处
交叉熵的原因
还是之前的问题原本GAN的损失函数非常难训练,原因在于损失函数结果转换变成JS散度。
linear
之前我们使用的是sigmoid函数,一个阶段情况下,判定器训练的过好,gen生成的数据所得的分数几乎为0,这时gradient会非常小几乎为0,无法继续训练。
如果将sigmoid换成linear这样就不会出现在某些地方特别平坦的问题,这是我们的classification的问题会变成一个regression的问题。
(但是这个并没有实际上的解决GAN训练困难的问题,知道后面出现的WGAN-GP才解决了这个问题)
LSGAN损失函数
原来的损失函数:
模型构架
数据类别比较少的时候:
数据类别比较多的时候:
一些tips:
-
G 带有 batch normalization 批处理标准化(以下简称 BN)并且使用 Adam 优化器的话,LSGANs 生成的图片质量好,但是传统 GANs 从来没有成功学习到,会出现 mode collapse 现象;
-
G 和D 都带有 BN 层,并且使用 RMSProp 优化器处理,LSGANs 会生成质量比 GANs 高的图片,并且 GANs 会出现轻微的 mode collapse 现象;
-
G 带有 BN 层并且使用 RMSProp 优化器, G 、 D 都带有 BN 层并且使用 Adam 优化器时,LSGANs 与传统 GANs 有着相似的表现;
-
RMSProp 的表现比 Adam 要稳定,因为传统 GANs 在 G 带有 BN 层时,使用 RMSProp 优化可以成功学习,但是使用 Adam 优化却不行