WGAN

wgan之前, 原始GAN出现了什么问题?
https://www.cnblogs.com/Allen-rg/p/10305125.html

  1. 判别器越好,生成器梯度消失越严重
  2. 一句话概括:最小化第二种生成器loss函数,会等价于最小化一个不合理的距离衡量,导致两个问题,一是梯度不稳定,二是collapse mode即多样性不足。

WGAN
WGAN成功的做到了以下几点:、

  • 彻底解决GAN训练不稳定的问题,不再需要小心平衡生成器和判别器的训练程度
  • 基本解决了collapse mode的问题,确保了生成样本的多样性
  • 训练过程中终于有一个像交叉熵、准确率这样的数值来指示训练的进程,这个数值越
    小代表GAN训练得越好,代表生成器产生的图像质量越高(如题图所示)
  • 以上一切好处不需要精心设计的网络架构,最简单的多层全连接网络就可以做到

相比原算法,WGAN改变了以下几点:

  • 判别器最后一层去掉sigmoid
  • 生成器和判别器的loss不取log
  • 每次更新判别器的参数之后把它们的绝对值截断到不超过一个固定常数c
  • 不要用基于动量的优化算法(包括momentum和Adam),推荐RMSProp,SGD

训练技巧:D和G交替训练,训练多次D再训练一次G
WGAN的损失函数,使用EM距离:

  • 生成器:\(min_G = -E_{z-p_z}[f_w(G(z))]\)
  • 判别器:\(max_{D}=E_{x-p_x}[f_w(x)]-E_{z-p_g}[f_w(G(z))]\)
    D和G的损失其实都在使用

WGAN代码tf2实现

你可能感兴趣的:(WGAN)