Transformers in Vision 系列(一):自监督学习

举报
山海之光 发表于 2021/05/23 23:07:06 2021/05/23
【摘要】 Transformer的两大核心能力这两年AI学术界不大太平,Transformer的战火席卷了整个NLP的疆土,随后在2021年初又蔓延到CV领域,如今图像分类、物体检测和图像分割等方向上的制高点已被Transformer攻占,视觉与语言训练、图像超分、视频修复和视频目标跟踪等方向也岌岌可危,那么Transformer到底是何方神圣?为什么它拥有如此强大的魔力,能够在短短一年之间爆发,攻占...

Transformer的两大核心能力

这两年AI学术界不大太平,Transformer的战火席卷了整个NLP的疆土,随后在2021年初又蔓延到CV领域,如今图像分类、物体检测和图像分割等方向上的制高点已被Transformer攻占,视觉与语言训练、图像超分、视频修复和视频目标跟踪等方向也岌岌可危,那么Transformer到底是何方神圣?为什么它拥有如此强大的魔力,能够在短短一年之间爆发,攻占了NLP,现在又染指CV呢?故事得从Transformer的两大核心能力说起......

Transformer具有两大核心能力:自监督(Self-supervision)和自注意力(Self-Attention )自监督使得Transformer可以在超大规模的无标签数据集上训练,然后在有标签的小数据集上进行训练,这样训练得到的模型有较强的泛化能力。自注意可以使Transformer发现更广的上下文环境,比如语言中单词之间的关系、图像中图像块之间的关系,而不是孤立地去看待每个单词或每个图像块。正是这两大核心能力使得Transformer在NLP和CV领域大有一种所向披靡的趋势。本次我们先来解析一下自监督这个能力。

自监督学习的两大学习阶段

提到自监督,很多人会想到无监督和有监督,那么这几个监督之间是什么关系呢?其实,可以这么说,自监督就是无监督 + 有监督。以CV领域的自监督为例,它的学习过程分为两个阶段:

(1)无监督学习阶段

准备一份大规模的无标签数据,设计一个前置任务(自监督学习中的专有名词,下文解释),对这些数据自动地生成一些“伪”标签,然后使用这份数据集和自动生成的“伪”标签训练一个用于解决该前置任务的模型。

(2)有监督学习阶段

设计一个下游任务(自监督学习中的专有名词,其实就是图片分类、目标检测或语义分割等这类具体的任务),准备一份该任务的有标签数据集,然后加载第一阶段中训练好的模型,在该有标签的数据集上finetune训练模型,继续更新模型的参数,直到模型可以很好地解决下游任务。

可能有同学发现,这个自监督的第二阶段不就是和我们平常加载一个ImageNet预训练模型进行finetune一样的吗?答案是,确实一样。

前置任务的设计方法

自监督学习的魅力就在于前置任务的学习**。众所周知,ImageNet数据集是耗费了很大的人力来人工标注完成的,对深度学习的发展起到了巨大的推动作用,但是ImageNet数据集也只有1400万张有标注的图片,这些图片仍然无法覆盖到人类生活场景的方方面面,因此训练得到的模型在真实应用场景中有时候就会表现非常差。于是,科学家们开始思考:互联网上每天都在产生海量的数据,我们能否用上这些数量更大的数据来训练更好的预训练模型呢?这些数据没有标签,让人工去标注亿级、十亿级图片的话,代价太大了,我们能否用无标签的数据集来训练?

为了利用上无标签的数据集来训练,科学家们就设计出了各种各样的前置任务来实现无监督学习,这些前置任务的设计方法主要可以分成两大流派:基于还原的方法和基于对比的方法,下面分别进行叙述。

(1)基于还原的方法

基于还原的方法又细分很多种,这里我们举一个比较热门的GAN网络应用:图片上色,如下图所示,这种网络可以实现以一张灰度图作为输入,然后预测出该灰度图对应的彩色图。

Colorization.jpg


这种网络的训练方法是这样的:

1)准备一批彩色图片;

2)使用图像处理工具(如opencv或PIL)对这批彩色图片做一个灰度变换,生成一批灰度图;

3)定义一个网络,输入为灰度图,输出为与灰度图相同尺寸的彩色图;

4)使用原来的彩色图片作为标签,计算网络预测的彩色图与真实彩色图之间的差异,以最小化该差异为目标,对网络进行训练,最终训练得到可以实现“图像上色”的模型。

这种训练方法就是基于还原的方法,我们想将灰色图“还原”为原来的彩色图。

(2)基于对比的方法

基于对比的方法也有很多种,最流行、效果最好的方法是基于实例判别的方法,代表性方法是BYOL:Bootstrap Your Own Latent,论文名字翻译成中文,就是发掘自身潜能。看到这个名字,让我想起了周伯通的左右互搏术,平常左右手使用不同的招式进行对练,发掘自身的潜能,对敌时,两手使用不同的招式,增强自己的战力。但不好意思,BYOL不是左右互搏,而是左右互相模仿,具体原理,可以通过下图来说明:

BYOL.jpg

如上图所示,BYOL有两个相同的编码器网络,上面online network的权重随着每一训练批次进行更新,而下面target network的权重不是随着训练过程更新,而是使用第一个编码器的权重均值进行更新。

在训练过程中,一个网络接收原始的训练数据,另一个网络则使用经图像增强后的数据,两个网络会分别为接收的数据生成一个低维的特征表示,然后我们使用多层感知器预测目标网络的输出,并最大化该预测与目标网络输出之间的相似性。那么这种方法的实验效果到底如何呢?

BYOL_results.jpg

如上图所示是BYOL算法与其他算法在一些数据集上的结果比较,其中Supervised-IN是指常规的有监督学习方法。从图中的结果可以看出,使用BYOL预训练的模型进行finetune后,在一半以上的数据集上超越了有监督预训练模型迁移的结果,证明了BYOL自监督学习方法的有效性。

好,我们对自监督学习来做一个简单的总结。自监督学习分两个阶段:无监督学习阶段和有监督学习阶段,核心在于第一阶段。为了实现无监督学习,我们可以使用基于还原的方法,也可以使用基于对比的方法,基于还原的方法就是使用图像变换方法生成一些“伪”标签,然后使用这个带“伪”标签的数据来训练网络,而基于对比的BYOL方法是使用两个相同结构但不同参数的网络分别对一张原图和一张对原图做增强之后的图生成低微的特征表示,使得这两个特征表示尽可能地接近,越接近就越能说明网络能够抵抗同一张图的图像增强操作引起的变化,具有较好的泛化性。自监督学习通过第一阶段得到了一个能够抓住图片本质特征、具备良好泛化能力的预训练模型之后,再进行第二阶段的fine-tune训练,就有可能超越ImageNet预训练模型的fine-tune训练结果。

OK,本期自监督学习的介绍就到这里。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。