从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会波动,因此,可以将上述版本改为

  • 训练过程:

GAN

定理:上述训练过程存在全局最优,即

  • 首先计算对于任意给定生成器G,对应的最优判别器D

上式对于判别器D求导,可知当

上式求得最大值。

此时(4)可以重新写为(因为对于任意给定G,均可求出对应的最优的D,因此(1)变为关于D求最大值)
\begin{eqnarray*} C(G) &=& \max_{D} V(G,D)\\ &=& E_{x\sim p_{data}}[\log D_G^{*}(x)] + E_{x\sim p_g}[1-\log D_G^{*}(x)]\\ &=& E_{x\sim p_{data}}[\frac{p_{data}(x)}{p_{data}(x)+p_g(x)}] + E_{x\sim p_g}[\frac{p_{g}(x)}{p_{data}(x)+p_g(x)}]\\ &=& -\log 4 +KL(p_{data}||\frac{p_{data}+p_g}{2})+KL(p_g||\frac{p_{data}+p_g}{2})\\ &=& -\log 4 + 2 JS(p_{data}||p_g) \end{eqnarray*}
因此,只有当时,此目标函数取得全局最优解

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)式问题:最小化第二种生成器的函数,等价于最小化一个不合理的距离衡量,会导致梯度不稳定,多样性不足

    因此
    \begin{eqnarray*} E_{x\sim p_g}[-\log D_{G}^{*}(x)] &=& KL(p_g||p_{data})-E_{x\sim p_g}\log[1-D^*_{G}(x)]\\ &=& KL(p_g||p_{data}) - 2 JS(p_{data}||p_g) + \log 4 + E_{x\sim p_{data}}[\log D_G^{*}(x)] \end{eqnarray*}
    由于后两项与生成器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, 作者通过下式中第二个来设置限制实现此点

    接着把K简单设为1,再和WGAN原来的判别器loss进行加权合并,得到

    (12)式中存在问题,因为从整个样本空间采样,这样高维空间采样所需数据十分庞大,因此作者的解决方案是,我只针对样本集中区域及夹在它们之间的区域就成了.

    假设上述得到的所得到的分布记为 ,就得到最终版本的判别器loss:

    最终算法实现为

    WGAN-GP

本文主要参考 https://zhuanlan.zhihu.com/p/25071913
https://www.zhihu.com/question/52602529/answer/158727900

你可能感兴趣的:(从GAN到WGAN再到WGAN-GP)