《Self-Supervised GANs via Auxiliary Rotation Loss》学习笔记

参考了https://zhuanlan.zhihu.com/p/65394854和https://zhuanlan.zhihu.com/p/92079559

背景和简介

以往解决GAN模型的训练不稳定的问题是利用条件,就是生成对抗网络这种无监督的学习方式下利用标签数据。通过监督信息的方式判别器能学到更加稳定的表征,这些表征是可以应对判别器遗忘问题的。但这种方法最大的缺点是需要标注数据。
作者提出了一个非监督生成模型,这种模型是整合了有自监督的学习的对抗训练,不仅具备了条件GAN的优点同时还不需要标注数据,实际上,这种方法拉近了条件模型和非条件模型在生成自然图像的距离。

判别器遗忘问题

Discriminator可以看作是一个简单的分类器,区分出真、假两种类型。为了实现这个目的,直觉上,discriminator必须很好的理解输入图片。具体来说,discriminator需要学会如何从输入图片中提取出好的feature,帮助其完成分类任务。

实际上,GAN这种独特的训练模式,对discriminator分器来说,不是很友好。由于generator在训练过程中在不断地更新,导致discriminator的输入,也在不断的更新。对于不同分布的输入图片,discriminator可能会学出来不同的策略来提取feature。例如,假设generator刚开始只学会了如何生成总体轮廓结构为真的sample(细节纹理还没学会),此时discriminator可能只会从轮廓结构方面对真假进行判断。随着训练的不断进行,generator不断的更新,不同时刻的generator可能偏重的重点不一样,导致生成的图片的分布不一样,最后导致discriminator提取feature的策略可能也不一样。

从discriminator的角度来看,它要不断地“忘掉”已经学到的提取feature的方法,不断地学习新的提取feature的方法。似乎也不能完全怪discrimiator,因为在旧分布图片集上学到的feature提取方法,在新分布图片集上,可能已经不再适用了, 所以只能“忘掉”。这可能是GAN不稳定的一个重要原因。

实验论证

《Self-Supervised GANs via Auxiliary Rotation Loss》学习笔记_第1张图片
第一个实验分别用不同迭代时刻的discriminator作为feature提取器,在ImageNet上训练一个分类器,比较分类器的性能,实验结果如上图。

蓝色表示GAN的测试结果,绿色表示添加了自监督学习任务的方法(后面会介绍)。
从实验结果可以看出,从500k开始,蓝色表示的discriminator似乎开始“健忘”,性能也开始下降。说明discriminator学到的feature提取方法很不稳定。
《Self-Supervised GANs via Auxiliary Rotation Loss》学习笔记_第2张图片
第二个实验跟第一个实验的方式相同,修改为在CIFAR10上训练一个分类器,训练的时候,依次用CIFAR10中的10个类来训练,每个类训练1k个iterations。实验结果如上图:
左图表示GAN的测试结果,右图表示添加了自监督学习任务的方法(后面会介绍)。
从左边的实验结果可以看出,每次训练图片的类型发生变化时,分类器的性能明显下降。10k个iterations后,看上去像是从头开始学习,之前学到的方法好像已经全部“忘掉”了。

自监督GAN

自监督背后的主要思想是预测旋转图像的角度或者相关图像块的位置,然后从结果网络提取表征。

《Self-Supervised GANs via Auxiliary Rotation Loss》学习笔记_第3张图片
作者采用了基于图像旋转的自监督学习方法。此方法主要将图像旋转,然后将图像旋转的角度作为人工标注。如上图,红色判别器的任务和普通的GAN模型中的一样,判断图片来自真实数据还是生成器生成的假数据,得到一个分类损失 P D ( S ∣ x ) P_D(S\mid x) PD(Sx)。蓝色判别器的任务是将不同旋转角度的图片进行分类,真和假的图片都会被旋转90°,180°,270°,得到一个旋转分类损失 Q D ( R ∣ x r ) Q_D(R\mid x^r) QD(Rxr)。具体操作是取Discriminator倒数第二层的输出,作为feature,加上一个Linear层,预测出旋转的类型。
作者通过增加旋转分类损失来扩充判别器,它的损失函数如下所示:
在这里插入图片描述
其中的 V ( G , D ) V(G,D) VG,D是来自原始的方程,r代表旋转角度,其中包括有0,90,180,270°, x r x^r xr代表图像 x x x的旋转角度。

合作对抗训练

在本文的模型中,生成器和判别器在判断真假任务上是对抗的,但是在判断旋转角度的任务上又是相互合作的。
首先生成器生成的图像是直立的,也就是0°的图像,这些图像之后会被旋转送入判别器。这样做是为了使生成器生成的图像更加偏向真实图像,以便于在旋转之后更容易判断出旋转角度。然后,判别器判别旋转角度时,只使用真实图片。换句话说,判别器的参数更新只基于真实数据的旋转分类损失。这样做也是为了使生成器生成的图像在旋转之后更易于检测。结果就是,生成器生成的图片非常有利于旋转检测,因为生成的图片和真实的图片都有适用于旋转检测的特征。
在实际的操作中,作者利用了单一判别器网络,它包括两个部分来计算分类损失 P D ( S ∣ x ) P_D(S\mid x) PD(Sx)和旋转分类损失 Q D ( R ∣ x r ) Q_D(R\mid x^r) QD(Rxr)。所有的图片一共有四个角度,没有经过旋转的图片用于让判别器判断真假;而经过旋转的图片用于让判别器判断旋转角度。生成器的目标是生成能与观测图像匹配的图像,这些观测图像的在特征空间的判别器的表征是能够用来检测旋转角度。

《Unsupervised Representation Learning by Predicting Image Rotations》论文的作者假设:如果网络不能很好的理解图片中包含的信息,网络就不可能很好的判断出图片旋转的角度。

在GAN中,对于discriminator来说,通过约束discriminator让它能识别出旋转角度,有助于让discriminator更好、更全面的理解图片中包含的信息,从而间接引导discriminator学出来一个通用、稳定的feature提取方法。

实验

《Self-Supervised GANs via Auxiliary Rotation Loss》学习笔记_第4张图片
《Self-Supervised GANs via Auxiliary Rotation Loss》学习笔记_第5张图片
《Self-Supervised GANs via Auxiliary Rotation Loss》学习笔记_第6张图片

你可能感兴趣的:(《Self-Supervised GANs via Auxiliary Rotation Loss》学习笔记)