多种多样的GAN-W-GAN

GAN出现的问题

前面写过一篇文章说GAN的基本原理和公式的解析:GAN原理解析,公式推导与python实现,我们说到GAN的发明人提出的损失函数:

L=ExPr[log D(x)]ExPg[log (1D(x))](1)
当该损失函数取最优解时,可得:
L=Pr(x) log D(x)Pg(x) log[1D(x)](2)

既然这已经是最优解了,我们一般会认为在最优解的时候它的梯度为零,因此对 D(x) 求导有:
LD(x)=Pr(x)D(x)+Pg(x)1D(x)=0(3)
化简一下,可以得到:
D(x)=Pr(x)Pr+Pg(x)=12(4)
这时候判别器分不清楚生成分布和真实分布的数据,把公式4代入公式1可以得到:
这里写图片描述化成这样的形式,主要是为了和待会的JS散度对比一下。
我们搞出公式1这样的损失函数,目的就是为了衡量两个分布之间的相似度,而衡量两个分布之间的相似度主要有两个指标,KL散度和JS散度,他们的定义如下:
这里写图片描述
把这两个公式套进公式5,可以得到:
2 JS(Pr||Pg)2 log2
因此,我们转换成了JS距离来判断两个分布的相似性,但由于KL散度的性质, KL(P1||P2)KL(P2||P1) ,有可能会带来如下结果:
这里写图片描述
即KL散度的 P1,P2 不同,带来的前后意义不同,可能会导致多样性不足,出现很多相似的图片。
这里写图片描述
从另一个角度看,如果两个分布有相似的部分的话,其中其中一个就会向另外一个慢慢靠拢。但如果两个分布没有斑点的重合,又会是怎么样的呢?

  • P1(x)=0,P2(x)=0
  • P1(x)0,P2(x)0

如果是这两种情况的话,代入公式计算,第一种情况对JS散度的贡献为0,第二种情况如果重叠部分可忽略不计的话,对JS散度的贡献依然为0

  • P1(x)=0,P2(x)0
  • P1(x)0,P2(x)=0

如果是上述情况,计算一下第三种情况:

2 JS(P1||P2)2 log2=ExP2logP212(0+P2)2 log2=log2
第四种情况类似。因此,可以得到结论,如果是以上这四种情况的话,得到的都是一个常数,而常数求导恒等于0,也就是梯度为零,那就没得玩了。
列了这么多公式,总结一下,其实就是想表达这样一个观点:

  • 判别器训练的太好,生成器梯度消失,生成器的loss降不下去
  • 判别器训练的不好,生成器梯度不准
  • 只有判别器训练的不好不坏才行,但这个火候很难把握

所以,GAN很难训练。哈哈哈

W-GAN

Wasserstein GAN的原始论文。

W-GAN的优点

  • 彻底解决了GAN训练不稳定的问题,不在需要小心平衡生成器和判别器的训练程度
  • 基本解决了collapse mode的问题,基本保证了样本的多样性
  • 训练的过程中与友了一个像交叉熵,准确率这样的数值来衡量训练的进程,这个数值越小代表GAN训练得越好,表示生成的图像质量越高。
  • 以上一切改变都不需要精心设计的网络结构,只要最简单的多层全连接网络就可以

看到这里你是不是很兴奋呢?

猜你喜欢

转载自blog.csdn.net/qq_39422642/article/details/79644050
GAN