简介
发表在CVPR2019,研究的目的是解决cGAN存在的mode collapse(模式崩溃)问题,论文提出的方法极其简单,只需要一个公式进行描述,而且能轻易的嵌入到各种cGAN网络中。MSGAN的全称为:Mode Seeking Generative Adversarial Networks for Diverse Image Synthesis
Parper
https://github.com/HelenMao/MSGAN
Mode Seeking Generative Adversarial Networks for Diverse Image Synthesis
下面将从4个方面展开讨论:
(1)什么是mode collapse问题
(2)MSGAN是如何解决mode collapse的
(3)如何把MSGAN提出的正则化方式嵌入到自己的网络中
(4)视觉结果与损失函数收敛情况
1、什么是mode collapse问题
我并没有找到论文单独讲这个问题的,但是这个问题经常在GAN系列的论文中出现。mode collapse中文翻译为模式崩溃,也有称之为模式单一的。比如训练集中包含猫、狗、牛和马等很多种动物,但是GAN的生成器仅仅生成了其中的一种或两种,这就是mode collapse。
很多学者研究过如何解决模式崩溃问题,比如使用多个生成器作为辅助网络【2】,但是这些问题都是针对cGAN的。备注:cGAN是一个系列,而不是仅仅指代最初的Conditional GAN那篇论文。
2、MSGAN是如何解决mode collapse的
必须再次强调,MSGAN和其他的希望解决模式崩溃问题方法相比,之所以显得强大,是因为其它的方法设计复杂损失函数和额外网络,使得这些方法需要更多的计算开销或者难以即插即用,而MSGAN提出的正则化方法能很轻易的嵌入到我们自己设计的网络中,提供了一种解决模式崩溃问题的通用手段。
MSGAN对mode collapse的原因使用下图进行了分析:
其中z表示潜变量,G表示生成器Generator,图像生成的目的是将潜变量z映射到图像空间I,如果两个潜变量z1和z2距离很近(我的理解是数值上很接近),那么它们生成的图片Ia=G(z1,c)和Ib=G(z2,c)也将会趋于同一种模式,即导致mode collapse。
为此,作者定义了下面的距离因子,用于度量生成图像和潜变量之间的距离:
根据距离度量的定义可知,可以对它直接最大化:
这个就是MSGAN的损失函数,简单明了,效果强大。使用这个MSGAN也很简单,只需要对自己设计的网络计算额外的损失项即可,不需要改动网络的具体结构,只需要在cGANs加上这个损失项,从而得到新的损失:
其中Lori可以是原始的CGAN:
上面的符号含义分别为:c表示类别标签,y表示真实图片,z表示噪声数据。
论文中给出了上面的例子,条件生成模型G输入是潜空间Z和条件信息y(这里应该是类别标签吧),G的输出是图像空间I,目的就是最大化图像空间中两个图像和对应的两个潜变量之间的距离。
3、如何把MSGAN提出的正则化方式嵌入到自己的网络中
复现论文总是很难达到作者的效果,自己总结的原因通常有下面几点:
(1)显卡不够,英伟达论文最为常见
(2)网络的超参数设定不对,有时作者并没有给出所有的超参数,比如是否使用权重衰减策略
(3)网络深度或者链接方式等有问题,比如作者使用的不一定是传统的卷积
(4)梯度更新顺序问题,GAN的生成器和判别器可能更新的频率不同
当然,不能因为复现效果不好就不去复现,多复现论文才能提升自己的代码能力。
3.1 MSGAN的训练细节
MSGAN的作者不仅开源了代码,还在论文中给出了具体的训练细节:Lms损失函数使用的是L1距离,权重是1;使用DCGAN时,batch_size为32,图像尺寸为32x32,学习率0.0002,Adam优化器中beta1=0.5,beta2=0.999。有了这些超参数的值,复现就省事很多了。
https://zhuanlan.zhihu.com/p/91213374
https://blog.csdn.net/z704630835/article/details/95497451
