深度学习中的⾃监督对⽐学习+MoCo三部曲+⾃监督模型评测
⽅法
《战狼2》
摘要
在过去的很长时间⾥,计算机视觉领域依靠⼤规模的有标注数据集取得了很⼤的成功,特别是卷积神经⽹络的应⽤,使得视觉各⼦领域实现了跨越式发展,学术界和⼯业界开始投⼊⼤量的研究和应⽤,⼀度使⼤家相信,⼈⼯智能的⼤厦即将建成。然⽽,最近关于⾃监督学习(Self-supervid Learning,SSL)、Transformer、MLP等在学术界的研究成为热点,特别是Transformer和MLP的进击,⼤有要将监督学习和卷积结构拍死在沙滩上的节奏,作者相信,计算机视觉(CV)领域正在进⼊新的变⾰时代。
本⽂主要聚焦于CV领域⾃监督学习的相关内容,包含基本概念,与视觉各领域的关系和应⽤,以及当前的进展和⼀些思考,关于具体的⾃监督学习⽅法原理和技术有太多的⽂章进⾏解读,本⽂暂不涉及,⼒求从其他⾓度去观察⾃监督学习的特点和当前的局限性,分析总结经验,以求能给⼤家更多创新的想法启发。由于作者本⼈也有很⼤的局限性,⼀些观点不免有偏颇,还望各位⼤佬批评指正。
⼀、⾃监督学习介绍
AAAI2020会议上,Yann LeCun做了⾃监督学习的报告,表⽰⾃监督学习是⼈⼯智能的未来。从2019年
底⾄今,MoCo系
列,SimCLR,BYOL等⼀系列⽅法等井喷发展,通过⽆标注数据集达到了有标注数据集上的效果,⼏乎所有的下游任务都获得收益,使其成为了CV各领域的研究热门。⾃监督学习的优势,就是可以在⽆标签的数据上完成训练,⽽监督学习需要⼤量的有标签数据,强化学习需要与环境的⼤量交互尝试,数据为王的时代,此特点也使得⼤家充分相信⾃监督学习才是⼈⼯智能的发展⽅向。
⾃监督学习是与⼤家熟悉的监督学习和⽆监督学习的新名词,该类⽅法最早归类于⽆监督学习的范畴。关于⾃监督学习的概念,Paper with code[1]给出的定义是,使⽤⽆标注数据⽤⾃我监督的⽅式学习⼀种表⽰的⽅法,具体⽅式是通过学习⼀个替代任务(pretext task)的⽬标函数来获取特征表⽰。替代任务可以是⼀个预测类任务、⽣成式任务、对⽐学习任务。替代任务的监督信息来源是从数据本⾝获得的。举个栗⼦,替代任务可以是图⽚上⾊,图⽚抠图位置预测,视频帧顺序预测等。或者我们从结果反推⽅法,对于⾃监督来说,数据本⾝是没有标签的,我们需要通过⾃⾏设计任务来确定数据的标签。例如下图[2]中把图⽚中扣出9个块,让模型预测每个块的位置,对每个块⾃动构建标签的过程就是⽣成标签的过程,预测位置的⼯作就是替代任务。
图1 图像块相对位置预测
近来热门且效果出⾊的⾃监督模型MoCo系列、SimCLR等,除去BYOL和SimSiam舍弃了负样本数据,基本都是采⽤正负样本对间对⽐的⽅式来构建,BYOL和SimSiam也构建了两个⽹络间的对⽐形式,都属于对⽐学习(Contrastive Learning)任务的范畴,可以说,当前的⾃监督学习的⽕热就是对⽐学习⾃监督⽅法的⽕热。其基本原理,是采⽤Siame形式的⽹络结构,通过输⼊正负样本对数据,计算⽹络两个分⽀的输出的损失,以使⽹络能够学习到可以将相似样本拉近,不相似样本拉远的特征。⾃动构建标签的过程,就是常⽤的各种数据增强⽅法,如下图[3],原始图采⽤随机裁剪、颜⾊变换、模糊等⽅式构造相似样本对,⽽不同的原图或者增强后图像即是⾮相似样本对。训练得到的对⽐学习⽹络,在迁移到下游任务(分类、检测、分割)等数据集时,表现达到了可以媲美监督学习模型的效果。
图2 SimCLR使⽤的数据增强⽅法
基于对⽐的⾃监督⽅法发展史如下图所⽰,选取了⼏个受关注较多的⽅法,时间截⽌2021年3⽉。Facebook和google两家研究团队神仙打架,对⽐学习框架逐渐去除掉⼀些技巧、结构,朝着中国哲学“⼤道⾄简”这⼀概念前进。
图3 ⾃监督对⽐学习发展历程
换⼀个⾓度思考,如果抛弃下游任务的finetune,只关注于替代任务的学习,那么⾃监督学习就像⼀个⼤染缸,各种替代任务只要可以构造出来,将其嵌⼊到⾃监督学习框架内,最终学习出来的特征和⽹络,就具有了替代任务的判别性。由此,就像使⽤魔法⼀样,我们就能够实现对神经⽹络能⼒的定制化改造。当前已经有不少研究成果发表,可以使⽤⾃监督完成帧序列预测、视频播放速度判断、图像旋转⽅向预测等。
⼆、⾃监督学习与其他领域的关系和思考
由于对⽐学习的强劲发展势头和其在⾃监督领域中占有的绝对⽐重,本⽂接下来直接以对⽐学习代替⾃监督学习的说法,在深挖对⽐学习框架过程中,发现其与CV的各领域其他⽅法如蒸馏学习、表⽰学习等有相似或关联之处,下⾯将逐个讨论。
1.对⽐学习和蒸馏学习
⼆者的⽹络结构形式⾮常相似,同样是双路⽹络结构,同样是对于最终的双路⽹络输出计算loss。不同的是,蒸馏学习往往是固定⼀个teacher⽹络,student⽹络规模要⼩于teacher,对⽐学习中,两个⽹络结构常常⼀致,并且是共同更新⽹络参数,蒸馏学习中teacher⽹络的参数固定。当然还有输⼊、loss、参数更新等不同,但蒸馏⽹络提供给了我们理解对⽐学习架构的另⼀种思考⽅式。在对⽐学习中常⽤的momentum update的更新⽅法和stop gradient技巧,可以理解成蒸馏学习的缓慢更新teacher版本和变体,由此我们可以将对⽐⽹络理解成双路⽹络互相学习,左右互搏。甚⾄,论⽂DINO[4]中将⽹络结构图中的两个分⽀直接写成了teacher和student。
图4 DINO算法⽹络结构
2.对⽐学习和表⽰学习
对⽐学习属于表⽰学习的⼀种⽅法,通过对⽐学习获得的特征,迁移到下游任务中,进⾏finetune即可达到监督学习的效果,像极了早期CV领域的⼿⼯特征。对⽐学习的损失函数设置也是表⽰学习的出发点,相似样本在特征空间的距离依然相近,反之距离较远。监督学习⽹络也是学习到了很好的特征表⽰,才对我们的分类等任务有较好的表现。⽽现在对⽐学习要做的,就是在⽆标签的基础上,学习到⼀种泛化性更强的特征表⽰。可以预见的是,我们可以将对⽐学习模型替换掉imagenet预训练模型作为各类任务训练的起点,因为对⽐学习的训练集规模可以轻松超越imagenet,并且训练得到是超越分类任务的更具泛化的特征表⽰。
图5 监督学习的流程
前所未有的近义词3.对⽐学习和⾃编码器
⾃编码器也是⽆监督领域图像特征提取的⼀种⽅式,该⽅法基于⼀个编码器(encoder)将输⼊映射为特征,再通过解码器(decoder)将映射的特征恢复到原图,以减⼩重构误差为训练⽬标。
图6 ⾃编码器⽹络结构⽰意
⾃编码器的编码过程可以看作是对⽐学习的单个分枝结构,⼆者的区别在于⾃编码器通过重构输出来作为⾃监督信息并避免平凡解,⽽对⽐⽹络是依靠两路⽹络的输出对⽐解决问题。从提取图⽚特征来看,对⽐学习直接对提取的特征做约束优化,保持了在嵌⼊空间中特征分布的Alignment(相似实例有相近的特征)和Uniformity(保留更多的信息,分布均匀)。此外,如果两种⽅式做⼀种结合也不失为⼀种可以尝试的⽅向,魔法不⼀定要打败魔法,两种魔法的加成也可能创造神奇的世界。
4.对⽐学习和⾃然语⾔处理
⾃然语⾔处理(NLP)领域⾃监督学习的成功,是对CV领域对⽐学习热潮的引领。词向量(Word2Vec)等⽅法的成功,在视觉领域能否成功复刻,驱动着⼤家向⾃监督视觉⽅向进⾏探索。
⼆者也有不同之处,单词或短语的数量是有穷的,⽽图⽚的数量则是⽆穷的,语句可以通过掩膜(mask)等⽅式构造出各种类型的变化,图⽚领域的变化如何⾼效地获得样本对并且有利于下游任务的效果提升都是要解决和优化的问题。也有各类简单的应⽤可以直接进⾏迁移,⽐如ALBERT[5]提出了句⼦顺序预测(SOP)任务可以直接迁移到视频⽚段的顺序预测上来。
5.对⽐学习和⽣成对抗⽹络(GAN)
问:对⽐学习和GAN还能扯上关系?
答:您好,有的。
请看来⾃于videoMoCo[6]⽂章的⽹络架构,其中,使⽤⽣成器作为相似样本对的⽣成⽅式,判别器就是对⽐学习的框架。可以说,GAN中的判别器分辨真假的任务和对⽐学习中的判别正负样本对的任务基本⼀致。
虽然videoMoCo在这⾥使⽤的⽣成器⽅式⽐较naive,但是给我们开阔了巨⼤的想象空间。对⽐学习的难点之⼀就是如何构造替代任务,当前各类对⽐学习⽅法都是采⽤机械的数据增强来完成,如果使⽤⽹络来完成正负样本对的标签⽣成,是不是能促进对⽐学习的效果提升,甚⾄扩⼤对⽐学习的应⽤范围。万物皆可对⽐,只要能够⽣成。接待礼仪的六个基本点
婚庆对联精选图7 videoMoCo算法⽹络结构
6.对⽐学习和度量学习、图像检索
通过与研究度量学习的同事交流,从相关⽹络算法和损失函数来看,对⽐学习和度量学习关系密切,
或者直接看成是同⼀概念的两种称呼,⽬标都是使学习到的特征相似对象间距离⼩,不相似对象间距离⼤。现在对⽐学习领域⼤多使⽤InfoNCE损失函数,⽽度量学习⽤的多种损失还鲜有涉及,将这些损失引⽤过来也是有可能进⼀步优化的⽅向。
图像检索是我们尝试将对⽐学习作为实际应⽤的重要领域,对⽐学习可以天然地得到图像embeeding,并且也具有判别相似图像或者⾮相似图像的特点,在某些检索需求下,是完美的落地应⽤。我们也尝试过将对⽐学习模型和ArcFace训练的模型做对⽐,⼆者在embedding 之后应⽤于图像检索中,简单验证的差异并不⼤,在模型适应性上,原始的数据增强多样性带来的影响更⼤。
三、对⽐⾃监督学习的发展趋势
1.化繁为简之路
⼤家在看之前的⼀些对⽐学习研究论⽂可能有⼀些疑惑,为什么stop gradient会起作⽤,momentum的作⽤具体是什么,好像并不是那么直观。后续⽅法中,momentum update被舍弃,负样本也可以舍弃,⽽Barlow Twins[7]则⼤开⼤合,舍弃各类奇技淫巧,将对⽐学习落实到最直观的互相关矩阵上,简洁到令⼈抓狂。反观各类⽅法和损失的根本归根结底就是互相关矩阵,互相关矩阵简洁的处理了样本对的采样⽅式,相⽐其他算法具有更⾼效的数据采样⽅式和数据规模,之前的各类⽅法就像在敌⼈的⼼脏周围不断挥舞,⽽Barlow Twins就好像剑客直刺到敌⼈的⼼脏。当然其采⽤的8192⾼维度的映
射层也是值得讨论的问题。
负样本的数量对于特征的学习是⼗分重要的已经是对⽐学习中的共识。此⽅法以降低各特征维度的冗余为⽬标,换⼀个思考⽅式,咱们可以将互相关矩阵转换为批次内图像的相似矩阵,以此获得⼤规模的负样本数据以提升模型效果,不再受限于硬件的限制也能完成⼀个⾼效的对⽐模型训练。当然这种⽅法的先验假设就是,同⼀个批次内的图像,都是互为负样本对的。
损失函数的使⽤也有回归传统的意味,以下分别是Yann LeCun于2006年论⽂[13]中使⽤的损失函数和Barlow Twins的损失函数,你瞅瞅这俩损失像不像twins呢?
眼压高是怎么造成的
2006年提出的对⽐损失
Barlow Twins使⽤的互相关矩阵对⽐损失
2.Transformer or MLP?电动车补贴
2021年4⽉初,陈鑫磊,何恺明等⼤神⼜发布了MoCo V3[8]版本的⾃监督⽅法,将Visual Transformers(ViT)引⼊到对⽐学习中来。4⽉底,DINO[4]论⽂发布,指出了⾃监督的ViT特征包含明显的语义分割信息,在有监督的ViT和卷积⽹络中都没有类似的表现。
图8 DINO算法分割效果展⽰
在视觉领域,⼤有Transformer取代卷积⽹络的趋势,好像⼀个初出茅庐的年轻⼈乱拳打死⽼师傅。并且已经由简单的图像分类进攻到了⾃监督学习领域,还表现出了更厉害的特性,相信基于⾃监督的Transformer还会有更多的研究出现。
或者涅槃重⽣的MLP[9]等⽅法也可能在⾃监督领域⼤展⾝⼿,对应[9]的标题:MLP-Mixer: An all-MLP architecture for vision,⾃监督下的MLP⽅法题⽬我都想好了:An all-MLP Architecture for lf-supervid Learning。
3.对⽐⾃监督在视频领域的应⽤
对⽐学习⽅法在视频领域的应⽤也有很多, [10]将不同播放速度的影⽚输⼊对⽐学习⽹络,训练模型⽤于播放速度判别;背景减除(Background Erasing [11]) 在视频每⼀帧中叠加当前视频中的随机帧,以达到减弱背景对于模型判断的影响,提⾼⾏为识别的准确性,⽹络输⼊为正常视频和叠加帧后视频;[12]对同⼀个视频采样不同的⽚段,将其看作是视频的数据增强即正样本对输⼊到⽹络中,获得视频特征的表⽰学习。
当前在视频领域的各种应⽤中,替代任务和下游任务⼀致的现象⽐较严重,造成模型只能对特定任务具有识别效果。同时,视频的特征的表⽰学习,照搬图像⽅法的现象明显,将2D卷积替换为3D卷积即可做迁移,相关研究还处于起步阶段,个⼈认为视频序列的特征提取可以针对其时间维度的特殊性做⼀些专门的⼯作。
视频表⽰学习的进步,必将推动视频检索领域的发展。在视频检索领域,可以通过⾃监督学习的⽅式构建检索以视频搜视频的检索⽅法,也可以做跨模态的视频检索,⽐如以⽂本搜视频,以语⾳搜视频等。反过来畅想,视频也可以⽣成⽂本、视频⽣成语⾳。中国最好的大学
4.监督的对⽐学习
本来在⾃监督领域⼤放异彩的对⽐学习,还可以应⽤在监督学习领域,论⽂[14]做到了这⼀点。⾃监督领域中对⽐学习的依据是,两张图⽚是否同源,⽽和监督学习的结合,变成了两张图⽚是否同类。在使⽤监督对⽐损失后,获得了超过交叉熵的表现。
图9 ⾃监督对⽐和监督对⽐
不过,该⽅法的核⼼还是采⽤了对⽐学习的⽅式训练了提取embedding的⽹络,⽽后将特征提取⽹络冻结,训练了全连接的分类⽹络。从本质上来讲,与⾃监督的⽹络迁移到下游任务是⼀致的。关键在
于替代任务的构建,吸纳了有监督数据的信息。再次验证了⾃监督学习的魔法光环,也证明了对⽐损失相对于分类交叉熵损失,在提取有效特征⽅⾯的优秀能⼒。
四、⼀些思考
1.理论原理我的业余生活
尽管⾃监督学习取得了很好的效果,但其背后的数学原理和理论基本并没有特别扎实,⼤多通过实验结果反推模型结构和策略的效果,可能造成很多研究⾛了弯路,从理论基础出发,直达最终⽬标的效果可能会更好。
2.替代任务的构建