从WGAN到WGAN-GP

WGAN是GAN(对抗生成网络)的一种,在 WGAN 中,D 的任务不再是尽力区分生成样本与真实样本,而是尽量拟合出样本间的 Wasserstein 距离,从分类任务转化成回归任务。而 G 的任务则变成了尽力缩短样本间的 Wasserstein 距离。

故 WGAN 对原始 GAN 做出了如下改变:

  • D 的最后一层取消 sigmoid
  • D 的 w 取值限制在 [-c,c] 区间内。
  • 使用 RMSProp 或 SGD 并以较低的学习率进行优化 (论文作者在实验中得出的 trick)
  • weight clipping存在的问题

  • 第一个问题: 在WGAN的loss 中,如果是任由weight clipping去独立的限制网络参数的取值范围,有一种可能是大多数网络权重参数会集中在最大值和最小值附近而并不是一个比较好的连续分布,论文的作者通过实验也确实发现是这样一种情况。这毫无疑问带来的结果就是使得discriminator更倾向于拟合一种简单的描述函数,这种函数的泛化能力以及判断能力毫无疑问是非常弱的,那么经过这种discriminator回传的梯度信息的质量也是很差的
  • 第二个问题: weight clipping的处理很容易导致梯度消失或者梯度爆炸,因为discriminator虽然相对于generator来说结构较为简单,但其实也是一个多层结构,如果weight clipping的约束比较小的话,那么经过每一层网络,梯度都会变小,多层之后的情况就类似于一个指数衰减了,这样得到的结果就会导致梯度消失,反之则是梯度爆炸,这实际上weight clipping的设置就非常的微妙了。下图是论文作者实验所得结果,确实可以观察到在未使用gradient penalty之前,权重集中于clipping的两端
  • WGAN-GP论文改进:

  • WGAN(Wasserstein GAN)在训练稳定性上有极大的进步,但是在某些设定下任然存在生成低质量的样本,或者是不能收敛的问题。蒙特利尔大学在WGAN的训练上又有了新的进展。他们的论文的是《Improved Training of Wasserstein GANs》论文中提出使用gradient penalty的方式来进行自适应的权重修正。主要是将原有的discriminator 的权重clipping修改为gradient penalty
  • 使用注意事项:

  • 根据论文的描述,上述discriminator目标函数中的λ \lambdaλ推荐取10,作者在很多模型以及数据集上进行测试,推荐该数值较为合适
  • discriminator的结构中不引入batch normalization,因为这会引入通过batch中不同样本的依赖关系,论文经过测试推荐使用layer normalization
  • 论文推荐最好将梯度归一化到1,也就是做一个归一化过程,这被论文称之为two-sided penalty,作者指出这样做会有一定的提高

你可能感兴趣的:(WGAN,WGAN-GP,GAN学习)