【GANs学习笔记】(八)WGAN

完整笔记:http://www.gwylab.com/note-gans.html
———————————————————————

5. WGAN

WGAN的全称是WassersteinGAN,它提出了用Wasserstein距离(也称EM距离)去取代JS距离,这样能更好的衡量两个分布之间的divergence。我们先介绍一下什么是EM距离。

5.1 EM距离

EM距离的全称是EarthMover(推土距离),它的定义非常直观:假设有两堆数据分布PQ,看作两堆土,现在把P这堆土推成Q这堆土所需要的最少的距离就是EM距离。

【GANs学习笔记】(八)WGAN_第1张图片

       假设P的分布是上图棕色柱块区域,Q的分布是上图绿色柱块区域,现在需要把P的分布推成Q的分布,我们可以制定出很多不同的MovingPlan(推土计划)。

【GANs学习笔记】(八)WGAN_第2张图片

       这些不同的推土计划都能把分布P变成分布Q,但是它们所要走的平均推土距离是不一样的,我们最终选取最小的平均推土距离值作为EM距离。例如上面这个例子的EM距离就是下面这个推土方案对应的值。

【GANs学习笔记】(八)WGAN_第3张图片

 

       那为了更好地表示这个推土问题,我们可以把每一个moving plan转化为一个矩阵图:

【GANs学习笔记】(八)WGAN_第4张图片

       每一个色块表示P分布到Q分布需要分配的土量(移动距离),那每一行的色块之和就是P分布该行位置的柱高度,每一列的色块之和就是Q分布该列位置的柱高度。于是我们的求解目标表达式就如下所示:

【GANs学习笔记】(八)WGAN_第5张图片

       表达式中γ函数计算当前计划下的推土量,||-||表示二者间的推土距离。

       那如果这个时候我们想直接求解这个表达式的话,是非常麻烦的,因为需要穷举所有的moving plan然后再选择其最小值。如果我们对之前的理论有印象的话,我们会想到这个optimization problem依然可以交给discriminator来解决。

       于是接下来要做的,就是去改discriminator,让它能够衡量之间的wasserstein距离。

5.2 WGAN

下面我们直接给出WGANDiscriminator的目标表达式:

       这个表达式的求解结果就是之间的wasserstein距离。至于为什么会等于Was距离,详细证明请参阅WGAN paper附录当中的证明部分,因为过于繁琐,在此就不赘述()。反正目前我们构造出了求解was距离的discriminator

关于这个表达式,值得注意的是,D被加上了1-Lipschitz function(如下图)的限制。

先说明一下,为什么要对discriminator做限制。传统GANsdiscriminator输出的结果是在(0,1)区间之内,但是在WGAN中输出的结果是was距离,was距离是没有上下界的,这意味着,随着训练进行,was值会越来越小,was值会越来越大,discriminator将永远无法收敛。

【GANs学习笔记】(八)WGAN_第6张图片

       因此,为了解决这个问题,我们需要给discriminator加上一些限制,让不会持续地一直降低,让也不会持续地一直升高,简言之,就是让D函数变得更平滑一些。

但是我们知道,一般的神经网络的训练,参数都是没有限制的,而现在我们希望给discriminator的参数增加一些限制,其实是不太好做的。

       在最原始的WGAN中,采用的做法是weight clipping,很简单,设定一个上限c与下限-c,如果更新参数w大于c,改成w=c;如果更新参数w小于-c,改成w=-c。这样D处的值就不会被无限拉远。但是这个方法并没有让D真的限制在1-Lipschitz function内,所以原始的WGAN并没有严格地给出was距离计算方法。

       直到后来,直到WGAN的增强版WGAN-GP,以及SNGAN被提出,才解决了这个问题。

你可能感兴趣的:(GANs学习笔记)