GAN的统一架构与WGAN

原创 2017年05月22日 20:56:03

这里写图片描述

GAN是让机器自动生成PG去接近Pdata。算法的关键是衡量分布PG,Pdata的差异,不同的衡量办法得到的V(G,D)不同,但是所有的衡量方法都可以归纳到一个统一的框架中:利用f-divergence衡量两个分布差异,利用Fenchel Conjugate将两个分布差异的问题转化到GAN的大框架中。
而近段异常流行的WGAN,便是将两个分布的差异用Earch Mover Distance衡量,然后用weight clippinggradient penalty优化梯度计算,取得了非常好的效果。

原始GAN

原始GAN的演算法如下,通过discriminator的loss与js divergence相关联。

这里写图片描述

统一架构

f divergence

衡量两个分布的差距有多种方法,这些方法基本上都属于同一个架构f divergence。如下,Df(P||Q)通过包含f函数的积分评估了两个分布的差异:

Df(P||Q)=xq(x)f(p(x)q(x))dx

f函数满足的条件如下(满足这样的条件,Df(P||Q)的最小值当且仅当两个分布完全相同时为0):

  • f是凸hanshu
  • f(1)=0

不同的f函数会得到不同的divergence,但是都属于f divergence这个大框架中,区别只是f函数的不同。

这里写图片描述

fenchel conjugate

每一个凸函数f,都有与其conjugate的函数ff的定义如下:

这里写图片描述

举例如下:

这里写图片描述

connect with gan

那么一个问题随之而来:f divergence以及fenchel conjugate与GAN到底有什么联系呢?

首先,f divergence提供了一种度量两个分布差异的方式;然而,f divergence需要知道pdf,生成分布的pdf不容易得到;这时候通过f的fenchel conjugate对原来的差异公式进行变换,引入额外的变量D(也就是discriminator),转化成找到令值最大的D的问题,最终化成GAN类似的形式。具体化简过程如下:

这里写图片描述

这里写图片描述

总的来说,f divergence以及fenchel conjugate的价值在于:构建了两个分布的f divergence,通过fenchel conjugate将divergence转化为maxDV(G,D)的问题,自然而然地与GAN关联了起来。

其他

GAN的训练在原始paper中是两次循环,f-divergence的paper中是一次循环。

这里写图片描述

不同的f函数得到的分布差异也不一样,如下:

这里写图片描述

KLD与JSD相比,对多分布的拟合效果较好:

这里写图片描述

WGAN

介绍

前面介绍了用f-divergence去度量两个分布的差异,WGAN与传统GAN的区别就是度量分布差异的方式不同。WGAN使用了earth mover's distance,顾名思义,就是把一个分布变成另外一个分布需要花的力气。earth mover's distance的定义如下:

这里写图片描述

优势

WGAN的优势,主要在于earth mover's distanceearth mover's distance相比js divergence的优点是:当两个分布没有接触的时候,不管距离远近,js divergence的度量都是相同的,而earth mover's distance会考虑到两个分布的距离到底有多远,这样在训练的时候便更容易训练。

如果不使用WGAN,通常的做法是给分布加噪声,让分布有重叠,这样才更容易去训练。

这里写图片描述

因此,WGAN可以部分解决生成模型的评价问题,可以利用earth mover's distance来监控模型的好坏(更多处于实际操作方面而非理论loss)。

这里写图片描述

weight clipping

使用earth mover's distance后,WGAN度量分布差异的公式如下:

这里写图片描述

Lipschitz Function限制条件的作用是:一方面给D(x)加一些控制,不让它任意变大变小,否则都变成无穷值就没有意义了;另一方面限制D(x)的增长速度,提供足够的梯度保证,如下图:

这里写图片描述

那么问题来了,如何保证D(x)满足Lipschitz Function限制条件呢?
原始的WGAN采用了weight clipping方法,其思路是限制参数的梯度值在一定范围内,这样便通过倒数限制了D(x)的增长速度。这种方法的缺点是c值不好确定。

这里写图片描述

完整的算法如下:
这里写图片描述

gradient penalty

之前Lipschitz Function限制条件通过weight clipping解决,这里借助Lipschitz Function的梯度小于等于1的条件,增加过大梯度的惩罚项,具体如下:

这里写图片描述

这里写图片描述

这里写图片描述

F-散度(F-divergence)

在概率统计中,f散度是一个函数,这个函数用来衡量两个概率密度p和q的区别,也就是衡量这两个分布多么的相同。 1.f散度的定义 p和q是同一个空间中的两个概率密度函数,它们之间的f散度可以用如下方程表示...
  • UESTC_C2_403
  • UESTC_C2_403
  • 2017-07-16 18:25:31
  • 1747

GAN框架研究与思路整理

本文内容将着重分析当前GAN原理及其应用场景,比对其相对于传统深度学习方法在图像生成等方面的区别 一、原始GAN原理           原始GAN论文中的思想为生成模型与判别模型间的零和博弈,通过对...
  • a294271433
  • a294271433
  • 2017-03-11 16:48:15
  • 1925

生成对抗网络-GAN

生成对抗网络-GAN 1. GAN基础 2. 深度 GAN 3. 条件 GAN 4. Info GAN 5. Wasserstein GAN
  • Koala_Tree
  • Koala_Tree
  • 2017-09-01 15:59:41
  • 1571

深度学习系列(1)——初探GAN和W-GAN

GAN(Generative Adversarial Networks)容易被名字迷惑理解为某种新型的神经网络,其实GAN是一种组合神经网络达到自己的目的的“思想”或者“框架”,“思想”就是对抗。如果...
  • fenmi8378
  • fenmi8378
  • 2017-07-10 14:45:34
  • 378

Wasserstein GAN (WGAN)两篇论文的中文详细介绍

自从2014年Ian Goodfellow提出以来,GAN就存在着训练困难、生成器和判别器的loss无法指示训练进程、生成样本缺乏多样性等问题。Wasserstein GAN(下面简称WGAN)成功地...
  • xyj1536214199
  • xyj1536214199
  • 2017-02-15 19:11:44
  • 8385

GAN——WGAN

GAN存在着以下问题: 训练困难 训练不稳定,需要小心地平衡生成器和判别器的训练程度 生成器和判别器的loss无法指示训练进程 没有可以用来指示训练进程的损失函数,该函数值越小表明GAN训练得越好...
  • VictoriaW
  • VictoriaW
  • 2017-02-22 15:36:19
  • 4731

WGAN介绍

WGAN GAN
  • sinat_36166320
  • sinat_36166320
  • 2017-03-13 11:06:57
  • 1806

旋度定理(Curl Theorem)和散度定理(Divergence theorem)

首先说说格林公式(Green's theorem)。对于一段封闭曲线,若其围城的区域D为单连通区域(内部任意曲线围城的区域都属于院区域),则有如下公式: 其中其中L为D的边界,取正方向。如果沿着...
  • wangxiaojun911
  • wangxiaojun911
  • 2013-12-06 22:31:46
  • 23269

python 3计算KL散度(KL Divergence)

KL DivergenceKL( Kullback–Leibler) Divergence中文译作KL散度,从信息论角度来讲,这个指标就是信息增益(Information Gain)或相对熵(Rela...
  • hfut_jf
  • hfut_jf
  • 2017-05-08 10:25:56
  • 2972

Bregman divergence

Bregman divergenceBregman 散度(Bregman divergence or divergence distance)是一种类似于距离度量的方式,用于衡量两者之间的差异大小。定...
  • zhangyalin1992
  • zhangyalin1992
  • 2015-06-28 19:53:53
  • 3285
收藏助手
不良信息举报
您举报文章:GAN的统一架构与WGAN
举报原因:
原因补充:

(最多只允许输入30个字)