Training GANs with Stronger Augmentations via Contrastive Discriminator
借助对比判别器实现的通过更强的数据增强来训练生成对抗网络
摘要
最近关于GAN(生成对抗网络)的研究和工作都开始重新把注意力转向各种各样的数据增强技术来有效地避免判别器的过拟合。然而,我们仍然不清楚什么样的数据增强可以实际上改善GAN的表现以及特别是如何在训练中采用一种更大范围的数据增强。在这篇论文中,我们提出了一种新颖的方式来解决这个问题:把最近的一种叫做对比表征学习的模式与GAN的判别器相结合,简称为ContraD(contrastive learning)。这种“融合”使得判别器可以利用更强得多的数据增强来进行训练,却不增加不稳定性,因此更有效地避免了GAN中判别器过拟合的问题。甚至,我们发现,对比学习本身是有利于训练GAN的,好的对比表征对GAN的判别器有好处,反之亦然。我们的实验结果显示,采用ContraD技术的GAN可以改善在FID和IS上的评测表现。……(后面的不是重点,就不翻译了)
看了摘要,大家应该大致了解了ContraD到底是个啥玩意。更具体地说,就是将对比学习(contrastive learning)和GAN相结合,借鉴并综合了SimCLR和Supervised Contrastive Learning中的loss function,得出了独特loss function。那么所以呢?到底ContraD有什么作用?看论文标题就知道,最终还是为了训练GAN。摘要里面也说了,训练GAN的时候有各种各样的问题,他们就提出了ContraD来解决一些问题。那么怎么解决的呢?往下看吧。
因为这篇论文中用到了SimCLR和Supervised Contrastive Learning中的方法,所以首先要介绍一下SimCLR。这是2020年发布的论文了,已经有不少好的文章介绍了,所以我指路大佬,大家看这篇文章就好。如果你好好看懂了这篇文章,请继续往下看。
就像文章里提到的一样,SimCLR是自监督训练,没有标签,在教会模型区分不同图片时,会把同一类的不同照片区分开,比如,黑狗和白狗都是狗,但它们被当做不同的类(讲道理,连标签都没有,这也不能叫做“类”吧)。很明显这是我们不喜欢的,也没必要这么做。GAN最重要的目的之一就是训练出一个优秀的生成器来生成我们想要的东西,如果我们想要的是狗,我们就希望生成器给我们生成一条狗,这条狗是啥样子我不管,是狗就行。至于这条狗的颜色啊耳朵大小啊这些属性,我们可以人为的指定。
为了解决自监督学习的不足,Supervised Contrastive Learning出现了。Supervised Contrastive Learning是有监督学习,训练数据是有标签的。我们不再只是让来自同一张图片的representation之间的相似度达到最大,而是让来自同一类图片的representation之间的相似度达到最大。于是,所有狗的representation都被看做positive,其他representation被看做negative。
在ContraD中,作者把两者进行了结合,使用这SimCLR和Supervised Contrastive Learning的两种loss优化判别器(还有别的loss,后面会说)。
概览图简介:我们首先对真实数据x进行数据增强,得到两个view:V(1), r和V(2), r,同时对生成器生成的数据G(z)进行增强,得到Vf。然后我们把这三个view都送入判别器,判别器输出view对应的representation。下一步,让三个representation通过projection head,得到对应的向量(如果你看懂了SimCLR,你就应该懂这些),最后用各种loss来优化。注意,这里,作者对判别器做了修改,让判别器的输出不再是一个0~1之间的数(scalar),而是一个向量,毕竟判别器本身可以看做一个encoder嘛。当然,依然是先训练判别器,再训练生成器。
关于loss function:
- 概览图右侧上方的L+, con就是SimCLR中的loss,是loss for real samples,因此,大家看,指向L+, con的hr的大括号框住了两个真实数据的representation。
- 概览图右侧中间的L-, con就是Supervised Contrastive Learning中的loss,是loss for real and fake samples,因此,指向L-, con的hf的大括号框住了所有包括真假样本的三个representation。
- 概览图右侧下边的Ldis,这是作者设计的loss。别忘了,我们训练完判别器还要训练生成器,训练生成器用的还是GAN原本的loss,因此我们需要判别器输出一个scalar来优化生成器。由于作者把判别器的输出改成了向量,这里我们要加一个discriminative head(作者可爱起名儿了,不知道咋翻译),其实就是一个两层的MLP,来把判别器输出的向量转化为一个0~1之间的scalar。在这里,这个loss只用来优化这个两层的MLP,而不会更新判别器的参数。那么怎么做到这一点呢?我们使用了stop gradient。训练完判别器后,固定判别器和discriminative head的参数,再用GAN原本的loss训练生成器。(我个人认为这个设计真的很精妙)
到这里,我们介绍完了所有loss,于是我们可以得出判别器的loss:
其中的两个λ是超参数(hyperparameter),在论文中,作者统一设为1。
生成器的loss:
这里采用了不饱和loss,在这里就不赘述了。
到这里我们分析完了论文的核心部分。作者还做了一些ablation study,用来研究实验中的某些设置或计算方法对实验整体的贡献、重要程度。感兴趣的可以去论文看看详细内容。
关于ablation study,没有准确的中文翻译,ablation本意为“烧蚀,消融”。可以看看维基百科的定义:
In artificial intelligence (AI), particularly machine learning (ML), ablation is the removal of a component of an AI system. An ablation study studies the performance of an AI system by removing certain components, to understand the contribution of the component to the overall system. The term is by analogy with biology (removal of components of an organism), and, continuing the analogy, is particularly used in the analysis of artificial neural nets, by analogy with ablative brain surgery. Ablation studies require that the system exhibit graceful degradation: that they continue to function even when certain components are missing or degraded.
大家可以看看这篇论文的review,有很多reviewer提出了有独到见解的问题,有助于大家加深理解,开拓思维:https://openreview.net/forum?id=eo6U4CAwVmg
这是我第一次在平台上发论文解读相关的文章,我深知自己只是一个小白,和大佬完全比不了。以上内容中可能有一些不严谨或错误之处,希望大佬指正。
我们互相学习,一起变得更强!