1、JS-divergence 的问题
在原始 GAN 中,使用的 JS-divergence 存在一些问题,这里介绍其中的一个问题。在图像所在的高维空间中,生成的图像分布和真实图像的分布可能是完全没有重叠的,比如在三维空间举一个例子,可以理解为两者的分布是三维空间中的两个面,那么他们重叠的部分几乎为零。那么这样 JS-divergence 的问题就出现了。
如下图所示,PG0PG0 与 PdataPdata 如果没有交集,那么无论间隔多远,算出来的 JS-divergence 都是 log2

这个问题的其中一个原因是因为 GAN 的判别网络是用的 sigmoid 函数,如果训练的太好的话会导致梯度消失。如下图所示:

如果判别网络训练的太好,则在真实数据和生成数据的部分微分是0,所以要保证判别网络不能训练的太好,然后再训练生成网络。
有一个方法就是不用 sigmoid 函数,改用线性函数。这个就是 LSGAN。
2、WGAN 原理
有一种解决方法就是想办法衡量两个分布的距离,这便是 WGAN 要解决的问题,它提出的衡量两个分布的距离的方法是,将一个分布的值进行移动,使得移动后的新的分布和另一个分布相同,需要移动的最短距离就是 WGAN 提出的衡量的距离的方法,这个距离叫做 Wasserstein distance,我上边的解释可能不是很容易理解,先放一张图,再解释可能容易理解些。

左边是分布 P ,上边是分布 Q,如果是衡量从将 P 分布移动的和 Q 移动的一样,则横着看,第 (i,j) 个方格表示从 P(i) 移动到 Q(j) 的量的大小,颜色越浅表示移动的越多。
则总距离表示为
B(λ)=∑xp,xqγ(xq,xq)||xq−xq||B(λ)=∑xp,xqγ(xq,xq)||xq−xq||
则 Wasserstein distance 表示为
W