
IDEA
用 Wasserstein 距离(也称 EM 距离)去取代JS 距离,这样能更好的衡量两个分布之间的 Div。
5.1 EM距离
EM 距离的全称是 EarthMover(推土距离),它的定义非常直观:假设有两堆数据分布 P 和 Q,看作两堆土,现在把 P 这堆土推成 Q 这堆土所需要的最少的距离就是 EM 距离。

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

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

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

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

表达式中γ函数计算当前计划下xPx_PxP到xQx_QxQ的推土量,||xPx_PxP-xQx_QxQ||表示二者间的推土距离。
那如果这个时候我们想直接求解这个表达式的话,是非常麻烦的,因为需要穷举所有的
moving plan 然后再选择其最小值。如果我们对之前的理论有印象的话,我们会想到这个优化问题依然可以交给判别器来解决。
于是接下来要做的,就是去改判别器,让它能够衡量PGP_GPG与𝑃𝑑𝑎𝑡𝑎之间的 wasserstein 距离。
5.2WGAN
WGAN 的判别器的目标表达式:

这个表达式的求解结果就是𝑃𝐺与𝑃𝑑𝑎𝑡𝑎之间的 wasserstein 距离。(证明及其繁琐,见论文)D 被加上了 1-Lipschitz function

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

因此,为了解决这个问题,我们需要给判别器加上一些限制,让𝑃𝐺不会持续地一直降低,
让𝑃𝑑𝑎𝑡𝑎也不会持续地一直升高,简言之,就是让 D 函数变得更平滑一些。
但是我们知道,一般的神经网络的训练,参数都是没有限制的,而现在我们希望给判别
器的参数增加一些限制,其实是不太好做的。
在最原始的 WGAN 中,采用的做法是 weight clipping,很简单,设定一个上限 c 与下 限-c,如果更新参数 w 大于 c,改成 w=c;如果更新参数 w 小于-c,改成 w=-c。这样 D 在 𝑃𝑔与𝑃𝑑𝑎𝑡𝑎处的值就不会被无限拉远。但是这个方法并没有让 D 真的限制在 1-Lipschitz function 内,所以原始的 WGAN 并没有严格地给出 was 距离计算方法。
WGAN-GP
WGAN 待解决的问题是,未能将 D 真的限制在 1-Lipschitz function 内。我们不妨观察
一下 1-Lipschitz function,会发现它其实等价于如下表达式:

也就是说,对于一个可微函数,当且仅当对于任意的 x,梯度的模都小于或等于 1,则
该可微函数是 1-Lipschitz function。
那现在我们对判别器的目标表达式增添一个条件:

增添的条件(第三项),实际上统计的就是所有梯度的模不满足小于或等于 1 的项,给
这些项分配一个惩罚参数λ,计算出惩罚值,并将所有惩罚值累加起来。当这个累加惩罚够大时,它会拖累maxD{V(D, G)}的取值,最终导致这样的 D 不再是最优解。
关于惩罚项作用,参考博客:https://blog.csdn.net/hzqgangtiexia/article/details/80509352
但是,这个增添的条件由于对所有 x 有效,会让惩罚变得非常高,也带来很多不必要的
计算,于是我们需要对新增条件做进一步的更改。
事实上我们真正需要考虑的惩罚项,应该是对判别器产生实质影响的区域。考虑到整个
WGAN 的目的是让𝑃𝐺渐渐向𝑃𝑑𝑎𝑡𝑎靠拢,那位于𝑃𝐺和𝑃𝑑𝑎𝑡𝑎之间的区域一定会对判别器产生实质的影响。因此,我们将惩罚项中 x 的范围缩小为𝑃𝑝𝑒𝑛𝑎𝑙𝑡𝑦,𝑃𝑝𝑒𝑛𝑎𝑙𝑡𝑦是介于𝑃𝐺和𝑃𝑑𝑎𝑡𝑎之间的区域。目标表达式转化为如下式子:

当然,我们只是直观上觉得,将惩罚项 x 的区域缩小为𝑃𝑝𝑒𝑛𝑎𝑙𝑡𝑦会对于限制 D 为 1-
Lipschitz function 有效,那有没有理论证明呢?很遗憾,原论文中是没有的,作者写了这样
一段话:“Given that enforcing the Lipschitz constraint everywhere is intractable, enforcing it
only along these straight lines seems sufficient and experimentally results in good
performance.”也就是说,实验结果证明这样子是好的。
还有一个有意思的一点是,在实验中作者发现 
越接近 1,训练得越快,效果也越好,于是不妨把表达式直接改成:

也就是说,在惩罚项中希望
越接近 1,惩罚就越少。事实证明这样做的效果是非常好的。
本文深入探讨了Wasserstein GAN(WGAN)及其改进版WGAN-GP的原理与实现。通过引入Wasserstein距离替代JS距离,解决了传统GAN训练中梯度消失的问题。文章详细解释了EM距离的概念,以及如何通过限制判别器为1-Lipschitz函数来计算准确的Wasserstein距离。最后,介绍了WGAN-GP如何通过梯度惩罚进一步优化模型,提高训练稳定性和生成质量。
WGAN+WGAN-GP&spm=1001.2101.3001.5002&articleId=108246366&d=1&t=3&u=35d156c660cb4f33a2f38c2223d7f5e7)
1万+

被折叠的 条评论
为什么被折叠?



