Wasserstein GAN

摘要:
WGAN的论文指出,原始GAN的JS和KL散度的损失很容易导致发电机梯度的消失。他们提出了一个新的损失函数,瓦瑟斯坦距离,这在很大程度上解决了GAN训练困难的问题。原始GAN损失函数的缺陷当两个分布之间的重叠非常小,或者当两个分配的概率密度同时大于0时,随着分布的接近,整个分布的比例几乎为零(无穷小,但不是零),用于测量分布之间差异的KL和JS散度几乎不变,即梯度

  WGAN论文指出,原始GAN以JS、KL散度作为损失容易导致生成器梯度消失,他们提出了一种新的损失函数——Wasserstein 距离,很大程度上解决了GAN训练难的问题。

原始GAN的损失函数的缺陷

  当两个分布之间重叠很小,或者说,两个分布的概率密度同时大于0的区域在整个分布的占比几乎为0时(无穷小,但还不是0),随着分布之间的靠拢,用于衡量分布之间差异的KL、JS散度几乎没有变化,也就是梯度十分小。而真实分布与生成分布在训练开始时的重叠就是十分小的(证明要用到拓扑学和测度论,直观理解请看后面的知乎链接),并且由于我们只能用部分样本代替真实分布与生成分布来训练,这种情况就更加严重了,从而解释了生成器训练时梯度消失的问题。

  论文举了个简单的例子用于理解。如下图所示,$P_1,P_2$表示两个二维空间中的均匀分布:

Wasserstein GAN第1张

  如果我们要将$P_1$移动到$P_2$,就要计算两个分布之间的差异,然后再计算梯度来减小差异。下面分别以KL散度、JS散度和Wasserstein 距离作为差异指标,计算得到:

egin{equation*} egin{aligned} &KL(P_1||P_2) = KL(P_2||P_1) = left{ egin{aligned} &+infty,& heta e 0\ &0,& heta = 0 end{aligned} ight.\ &JS(P_1||P_2) = left{ egin{aligned} &log 2,& heta e 0\ &0,& heta = 0 end{aligned} ight. \ &W(P_1,P_2) = | heta| end{aligned} end{equation*}

  看得出,KL、JS散度的梯度是0,没法训练。而Wasserstein距离则计算出一个符合常识的距离指标,可以计算梯度控制$P_1$向$P_2$靠近。

  当然以上只是简单的举例,你一眼就能看出$P_1,P_2$之间的距离用$ heta$表示更合理。下面开始具体介绍Wasserstein 距离,以及以它为损失函数的WGAN。

Wasserstein距离与WGAN

  Wasserstein距离又叫Earth-Mover(EM)距离。对于真实分布$P_r$和生成分布$P_g$,Wasserstein距离$W(P_r,P_g)$定义如下:

egin{equation} egin{aligned} W(P_r,P_g) = inflimits_{gammasimPi(P_r,P_g)}mathbb{E}_{(x,y)simgamma}left(||x-y|| ight) end{aligned} end{equation}

  其中$Pi(P_r,P_g)$表示$P_r$和$P_g$组合起来的所有可能的联合分布的集合,集合中的每个联合分布的边缘分布都为$P_r$和$P_g$。对于每一个可能的联合分布$gamma$而言,可以从中采样$(x,y)sim gamma$得到一个真实样本$x$和一个生成样本$y$,并算出这对样本的距离$||x-y||$,所以可以计算该联合分布$gamma$下样本对距离的期望值$mathbb{E}_{(x,y)simgamma}left(||x-y|| ight)$。而在所有可能的联合分布中能够对这个期望值取到的下界$inflimits_{gammasimPi(P_r,P_g)}mathbb{E}_{(x,y)simgamma}left(||x-y|| ight)$,就定义为Wasserstein距离。

  Wasserstein距离是比JS、KL散度在定义上更弱的差异评估标准,即便两个分布没有重叠,Wasserstein距离仍然能够反映它们的远近。但是上面的定义是不能用作GAN的损失的,于是论文用了一个已有的定理把它变换为如下形式(推导过程用到了拓扑学和测度论,先挖个坑,以后学了再回来填):

egin{equation} egin{aligned} W(P_r,P_g) =  frac{1}{K}suplimits_{|f|_Lle K}mathbb{E}_{xsim P_r}[f(x)] -mathbb{E}_{xsim P_g}[f(x)] end{aligned} end{equation}

  其中$|f|_Lle K$表示,对于常数$K$,连续函数$f$定义域内的任意两个元素$x_1$和$x_2$都应满足

egin{equation} egin{aligned}|f(x_1)-f(x_2)|le K|x_1-x_2|end{aligned} end{equation}

  定义域为实数域时,上式所表达的就是$|f'(x)|le K$。这个限制叫Lipschitz连续。为了可以在神经网络中应用,进一步近似变换$(2)$式为如下形式

egin{equation} egin{aligned} K cdot W(P_r,P_g) approx maxlimits_{w:|f_w|_Lle K}mathbb{E}_{xsim P_r}[f_w(x)] -mathbb{E}_{xsim P_g}[f_w(x)] end{aligned} end{equation}

  将所有可能的函数,用一个带参数的函数来表示,通过改变参数来表示这些可能的函数。虽然不能囊括所有可能,但也足以高度近似$(2)$式了。这样一来,判别器就可以定义为$f_w$。而对于公式中的Lipschitz连续限制,论文则是直接将判别器的所有参数$w_i$限制在某个范围$[-c,c]$内。因为我们其实无需关心具体的K是多少,它只是会使得梯度变大$K$倍,并不影响梯度的方向。

  综上,判别器做的事就是优化判别器参数,来计算真实分布与生成分布之间的Wasserstein距离,也就是最大化$(4)$式。损失函数如下:

egin{equation} egin{aligned}L(w)= -mathbb{E}_{xsim P_r}[f_w(x)] +mathbb{E}_{xsim P_g}[f_w(x)] end{aligned} end{equation}

  而生成器做的事则是优化生成器的参数,最小化真实分布与生成分布之间的Wasserstein距离,也就是最小化$(4)$式。忽略生成器参数的无关项,损失函数如下:

egin{equation} egin{aligned}L( heta)= -mathbb{E}_{xsim P_g}[f_w(x)] end{aligned} end{equation}

  生成器参数$ heta$控制生成分布$P_g$。

  WGAN优化式写成最小最大的形式如下:

egin{equation} egin{aligned}   minlimits_{ heta:P_g}maxlimits_{w:|f_w|_Lle K}mathbb{E}_{xsim P_r}[f_w(x)] -mathbb{E}_{xsim P_g}[f_w(x)] end{aligned} end{equation}

  论文中训练WGAN的算法如下:

Wasserstein GAN第2张

  总的来说,尽管上面写了一大通,WGAN对原始GAN做出的实际改进十分简洁,只有四点:

  1、判别器输出层去掉sigmoid。

  2、生成器和判别器的loss不取log

  3、将判别器参数的绝对值截断在常数$c$以内。

  4、不要用基于动量的优化算法,推荐RMSProp,SGD也行(这是实验得出的结论)。

参考资料

  Wasserstein GAN

  令人拍案叫绝的Wasserstein GAN - 知乎 

免责声明:文章转载自《Wasserstein GAN》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇笔记本光驱接口怎么外接台式机硬盘?SecureCrt使用SSH2登陆海康相机下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

数学基础系列(二)----偏导数、方向导数、梯度、微积分

一、偏导数 对于一元函数y=f(x)只存在y随x的变化,但是二元函数z=f(x,y)存在z随x变化的变化率,随y变化的变化率,随x﹑y同时变化的变化率。如下图所示 1、偏导数定义 设函数$z=f(x,y)$在点(x0,y0)的某个邻域内有定义,定y=y0,一元函数$f(x_{0},y_{0})$在点x=x0处可导,即极限$limlimits_{Delta...

GAN量化评估方法——IS(Inception Score)和FID(Frechet Inception Distance score)

  生成模型产生的是高维的复杂结构数据,它们不同于判别模型,很难用简单的指标来评估模型的好坏。下面介绍两种当前比较流行的评估生成模型的指标(仅判别图像):IS(Inception Score)和FID(Frechet Inception Distance score)。 IS   IS基于Google的预训练网络Inception Net-V3。Incep...

OpenCV4系列之图像梯度

在图像处理中,求解图像梯度是常用操作。 Sobel算子 Calculates the first, second, third, or mixed image derivatives using an extended Sobel operator. Sobel 算子是一种离散性差分算子,用来计算图像像素值的一阶、二阶、三阶或混合梯度。在图像的任何一点使...

深度学习文献代码阅读-超分辨(ESRGAN)

ESRGAN是在SRGAN基础上进行增强的网络, 在2018年的比赛中获得了冠军 Introduction 介绍了基于PSNR指标获得的超分辨图像其结果会较为平滑,且与人们的主观有较大的差别 作者针对SRGAN提出了3个改进的点 第一点: 使用了RDDB网络结构, 这种层叠式的网络结构更容易表达效果 第二点: 使用RaGAN对抗网络, 这种网络在优化生...

photometric_stereo halcon光度立体法三维表面重建

官方文档翻译 名称: photometric_stereo -- 通过光度立体技术重建表面。 签名: photometric_stereo(Images : HeightField, Gradient, Albedo : Slants, Tilts, ResultType, ReconstructionMethod, GenParamName, GenP...

机器学习算法与Python实践之(七)逻辑回归(Logistic Regression)

http://blog.csdn.net/zouxy09/article/details/20319673 机器学习算法与Python实践之(七)逻辑回归(Logistic Regression) zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Python实践这个系列主要是参考《机器学习实战》这本书...