从GAN到WGAN再到WGAN-GP
从GAN到WGAN再到WGAN-GP
基本理论知识
-
KL散度:
-
JS散度:
其中- 性质:满足对称性;当两概率为0时,JS=0;当一个为0,另一个不为0时,
-
Earth-Mover(EM)距离(Wasserstein-1距离)
其中表示组合起来所有可能的联合分布的集合,也就是中每一个分布的边缘分布都是和,这个距离的意义是:从中得到一个真实样本x和一个生成样本y,并计算两者之间的距离,从而计算该联合分布下样本对距离的期望值,在所有可能的联合分布中对期望值取下界即为Wasserstein距离
GAN
-
判别器(discriminator)判断一个样本是真实样本还是生成器生成样本
生成器(generator)生成样本,并尽量让判别器无法判断是否是生成的
-
假设:
- 数据集X上生成器的分布,噪声变量分布,并定义将其映射到数据空间的函数
- 定义,表示样本x是真实数据,而不是生成样本的概率
-
目标函数:为了使得D尽可能分离两种样本;同时,为使生成器样本更加无法识别;对于判别器,是一个二分类问题,下述表达就是一个交叉熵;对于生成器来说,要尽可能欺骗D,所以需要最大化D(G(z)),即最小化
但实际中,在初始训练阶段,生成器产生的样本明显与训练集不同,在这种情况下,上述第二项由于内部趋于0会波动,因此,可以将上述版本改为
-
训练过程:
定理:上述训练过程存在全局最优,即
- 首先计算对于任意给定生成器G,对应的最优判别器D
上式对于判别器D求导,可知当
上式求得最大值。
此时(4)可以重新写为(因为对于任意给定G,均可求出对应的最优的D,因此(1)变为关于D求最大值)
因此,只有当时,此目标函数取得全局最优解
WGAN
本节先介绍GAN的不足之处,而后,WGAN的引入
GAN的问题
-
(4)式的问题:判别器越好,生成器梯度消失越严重
在GAN中,对于(近似)最优判别器下,最终是要对求最小,也就是最小化真实分布与之间的JS散度,但是,求JS散度的话,是需要两个分布有所重叠的时候才能用的,对于两步重叠的分布,或者重叠部分可忽略,JS散度就只能等于,因为两个分布只有以下这四种情况
在上述情况下,只有第三种和第四种情况下值对JS散度第一项和第二项的对应贡献为, 第一种无贡献,第二种,由于重叠可忽略,也无贡献,此时,梯度为0!定理:与的支撑集是高维空间的低维流形(manifold)时,与重叠部分的测度(measure)为0的概率为1
- 支撑集: 函数非零子集,概率分布的支撑集指所有概率密度非零部分的集合
- 流形: 高维空间中曲线、曲面概念的拓展,如三维空间曲面是二维流形,因为他的本质维度只有2;同理三维空间或二维空间的曲线是一个一维流形
- 测度:超体积
由于往往是从低维空间采样,而后产生一个高维样本,因此第一个条件成立;因此在高维空间两个低维空间"碰面”的概率为0,比如三维空间的两条曲线交叠的可能性为0,即使交叠了也只是一维的点,相对于曲线的概率为0
从第二个角度论证:因为两个分布的测度为0的概率为1,因此可以找到一个最优分割曲面将其分离,二判别器作为神经网络可以无限拟合这个曲面,所以存在最优曲面,使得对几乎所有真实样本给出概率1,几乎所有生成样本给出概率0;而那些很难以分开的点,由于测度为0,可以忽略;因此,此时对于真实分布和生成分布的支撑集上给出的概率均为常数,因此梯度消失
-
(5)式问题:最小化第二种生成器的函数,等价于最小化一个不合理的距离衡量,会导致梯度不稳定,多样性不足
因此
由于后两项与生成器G无关,因此第二项等价于最小化
这个表达存在两个问题:- 两个散度都是衡量分布相似性的,一个要拉近,另一个却要推走,明显有矛盾,会导致梯度不稳定
- KL散度是非对称的,当时,,反过来却是,直观上理解就是,当生成错误样本时,惩罚是巨大的;但是没生成真实样本的惩罚却很小,这样会导致GAN会产生一些重复且惩罚低的样本,而不会产生多样性的样本,导致惩罚很高
综上,GAN存在两点不合理的地方
- 生成器初始化的分布与真实分布重叠部分测度为0的概率为1,导致第一个生成器版本的梯度消失
- 等价优化目标(第二个版本的目标函数)存在不合理的距离度量
解决方案
-
第一种解决方案是针对重复几乎可以忽略而做的,强行为对应的真实样本和生成的样本加噪声,使得低维流形更加"扩散",从而产生重叠,此时JS散度不会是常数,于是第一个版本的目标函数梯度消失的问题就会解决;随着重叠程度的增大,JS就会变小,此过程可以对所加的噪声进行退火,当两个分布本体产生重叠时,即使拿掉噪声也可以进行迭代,但是JS散度会受到噪声影响,仍然效果不好。(待补充,文章没看完)
-
第二种办法则是WGAN,可以理解为在这个"路径规划"(联合分布)下将"移动"到的"消耗",W距离则是要找到最好的一个"路径规划"(联合分布)
W距离相比于KL散度和JS散度的优越性在于,即使两个分布之间没有重叠,依然可以反映它们的远近
而由于W距离无法直接求解,作者把他转化成如下形式
这对于函数f加了一个Lipschitz限制,即对于一个连续函数,存在,定义域内某个区间内导数绝对值的最大值是小于K的,此时K称为Lipschitz常数
因此(8)指出,满足Lipschitz常数限制的函数f,对所有可能满足条件的f取到式中的上界,并除以此Lipschitz常数,如果将f表示为参数的函数,则可知道
因此函数f完全可以用神经网络拟合!而对于K来说,其实他只是指引梯度的大小,并不指引方向,因此作者 直接限制神经网络中所有参数不超过某个范围,从而使得K存在,拟合的神经网络可以使得
取得最大值。注意,此时,判别器虽然还叫判别器,但是他做的是拟合W距离,因此需要将原本的sigmoid层去掉。
由于第一项与生成器无关,因此,此时两个损失变为了
最终对应的算法为
WGAN
总结下来,相比于GAN,WGAN的改进有以下几点
- 判别器最后一层去掉sigmoid
- 生成器和判别器中的loss不取对数
- 每次更新判别器的参数,将他们的绝对值截断到不超过一个固定常数c
- 不用基于动量的优化算法(momentum Adam),推荐采用RMSProp,SGD也可以(作者实验发现Adam等基于动量的优化算法梯度不稳定)
WGAN-GP
-
WGAN仍然weight clipping的实现方式存在两个严重的问题:
- 判别器的loss希望尽可能拉大真假样本的分数差,实验发现基本上最终权重集中在两端,这样参数的多样性减少,会使判别器得到的神经网络学习一个简单的映射函数,是巨大的浪费
- 很容易导致梯度消失或者梯度爆炸,若把clipping threshold设的较小,每经过一个网络,梯度就会变小,多级之后会成为指数衰减;反之,较大,则会使得指数爆炸.这个平衡区域可能很小
-
WGAN_GP引入了gradient penalty,WGAN的限制是让判别器的梯度不超过K, 作者通过下式中第二个来设置限制实现此点
WGAN-GP
接着把K简单设为1,再和WGAN原来的判别器loss进行加权合并,得到
(12)式中存在问题,因为从整个样本空间采样,这样高维空间采样所需数据十分庞大,因此作者的解决方案是,我只针对样本集中区域及夹在它们之间的区域就成了.
假设上述得到的所得到的分布记为 ,就得到最终版本的判别器loss:
最终算法实现为
本文主要参考 https://zhuanlan.zhihu.com/p/25071913
https://www.zhihu.com/question/52602529/answer/158727900