【概述】
自 2014 年 Ian Goodfellow 提出以来 GAN 以来,GAN 就面临着训练困难、生成器和判别器的 Loss 无法指示训练进程、生成样本缺乏多样性等问题
从那时起,很多论文都在尝试解决,但是效果不尽人意,例如最有名的一个改进 DCGAN 本质上依靠的是对生成器和判别器的架构进行实验枚举,最终找到一组比较好的网络架构设置,但是实际上是治标不治本,没有彻底解决问题
直到 2017 年 Martin Arjovsky 提出了 Wasserstein GAN(WGAN),成功地做到了以下爆炸性的几点:
- 彻底解决 GAN 训练不稳定的问题,不再需要小心平衡生成器和判别器的训练程度
- 基本解决了 GAN 的崩溃问题,确保了生成样本的多样性
- 训练过程中终于有一个像交叉熵、准确率这样的数值来指示训练的进程,这个数值越小代表 GAN 训练得越好,代表生成器产生的图像质量越高
- 不需要精心设计的网络架构,只需要最简单的多层全连接网络即可实现
【贡献】
在 WGAN 提出之前,Martin 在《Towards Principled Methods for Training Generative Adversarial Networks》中理论上分析了原始 GAN 的问题所在,并针对性地对分布重叠问题提出了一个过渡解决方案,通过对生成样本和真实样本加噪声使得两个分布产生重叠,理论上可以解决训练不稳定的问题,可以放心训练判别器到接近最优,但是未能提供一个指示训练进程的可靠指标,也未做实验验证
之后,Martin 在《Wasserstein GAN》中,从过渡解决方案出发,引入 Wasserstein 距离,并将其写成可求解的形式,利用一个参数数值范围受限的判别器神经网络来最大化这个形式,以近似 Wasserstein 距离
在此近似最优判别器下优化生成器使得 Wasserstein 距离缩小,就能有效拉近生成分布与真实分布,从而解决了训练不稳定的问题,也提供了一个可靠的训练进程指标,而且该指标确实与生成样本的质量高度相关
与原始 GAN 算法相比,实际上只改动了四点:
- 判别器最后一层去掉 sigmoid
- 生成器和判别器的 loss 不取 log
- 每次更新判别器的参数之后,把它们的绝对值截断到不超过一个固定常数 $c$
- 推荐使用 RMSProp、SGD 等优化器,不要使用基于动量的优化算法,例如 Adam、Momentum 等