NVIDIA深度视觉实验室提出的一种训练GAN的方法。
what is GAN
GAN包含两个网络:Generator和Discriminator(在WGAN中称作Critic)。G由一个laten code(或噪声)生成一个样本,比如图片。而生成的样本应该与真实的样本分布相同或相似。D用来判断这种“分布是否相似”。训练完成的理想状态是G生成的样本与真实样本一样,D不能判断生成的到底是真实的还是假的。而训练过程可以按梯度来指导G与D的优化方向。
一般情况,得到G是我们的目标;D只是辅助的网络,训练结束就没用了。
GAN训练的问题
–如果两个分布没有有效的交叉(测度),那么此时的梯度很可能会随机支出网络的优化方向,使得训练不收敛。GAN最早使用的JS距离,就有这样的问题。后来有了很多改进,Waserstein距离就是一种。
–生成高分辨率的图像也有一些问题:
1.高分辨率图像特征丰富,很容易判断图像的真假。这放大了梯度问题,使得梯度不能指示正确的优化方向(所以训练GAN的trick之一:训练开始时不要把D训练的太好)。
2.由于内存的限制,生成高分辨率的图像,往往会降低batch_size,使训练不稳定。(想想SGD与batch-SGD的区别)。
–GAN存在一个问题,就是生成样本的质量(quality)与多样性(variation)存在一点互斥关系,追求较高的质量可能会使图像的多样性下降。
该论文的贡献
- 生成高分辨图像的方法,模型训练