自监督学习入门
写在前面:
这几天在逛华为云论坛的时候,无意间发现了这个直播活动,一看时间,明天下午2点。海报如下图:
活动报名链接:https://bbs.huaweicloud.com/signup/33652859b28e497ea2e35100f681a485
我寻思着啥是自监督,怎么没听过?触到我知识盲区了?
开发者的特性不就是在大佬讲干货前不能显得自己很无知,必须私下里先预习吗?不然大佬直播时细心讲解,屏幕前的我摸不着头脑岂不是辜负了他的一番苦心。所以我特地谷歌一番。筛选几篇自监督学习文章内容作为预习,然后就有了这篇博客——自监督学习入门。
简介:
什么是自监督学习?我们先简单定义为直接从无标签数据中自行学习,无需标注数据。
自监督学习性能的高低,主要通过模型学出来的特征的质量来评价。特征质量的高低,主要是通过迁移学习的方式,把特征用到其它视觉任务中(例如分类、分割、物体检测...),然后通过视觉任务结果的好坏来评价。
自监督学习的核心是如何给输入数据自动生成标签,就是提出一个新的自动打标签的前置任务(例如:旋转图片、打乱patch顺序),自动生成标签。
正文:
自监督学习源于无监督学习,解决从未标记的数据中学习语义特征的问题。常用的方法是通过设计一个前置将无监督的问题转换为有监督的任务。 往往前置任务不会有什么新的产出,它的目的是使网络学习如何从数据中捕获有用的特征。
前置任务与常见的监督问题有相似之处:
我们知道监督训练需要标注。依赖人工标注者的不断努力。 但在许多情况下,标注非常昂贵或无法获得。 我们也知道模型天生需要数据,这导致大规模的标注数据集已成为学习模型进一步发展的主要壁垒之一。同样,自监督学习也需要标注来训练前置任务。然而与前置任务的关键不同在于:用于前置任务的标注(伪标注)的特征是不同的。实际上对于自监督训练,伪标签仅来自数据特征本身。
换句话说伪数据不需要人工标注!
在自监督的训练期间,我们挑战网络以学习前置任务。同样,根据数据本身自动生成伪标签用来训练目标。 训练结束后,我们通常将学习到的视觉特征作为知识转译给下游任务(downstream task)。通常,下游任务可以是任何监督问题。 目的是用自监督特征改善下游任务的性能。
下游任务的最大问题是数据有限和过度拟合。这里,我们可以看到基于大型标注数据库(如 ImageNet )预训练卷积神经网络的普通迁移学习的相似性。但有一个关键的优势:通过自监督训练,我们可以在难以置信的大型数据库上对模型进行预训练而无需担心人为标签。
此外, 前置任务和普通分类任务之间有一个细微差别。在纯分类任务中,网络学习表征是为了分离特征空间中的类。在自监督学习中,前置任务通常会促使网络学习更多的通用概念。以图像着色这一前置任务为例:为了擅长图像着色,网络必须学习通用用途的特征,这些特征解释了数据集中对象的特征,包括物体的形状、一般纹理、怕光、阴影、遮挡等。通过解决前置任务,网络将学习容易转译给学习新问题的语义特征,换句话说:我们的目标是在进行监督之前从未标注的数据中学习有用的表征。
结论:
自监督学习让我们能够没有大规模标注数据也能获得优质的表征,反而我们可以使用大量的未标注数据并且优化预定义的前置任务。我们可以使用这些特性来学习缺乏数据的新任务。
自监督学习的应用:
下面列举各种研究人员提出的利用图像的属性并以自监督的方式学习表示的方法。
1. 图像的着色
形式:使用数以百万计的图像灰度化来准备成对(灰度,彩色)图像。
使用一个基于全卷积神经网络的编译码器结构来计算预测和实际彩色图像之间的L2损失。
为了解决这个问题,模型必须了解图像中出现的不同物体和相关部分,这样它才能用相同的颜色绘制这些部分。
2. 图像超分辨率
形式: 使用图像下采样的方式准备训练对(小的,缩放的)。
基于GAN的模型如SRGAN在此任务中很受欢迎。生成器获取低分辨率图像并使用全卷积网络输出高分辨率图像。使用均方误差和内容损失来模拟类人质量比较,对实际生成的图像和生成的图像进行比较。二进制分类鉴别器获取图像并对其进行分类,判断它是实际的高分辨率图像(1)还是假生成的超分辨率图像(0)。这两个模型之间的相互作用导致生成器学习生成具有精细细节的图像。
生成器和判别器都学到了可以用于下游任务的语义特征。
3. 图像修复
形式:我们可以通过随机去掉图像中的某个部分来生成成对的训练图像(损坏的,复原的)。
与超分辨率类似,我们可以利用基于GAN的架构,在此架构中,生成器可以学习如何重构图像,而discriminator则可以将真实图像和生成的图像分开。
对于下游任务,Pathak等人表明,在PASCAL VOC 2012语义分割的比赛上,生成器学到的语义特征相比随机初始化有10.2%的提升。
4. 图像拼图
形式:通过随机交换图像块生成训练对
即使只有9个小块,也是个有362880个可能的谜题。为了克服这个问题,只使用了可能排列的一个子集,例如具有最高汉明距离的64个排列。
假设我们使用如下所示的重排来更改图像。我们用64个排列中的第64个排列。
现在,为了恢复原始的小块,Noroozi等人提出了一个称为上下文无关网络(CFN)的神经网络,如下图所示。在这里,各个小块通过相同的共享权值的siamese卷积层传递。然后,将这些特征组合在一个全连接的层中。在输出中,模型必须预测在64个可能的排列类别中使用了哪个排列。如果我们知道排列的方式,我们就能解决这个难题。
为了解决拼图问题,模型需要学习识别零件是如何在一个物体中组装的,物体不同部分的相对位置和物体的形状。因此,这些表示对于下游的分类和检测任务是有用的。
5. 上下文预测
形式:我们随机选取一个图像块以及其附近的一个图像块来组成训练图像对。
为了解决这个文本前的任务,Doersch等人使用了类似于拼图游戏的架构。我们通过两个siamese卷积神经网络传递图像块来提取特征,连接特征并对8个类进行分类,表示8个可能的邻居位置。
6. 几何变换识别
形式:我们通过随机的旋转图像来生成有标注的图像(旋转图像,旋转角度)。
为了解决这个文本前的任务,Gidaris et al.提出了一种架构,其中旋转后的图像通过一个卷积神经网络,网络需要把它分成4类(0/90/270/360度)。
虽然这是一个非常简单的想法,但模型必须理解图像中物体的位置、类型和姿态才能完成这项任务,因此,学习到的表示方法对后续任务非常有用。
结束语:
大致看完这些内容,会不会对自监督学习有多一点了解呢?
这是直播互动帖的链接:https://bbs.huaweicloud.com/forum/thread-70471-1-1.html。
那么,明天下午一起搬凳子坐等大佬的直播吧!
活动报名链接:https://bbs.huaweicloud.com/signup/33652859b28e497ea2e35100f681a485
文章里的内容出处:
图解自监督学习https://bbs.cvmart.net/topics/1559
自监督学习,如何从数据困境中拯救深度学习?
- 点赞
- 收藏
- 关注作者
评论(0)