图解自监督学习(CV)
译自:https://amitness.com/2020/02/illustrated-self-supervised-learning/
作者:Amit Chaudhary
注:译者在某些地方对原文的表述做了调整,使其适合汉语的阅读习惯,并在某几处有译者自己的理解。大家有能力的话可以看一下英文原文。
在 Yann Lecun 的一次演讲中,作者首次了解到了自监督学习,他在那里介绍了“蛋糕类比”来说明自监督学习的重要性。 在谈话中,他说:
“If intelligence is a cake, the bulk of the cake is self-supervised learning, the icing on the cake is supervised learning, and the cherry on the cake is reinforcement learning (RL).”
“如果人工智能是一块蛋糕,那么大部分蛋糕是自监督学习,监督学习是蛋糕上的冰激凌,而强化学习则是蛋糕上的樱桃。”
尽管这个类比存在争议,但我们已经看到了自监督学习在自然语言处理领域的影响,其中最近的(Word2Vec、Glove、ELMO、BERT)已经取得了SOTA的结果。
为了了解计算机视觉领域自监督学习的现状,作者通过 Jing 等人最近的一篇综述论文了解了现有的关于将自监督学习应用于计算机视觉的工作。
本文将解释什么是自监督学习,总结并通过图示的方式直观地展示自监督学习中的一些问题的建模方式。
自监督学习简介
为什么要自监督学习
要在深度神经网络中进行有监督学习,我们需要足够的标注数据。 但是人工标注数据是一个既耗时又昂贵的过程。 还有一些领域,例如医疗领域,获取足够的数据本身就很困难。 因此,当前有监督学习范式的一个主要瓶颈是如何获得大量的标注数据。
什么是自监督学习
自监督学习是通过下面这种方式,将无监督学习问题转化为有监督问题的方法:
我们能否以这样一种方式设计任务:即我们可以从现有图像中生成几乎无限的标签,并使用它来学习特征表示?
在自监督学习中,我们通过创造性地利用数据的某些属性来设置伪监督任务来替换人工注释的部分。 例如,这里不是将图像标记为猫/狗,而是将它们旋转 0/90/180/2700/90/180/2700/90/180/270 度并训练模型来预测旋转。不同于标注猫 / 狗,对图像进行旋转并记录旋转标签可以有机器自动完成,因此,我们可以从互联网上的数百万张图像中生成几乎无限的训练数据。下图展示了整个端到端自监督训练的工作流。
在我们从数以百万计的图像中学习好特征表示后,我们可以利用迁移学习在一些有监督的任务(如仅有少量样本的猫狗分类任务)上进行微调。
自监督学习方法综述
现在让我们了解一下研究人员提出的各种方法来,利用图像和视频特性并将自监督学习应用于表征学习。
至于自监督学习任务如何设计,Yann LeCun 在 AAAI 2020 上的演讲也提到过:
- 根据所有待预测部分之外的信息预测任意一部分信息。
- 根据过去预测未来。
- 根据过去最近的情况预测未来。
- 根据现在预测过去。
- 根据底层信息预测顶层信息。
- 根据可见的信息预测不可见的信息。
- 假设有一部分输入数据未知,并且对其进行预测。
对该演讲有兴趣的读者,可参考:https://www.bilibili.com/video/BV1V7411573v?from=search&seid=12729545036652967460
A 基于图像的自监督学习
Pattern 1 重构
1 图像着色
如果我们通过将灰度应用于数百万免费提供的图像来构建训练样本对对(灰度、彩色)图像会怎样?
我们可以使用基于全卷积神经网络的编码器-解码器架构(自编码器),来计算预测和实际彩色图像之间的 L2 损失。
为了完成着色任务,模型必须了解图像中存在的不同对象和相关部分,如此它才可以用相同的颜色绘制这些部分。 这样,学习到的表征对于下游任务会很有用。
可参考的相关工作:
- Colorful Image Colorization
- Real-Time User-Guided Image Colorization with Learned Deep Priors
- Let there be Color!: Joint End-to-end Learning of Global and Local Image Priors for Automatic Image Colorization with Simultaneous Classification
2 图像超分辨
如果我们通过对数百万图像进行下采样来构造训练样本对(小图像放大)图像会怎样?
基于 GAN 的模型(例如 SRGAN)在此任务中很常见。 生成器使用全卷积网络获取低分辨率图像并输出高分辨率图像。 使用均方误差和内容损失来比较实际和生成的图像,以模仿人类的图像感知质量比较。 二分类鉴别器获取图像并对其进行分类,它是实际的高分辨率图像 (1) 还是假生成的超分辨率图像 (0)。 两个模型之间的这种相互对抗作用会使得生成器学习能够生成具有精细细节的图像。
学习到语义特征的生成器和鉴别器都可以用于下游任务阶段。
可参考的相关工作:
- Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network
3 图像修复
如果我们通过随机删除部分图像来构建训练样本对(损坏的、固定的)图像会怎样?
与超分辨率类似,我们可以利用基于 GAN 的架构,其中生成器可以学习如何重构图像,而鉴别器学习将真实图像和生成的图像分开。
对于其在下游任务的表现,Pathak 等人。 已经表明,这样的生成器学习的语义特征在 PASCAL VOC 2012 语义分割比赛上比随机初始化的模型提高了 10.2%,同时对分类和对象检测有< 4% 的提升。
可参考的相关工作:
- Context encoders: Feature learning by inpainting
4 Cross-Channel 预测
如果我们从图像的一个通道预测另一个通道并将它们组合起来重构原始图像会怎样?
Zhang 等人在他们名为 Split-Brain Autoencoder 的工作中应用了这个想法。 为了理解论文的idea,让我们以番茄的彩色图像为例。
对于这张彩色图像,我们可以将其拆分为灰度和颜色通道。 然后,对于灰度通道,我们预测颜色通道,对于颜色通道部分,我们预测灰度通道。 将两个预测通道 X1X_1X1 和 X2X_2X2 组合起来以完成对原始图像的重构。 我们可以将此重构与原始彩色图像进行比较,以计算损失并更新模型。
同样的想法也可以应用于具有深度的图像,我们使用来自 RGB-HHA 图像的颜色通道和深度通道来相互预测并比较输出图像和原始图像。
可参考的相关工作:
- Split-Brain Autoencoders: Unsupervised Learning by Cross-Channel Prediction
Pattern 2 常识任务
1 拼图任务
如果我们通过随机打乱图像块来构建训练样本对(打乱、有序)拼图会怎样?
即使只有 9 个图像块,也可以有 362880 个可能的 puzzles。 为了解决这个问题,仅使用所有可能排列的一个小子集,例如具有最高汉明距离的 64 个排列。
假设我们使用一个排列来打乱图像,如下所示。 让我们使用总共 64 个可用排列中的排列数 64。
现在,为了复原出原始图像块关系,Noroozi 等人 提出了一种称为上下文无关网络(CFN)的神经网络,如下所示。 在这里,单个图像块通过具有共享权重的相同孪生卷积层。 然后,将这些特征组合,并送入一个全连接层中。 在输出中,模型必须从 64 个可能的类中预测使用了哪种排列。
为了完成拼图任务,模型需要学习识别物体中组件的组装方式、物体不同部分的相对位置以及物体的形状。 因此,这些表示对于分类和检测中的下游任务很有用。
可参考的相关工作:
- Unsupervised learning of visual representations by solving jigsaw puzzles
2 上下文预测
如果我们通过从大型未标记的图像集合中随机获取一个图像块及其周围的一个相邻块来构建训练样本对(图像块,相邻图像块)会怎样?
为了完成这个辅助任务,Doersch 等人 使用了类似于拼图任务的结构。图像块通过两个孪生卷积网络来提取特征,拼接特征并在 8 个类别上进行分类,表示 8 个可能的邻块位置。
可参考的相关工作:
Unsupervised Visual Representation Learning by Context Prediction
3 几何变换识别
如果我们通过从大型未标记图像集合中随机旋转图像(0、90、180、270)来构建训练样本对(旋转图像、旋转角度)会怎样?
为了解决这个前置任务,Gidaris 等人 提出一种架构,其中旋转图像通过卷积网络,网络需要将输入图像分类为 4 类(0/90/270/3600/90/270/3600/90/270/360 度)。
虽然看起来是一个非常简单的任务,但该模型必须了解图像中对象的位置、类型和姿势才能完成此任务,因此,学习到的表示对于下游任务会很有用。
可参考的相关工作:
Unsupervised Representation Learning by Predicting Image Rotations
Pattern 3 自动生成标签
1 图像聚类
如果我们通过对大型未标记图像集合执行聚类来构建训练样本对(图像,簇数)会怎样?
为了解决这个前置任务,Caron 等人 提出一种称为深度聚类的架构。 在这里,首先对图像进行聚类,并将聚类用作类。 模型的任务是预测输入图像的集群标签。
可参考的相关工作:
- Deep clustering for unsupervised learning of visual features
- Self-labelling via simultaneous clustering and representation learning
- CliqueCNN: Deep Unsupervised Exemplar Learning
2 影像合成
如果我们通过使用游戏引擎生成合成图像并使其适应真实图像来构建训练样本对(图像、属性)会怎样?
为了解决这个辅助任务,Ren 等人 提出了一种架构,其中权重共享的卷积网络在合成图像和真实图像上进行训练,然后将合成图像和真实图像送入鉴别器,鉴别器学习分类输入是合成图像还是真实图像。 由于对抗性作用,真实图像和合成图像之间的共享表征将会变得更好。
B 基于视频的自监督学习
如果我们通过从运动物体的视频中混洗帧来构建训练样本对(视频帧,正确/不正确的顺序)会怎样?
为了完成这个辅助任务,Misra 等人 提出了一种架构,其中视频帧通过权重共享的卷积网络,模型必须确定帧的顺序是否正确。 这样做时,模型不仅需要学习空间特征,还需要考虑时间特征。
可参考的相关工作:
- Shuffle and Learn: Unsupervised Learning using Temporal Order Verification
- Self-Supervised Video Representation Learning With Odd-One-Out Networks
Citation Info (BibTex)
如果读者觉得本文对你的研究工作有帮助的话,可以引用原作者的博客:
@misc{chaudhary2020selfsupervised,title = {The Illustrated Self-Supervised Learning},author = {Amit Chaudhary},year = 2020,note = {\url{https://amitness.com/2020/02/illustrated-self-supervised-learning}}
}