文章目录
摘要
自从2014年Ian Goodfellow提出以来,GAN就存在着训练困难、生成器和判别器的loss无法指示训练进程、生成样本缺乏多样性等问题。从那时起,很多论文都在尝试解决,但是效果不尽人意,比如最有名的一个改进DCGAN依靠的是对判别器和生成器的架构进行实验枚举,最终找到一组比较好的网络架构设置,但是实际上是治标不治本,没有彻底解决问题,而Wasserstein GAN彻底解决GAN训练不稳定的问题,不再需要小心平衡生成器和判别器的训练程度,还基本解决了collapse mode的问题,确保了生成样本的多样性,并且训练过程中终于有一个像交叉熵、准确率这样的数值来指示训练的进程,这个数值越小代表GAN训练得越好,代表生成器产生的图像质量越高,本文主要介绍GAN原始存在的问题和WGAN实现突破的四个重点,并应用于代码。
Abstract
.Since Ian Goodfellow proposed GAN in 2014, it has faced difficulties in training, inability of the generator and discriminator losses to indicate the training progress, and lack of diversity in generated samples. Since then, many papers have attempted to address these issues, but with unsatisfactory results. For example, the most famous improvement, DCGAN, relied on experimenting with different architectures for the discriminator and generator, eventually finding a set of network architecture settings that worked relatively well. However, this was just a temporary solution and did not fundamentally solve the problem. On the other hand, Wasserstein GAN completely addresses the issue of unstable GAN training. It no longer requires careful balancing of the training of the generator and discriminator, and it also largely solves the problem of collapse mode, ensuring diversity in generated samples. Additionally, during the training process, there is finally a numerical value, similar to cross-entropy and accuracy, that indicates the progress of training. A smaller value indicates better GAN training and higher quality of generated images. This article primarily discusses the original problems of GAN and the four key breakthroughs achieved through WGAN implementation, which are also applied in the provided code.
Wasserstein GAN
文献:https://arxiv.org/abs/1701.07875
1、原始GAN中存在的问题
实际训练中,GAN存在着训练困难、生成器和判别器的loss无法指示训练进程、生成样本缺乏多样性等问题。这与GAN的机制有关。GAN最终达到对抗的纳什均衡只是一个理想状态,而现实情况中得到的结果都是中间状态(伪平衡)。
大部分的情况是,随着训练的次数越多判别器D的效果越好,会导致一直可以将生成器G的输出与真实样本区分开。这是因为生成器G是从低维空间向高维空间(复杂的样本空间)映射,其生成的样本分布空间Pg难以充满整个真实样本的分布空间Pr。即两个分布完全没有重叠的部分,或者它们重叠的部分可以忽略,这样就使得判别器D总会将它们分开。
在原始GAN的训练中,判别器训练得太好,会使生成器梯度消失,生成器loss降不下去;判别器训练得不好,会使生成器梯度不准,四处乱跑。只有判别器训练到中间状态最佳,但是这个尺度很难把握,没有一个收敛判断的依据。甚至在同一轮训练的前后不同阶段,这个状态出现的时段都不一样,是个完全不可控的情况。
引入Kullback–Leibler divergence(简称KL散度)和Jensen-Shannon divergence(简称JS散度)这两个重要的相似度衡量指标,后面的主角之一Wasserstein距离,就是要来吊打它们两个的。所以接下来介绍这两个重要的配角——KL散度和JS散度:
根据原始GAN定义的判别器loss,我们可以得到最优判别器的形式;而在最优判别器的下,我们可以把原始GAN定义的生成器loss等价变换为最小化真实分布与生成分布之间的JS散度。我们越训练判别器,它就越接近最优,最小化生成器的loss也就会越近似于最小化和之间的JS散度。
这过程看似非常的合理,只要我们不断的训练,真实分布和生成分布越来越接近,JS散度应该越来越小,直到两个分布完全一致,此时JS散度为0。但是理想很丰满,现实很骨感,JS散度并不会随着真实分布和生成分布越来越近而使其值越来越小,而是很大概率保持log2不变。
为什么两个分布不重合,它们JS散度一直为log2?
现在大家注意到上式已经有一个log2了,为证明我们的结论,我们只需证明两个分布不重合时上式左侧两项为0即可。我们以下图为例:
2.研究内容
2.1 EM distance(推土机距离)的引入
我们上文详细分析了普通GAN存在的缺陷,主要是由于和JS散度相关的损失函数导致的。大佬们就在思考能否有一种损失能够代替JS散度呢?于是,WGAN应运而生,其提出了一种新的度量两个分布距离的标准——Wasserstein Metric,也叫推土机距离(Earth-Mover distance)。
下图左侧有6个盒子,我们期望将它们都移动到右侧的虚线框内。比如将盒子1从位置1移动到位置7,移动了6步,我们就将此步骤的代价设为6;同理,将盒子5从位置3移动到位置10,移动了7步,那么此步骤的代价为7,依此类推。
很显然,我们有很多种不同的方案,下图给出了两种不同的方案:
上图中右侧的表格表示盒子是如何移动的。比如在γ1 中,其第一行第一列的值为1,表示有1个框从位置1移动到了位置7;第一行的第四列的值为2,表示有2个框从位置1移动到了位置10。上图中给出的两种方案的代价总和都为42,但是对于一个问题并不是所有的移动方案的代价都是固定的,比如下图:
在这个例子中,上图展示的两种方案的代价是不同的,一个为2,一个为6。,而推土机距离就是穷举所有的移动方案,最小的移动代价对应的就是推土机距离。对应本列来说,推土机距离等于2。
现给出推土机距离是数学定义,如下:
W ( P r , P g ) W(P_r,P_g) W(Pr,Pg)=KaTeX parse error: Limit controls must follow a math operator at position 7: {\inf}\̲l̲i̲m̲i̲t̲s̲_{\gamma\in \pr…
∏ ( P r , P g ) \prod(P_r,P_g) ∏(Pr,Pg)表示边缘分布P r 和 P g 所有组合起来的联合分布 γ \gamma γ(x,y)的集合。我们还是用图1中的例子来解释, ∏ ( P r , P g ) \prod(P_r,P_g) ∏(Pr,Pg)就表示所有的运输方案 γ \gamma γ,下图仅列举了两种方案:
E ( x , y ) [ ∣ ∣ x − y ∣ ∣ ] E_{(x,y)}[||x-y||] E(x,y)[∣∣x−y∣∣]可以看成是对于一个方案 γ \gamma γ移动的代价,KaTeX parse error: Limit controls must follow a math operator at position 7: {\inf}\̲l̲i̲m̲i̲t̲s̲_{\gamma\in \pr… 就表示在所有的方案中的最小代价,这个最小代价就是 W ( P r , P g ) W(P_r,P_g) W(Pr,