从GAN到WGAN再到WGAN-GP

从GAN到WGAN再到WGAN-GP

基本理论知识

  • KL散度:
    KL(p(x)|q(x))=\int p(x)\log \frac{p(x)}{q(x)}dx=E_{x \sim p(x)}\log\frac{p(x)}{q(x)} \tag{1}

  • JS散度:
    JS(P_r,P_g) = 0.5*KL(P_r||P_m)+0.5*KL(P_g||P_m) \tag{2}
    其中P_m = \frac{P_g+P_r}{2}

    • 性质:满足对称性;当两概率为0时,JS=0;当一个为0,另一个不为0时,JS=\log 2
  • Earth-Mover(EM)距离(Wasserstein-1距离)
    W(P_r,P_g)=\inf_{\gamma\in \Pi(P_r,P_g}E_{(x,y)\sim \gamma}[||x-y||] \tag{3}
    其中\Pi(P_r,P_g)表示P_r,P_g组合起来所有可能的联合分布的集合,也就是\Pi(P_r,P_g)中每一个分布的边缘分布都是P_rP_g,这个距离的意义是:(x,y)\sim \gamma中得到一个真实样本x和一个生成样本y,并计算两者之间的距离||x-y||,从而计算该联合分布下样本对距离的期望值E_{(x,y)\sim \gamma}[||x-y||],在所有可能的联合分布中对期望值取下界即为Wasserstein距离

GAN

  • 判别器(discriminator)判断一个样本是真实样本还是生成器生成样本

    生成器(generator)生成样本,并尽量让判别器无法判断是否是生成的

  • 假设:

    • 数据集X上生成器的分布p_g,噪声变量分布p_z(z),并定义将其映射到数据空间的函数G(z;\theta_g)
    • 定义D(x;\theta_d),表示样本x是真实数据,而不是生成样本的概率
  • 目标函数:为了使得D尽可能分离两种样本;同时,为使生成器样本更加无法识别;对于判别器,是一个二分类问题,下述表达就是一个交叉熵;对于生成器来说,要尽可能欺骗D,所以需要最大化D(G(z)),即最小化\log(1-D(G(z)))
    \min_{G}\max_{D}V(D,G) = E_{x\sim p_{data}(x)}[\log D(x)] + E_{z\sim p_z(z)}[\log (1-D(G(z)))] \tag{4}
    但实际中,在初始训练阶段,生成器产生的样本明显与训练集不同,在这种情况下,上述第二项由于内部趋于0会波动,因此,可以将上述版本改为
    \min_{G}\max_{D}V(D,G) = E_{x\sim p_{data}(x)}[\log D(x)] + E_{z\sim p_z(z)}[-\log D(G(z))]

  • 训练过程:

GAN

定理:上述训练过程存在全局最优,即 p_g = p_{data}

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

\begin{eqnarray*} V(G,D) &=& \int_xp_{data}(x)\log D(x)dx +\int_zp_z(z) \log(1-D(G(z)))dz\\ &=& \int_xp_{data}(x)\log D(x) + p_g(x) \log(1-D(x))dx \end{eqnarray*}

上式对于判别器D求导,可知当
D_G^{*}(x)=\frac{p_{data}}{p_{data}+p_g} \tag{6}
上式求得最大值。

此时(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*}
因此,只有当p_g=p_{data}时,此目标函数取得全局最优解

WGAN

本节先介绍GAN的不足之处,而后,WGAN的引入

GAN的问题

  • (4)式的问题:判别器越好,生成器梯度消失越严重

    在GAN中,对于(近似)最优判别器下,最终是要对C(G) = -\log 4+2JS(p_{data}||p_g)求最小,也就是最小化真实分布p_{data}p_g之间的JS散度,但是,求JS散度的话,是需要两个分布有所重叠的时候才能用的,对于两步重叠的分布,或者重叠部分可忽略,JS散度就只能等于\log 2,因为两个分布只有以下这四种情况
    \begin{eqnarray*} p_1(x)=0~~~p_2(x)=0\\ p_1(x)\neq0~~~p_2(x)=0\\ p_1(x)=0~~~p_2(x)\neq0\\ p_1(x)\neq0~~~p_2(x)\neq0\\ \end{eqnarray*}
    在上述情况下,只有第三种和第四种情况下值对JS散度第一项和第二项的对应贡献为\log 2, 第一种无贡献,第二种,由于重叠可忽略,也无贡献,此时,梯度为0!

    定理:p_{data}p_g的支撑集是高维空间的低维流形(manifold)时,p_{data}p_g重叠部分的测度(measure)为0的概率为1

    • 支撑集: 函数非零子集,概率分布的支撑集指所有概率密度非零部分的集合
    • 流形: 高维空间中曲线、曲面概念的拓展,如三维空间曲面是二维流形,因为他的本质维度只有2;同理三维空间或二维空间的曲线是一个一维流形
    • 测度:超体积

    由于p_g往往是从低维空间采样,而后产生一个高维样本,因此第一个条件成立;因此在高维空间两个低维空间"碰面”的概率为0,比如三维空间的两条曲线交叠的可能性为0,即使交叠了也只是一维的点,相对于曲线的概率为0

    从第二个角度论证:因为两个分布的测度为0的概率为1,因此可以找到一个最优分割曲面将其分离,二判别器作为神经网络可以无限拟合这个曲面,所以存在最优曲面,使得对几乎所有真实样本给出概率1,几乎所有生成样本给出概率0;而那些很难以分开的点,由于测度为0,可以忽略;因此,此时对于真实分布和生成分布的支撑集上给出的概率均为常数,因此梯度消失

  • (5)式问题:最小化第二种生成器的函数,等价于最小化一个不合理的距离衡量,会导致梯度不稳定,多样性不足
    \begin{eqnarray*} KL(p_g||p_{data})&=&E_{x\sim p_g}[\log\frac{p_g(x)}{p_{data}(x)}]\\ &=& E_{x\sim p_g}[\log \frac{1-D_G^{*}(x)}{D_{G}^{*}(x)}] \end{eqnarray*}
    因此
    \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(p_g||p_{data}) - 2 JS(p_{data}||p_g) \tag{7}
    这个表达存在两个问题

    • 两个散度都是衡量分布相似性的,一个要拉近,另一个却要推走,明显有矛盾,会导致梯度不稳定
    • KL散度是非对称的,当p_g\rightarrow 0,p_{data}\rightarrow 1时,KL(p_g||p_{data})\rightarrow 0,反过来却是KL(p_g||p_{data}) \rightarrow \infty,直观上理解就是,当生成错误样本时,惩罚是巨大的;但是没生成真实样本的惩罚却很小,这样会导致GAN会产生一些重复且惩罚低的样本,而不会产生多样性的样本,导致惩罚很高

综上,GAN存在两点不合理的地方

  • 生成器初始化的分布与真实分布重叠部分测度为0的概率为1,导致第一个生成器版本的梯度消失
  • 等价优化目标(第二个版本的目标函数)存在不合理的距离度量

解决方案

  • 第一种解决方案是针对重复几乎可以忽略而做的,强行为p_{data}对应的真实样本和p_{g}生成的样本加噪声,使得低维流形更加"扩散",从而产生重叠,此时JS散度不会是常数,于是第一个版本的目标函数梯度消失的问题就会解决;随着重叠程度的增大,JS就会变小,此过程可以对所加的噪声进行退火,当两个分布本体产生重叠时,即使拿掉噪声也可以进行迭代,但是JS散度会受到噪声影响,仍然效果不好。(待补充,文章没看完)

  • 第二种办法则是WGANE_{(x,y)\sim\gamma}[||x-y||]可以理解为\gamma在这个"路径规划"(联合分布)下将p_{data}"移动"到p_g的"消耗",W距离则是要找到最好的一个"路径规划"(联合分布)

    W距离相比于KL散度和JS散度的优越性在于,即使两个分布之间没有重叠,依然可以反映它们的远近

    而由于W距离无法直接求解,作者把他转化成如下形式
    W(p_{data},p_g)=\frac{1}{K}\sup_{||f||_L\leq K}E_{x\sim p_{data}}[f(x)]-E_{x\sim p_g}[f(x)] \tag{8}
    这对于函数f加了一个Lipschitz限制,即对于一个连续函数,存在K\geq 0,定义域内某个区间内导数绝对值的最大值是小于K的,此时K称为Lipschitz常数
    |f(x_1)-f(x_2)|\leq K|x_1-x_2| \tag{9}
    因此(8)指出,满足Lipschitz常数限制的函数f,对所有可能满足条件的f取到式中的上界,并除以此Lipschitz常数,如果将f表示为参数\omega的函数,则可知道
    K W(p_{data},p_g)\approx \sup_{\omega:||f_{\omega}||_L\leq K}E_{x\sim p_{data}}[f_{\omega}(x)]-E_{x\sim p_g}[f_{\omega}(x)] \tag{10}
    因此函数f完全可以用神经网络拟合!而对于K来说,其实他只是指引梯度的大小,并不指引方向,因此作者 直接限制神经网络中所有参数\omega_i不超过某个范围,从而使得K存在,拟合的神经网络可以使得
    L= E_{x\sim p_{data}}[f_{\omega}(x)]-E_{x\sim p_g}[f_{\omega}(x)] \tag{11}
    取得最大值。

    注意,此时,判别器虽然还叫判别器,但是他做的是拟合W距离,因此需要将原本的sigmoid层去掉

    由于第一项与生成器无关,因此,此时两个损失变为了
    \begin{eqnarray*} G\_loss &=& -E_{x\sim p_g}[f_{\omega}(x)]\\ D\_loss &=& E_{x\sim p_{data}}[f_{\omega}(x)]-E_{x\sim p_g}[f_{\omega}(x)] \end{eqnarray*}

    最终对应的算法为

    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, 作者通过下式中第二个来设置限制实现此点
    \begin{eqnarray*} ReLu([||\nabla_xD(x)||_p-K])\\ [||\nabla_xD(x)||_p-K]^2 \end{eqnarray*}
    接着把K简单设为1,再和WGAN原来的判别器loss进行加权合并,得到
    L(D) = -E_{x\sim p_{data}}[D(x)]+E_{x\sim p_g}[D(x)]+\lambda E_{x\sim \mathcal{X}}[||\nabla_x D(x)||_p-1]^2 \tag{12}
    (12)式中存在问题,因为从整个样本空间采样,这样高维空间采样所需数据十分庞大,因此作者的解决方案是,我只针对样本集中区域及夹在它们之间的区域就成了.
    \begin{eqnarray*} &&x_r\sim p_r\\ &&x_g\sim p_g\\ &&\epsilon \sim Uniform[0,1]\\ &&\hat x = \epsilon x_r + (1-\epsilon)x_g\\ \end{eqnarray*}
    假设上述得到的\hat x所得到的分布记为 P_{\hat x},就得到最终版本的判别器loss:
    L(D) = -E_{x\sim p_{data}}[D(x)]+E_{x\sim p_g}[D(x)]+\lambda E_{x\sim P_{\hat x}}[||\nabla_x D(x)||_p-1]^2 \tag{13}
    最终算法实现为

    WGAN-GP

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335