2019年底,使用对比学习的自我监督学习研究论文数量激增。在2019年12月,Misra等人。来自Facebook AI Research的研究人员提出了一种新的方法PIRL来学习图像表示。
在本文中,将解释本文的基本原理,以及它如何进一步推动图像的自我监督表示学习场景。还将看到这与当前的SOTA方法“ SimCLR ”相比如何,后者改善了PIRL的缺点。
动机
最近提出了许多有趣的自我监督学习方法来学习图像表示。其中许多使用这样的想法,即利用某种几何变换来建立前置任务以获取标签。这包括几何旋转预测,上下文预测,拼图游戏,帧顺序识别,自动编码转换(AET)等。
设置前置任务,以便学习变换图像的表示形式,以预测变换的某些属性。例如对于旋转预测任务,将图像随机旋转90度,然后要求网络预测旋转角度。因此学习到的图像表示可能过度适合旋转角度预测的目标,并且不能很好地概括到下游任务上。表示将与变换协变。它只会对基本信息进行编码以预测旋转角度,并且可能会丢弃有用的语义信息。
PIRL概念
PIRL提出了一种解决表示与变换协变的问题的方法。它提出了一个问题表述,以使为原始图像和变换图像生成的表示都相似。有两个目标:
- 使图像的转换类似于原始图像
- 使原始图像和变换图像的表示形式与数据集中的其他随机图像不同
从直觉上讲,这是有道理的,因为即使旋转图像,它的语义也不会改变,即该图像仍然是坐在地上的猫
PIRL框架
PIRL定义了实现此想法的通用框架。首先,您拍摄原始图像I,应用从某些借口任务(例如旋转预测)借来的变换以获得变换后的图像IT。然后,两个图像都通过ConvNet传递共享权重的θ以获取表示VI和VIT。表示形式VI的原始图像通过投影头f(.)获得表示 f(VI) 。同样,一个单独的投影头g(.)用于表示g(VIT)以获取转换后的图片。这些表示通过损失函数进行调整,使得一世I和IT相似,但与其他随机图像表示有所不同I’存储在存储库中。
分步示例
为了简单起见,假设有一个包含3个RGB图像的训练语料库。
这是PIRL逐步处理这些图像的方式:
1.记忆库
要了解更好的图像表示,最好将当前图像与大量负片图像进行比较。一种常见的方法是使用较大的批次并将该批次中的所有其他图像视为负片。但是,加载大量图像会带来一系列资源挑战。 为了解决这个问题,PIRL建议使用一个存储库,该存储库缓存所有图像的表示并在训练期间使用。这使我们可以使用大量的负数对而不增加批量大小。
在示例中,PIRL模型使用随机权重初始化。然后对训练数据和表示中的所有图像进行前向遍历f(VI),每个图像都存储在存储库中。
2.准备一批图像
现在,从训练数据中提取迷你批次。假设在案例中我们选择了一批2号。
3.文字转换
对于批量处理的每个图像,都基于所使用的文字任务应用转换。在这里,显示了几何旋转预测的借口任务的变换。
因此对于批次中的2张图像,得到了两对,总共有四张图像。
4.编码器
现在,对于每个图像,图像及其对应的变换都将通过网络传递以获取表示形式。本文使用ResNet-50作为基础的ConvNet编码器,得到了2048维的表示形式。
5.投影头
从编码器获得的表示将通过单个线性层,以将表示从2048维投影到128维。单独的线性层 f(.)和 g(.)分别用于原始图像和变换图像。得到最终代表f(VI)和g(VIT)以获取转换后的图片。
6.改进模型(损失函数)
当前,对于每个图像,都有其原始版本和转换版本的表示形式。目标是为两者生成相似的表示,同时为其他图像生成不同的表示。
现在,计算出下列步骤损失:
a.余弦相似度
余弦相似度用作任何两种表示形式的相似性度量。下面比较了猫图像和旋转后的图像的相似性。
b.噪声对比估计器
使用噪声对比估计器(NCE)函数来计算由所有负像归一化的两种表示形式的相似度得分。对于猫图像及其旋转的对应图像,噪声对比估计器用以下公式表示:数学上,根据投影头的表示而不是ResNet-50的表示计算NCE。公式为:
使用交叉熵损失来计算一对图像的损失,如下所示:
由于我们已经在存储库中有了图像和负图像的表示形式,因此可以使用它代替计算的表示形式:
在理想情况下,图像及其变换的相似度最高即为1,而与任何负图像的相似度为零。因此,在那种情况下损失变为零。
通过此公式,将图像与其转换进行比较,将图像转换为负图像,并将原始图像转换为负图像。
基于这些损失,编码器和投影头会随着时间的推移而改进,并且可以获得更好的表示。当前批次存储库中图像的表示方式也可以通过应用指数移动平均值进行更新。
迁移学习
训练模型后,然后投影头 F(。)f (。) 和G(。) 删除 g (。),并将ResNet-50编码器用于下游任务。可以冻结ResNet-50模型并将其用作功能提取器,也可以为下游任务微调整个网络。
未来的工作
作者陈述了两个有希望改善PIRL的领域,并学习了更好的图像表示方法:
1.从其他借口任务而不是竖锯和旋转借用转换。
2.将PIRL与基于聚类的方法相结合
代码实施
Arkadiusz Kwasigroch在PyTorch中实施PIRL的方法在此处提供。模型可用于旋转以及拼图任务。它在一个包含2000个皮肤病变图像的小型数据集上测试网络的性能,并获得0.7 的AUC得分,而随机初始化得分为0.55。
https://github.com/akwasigroch/Pretext-Invariant-Representations
引用信息(BibTex)
如果发现此博客文章有用,请考虑将其引用为:
代码语言:javascript复制@misc{chaudhary2020pirl,
title = {The Illustrated PIRL: Pretext-Invariant Representation Learning},
author = {Amit Chaudhary},
year = 2020,
note = {url{https://amitness.com/2020/03/illustrated-pirl}}
}
参考文献
自主学习的不变表示形式学习
https://arxiv.org/abs/1912.01991