关于WGAN的学习记录

2019-04-01  本文已影响0人  雪俏

关于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的优化目标如下:

\mathbb{E}_{x\sim P_g}[log(1-D(x))]\tag{1}
给公式(1)加一个不依赖于生成器的项:
\mathbb{E}_{x\sim P_r}[logD(x)]+\mathbb{E}_{x\sim P_g}[log(1-D(x))]\tag{2}
因此最小化(2)等价于最小化(1),它正好是loss D的反。代入最优判别器D^*=\frac{P_r(x)}{P_r(x)+P_g(x)}\tag{3}后得到最终要优化的式子为:
min \ \ 2JS(P_r(x)||P_g(x))-2log2\tag{4}JS(P_r(x)||P_g(x))=\mathbb{E}_{x\sim P_r}[log\frac{P_r(x)}{1/2(P_r(x)+P_g(x))}]+\mathbb{E}_{x\sim P_g}[log\frac{P_r(x)}{1/2(P_r(x)+P_g(x))}]\tag{5}
问题就出在JSD上,我们试图通过优化JS散度使P_g接近P_r,但这只在两个初始分布有重叠的时候成立,更多的时候两个分布并无重叠或重叠部分可忽略(此处涉及到测度论,此处借鉴了网上一篇文章,打算用通俗的讲法来帮助理解):
对于任意一个x,存在以下四种可能:
P_1(x)=0 \ and \ P_1(x)=0\ \ \ \ P_1(x)\neq0 \ and \ P_1(x)\neq0\ \ \ \ P_1(x)\neq0 \ and \ P_1(x)=0\ \ \ \ P_1(x)=0 \ and \ P_1(x)\neq0
等于0代表没有重叠,但即使\neq时重叠部分也是忽略不计的因此1、2种情况对JSD无贡献,3、4种情况JSD为常数log2,而这对梯度下降法来说,梯度为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,可忽略。从低维空间拓展到高维空间,就有了如下逻辑:因为一开始生成器随机初始化,所以P_r几乎不可能与P_g
有什么关联,所以它们的支撑集之间的重叠部分要么不存在,要么就比P_rP_g的最小维度还要低至少一个维度,故而测度为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.因为无论P_rP_g相隔多远,他们的JSD永远是log2

接着作者写了很多公式定理从第二个角度进行论证,但是背后的思想也可以直观地解释:

  • 首先,P_rP_g之间几乎不可能有不可忽略的重叠,所以无论它们之间的“缝隙”多狭小,都肯定存在一个最优分割曲面把它们隔开,最多就是在那些可忽略的重叠处隔不开而已。
  • 由于判别器作为一个神经网络可以无限拟合这个分隔曲面,所以存在一个最优判别器,对几乎所有真实样本给出概率1,对几乎所有生成样本给出概率0,而那些隔不开的部分就是难以被最优判别器分类的样本,但是它们的测度为0,可忽略。
  • 最优判别器在真实分布和生成分布的支撑集上给出的概率都是常数(1和0),导致生成器的loss梯度为0,梯度消失。

有了这些理论分析,原始GAN Training massively unstable的原因也就清晰了:

判别器训练得太好,生成器梯度消失,生成器loss降不下去;判别器训练得不好,生成器梯度不准,四处乱跑。只有判别器训练得不好不坏才行,但是这个火候又很难把握,甚至在同一轮训练的前后不同阶段这个火候都可能不一样,所以GAN才那么难训练。

对于-logD alternative cost function的解释,G的优化目标如下:

\mathbb{E}_{x\sim P_g}[-logD(x)]\tag{6}
优化(6)等价于优化KL(P_g||P_r)-2JS(P_r||P_g)\tag{7}
证明:
\begin{split} KL(P_g||P_r)&=\mathbb{E}_{x\sim P_g} [log\frac{P_g(x)/(P_r(x)+P_g(x))}{P_r(x)/(P_r(x)+P_g(x))}]\\ &= \mathbb{E}_{x\sim P_g}[log(1-D^*(x))]-\mathbb{E}_{x\sim P_g}[logD^*(x)] \end{split}\tag{8}

\mathbb{E}_{x\sim P_r}[logD^*(x)]+\mathbb{E}_{x\sim P_g}[log(1-D^*(x))] = 2JS(P_r||P_g)-2log2\tag{9}
因此
\begin{split} \mathbb{E}_{x\sim P_g}[-logD^*(x)]&=KL(P_g||P_r)-\mathbb{E}_{x\sim P_g}[log(1-D^*(x))]\\ =&KL(P_g||P_r)-2JS(P_r||P_g)+2log2+\mathbb{E}_{x\sim P_r}[logD^*(x)] \end{split}\tag{10}
公式(10)中最后两项不依赖于生成器。

对于G最终的优化目标(7),最小化KLD的同时要最大化JSD,这就导致梯度不稳定。其次由于KLD的不对称性:
[图片上传失败...(image-2ff6f7-1554050511956)]
](https://img.haomeiwen.com/i16432547/6e0a3cb143c6bd41.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
通俗的解释:KL散度的不对称性使得生成器宁可丧失多样性也不愿丧失准确性,导致mode collapse。
文章的第三部分提出了一种解决方式,此处直接引用他人的解释:

原始GAN问题的根源可以归结为两点,一是等价优化的距离衡量(KL散度、JS散度)不合理,二是生成器随机初始化后的生成分布很难与真实分布有不可忽略的重叠。
WGAN前作其实已经针对第二点提出了一个解决方案,就是对生成样本和真实样本加噪声,直观上说,使得原本的两个低维流形“弥散”到整个高维空间,强行让它们产生不可忽略的重叠。而一旦存在重叠,JS散度就能真正发挥作用,此时如果两个分布越靠近,它们“弥散”出来的部分重叠得越多,JS散度也会越小而不会一直是一个常数,于是(在第一种原始GAN形式下)梯度消失的问题就解决了。在训练过程中,我们可以对所加的噪声进行退火(annealing),慢慢减小其方差,到后面两个低维流形“本体”都已经有重叠时,就算把噪声完全拿掉,JS散度也能照样发挥作用,继续产生有意义的梯度把两个低维流形拉近,直到它们接近完全重合。以上是对原文的直观解释。
在这个解决方案下我们可以放心地把判别器训练到接近最优,不必担心梯度消失的问题。而当判别器最优时,对公式9取反可得判别器的最小loss为
\begin{split} min L_D(P_{r+\epsilon},P_{g+\epsilon})&=-\mathbb{E}_{x\sim P_{r+\epsilon}} [logD^*(x)]-\mathbb{E}_{x\sim P_{g+\epsilon}} [log(1-D^*(x))]\\ &=2log2 -2JS(P_{r+\epsilon},P_{g+\epsilon}) \end{split}
其中P_{r+\epsilon}P_{g+\epsilon}分别是加噪后的真实分布与生成分布。反过来说,从最优判别器的loss可以反推出当前两个加噪分布的JS散度。两个加噪分布的JS散度可以在某种程度上代表两个原本分布的距离,也就是说可以通过最优判别器的loss反映训练进程!……真的有这样的好事吗?
并没有,因为加噪JS散度的具体数值受到噪声的方差影响,随着噪声的退火,前后的数值就没法比较了,所以它不能成为P_rP_g距离的本质性衡量。

原文列出了许多针对加噪方案的证明。加噪方案是针对原始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.解决方式十分简单!

WGAN算法截图
相较原始GAN只做了以下4点改进:
1.D最后一层去掉sigmoid
2.G和D的loss不取log
3.

从figure1可以看出,Wasserstein距离可以用梯度的方法优化。

Wasserstein GAN

Wasserstein距离有着比JSD,KLD更优越的性质,能否把它定义为生成器的loss?没这么简单,因为Wasserstein距离中的\inf_{\gamma\in\Pi(\mathbb{P}_r,\mathbb{P}_g)}没法直接求解。作者利用Kantorovich-Rubinstein Duality定理将式子做了等价转换:
W(\mathbb{P}_r,\mathbb{P}_g)=\frac{1}{K}\sup _{||f||_L\leqslant K}\mathbb{E}_{x\sim P_r}[f(x)]-\mathbb{E}_{x\sim P_g}[f(x)]\tag{2}
Kantorovich-Rubinstein Duality
Wasserstein1距离定义为W(\mathbb{P}_r,\mathbb{P}_g)=\inf_{\gamma\in\Pi(\mathbb{P}_r,\mathbb{P}_g)}\mathbb{E}_{(x,y)\sim \gamma}[||x-y||]\tag{1}
直观上可以理解成土堆分布P_gP_r的最少推土代价。\Pi(\mathbb{P}_r,\mathbb{P}_g)表示所有可能的土堆分布,对所有可能分布的其中一个采样\gamma\gamma(x,y) 就表示在P_r中从x位置移动\gamma(x,y)的土量到P_g中的y位置。令\Gamma=\gamma(x,y),D=||x-y||,且\Gamma,D\in R^{l\times l},则 em 距离可以内积表示重写为:
EMD(\mathbb{P}_r,\mathbb{P}_g)=\inf_{\gamma\in\Pi(\mathbb{P}_r,\mathbb{P}_g)}<\Gamma,D>_F\tag{3},where<,>_F is the Frobenius inner product (sum of all the element-wise products).这样W1距离就可以转化为线性规划问题


对比线性规划问题:

然而在解实际问题时,随机变量可能有上千个维度,直接计算几乎不可能。

解释:P_\theta包含在优化约束条件中,无法直接进行梯度下降,因此转化为对偶问题

回到WGAN
首先介绍Lipschitz连续的概念。对于
(Only give gradient constraint to the region between
可以看出梯度截断的 Improved WGAN.png

参考

令人拍案叫绝的Wasserstein GAN
Wasserstein GAN and the Kantorovich-Rubinstein Duality
Wasserstein距离在生成模型中的应用
W-GAN系

上一篇 下一篇

猜你喜欢

热点阅读