Wasserstein GAN - Part 1. proof of GAN shortages

Wasserstein GAN and GAN shortages

Wasserstein GAN - Part 1. proof of GAN shortages
Photo by DeepMind / Unsplash

WGAN全称Wasserstein GAN,通过严谨的计算以及证明指出了GAN一直存在的几个问题,而不是跟着一起内卷模型(My model is better than yours)。在我心中是属于偶像级别的文章了。虽然非数学专业且学高数的路子比较野看的非常痛苦,找了很多其他人的资料算是基本上弄明白了,把自己的一些理解分享一下

\[K_{2}=z_{k}+\frac{h}{2}L_{1},&L_{2}=f\left(x_{k}+\frac{h}\]

传统 GAN的问题

训练最终结果的问题

在gan-Goodfellow中我们能否达到全局最优解使\(P_g = P_{data}\)?

要使模型达到全局最优解,那么意味着D = D *。但WGAN的作者在第一篇论文中证明这是不可能的

如果D为最优判别器的话 (D = D*)

Part.1

\(P_r\)(数据集分布的支撑集,因为数据集分布是从-∞到+∞的,我们只能分开它们的支撑集)是高维空间的低维流形(比现实空间维度小)

x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}

$$[f(D*) = \int_xP_{data}\log(\frac{2p_{data}(x)}{p_{data}(x)+p_g(x)}-\log2)dx + p_g(x)\log(\frac{2p_g(x)}{p_{data}(x)+p_g(x)}-\log2)dx\ -\log4+D_{KL}(P_{data}||\frac{P_{data}+P_{g}}{2})+D_{KL}(P_{g}||\frac{P_{data}+P_{g}}{2})\= -\log4+2JSD(P_{data}||P_g)$$

生成图像的分布在真实空间中的测度为零(也是高维空间的低维流形)

如果这两个数据集之间没有交集,我们总能找到一个判别器将他们完全分开(最优判别器)

Part.2

如果这两个数据集相交(作者证明了两个数据集不相切的概率可以看作1),由于这两个数据集都是高维空间的低维流形,他们的交集也应该是一个低维流形,在高维空间的测度为零

那我们从交集测度为零的方向来划分,我们仍然能够将这两个数据集分开

Part.3

通过推导得到如果这两个支撑集能够分开,那么这两个数据集的JSD散度是$\log2$。这就意味着如果我们的判别器达到了最优判别器,梯度其实是为零的,就是说模型是什么也学不到了

\[f(D*) = \int_xP_{data}\log(\frac{2p_{data}(x)}{p_{data}(x)+p_g(x)}-\log2)dx + p_g(x)\log(\frac{2p_g(x)}{p_{data}(x)+p_g(x)}-\log2)dx\ -\log4+D_{KL}(P_{data}||\frac{P_{data}+P_{g}}{2})+D_{KL}(P_{g}||\frac{P_{data}+P_{g}}{2})\= -\log4+2JSD(P_{data}||P_g)\]

补充

关于 $log2$ 是怎么推出来的

由于D为最优判别器,我们已经将$P_{data}$和$P_g$的支撑集完全分开了,所以它们的积分也能被分开,同时在data的数据分布中g的数据分布可以看作0,反之亦然。换成0消掉就得到$log2$了

概率分布在自己的支撑集上积分为1
$$
f(D) = \int P_{data}\log(\frac{2p_{data}(x)}{p_{data}(x)+p_g(x)}-\log2)dx + \int p_g(x)\log(\frac{2p_g(x)}{p_{data}(x)+p_g(x)}-\log2)dx\
= -\log4+\int_{x\in{M}} P_{data}\log(\frac{2p_{data}(x)}{p_{data}(x)+p_g(x)})dx + \int_{x\in{P}} p_g(x)\log(\frac{2p_g(x)}{p_{data}(x)+p_g(x)})dx
$$

训练过程中的问题

如果在训练的过程中D→D*呢?

回到GAN的公式
\[\min_G\max_DV(D, G)= \mathbb{E}{x\sim{p}{data}(x)}[\log{D}(x)] + \mathbb{E}{z\sim{p}{z}(z)}[\log{(1-D(G(z)))}]\]
原始用于训练的loss函数 $\mathbb{E}{z\sim{P_z}}[\log(1-D(G(z))]$ 在第一部分也提到过如果D→D*,loss函数会越来越趋近于0,意味着随着discriminator不断地变好,模型越来越难训练,所以我们有新的loss函数 $\mathbb{E}{z\sim{P_z}}[-\log D(G(z)]$

但论文的作者指出这个函数的梯度等价于$KL(P_g||P_r) - JSD(P_g||P_r)$

这样就出现了一个非常严重的问题:

问题一

我们希望训练的梯度能够较大,那么我们便期望KL散度增大,JS散度减小。但是无论是KL散度还是JS散度它们描述的都是同一个物理量的度量,所以它们应当是同时增大或者减小的。这就说明我们的回归方案本身就出现了问题。在实际的训练过程中也能看到结果是一直在震荡的。

问题二

对于上述梯度中的KL散度$KL(P_g||P_r) = \int_xP_g\log\frac{P_g}{P_r}dx$

在这个式子中可以看到,如果$P_g \rightarrow Pr$的话KL散度就越趋近于0,这样的话损失函数就会非常小,更糟糕的是,一旦生成的结果和原数据差的很大,将会给予一个巨大的损失值,所以模型一旦偶然生成了一个和原数据很像的图片,后面的结果就会争先恐后地往那边靠。而之后稍微进行创新导致和原数据差别增大,就会被劈头盖脸一顿痛骂。这就导致模型不敢去创新(创新成本太高了)。

*因为惩罚的判别方式有问题导致不敢创新,真是讽刺

补充

Mode collapse

mode collapse指的是GAN训练时可能出现的一种现象。具体来说,给定了一个z,当z发生变化的时候,对应的G(z)没有变化,那么在这个局部,GAN就发生了mode collapse,也就是不能产生连续变化的样本,从而样本多样性不足。

以上次的GAN生成手写数字为例:

inter collapse:

生成的种类很少,比如生成的数字基本只有0, 1, 7, 9

inner collapse:

生成的数字几乎相同,比如生成的所有1基本都长得一样

总结

在WGAN第一篇文章中作者根据严谨的数学推导,指出了GAN效果不好的原因。否定了GAN战术(使用KL或者JS散度)方面的结果,但仍然保留了战略方面的看法即用分布进行回归。