关于WGAN总共有3篇文章:
-paper1:Towards Principled Methods for Training Generative Adversarial Networks
-paper2:Wasserstein GAN
-paper3:Improved Training of Wasserstein GANs
这里打算对3篇文章做一个小小的阅读笔记。
原始GAN存在的问题(paper1):
1.训练困难(Updates get worse as the discriminator gets better,both in the original and the new cost function.Training massively unstable)
2.collapse mode
3.生成器判别器无法指示训练进程
对于The original cost function的解释,G的优化目标如下:
给公式(1)加一个不依赖于生成器的项:
因此最小化(2)等价于最小化(1),它正好是loss D的反。代入最优判别器后得到最终要优化的式子为:
且
问题就出在JSD上,我们试图通过优化JS散度使接近,但这只在两个初始分布有重叠的时候成立,更多的时候两个分布并无重叠或重叠部分可忽略(此处涉及到测度论,此处借鉴了网上一篇文章,打算用通俗的讲法来帮助理解):
对于任意一个x,存在以下四种可能:
等于0代表没有重叠,但即使时重叠部分也是忽略不计的因此1、2种情况对JSD无贡献,3、4种情况JSD为常数,而这对梯度下降法来说,梯度为0!因此造成了原文中说到的:Vanishing gradients on the generator的问题。
不重叠或重叠部分可忽略的可能性有多大?文章用测度论及流行学知识进行了详细的证明,总结起来就是一句话:If the two distributions we care about have
supports that are disjoint or lie on low dimensional manifolds, the optimal discriminator will be perfect and its gradient will be zero almost everywhere.
简单介绍几个概念:
支撑集(support):函数的非零部分子集
流形(manifold):高维空间中曲线、曲面概念的拓广。三维空间中的一个曲面是一个二维流形,因为它的本质维度(intrinsic dimension)只有2,一个点在这个二维流形上移动只有两个方向的自由度。同理,三维空间或者二维空间中的一条曲线都是一个一维流形。
测度(measure): 是高维空间中长度、面积、体积概念的拓广,可以理解为“超体积”。
从神经网络角度来看,GAN的生成器一般是从某个低维(比如100维)的随机分布中采样出一个编码向量,再经过一个神经网络生成出一个高维样本(比如64x64的图片就有4096维)。当生成器的参数固定时,生成样本的概率分布虽然是定义在4096维的空间上,但它本身所有可能产生的变化已经被那个100维的随机分布限定了,其本质维度就是100,再考虑到神经网络带来的映射降维,最终可能比100还小,所以生成样本分布的支撑集就在4096维空间中构成一个最多100维的低维流形,“撑不满”整个高维空间。
“撑不满”就会导致真实分布与生成分布难以“碰到面”,这很容易在二维空间中理解:一方面,二维平面中随机取两条曲线,它们之间刚好存在重叠线段的概率为0;另一方面,虽然它们很大可能会存在交叉点,但是相比于两条曲线而言,交叉点比曲线低一个维度,长度(测度)为0,可忽略。三维空间中也是类似的,随机取两个曲面,它们之间最多就是比较有可能存在交叉线,但是交叉线比曲面低一个维度,面积(测度)是0,可忽略。从低维空间拓展到高维空间,就有了如下逻辑:因为一开始生成器随机初始化,所以几乎不可能与
有什么关联,所以它们的支撑集之间的重叠部分要么不存在,要么就比和的最小维度还要低至少一个维度,故而测度为0。所谓“重叠部分测度为0”,就是上文所言“不重叠或者重叠部分可忽略”的意思。
如此就得到了本文的第一个论证:If the two distributions we care about have supports that are disjoint or lie on low dimensional manifolds, the optimal discriminator will be perfect and its gradient will be zero almost everywhere.因为无论与相隔多远,他们的JSD永远是。
接着作者写了很多公式定理从第二个角度进行论证,但是背后的思想也可以直观地解释:
- 首先,与之间几乎不可能有不可忽略的重叠,所以无论它们之间的“缝隙”多狭小,都肯定存在一个最优分割曲面把它们隔开,最多就是在那些可忽略的重叠处隔不开而已。
- 由于判别器作为一个神经网络可以无限拟合这个分隔曲面,所以存在一个最优判别器,对几乎所有真实样本给出概率1,对几乎所有生成样本给出概率0,而那些隔不开的部分就是难以被最优判别器分类的样本,但是它们的测度为0,可忽略。
- 最优判别器在真实分布和生成分布的支撑集上给出的概率都是常数(1和0),导致生成器的loss梯度为0,梯度消失。
有了这些理论分析,原始GAN Training massively unstable的原因也就清晰了:
判别器训练得太好,生成器梯度消失,生成器loss降不下去;判别器训练得不好,生成器梯度不准,四处乱跑。只有判别器训练得不好不坏才行,但是这个火候又很难把握,甚至在同一轮训练的前后不同阶段这个火候都可能不一样,所以GAN才那么难训练。
对于-logD alternative cost function的解释,G的优化目标如下:
优化(6)等价于优化
证明:
因此
公式(10)中最后两项不依赖于生成器。
对于G最终的优化目标(7),最小化KLD的同时要最大化JSD,这就导致梯度不稳定。其次由于KLD的不对称性:
[图片上传失败...(image-2ff6f7-1554050511956)]
](https://upload-images.jianshu.io/upload_images/16432547-6e0a3cb143c6bd41.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
通俗的解释:KL散度的不对称性使得生成器宁可丧失多样性也不愿丧失准确性,导致mode collapse。
文章的第三部分提出了一种解决方式,此处直接引用他人的解释:
原始GAN问题的根源可以归结为两点,一是等价优化的距离衡量(KL散度、JS散度)不合理,二是生成器随机初始化后的生成分布很难与真实分布有不可忽略的重叠。
WGAN前作其实已经针对第二点提出了一个解决方案,就是对生成样本和真实样本加噪声,直观上说,使得原本的两个低维流形“弥散”到整个高维空间,强行让它们产生不可忽略的重叠。而一旦存在重叠,JS散度就能真正发挥作用,此时如果两个分布越靠近,它们“弥散”出来的部分重叠得越多,JS散度也会越小而不会一直是一个常数,于是(在第一种原始GAN形式下)梯度消失的问题就解决了。在训练过程中,我们可以对所加的噪声进行退火(annealing),慢慢减小其方差,到后面两个低维流形“本体”都已经有重叠时,就算把噪声完全拿掉,JS散度也能照样发挥作用,继续产生有意义的梯度把两个低维流形拉近,直到它们接近完全重合。以上是对原文的直观解释。
在这个解决方案下我们可以放心地把判别器训练到接近最优,不必担心梯度消失的问题。而当判别器最优时,对公式9取反可得判别器的最小loss为
其中和分别是加噪后的真实分布与生成分布。反过来说,从最优判别器的loss可以反推出当前两个加噪分布的JS散度。两个加噪分布的JS散度可以在某种程度上代表两个原本分布的距离,也就是说可以通过最优判别器的loss反映训练进程!……真的有这样的好事吗?
并没有,因为加噪JS散度的具体数值受到噪声的方差影响,随着噪声的退火,前后的数值就没法比较了,所以它不能成为和距离的本质性衡量。
原文列出了许多针对加噪方案的证明。加噪方案是针对原始GAN问题的第二点根源提出,加了噪声后训练时就不用担心最优判别器造成的梯度消失的问题,但仍没能够提供一个衡量训练进程的数值指标。而WGAN就从第一点根源出发,用Wasserstein距离代替JS散度,彻底解决了原始GAN存在的问题。
WGAN Contribution(paper2):
1.Does not require maintaining a careful balance in training of the discriminator and the generator, and does not require a careful design of the network architecture either.
2.The mode dropping phenomenon that is typical in GANs is also drastically reduced.
3.One of the most compelling practical benefits of WGANs is the ability to continuously estimate the EM distance by training the discriminator to optimality.
4.解决方式十分简单!
相较原始GAN只做了以下4点改进:
1.D最后一层去掉sigmoid
2.G和D的loss不取log
3.
4.RMSProp(SGD also,不使用基于动量的优化算法:momentum、Adam)
总的来说,WGAN用Wasserstein距离替代了原来的KLD、JSD,它的优越性在于:即使两个分布没有重叠,Wasserstein距离仍能反应它们的距离。(Wasserstein距离本质上为OT距离,比f-divergence的拓扑更弱。在生成模型中,数据的支撑集往往是输入空间的低维流形,所以真实分布和生成分布很可能没有重叠,导致f-divergence这种捕捉分布的概率密度会比距离失效)
The Earth-Mover(EM) distance or Wasserstein-1
其中,表示与的联合分布(因此它们的边缘分布为与。中表示生成样本与真实样本一个可能的联合分布,我们可以对进行采样得到,其中表示真实样本表示生成样本,它们之间的距离为,这样就可计算出该联合分布下样本对距离的期望值。
而Wasserstein距离定义为:在所有可能的联合分布中取上述期望值的下界。Intuitively, indicates how much “mass”
must be transported from x to y in order to transform the distributions
into the distribution . TThe EM distance then is the “cost” of the optimal transport plan.(推土机距离)
Example 1 (Learning parallel lines)
考虑二维空间中两个分布均匀分布和,参数控制着两个分布的距离,则:
从figure1可以看出,Wasserstein距离可以用梯度的方法优化。
Wasserstein GAN
Wasserstein距离有着比JSD,KLD更优越的性质,能否把它定义为生成器的loss?没这么简单,因为Wasserstein距离中的没法直接求解。作者利用Kantorovich-Rubinstein Duality定理将式子做了等价转换:
Kantorovich-Rubinstein Duality
Wasserstein1距离定义为
直观上可以理解成土堆分布到的最少推土代价。表示所有可能的土堆分布,对所有可能分布的其中一个采样, 就表示在中从位置移动的土量到中的位置。令,且,则 em 距离可以内积表示重写为:
,where is the Frobenius inner product (sum of all the element-wise products).这样W1距离就可以转化为线性规划问题
对比线性规划问题:
然而在解实际问题时,随机变量可能有上千个维度,直接计算几乎不可能。
解释:包含在优化约束条件中,无法直接进行梯度下降,因此转化为对偶问题
回到WGAN
首先介绍Lipschitz连续的概念。对于
此时称
因此公式(2)的意思就是要求,
求解公式(2)可以近似变成求解如下形式:
这个式子启发了我们:
最终,D的优化目标为
即参数为
Improved Training of WGAN(WGAN-GP paper3):
WGAN原作中提到:
本文的工作就是一句话:Propose an alternative to clipping weights:penalize the norm of gradient of the critic with respect to its input.
原来的clipping weights并不能保证1-Lipschitz而是K-Lipschitz,而WGAN GP提出了通过施加梯度惩罚来施加1-Lipschitz限制的条件.
The optimal WGAN critic
原文提出了两个推论:
-A differentiable function is 1-Lipschitz if and only if it has gradients with norm less than or equal to 1 everywhere.
即
-has gradient norm 1 almost everywhere under .
注意这里的gradient不是对,而是input对output的gradient,即x对D(x)的gradient。
原优化目标:
(此时WGAN的优化目标是在1-Lipschitz中挑一个函数作为判别器D.)根据上两个推论加入gradient penalty
Improved WGAN
(此时D可以是任意函数,惩罚项能让D倾向于是一个“对输入梯度为1的函数”。但积分在实现的时候无法计算, 所以我们用采样的方法去计算这个惩罚项, 即:
即对任意从采样得到对,均满足。而文章也给了定义,它是和中任意一对点对连线上采样得到对点。即下图蓝色区域:
对那Ppenalty是什么呢,怎么从Ppenalty sample x呢?首先从Pdata sample一个点,再从PG sample一个点,然后在其连线中sample出x,即x是在Pdata 和 PG 之间的区域中sample:
(Only give gradient constraint to the region between
最终,作者将优化目标变成了这样对形式:
直观上理解就是让梯度大于或小于1时都会受到惩罚。 就像在SVM中强调最大类间距离一样, 虽然有多个可以将数据区分开的分类面, 但我们希望找到不但能区分数据, 还能让区分距离最大的那个分类面. 这里这样做的目的是挑出所有满足条件对D中最优的
文章还将用梯度截断学出的D和梯度惩罚学出的D进行了对比:
可以看出梯度截断的
整个算法流程如下:
参考
令人拍案叫绝的Wasserstein GAN
Wasserstein GAN and the Kantorovich-Rubinstein Duality
Wasserstein距离在生成模型中的应用
W-GAN系