自监督学习(十九):对比学习方法综述

A SURVEY ON CONTRASTIVE SELF-SUPERVISED LEARNING

  • Introduction
  • Architectures

Introduction

这里我们介绍一篇对比学习的综述文章。对比学习是最近非常热门的自监督表示学习方法,在很多的下游任务上都达到或超过了ImageNet预训练的效果。本文比较系统地总结了目前对比学习的几个常用的方法。文章地址:https://arxiv.org/abs/2011.00362。

在之前我们介绍的自监督表示学习方法中,pretext task的设计五花八门,从实验结果来看,都取得了一定的效果,但是和ImageNet预训练模型相比还是有差距。对比学习方法采用全新的pretext task,在性能上取得了大的提升。pretext task定义为:对于同一图像及其变体(叫做正样本,通常由数据増广获得)网络应该提取相似的特征,对于不同图像(叫做负样本,从数据集中重采样获得),网络提取的特征要尽量远离。该过程用下图表示:
自监督学习(十九):对比学习方法综述_第1张图片
如图,左上为原图,左下为经过数据増广之后得到的正样本,对于这两张图网络应该输出相似的特征,但是对于右边的两张图,应该输出不同的特征。我们通常使用余弦距离来衡量特征之间的相似性,假设原图及其正负样本分别记为 X , X + , X − X,X^+,X^- X,X+,X,网络提取的特征记为 R , R + , R − R,R^+,R^- R,R+,R,则特征之间的相似度记为:
s i m ( R , R + ) = R T R + ∣ ∣ R ∣ ∣ . ∣ ∣ R + ∣ ∣ sim(R,R^+)=\frac{R^TR^+}{||R||.||R^+||} sim(R,R+)=R.R+RTR+
对比学习的损失函数可以记为:
L = s i m ( R T , R + ) s i m ( R T , R + ) + ∑ R − s i m ( R T , R − ) L=\frac{sim(R^T,R^+)}{sim(R^T,R^+)+\sum_{R^-}sim(R^T,R^-)} L=sim(RT,R+)+Rsim(RT,R)sim(RT,R+)
通过优化以上损失函数,可以得到预训练模型。尽管直接使用该方法也可以取得效果,但是很明显负样本的质量限制了该方法的性能。对于正样本,由于是经过数据増广得到的,所以在视觉上本来就很像。然而,由于数据集的规模很大,因为负样本的选择随机性太强,提升对比学习性能的关键是设计合理的负样本选取方法。

Architectures

根据当前方法的负样本生成原理,这篇文章将对比学习方法分为了四类:
自监督学习(十九):对比学习方法综述_第2张图片
下面对这几种方法进行简要的介绍,后续会单独详细介绍:
1) End-to-End
这种结构的方法代表作是hinton组的文章SimCLR。在这种结构下,算法中的所有模块都是可微的,并且参与反向传播。网络的详细图如下:
自监督学习(十九):对比学习方法综述_第3张图片
输入数据首先经过两次变换,得到2*N个数据,然后正样本之间求sim,其他的样本均为负样本。这种方法需要很大的batchsize。
2) Memory Bank
该方法使用一个在内存中的memory bank保存所有的 R R R,并且不同的 R R R在训练过程中会以滑动平均的方式更新,网络中直接输入的样本均为正样本,负样本从memory bank中取,所以不需要很大的batchsize
3) Momentum Encoder
Memory Bank尽管对batchsize的需求不大,但是却需要非常大的内存空间来保存特征。Momentum Encoder事何凯明提出的方法,通过构建一个队列来控制负样本的数量,通过设计动量encoder来保存网络历史的记录。
4) Clustering
聚类的方法将对比学习与聚类相结合,在训练的过程中,会动态的学到一个类别信息。

你可能感兴趣的:(自监督学习,人工智能,深度学习)