APP下载

深度对比学习综述

2023-01-16张重生李岐龙邓斌权陈承功

自动化学报 2023年1期
关键词:分支架构损失

张重生 陈 杰 李岐龙 邓斌权 王 杰 陈承功

近年来,以深度学习为代表的新一代人工智能技术取得了迅猛发展,并成功应用于计算机视觉、智能语音等多个领域.然而,深度学习通常依赖于海量的标注数据进行模型训练,才能获得较好的性能表现.当可用的标注数据较少、而无标注数据较多时,如何提高深度学习的特征表达能力是亟需解决的重要现实需求.自监督学习[1]是解决该问题的有效途径之一,能够利用大量的无标注数据进行自我监督训练,得到更好的特征提取模型.

早期的对比学习起源于自监督学习,通过设置实例判别代理任务完成自监督学习的目标.具体而言,对比学习首先对同一幅图像进行不同的图像增广,然后衡量得到的图像对特征之间的相似性,旨在使同一幅图像增广后的图像对特征之间的相似度增加,而不同图像特征之间的相似度减小.随着技术的发展,对比学习已经扩展到监督和半监督学习中,以进一步利用标注数据提升模型的特征表达能力.

近年来,基于深度学习的对比学习技术取得了突飞猛进的发展.典型的对比学习方法有SimCLR[2](Simple framework for contrastive learning of visual representations),MoCo[3](Momentum contrast),BYOL[4](Bootstrap your own latent),SwAV[5](Swapping assignments between multiple views of the same image),SimSiam[6](Simple siamese networks) 等算法.这些技术通常基于类孪生神经网络的网络架构,但训练过程中所用的图像对为同一幅图像分别增广后得到的图像对 (正样本对),或不同图像分别增广后构成的图像对 (负样本对).深度对比学习通过大量的正负样本对间的比对计算,使得神经网络模型能够对数据自动提取到更好的特征表达.CPC[7](Contrastive predictive poding) 是深度对比学习的奠基之作,该算法通过最大化序列数据的预测结果和真实结果之间的相似度 (一致性程度),优化特征提取网络,并提出InfoNCE 损失,该损失如今已广泛地应用在对比学习研究中.Khosla 等[8]提出监督对比学习损失(Supervised contrastive learning loss,SCL loss),将对比学习的思想扩充到了监督学习中,旨在利用有标注的数据进一步提升模型的特征表达能力.Chen 等[9]设计了半监督对比学习算法,首先对所有数据进行对比学习预训练,然后使用标注数据将预训练模型的知识通过蒸馏学习的方法迁移到新的模型中.

目前,很少有系统总结对比学习最新进展的英文综述论文[10-12],中文综述论文更是极度缺乏.因此,学术界迫切需要对深度对比学习的最新文献及进展进行全面系统的总结、归纳和评述,并分析存在的问题,预测未来发展趋势.本文聚焦视觉领域的深度对比学习技术,系统梳理深度对比学习2018 年至今的技术演进,总结该方向代表性的算法和技术.如图1 所示,本文首先将深度对比学习的相关技术归纳为样本对构造方法层、图像增广层、网络架构层、损失函数层及应用层5 大类型.然后,综合归纳现有技术的特点及异同之处,并分析其性能表现,指出尚未解决的共性问题及相关挑战,最后勾勒该领域的未来发展方向与趋势.

图1 对比学习方法归类Fig.1 Taxonomy of contrastive learning methods

本文的主要贡献概括如下:

1) 基于一种新的归类方法,将现有的深度对比学习工作进行了系统总结;

2) 比较分析了不同对比学习方法的区别和联系,及其在基准数据集上的性能表现;

3) 讨论了当前对比学习研究存在的挑战,展望了未来的研究方向.

本文的剩余章节结构安排如下:第1 节介绍对比学习的背景知识.第2 节引入本文提出的归类方法,并对每种类型的方法进行详细总结.第3 节对现有的对比学习技术进行整体分析,并比较性能表现.第4 节探讨对比学习当前存在的挑战,及未来发展方向.最后是全文总结.

1 背景介绍

1.1 对比学习思想

对比学习的思想有两个起源,一个是同类数据对比的思想[13],另一个是自监督学习中的实例判别任务[14].文献[13]最早提出了使用两幅图像进行对比学习的思想,主要使用孪生神经网络[15]进行训练,旨在拉近同类图像的特征之间的距离、推远不同类图像之间的距离,以获得更好的特征提取模型.而自监督学习中的实例判别任务,将同一批次中的每个样本视作一个独立的类,故类别的数量与该批次的样本数量相同.通过该设计,将无监督学习任务转化为分类任务 (实例判别任务,寻找图像集中与输入图像特征相似度最高的图像).SimCLR[2]和MoCo[3]是最早结合上述两个思想的方法,它们通过同一幅图像分别增广后的图像对之间的特征比对计算,增强神经网络模型的特征提取能力,再应用于下游任务中.

1.2 对比学习定义

对比学习的研究目前仍处于不断发展的阶段,尚无明确的定义.为了更清晰直观的阐述对比学习问题,本文尝试给出一个对比学习的公式化定义及常用网络架构,如式(1)及图2 所示.

在式(1)中,xi表示数据集X={x1,x2,···,xn}中的一个样本,z1(xi1) 是图像xi先经过图像增强方法T1,再经过图2 中的分支1 (上部分支) 得到的特征,z2(xi2) 是同一幅图像xi先经过图像增强方法T2,再经过分支2 (下部分支) 得到的特征 (正样本),z1(xj1),z2(xj2) 是另一幅图像xj经过增广得到的特征(负样本).s为两个特征向量之间的相似度度量方法,默认使用余弦相似度.该公式的目标是最大化相同图像增广后的两个样本之间的相似度,同时最小化不同图像经过不同增广后的特征之间的相似度及不同图像经过相同增广后的特征之间的相似度.图2 是对比学习常用的网络架构,采用了本文所归纳的同步对称网络架构,后续章节将进行详述.

图2 常用的对比学习网络架构Fig.2 Commonly used contrastive learning network architecture

1.3 对比学习与度量学习的关系

对比学习与度量学习[16]之间有较高的关联性.其相似之处在于学习目标类似,二者都在优化特征空间,使得数据在特征空间中类内距离减小、类间距离增大.度量学习通常需要基于标注数据,而对比学习则不要求样本必须有标注,其目标是使得同一幅图像的不同增广之后的图像对在特征空间中靠近.

两者的不同之处在于:

1) 训练数据构建方式不同

对一个数据集,度量学习通过标签信息筛选样本对,分别得到正样本对和负样本对.而对比学习的正样本对是通过同一幅图像的两个随机增广得到.图像增广操作是对比学习的关键技术之一,多样、有效的图像增广方法能够提高对比学习的训练效果[2].

2) 网络架构不同

对比学习通常需要在特征提取网络之后增加小型的投影头网络,将特征空间转换到投影空间中进行损失计算.训练结束后,将该小型投影头去掉,仅保留特征提取网络,用于下游任务.而在度量学习任务中,通常只有特征提取网络,通过设计度量损失函数优化特征提取模型.

3) 适用情况不同

度量学习需要使用有标注的数据,适用于监督学习;而对比学习不要求数据有标注,适用于无标注的数据及有标注或部分标注的数据,支持监督、无监督和半监督学习.

1.4 对比学习与自监督学习的关系

初始的对比学习方法[2-3]是自监督学习的一种,目标是通过无标注数据的自我监督学习,获得良好的特征表达.随着技术的发展,对比学习研究已经拓展到监督学习和半监督学习中(如第1.3 节所述).

对比学习与无监督学习的关系.无监督学习大体可分为生成式学习和对比式学习.对比学习是实现无监督学习的一种重要途径,能够学习到更好的特征表示.

对比学习与监督学习的关系.随着对比学习技术的发展,在构造对比学习所需的样本对时,若数据有标注或部分标注,则属于同一类的图像都可以用于构造正样本,而不再局限于同一幅图像,这样可以增加正样本对的多样性,有利于提取更好的特征表达.另外,对比学习也可以作为监督学习的前置,进行模型预训练,以进一步提高监督学习的模型性能.

1.5 常用数据集介绍

本节所介绍的数据集总结如表1 所示:

表1 对比学习常用数据集总结Table 1 Summary of common datasets

ImageNet-1K[17]是对比学习方法最常用的数据集,该数据集是ImageNet 数据集的一个子集,包含1 000 个类别,训练集约128 万幅彩色图像.该数据集因其包含的图像种类多、数量多以及样本质量高的特点常常被认为是最有挑战性的数据集之一.该数据集各类样本数量分布相对均衡.

Cifar10和Cifar100[18]是常见的应用于图像分类的数据集,Cifar10 包含10 个类别的6 万幅彩色图像,Cifar100 包含100 个类别的6 万幅彩色图像.Cifar10和Cifar100 的图像尺寸均为 32×32 像素.

常用于分类任务评估的数据集还有:Food101[19]包含101 个类别的食物,共10 万幅图像.Birdsnap[20]包含500 个类别的鸟的图像,共4.7 万幅训练集图像.Sun397[21]包含397 个类别的场景图像,共有近11 万幅图像.Cars[22]包含196 个类别的汽车图像,共有1.6 万幅图像.Aircraft[23],包含102 个类别的飞行器图像,共有约1 万幅图像.DTD[24],包含47个类别的纹理图像,共有5 640 幅图像.Pets[25],包含37 个类别的宠物图像,共有3 680 幅训练集图像.Caltech-101[26],包含101 个类别的图像,共有9 144 幅图像.Flowers[27],包含102 个类别的花卉图像,共有7 169 幅图像.

VOC[28]数据集常用来评估目标检测和分割任务,总共包含20 类图像,共约1 万幅图像,包含13 000多个物体目标.

COCO[29]数据集是一个可用于大规模目标检测、分割和关键点检测的数据集,该数据集包含有80 个目标类别、91 个物品类别,约33 万幅彩色图像组成.

1.6 评价方法

目前,衡量对比学习模型的效果最常用两种评估方法是线性评估方法和微调(Finetune)评估方法.在进行评估之前,将预训练好的模型作为下游任务的主干网络,然后,根据下游任务和数据集的要求,在主干网络后加入对应的任务头网络,最后采用线性或微调方法进行评估.

线性评估方法.采用该方法评估主干网络时,需要冻结主干网络参数,只训练下游任务头网络.然后采用下游任务数据集中的测试集对模型的能力进行评估.

微调评估方法.采用该方法评估主干网络时,采用下游任务的数据训练由主干网络及任务头组成的整体网络,然后同样采用下游任务数据集的测试集评估模型.

1.7 本文符号定义

本文中所使用的数学符号定义说明如表2 所示:

表2 本文所用符号总结Table 2 Summary of the symbols used in this paper

2 对比学习研究现状

在本章内容中,首先引入所提出的归类方法,在此基础上归纳总结国内外对比学习研究成果.值得注意的是,对比学习亦深受我国学者的关注,很多优秀的对比学习论文虽然发表在国外学术会议和刊物上,但作者为国内学者.

2.1 归类方法

本文提出一种新的归类方法,以对最新的对比学习工作进行系统归纳总结.如图1 所示,按照对比学习的整体流程,将现有方法划分为样本对构造层、图像增广层、神经网络架构层、损失函数层以及应用层等类型.

图3 将每种类型的对比学习方法进行细分及可视化表示.其中,样本对构造层方法可以细分为困难样本构造、剔除假负样本、正样本扩充及构造多视角样本四种方法.图像增广层可以细分为图像变换、图像合成及图像语义增广三种方法.网络架构层方法可以分为同步对称、同步非对称、异步对称、异步非对称对比学习,及基于聚类的网络架构.特征提取网络主要使用ResNet[30](Residual neural network)、Transformer[31]等主流神经网络结构,损失函数层分为基于互信息的损失函数、传统损失函数和混合损失函数.下面将分别介绍各类型的方法.

图3 对比学习的整体流程及各模块的细分类方法Fig.3 Overall framework of the contrastive learning process and the sub-category of each module

2.2 样本处理及样本对构造方法

在对比学习过程中,样本对的选择指的是对数据集的采样过程.1) 对无标注数据集,通常采用随机采样的方法构建一个批次的数据,因此一个批次的数据可能存在类别分布不均匀的情况,导致假负样本的出现及困难负样本过少的问题;2) 对有标注数据集,通过标签信息采样训练数据,能够有效提高对比学习效果.下面将分别介绍各种细分的样本处理及样本对构造方法.

2.2.1 困难样本构造

如图4 所示,图(a) 是狗,图(b) 是狼,在选择样本进行模型训练的时候,这两种动物在视觉上相似度很高,同时在经过网络提取特征之后,他们的特征之间的余弦相似度也比较高,容易被误认为是相同类的样本,而这两张图像并非同类,这种情况称为困难负样本对,同理,若两张图片属于同一类,但特征相似度不高则称为困难正样本对.多个研究表明,困难负样本和困难正样本对在对比学习中具有至关重要的作用.

图4 困难负样本对示例Fig.4 Example of hard negative pair

Zhu 等[32]通过对MoCo 算法训练过程的可视化分析,发现增加困难样本在同批次中的比例能够提升网络在下游任务中的表现.通过这一现象,作者提出了在特征空间上将负样本对图像对应的两个特征向量插值,正样本对图像对应的两个特征向量外推,构造新的、更加困难的样本对,最终提高了对比学习的效果.采用类似的思想,Kalantidis 等[33]提出了一种合成困难负样本的方法,该方法也作用于特征空间中,首先通过余弦相似性度量方法将输入样本对应的所有负样本进行降序排序并取前K个样本,然后使用与文献[32]相同的方法依次合成K个困难负样本.但是该方法只适用于带队列存储库 (Memory bank) 的对比学习模型.Zhong 等[34]提出了一种结合图像混合 (Mixup) 技术的困难样本构造方法,该方法首先利用Mixup 方法合成新的样本,然后通过余弦相似性度量方法挑选困难的合成样本,加入到原始数据中进行对比学习训练,提高了对比学习的训练效果.

2.2.2 剔除假负样本

如图5 所示,在同一批次的训练图像中,如果输入图像和同一个批次的其他某一张图像是同一类,但是在计算损失的时候把它们误归为负样本对,这种情况就称为假负样本对.在对比学习中,负样本的质量和数量是制约最后训练效果的关键,如果在训练的批次中出现假负样本,会降低最后的网络效果.

图5 假负样本示例Fig.5 Example of false negative pair

为了解决该问题,Huynh 等[35]提出一种启发式的方法来避免假负样本对训练的影响.该方法将同一幅图像使用多种增广方法得到的所有图像作为该幅图像对应的支持集,然后将同一个批次中该图像对应的每个负样本依次与其支持集中的每幅图像进行特征相似性计算,并将前K个最相似的负样本视为假负样本,认为这些负样本与输入图像具有相同的类标签.得到假负样本后,可以直接剔除假负样本,或将假负样本移入到正样本集合.通过大量实验,作者证明了两种处理方式都能提高对比学习的效果.针对相同的问题,Chuang 等[36]提出修正Info-NCE 损失函数中所有负样本相似度的指数幂和,以降低可能采样到的假负样本对损失值带来的影响.

2.2.3 正样本扩充法

扩充正样本有助于提高对比学习的效果.这里的扩充不包含图像增广方法,而是指从可用的数据资源中寻找隐藏的、与输入样本类别相同的图像的方法.在监督对比学习中,由于同类样本已知,一般无需扩充正样本.而在无监督对比学习中,若图像数据没有标注信息,一般无法进行正样本扩充.但在一些特殊场景下,如行人重识别、遥感图像处理、视频分析,可以基于某些假设,对正样本进行扩充.

Kim 等[37]将Mixup 方法应用到了对比学习领域,提出MixCo 方法,该方法将经过增广之后的两幅异类图像进行Mixup 操作合成新的图像.然后对所有合成的图像,计算其InfoNCE 损失,由于每幅合成图像对应两个类别,因此可以认为是扩充了每个样本对应的正样本个数.最终损失由原始图像上的对比损失和上述合成图像上的对比损失构成.

在行人重识别领域,王梦琳[38]提出一种度量不同相机中行人关联性的方法,将关联性强的样本视作同类样本,以扩充正样本的数量.

在遥感图像处理中,基于同一地点的遥感图像中的内容随时间变化较小的特点,Ayush 等[39]使用同一地点的不同时刻的遥感图像扩充正样本.

在视频分析中,Qian 等[40]基于邻近的视频帧图像可作为同类样本的假设,扩充正样本,用于对比学习.Kumar 等[41]同样采用这一假设扩充正样本.Han 等[42]发现对于两个不同的视频片段,做的动作相同时,在RGB 视角下,提取的特征相似度不高,但在光流 (Optical flow) 视角下,提取的特征相似度很高,反之亦然.基于以上发现,作者提出将光流视角下相似度高的视频片段作为RGB 视角下的正样本,同样,可采用相同方法扩充光流视角下的正样本.

在半监督学习领域,Wang 等[43]提出通过部分标签训练的分类器,在当前训练批次中利用余弦相似度指标寻找正样本的方法,扩充正样本数量.Yang 等[44]采用同样的思路设计类感知模块,扩充正样本数量.

2.2.4 构造多视图样本

多数对比学习方法所使用的数据只有一个来源(又称为同一个视图).针对该问题,研究人员探索使用多视图数据的方法提升对比学习的效果.Tian等[45]提出基于多视图特征的对比学习方法.该方法将同一幅图像在多个不同视图下的表达分别进行特征提取,然后进行对比学习,有利于提升模型的效果.在视频分析中,Rai 等[46]对同一幅图像分别提取光流、语义分割、关键点等多视图特征,然后进行对比学习,提升了视频特征表达能力.

2.3 图像增广方法

2.3.1 图像变换方法

图像增广是对比学习的天然组成部分,以产生网络所需的输入样本对.如图6 所示,传统的图像变换方法有随机裁剪、颜色失真、灰度化等方法.需要说明的是,单一的图像变换方法不利于有效的对比学习.SimCLR 综合对比了一系列图像变换的效果,发现由随机裁剪和颜色失真组成的变换组合能够获得更好的对比学习效果.

图6 常用图像变换方法示例Fig.6 Example of common image augmentations

在众多的图像变换方法之中,裁剪通常是必须的变换方法之一,但可能存在经过裁剪后的正样本对信息重叠过多或者完全不重叠的情况.如图7(a)所示,如果裁剪到的正样本对是两个矩形框中的区域,那么该图像对并不能促进对比学习,这种情况称为错误正样本 (False positive,FP).图7(b)给出了裁剪的两个图像区域重叠过多的情况,若选择它们作为正样本对,也无助于对比学习.Peng 等[47]针对以上问题,首先利用热图定位目标区域,然后采用中心抑制抽样策略,在目标区域内离物体中心越远的像素点被采样到的概率越高.得到采样点后,以采样点为中心,并使用随机生成的宽高,进行最终的图像裁剪操作.在SwAV 中,作者提出了一种多裁剪策略 (Multi-crop),该策略给编码器提供多个不同尺度的裁剪图像作为正样本,并验证了该策略有助于提高对比学习算法的性能.

图7 裁剪操作对正样本对构造的影响示例Fig.7 The influence of constructing positive pairs by image crop

2.3.2 图像合成方法

图像合成不同于图像变换,前者能够生成新的内容.在视频分析中,Ding 等[48]提出复制粘贴的图像合成方法,将所选视频帧的前景区域粘贴到其他视频帧的背景图像中,得到合成的视频帧,通过这种简单的合成方法,使得对比学习模型能够更加关注前景信息,提取到更加良好的特征表达.

2.3.3 图像语义增广方法

图像语义增广是一种直接对图像中物体的语义进行修改的图像增广方法,如将图像中的物体的颜色或角度进行改变.现有的一些语义增广算法[49-51]已证明其在不同问题和应用中的有效性.相较于图像变换方法和图像合成方法,图像语义增广是一种更强的图像增广方法.Tian 等[52]认为最小化在不同增广下样本间的互信息有利于提高对比学习的效果,为了最小化训练样本对之间的互信息,作者引入了对抗训练策略寻找可以最小化训练样本对互信息的图像变换编码器Sg,通过与InfoNCE 联合训练,获得了更适用于下游任务的模型,经过训练得到的图像变换编码器Sg可认为是一个语义增广器.

2.4 对比学习网络架构设计

根据对比学习网络架构的更新方式是同步或异步,及该网络架构是对称或非对称,本文将对比学习所涉及的网络架构划分为同步对称、同步非对称、异步对称和异步非对称4 种类型.同步更新指的是对比学习网络的两个分支 (分支1和分支2) 同时进行梯度更新,异步更新指的是两个分支网络的权值更新方法不同.对称指的是分支1和分支2 的网络结构完全相同,非对称则指相反的情况.除此之外,本节还将含有聚类算法的对比学习方法总结为聚类对比学习架构.

2.4.1 同步对称网络架构

典型的同步对称网络架构如图8 所示,分支1和分支2 采用相同的网络结构,并且同时采用梯度更新.

图8 同步对称网络架构Fig.8 The architecture of synchronous symmetrical network

SimCLR[2]是最早提出采用同步对称网络架构的对比学习工作.该网络架构采用了结构相同的两个网络分支,每一个分支都包含特征提取网络和投影头.特征提取网络可以是任意的网络结构,例如ResNet和Transformer,投影头一般使用多层感知机 (Multilayer perceptron,MLP).如图8 所示,使用该网络架构进行对比学习的前向过程为:首先,输入一个样本,经过两种图像增广方法产生成对的训练样本.然后,通过特征提取网络和投影头将样本输出到投影空间.最后,在投影空间进行损失计算并回传梯度,更新特征提取网络和投影头的参数.同步对称网络架构除了可以用于自监督对比学习之外,Khosla 等[8]将该类网络架构应用到了监督对比学习之中.值得注意的是,采用该类网络架构的对比学习算法若想获得良好效果,往往需要在训练时采用很大的批次进行训练,比如1 024 或2 048.

2.4.2 同步非对称网络架构

典型的同步非对称网络结构如图9 同步非对称网络所示,分支1和分支2 采用不同的网络结构,但同时采用梯度更新.同步非对称网络架构与同步对称网络架构的相同之处在于两个分支都进行了梯度更新,不同之处在于前者的两个分支的网络结构不同,而后者相同.

Van 等[7]提出一种基于该种网络架构的对比预测编码方法CPC.在该方法中,分支1 的输入为某一个时间点的数据,分支2 的输入为未来某一个时间点的数据,训练的目标是利用分支1 的输出预测分支2 的输出,如图9 所示,然后计算对应的预测损失.在CPC 算法之后,衍生出很多改进的算法[41,53],这些方法均采用典型的同步非对称网络架构,其主要改进之处在于采样方法或损失函数.

图9 同步非对称网络架构Fig.9 The architecture of synchronous unsymmetrical network

除了如图9 所示的同步非对称架构之外,还存在一些其它形式的同步非对称的网络架构,主要有如下两种形式:1) 分支1 与分支2 均含有投影头,但投影头结构不相同[54-55].2) 分支1和分支2 的特征提取网络数量不相等[56-57].

Nguyen 等[54]将对比学习方法应用于网络结构搜索任务 (Neural architecture search,NAS),提出CSNAS 方法,该方法构造了一个类似于上述第1 种形式的同步非对称网络架构.Misra 等[55]在分支2 中使用拼图代理任务进行特征学习,因此在分支2 的投影头之前还包含拼接操作以及多层感知机的映射,构成了符合上述第1 种形式的同步非对称网络架构.

Bae 等[56]提出自对比学习 (Self contrastive learning,SelfCon) 方法,该方法构造了一个类似于上述第2 种形式的同步非对称网络架构,在该方法中,将一个特征提取网络和一个投影头组合在一起,称为一个主干网络块,分支1 采用多个主干网络块进行特征映射,分支2 从分支1 中的某个节点引出,通过一次主干网络块映射得到另一个视图下的特征,最后进行损失计算.类似地,Chaitanya 等[57]提出可用于图像分割的对比学习方法,在该方法中,分支1和分支2 共享编码器,但分支1 直接在编码器后加入投影头,分支2 在编码器后加入一个解码器,然后再加入投影头.

2.4.3 异步对称网络架构

在异步对称的网络架构中,分支1和分支2 采用相同的网络结构,但是两个分支的神经网络权值更新方式不同,因此称作异步更新,如图10 所示.

图10 异步对称网络架构Fig.10 The architecture of asynchronous symmetrical network

MoCo 是经典的采用异步对称网络架构的对比学习方法.其中,分支1 中的特征提取网络和投影头采用SGD 等梯度更新方法更新权值,而分支2的特征提取网络和投影头采用动量更新的方式,动量更新的公式如式 (2) 所示:

其中,是分支2 中动量特征提取网络在时刻t的参数值,是分支1 中特征提取网络经过t时刻梯度反传训练过后的参数值,m是 0-1 之间的动量系数.这种动量更新机制能够有效防止极端样本对参数更新影响过大的问题.

在对比学习中,负样本的数量对最终的模型效果起决定性的作用.在原始的对比学习方法中,负样本的来源是同批次的训练数据,为了增加负样本的数量,必须采用大批次的数据来支撑训练,但这样会造成存储资源过大,计算消耗巨大的问题.MoCo设计了队列 (Queue) 结构,存储一定数量的之前批次用到的样本的特征,当队列容量满时,最老样本的特征出队,最新样本的特征入队.在MoCo 方法中,对比学习所需的负样本将从该队列中抽样产生,避免了原始对比学习方法为获得较多负样本而构建大的批容量带来的问题.简言之,该队列结构减小了对存储资源的要求,又取消了训练必须采用大批次数据的约束,提升了计算速度.后续的基于异步对称网络架构的方法都将该队列结构作为其默认的组成部分.

近年来,随着Transformer 技术的发展,研究者将其引入到计算机视觉领域,例如ViT[58].在对比学习的研究中.Caron 等[59]提出了一种名为DINO(Self-distillation with no labels) 的异步对称对比学习方法,该方法采用Transformer 作为骨干网络,并将自监督对比学习转换为蒸馏学习的任务,将分支1 视作学生网络,将分支2 视作教师网络.学生网络采用梯度回传更新参数,教师网络采用动量更新方式更新参数.

2.4.4 异步非对称网络架构

异步非对称网络架构指的是分支1和分支2 采用不同的网络结构,同时参数更新方式也不同.异步非对称网络架构与异步对称网络架构的相同之处在于两个分支的更新方式相同,不同之处在于前者的两个分支的网络结构不同,而后者相同.

异步非对称网络架构存在两种形式,一种是采用MoCo 作为主干网络,但是投影头数量不一致,以BYOL[4]方法为典型代表.另一种是网络架构不对称,同时采用梯度交叉更新的方法,以SimSiam[6]方法为典型代表.

BYOL 的网络结构如图11 所示.其主干网络结构是MoCo,分支2 的网络参数采用动量更新机制.BYOL 是首个只采用正样本进行对比学习的工作,但由于训练集中不存在负样本,如果上下网络分支结构完全相同,训练就有可能出现 “捷径解”的问题 (亦可称为 “网络崩塌”问题),“捷径解”指的是对不同的输入,输出的特征向量完全相同.为了解决这一问题,BYOL 在分支1 中额外增加了一个预测头 (MLP),构成了非对称网络架构,并将对比学习的实例判别代理任务替换为比对任务,即分支1 最终得到的特征与分支2 最终得到的特征要尽可能的相似.BYOL 的性能提升归因于以下两点设计:1) 良好的模型初始化.2) 在投影头和预测头中加入正则化技术.如果没有这两种设计,BYOL 仍可能出现 “捷径解”的问题[60].

图11 BYOL 网络架构Fig.11 The architecture of BYOL

Chen 等[61]提出了一种基于视觉Transformer的异步非对称网络架构MoCov3.MoCov3 采了BYOL型异步非对称网络架构.在分支1 中额外加入了一个预测头,分支2 的编码器采用动量更新,获得了更好的对比学习效果.

另一种代表性的异步非对称架构是SimSiam.如图12 所示,SimSiam 方法也不需要利用负样本训练网络.为了避免网络出现 “捷径解”,该方法的两个分支的网络结构采用交叉梯度更新的方式.具体而言,训练分支1 的时候,投影头放在分支1 的编码器之后,计算其损失,而分支2 的梯度停止回传.在训练分支2 的时候,将分支1 的投影头接入到分支2 的编码器之后,并计算损失,而分支1 的梯度停止回传.这就是交叉梯度更新.

图12 SimSiam 网络架构Fig.12 The architecture of SimSiam

2.4.5 聚类对比学习结构

在上述四种网络架构的基础上,还可以结合聚类技术进行进一步的优化.

基于实例的对比学习算法在计算损失差别过大,不利于模型学习到良好的语义特征.而聚类算法能够在无监督情况下自动学习数据的语义信息.因此,一些方法将对比学习与聚类方法结合在起来,嵌入到上述四种网络架构中.

Caron 等[62]首次将K-Means 聚类算法与无监督深度学习结合,提出深度聚类算法 (Deep cluster),该算法通过K-Means 聚类产生伪标签,然后利用伪标签对模型进行自监督训练.在该方法的基础上,作者又提出了一种基于聚类的对比学习算法SwAV,该算法采用同步对称网络架构训练特征提取网络.在分支1和分支2 之间引入聚类中心信息,并计算相关损失,帮助网络进行训练.相关的细节在第2.5.2节中给出.

Li 等[63]提出原型对比学习算法 (Prototypical contrastive learning,PCL),该方法采用异步对称网络架构,分支1 采用梯度更新,分支2 采用动量更新.在PCL 的前向传播过程中,当分支2 对输入样本提取特征之后,采用K-Means 算法依据样本特征进行聚类.然后,将分支1 得到的每个样本特征与分支2 的所有聚类中心计算聚类对比学习损失,将分支1 的样本与其所属的聚类中心的向量视作正样本对,其余为负样本对.最终的损失函数由聚类对比学习损失和原有 (实例) 对比学习损失构成.聚类对比学习损失计算的目标是最大化样本实例与其相对应的聚类中心特征之间的相似度,因此这种设计也能在一定程度上缓解实例对比学习中的假负样本问题.PCL 仅在分支2 上进行聚类计算,后续工作尝试在两个分支上都进行聚类,如Wang 等[64]提出的方法,将分支1和分支2 都进行聚类计算,然后进行交叉聚类对比学习损失计算.

在现实图像数据集中,往往存在多层级的语义结构,例如在"狗"这个分类的数据中,还存在 “哈士奇”、“金毛”、“雪纳瑞”等不同品种的狗.现有的很多对比学习方法没有考虑到数据集的这个特点.针对这一问题,Guo 等[65]提出了一种分层聚类的对比学习方法(Hierarchical contrastive selective coding,HCSC),HCSC 的网络架构如图13 所示,和PCL 的神经网络架构相同,都属于异步对称网络架构.HCSC 通过多层聚类来实现对数据集中存在的分层语义现象的模拟.具体而言,在分支2 的特征提取操作之后,首先,通过K-means 算法计算第一层聚类中心,随后针对第一层聚类中心再使用K-means 算法寻找下一层的聚类中心,循环N次,得到N个层次的聚类向量,完成对N层语义的模拟.同时HCSC 还提出一种新的负样本采样方法:在每一层语义结构中寻找与当前输入样本特征的原型相似度较低的样本作为负样本.这种采样负样本的方法能够有效缓解采样到假负样本的问题.

图13 HCSC 网络架构Fig.13 The architecture of HCSC

此外,Li 等[66]提出了一种聚类中心可自动学习的聚类对比学习算法.该网络设计了一个共享特征网络的双分支同步对称网络架构,两个分支分别构建投影头,即用于实例对比学习的投影头I,和用于聚类对比学习的投影头C.投影头I采用线性激活,投影头C采用softmax 激活.将投影头C输出的矩阵中的列向量作为聚类中心,通过InfoNCE 损失和交叉熵损失联合训练模型,在训练过程中由于投影头C参数在更新,聚类中心因此也获得自动更新的能力.

Cui 等[67]提出了一种新的异步非对称聚类网络架构PaCo,该方法将聚类思想和MoCo 结合在一起,通过构建一个可随着模型一同学习的参数化类别中心c,使数据少的类别在训练中的重要性提升,从而在长尾学习中实现对损失的再平衡.

2.5 损失函数设计

为了实现对比学习的优化目标,研究者使用了多种针对性的损失函数,可以分为基于互信息的损失函数 (InfoNCE 类)、传统损失函数和混合损失函数.

值得注意的是,对比损失[13]与对比学习损失很容易在字面上产生混淆,实际上,对比损失是一种度量学习损失,只能用于监督学习,且样本对数据来源与对比学习不同,因此,对比损失不一定是对比学习的损失函数.

2.5.1 InfoNCE 损失函数及变种

对于深度学习模型来说,理想的训练目标是获得一个从样本到特征的映射模型p(z|x;θ),其中x是样本,z是模型输出的特征,θ为需要学习的参数.很多自监督学习方法通过交叉熵或均方误差训练网络达到上述目标.然而,基于交叉熵或均方误差这样的单峰函数的损失往往效果不好[7].因此Van 等[7]提出通过最大化互信息的方法训练特征提取网络.互信息I(X;Y) 是一个概率论中的概念,可以衡量两个随机变量X和Y之间的相关性.互信息的定义如式 (3) 所示:

由于直接最大化互信息是十分困难的,因此作者提出了通过InfoNCE 损失来间接优化互信息的方法.InfoNCE 损失的思想是将最大化互信息转换为真实分布占合成分布的概率密度比的预测问题[68].原始InfoNCE 公式 (4) 所示:

其中,X={x1,···,xN}为采样的N个样本,f为特征提取网络,q=f(xq) 为查询样本的特征向量,h+=f(xi) 为xq为对应的正样本的特征向量.在训练中,每个查询样本xq只对应1 个正样本xi,其余都视为从噪声分布里面采样的负样本.s为相似度度量函数,这里采用余弦相似度.Van 等[7]和Poole等[69]证明了优化InfoNCE 损失等价于优化变量之间的互信息的下界,并且I(xq,xi)≥lnN -LinfoNCE,可知如果想获得一个较高的互信息值,需要大批次的样本参与训练.

SimCLR 首先将InfoNCE 损失引入到对比学习中来,由于训练所用的样本对来自于同一幅图像的两次不同增广,因此InfoNCE 的优化目标变为最大化同一个样本的两个不同增广图像之间的互信息,SimCLR 中采用的InfoNCE 如式 (5) 所示:

其中,X={x1,···,xN}为采样的N个样本,f为特征提取网络,g为投影头,T为图像增广函数,zi=g(f(T1(xi)))为样本经过第1种图像增广之后产生的投影向量,=g(f(T2(xi)))为样本经过第2种图像增广之后产生的投影向量,为一个指示器函数,当时为1,否则为0.s为相似度度量函数,此处使用余弦相似度函数,即s(u,v)=uTv/(||u||||v||).总结而言,在SimCLR的InfoNCE公式中,分子表示同一个样本的两种不同变换得到的正样本对的特征相似度,分母是不同图像组成的负样本集合中的每个负样本对的相似度的和.

在InfoNCE 引入到对比学习之后,许多方法[3,9,32-33,40,48,52-54,57,70]对其直接调用并扩展到更多的学习任务中.表3 列出了一些对InfoNCE 改动较大的方法,包括ProtoNCE[63],DCL[71],DirectNCE[72],SCL[8],FNCL[35].其中,第一行为原始的InfoNCE损失函数,其他部分为对其改进的损失函数,包括ProtoNCE,DCL,DirectNCE,SCL,FNCL 等损失函数.

1) ProtoNCE 损失函数.与原始InfoNCE 损失函数相比,ProtoNCE 的分子部分将正样本实例之间的相似度修改为正样本与其所在的聚类中心之间的相似度,分母部分改为计算样本与其它聚类中心之间的相似度.具体而言,当前实例特征与其对应的聚类中心互为正样本对,与其它聚类中心互为负样本对.在实际操作中,通过设置不同的聚类中心个数对一个批次的数据进行M次聚类,计算M次ProtoNCE 损失,然后求其损失均值,最后得到的效果会更好.

ProtoNCE 方法是在同一个语义层级上进行聚类,但无法获得分层的语义结构.Guo 等[65]针对该问题提出分层聚类的方法,该方法对每个聚类迭代地进行下一级细分聚类,使特征网络能够学习到分层的语义结构,获得更好的效果.

2) DCL 损失函数.Yeh 等[71]通过对InfoNCE的反传梯度进行分析,发现损失的梯度中存在一个负正耦合系数,该系数体现了采用InfoNCE训练网络时大批次样本的重要性,同时揭示当训练样本中存在简单正样本对和简单负样本时,会明显降低对比学习训练的效率,因此作者提出了解耦对比学习损失 (Decoupled contrastive loss,DCL),解决上述问题.与InfoNCE 损失函数相比,DCL 去除InfoNCE损失函数中的负正耦合项,并将损失展开成两部分,具体如表3 中的DCL 损失函数公式所示,该式展示的是单个样本的DCL 损失计算公式,原InfoNCE包含的负正耦合系数在该式中已去除.该式的第一项表示正样本对之间的相似度,第二项是当前样本与同批次其他样本组成的负样本对之间的相似度之和.从该式可以看出,DCL 损失的计算相较于In-foNCE 损失更加简单、高效.

表3 InfoNCE 损失函数及其变种Table 3 InfoNCE loss and some varieties based on InfoNCE

3) DirectNCE 损失函数.Jing 等[72]从解决对比学习中的网络崩塌问题入手,经过一系列分析,提出去掉投影头,然后将特征提取网络输出向量的前d个维度单独取出,计算InfoNCE 损失.由于论文中并没有给改动后的损失起名,因此为了便于对比,本论文中将其命名为DirectNCE.DirectNCE与InfoNCE 的区别在于所使用的样本特征维度大小,在DirectNCE 中,样本只取前d个维度计算损失.

4) FNCL 损失函数.针对在训练对比学习模型时可能存在的假负样本问题,Huynh 等[35]首先提出了一种假负样本的检测策略,然后对InfoNCE 进行改进,在损失函数中剔除了假负样本的干扰.本文将该方法暂定名为FNCL.与InfoNCE 相比,FNCL方法首先确定当前正在处理的样本对应的假负样本,然后在分母中计算负样本对之间的相似度时,去除假负样本的部分.

5) SCL 损失函数.SCL[8]损失函数面向有监督学习,对InfoNCE 损失函数进行改进,旨在解决深度有监督学习中采用交叉熵损失时神经网络对噪声标签敏感[73]的问题.

令P(i) 表示当前批中正在处理的样本对应的同类样本集合 (因为数据为有标注数据),|P(i)|表示该集合中样本的数量,与InfoNCE 损失函数相比,SCL 损失函数的分子计算当前样本与其对应的P(i)集合中每个正样本之间的相似度的和,而分母部分并无变化.该损失在特定情况下可以等价于三元组损失[74]和N-Pair 损失[75].在SCL 的基础上,研究者还研究了利用对比学习提升长尾学习效果的方法,此部分工作将在第2.6.4 节进行详细介绍.

2.5.2 传统损失函数在对比学习中的应用

如何衡量特征空间中不同特征点之间的距离是对比学习中一个很重要的问题.欧氏距离是衡量特征点之间距离的一个最直观的方法.通过最小化均方误差损失 (Mean square error,MSE),可以直接减小同类特征点之间的欧式距离,实现让同类特征靠近的目的.BYOL 先对两个分支的特征进行L2正则化,然后采用MSE 损失计算两个特征之间的距离,对网络进行优化.

除了欧氏距离外,余弦相似度也能够衡量特征之间的相似性,因此直接最大化相同样本的不同增广的特征之间的余弦相似度也能达到对比学习的目标.SimSiam[6]对其中一个分支的投影向量z和另一个分支的特征向量h计算余弦相似度,直接将负的余弦相似度作为损失函数进行训练,由于网络结构是一个非对称结构,为了平衡训练,作者将投影头依次放在两个分支后面进行损失计算,从而提出对称损失,其计算公式如式 (6) 所示:

欧式距离和余弦相似度都是非监督的特征相似度度量方法.除此之外,还有一些有监督的相似度计算方法.

在SwAV 方法中,首先初始化聚类中心,然后将聚类中心矩阵分别与分支1和分支2 的特征矩阵相乘,计算交换预测编码矩阵Q1和Q2,最后,采用交叉熵损失训练模型,训练分支1 时将Q2作为标签,训练分支2 时将Q1作为标签.聚类中心利用回传梯度进行更新.

此外,Shah 等[76]将支持向量机与对比学习结合在了一起,采用改进后的合页损失 (Hinge loss)优化对比学习网络.

2.5.3 混合损失函数

在某些情况下,只采用InfoNCE 损失不能获得良好的效果,而将多种损失函数结合,有助于提升对比学习的效果.

有监督混合损失.Wang 等[77]提出了一种将SCL 与交叉熵损失结合起来的损失.该方法采用一个平滑因子,在训练早期,SCL 占据损失的主导地位,随着学习过程的进行,交叉熵损失会逐渐占据主导地位.Li 等[78]将ProtoNCE 的思想带入到SCL中,即在SCL的分子中计算每个样本与其同类样本所形成聚类中心之间的相似度.在该算法中,聚类中心直接由同类样本的特征求平均值得到.最后,作者将上述损失与交叉熵分类损失联合训练,获得了较好的遥感图像分类效果.

半监督混合损失.Li 等[79]设计了一个基于伪标签图结构对比学习方法CoMatch.CoMatch 方法采用三部分损失训练网络.对比学习网络中的一个分支,对于有标签的数据,采用交叉熵计算损失,得到分类模型.在对比学习网络的另外一个分支,首先利用分类模型对无标签数据进行预测,产生软标签,该分支对每个无标注的数据,进行特征提取,并利用预测头产生预测结果,当样本对应的软标签的置信度较高时,采用交叉熵损失优化网络,同时,每个无标签的样本还将采用InfoNCE 计算损失.Yang等[44]采用与CoMatch 相似的损失构建方法,对有标签的数据采用交叉熵损失训练,对软标签置信度高的无标签数据采用交叉熵训练,对其余数据采用InfoNCE 进行对比学习训练,在该算法中,由于包含类感知模块,可以获得与当前训练样本相同类的样本集合,因此对比学习损失部分采用实例InfoNCE和SCL 相结合的损失函数.此外,Wang 等[43]将交叉熵损失和SCL 结合在一起,获得了良好的效果.

无监督混合损失.Park 等[80]将对比学习损失融合到基于GAN 的图像风格迁移任务中,该方法对变换前后相同位置的图像块进行对比学习,将对比学习损失辅助于GAN 损失,训练图像风格迁移模型,获得了良好的效果.

其他混合损失.Rai 等[46]对于具有多视图特征的数据,对同一样本在不同视角下的特征,分别采用InfoNCE、MSE和合页损失计算这些特征之间的相似性,并将三个相似性度量结果进行混合,用于网络模型优化.Kim 等[37]将Mixup 方法用在了对比学习中,该方法假定合成后的样本同时属于合成前的两个样本的类别,然后将合成样本分别与合成前的样本进行对比学习,得到两个损失,这两个损失的混合系数与合成图像时所产生的混合系数一致.基于相似的InfoNCE 与交叉熵损失结合的思想,Kumar 等[41]解决了无监督视频动作分割问题,Yang 等[81]解决了文本-图像跨模态特征提取问题,Dong 等[82]实现对五种模态数据的跨模态特征提取.

2.6 相关应用

对比学习在分类、分割、预测等下游任务中均有重要应用.本文针对每种下游任务,按照数据的类型,介绍相关的应用.本文将数据的类型概括为静态数据和序列数据,其中静态数据主要有图像、关系型数据、点云和图结构等类型,序列数据主要有视频、音频、信号等类型.

2.6.1 分类任务

分类任务是对比学习最常见的下游应用.在静态数据中,针对图像分类任务,Hou 等[83]提出基于对比学习的半监督高光谱图像分类算法,解决有标注数据不足时高光谱图像分类问题.该算法分为2个阶段对模型进行训练,第1 阶段,对于无标签样本,利用对比学习方法对模型进行预训练.第2 阶段,利用有标注的样本对模型进行监督学习.针对小样本遥感场景分类问题,Li 等[78]将无监督对比学习方法融合到小样本学习的框架中,提高了模型的特征提取能力.郭东恩等[84]将监督对比学习方法引入到遥感图像场景分类任务中,通过监督对比学习预训练,提高了遥感图像分类精度.Aberdam 等[85]将对比学习应用到文本图像识别任务.由于对文本图像采用随机增广的方法可能会导致文本内容的丢失等问题,因此,作者首先设计可对齐的文本图像增广技术,然后,基于同步对称网络架构进行对比学习训练,最终提高了文本图像识别的准确率.在细粒度分类问题中,Zhang 等[86]直接采用数据集中包含的分层语义标签,利用SCL 损失构建了一个细粒度分类对比学习算法.对遥感图像数据而言,同一个地理位置的图像语义信息几乎不随时间的变化而变化.基于该特点,Ayush 等[39]设计了一个针对遥感图像的对比学习方法,该方法将同一地理位置不同时间的两幅图像作为对比学习中的正样本对.基于MoCo 架构,该方法将图像定位的代理任务添加到其中一个分支的特征提取网络之后,辅助模型训练,从而提高了下游任务的预测性能.

卢绍帅等[87]将监督对比学习应用到了文本数据的情感分类研究中.在弱监督预训练阶段,采用三元组损失预训练模型;随后,在下游的分类器训练阶段,采用SCL 损失和交叉熵损失联合优化网络,获得更好的分类结果.

在序列数据的分类中,也涌现出了一些基于对比学习的算法.李巍华等[88]将MoCo 方法迁移到故障信号诊断研究领域中,首先,通过对信号进行无监督对比学习预训练,获得良好的特征提取网络.然后,再进行分类网络训练,解决了信号故障诊断问题.

自监督对比学习的训练通常分为两个独立的阶段,即特征提取网络训练和分类器训练.在分类器训练阶段,有是否冻结特征提取网络参数的两种选择.Wang 等[77]认为这种两阶段的学习方式会损害特征提取网络和分类器的兼容性,因此提出一个混合框架进行特征提取和分类器的联合学习.该方法的对比学习部分采用同步对称网络架构,并在特征提取网络后面加入一个分类器.在训练过程中,通过一个平滑因子来调整两个损失的权重,使得对比学习在训练开始时起主导作用,随着训练时间的推移,分类器学习过程逐渐主导训练.

2.6.2 分割任务

分割任务指的是对图像的语义分割、实例分割,视频中的动作分割等任务.图像分割任务关注像素级的分类,因此在此类任务中,特征提取网络能否学习到良好的局部特征至关重要.Wang 等[89]为了更好地学习到图像的局部空间特征,提出密集对比学习算法 (Dense contrastive learning,DenseCL).该方法提出全局对比学习框架和局部对比学习框架,每个框架均采用同步对称网络架构,两个框架共享同一个特征提取网络.其中,局部对比学习框架对卷积得到的特征取消拉平操作,从而保留特征的空间信息,使得学习到的特征提取网络更适合于分割任务.在医学图像分割领域,由于数据的标注过程非常依赖专家知识,获取大量的有标注数据代价十分高昂,因此,如何利用大量的无标签医学数据训练图像分割模型是一个很重要的研究问题.Chaitanya 等[57]将对比学习的思想应用到该领域,提出基于自编码器框架的全局-局部对比学习网络,在该方法中,全局对比学习目标是学习图像的全局语义信息,局部对比学习目标是学习局部特征信息.全局网络和局部网络共享同一个编码器.医学图像中有一个 “卷” (Volume) 的概念,对于全局网络,正样本对来自于同一幅图像的不同卷.对于局部网络,正样本对来自同一幅图像编码后特征的同一个空间位置.两个分支均采用InfoNCE 进行损失计算.康健等[90]采用监督对比学习方法解决高分辨率SAR 图像的分割问题,通过改进的SCL损失提高同类建筑像素特征之间的相关性,最终提高模型对建筑物的分割精度.Wang 等[91]在Mask RCNN[92]框架中加入对比学习模块,提高了像素级特征的可分辨能力,获得更好的图像分割结果.

在视频动作分割问题中,Kumar 等[41]提出基于对比学习的无监督视频动作分割方法.该方法对SwAV 算法进行改进,且不需要图像增广,利用 “视频数据的相邻帧为同类样本”这一假设,将相邻帧的图像作为正样本对进行对比学习,完成视频动作分割任务.

2.6.3 视频及关系数据预测任务

在视频预测问题中,研究者使用密集预测编码(Dense predictive coding,DPC)[53],预测视频未来帧的信息.Han 等[42]将DPC 与存储库思想结合起来,提出存储增强密集预测编码方法,该方法将视频的特征保存到存储库模块中,并设计了存储库寻址机制.通过该存储库模块的设计,网络在训练过程中能够考虑更长时间段的特征,使预测结果更好.此外,为了更好地捕捉到视频中的重要信息,Zhang 等[93]提出对编码视频同时进行帧间以及帧内的对比学习,Han 等[53]对不同视角的特征进行对比学习.

Bahri 等[94]将对比学习方法应用到了关系型数据预测任务中.为了构建训练所需的正样本对,作者提出了一种面向关系型数据的增广方法.该方法受启发于关系型数据中同一维度 (属性) 下的信息语义相同的特点,先在输入样本的对应维度上随机抹除一部分数据,然后,从其他样本的相同维度的数据中随机抽取信息填充到当前输入样本被抹除的位置中,最后,基于同步对称架构的网络进行对比学习.训练得到的模型可用于预测关系型数据中丢失区域的信息.

2.6.4 长尾识别任务

粗略地说,长尾数据是指尾部类众多的不均衡数据,而长尾学习的主要研究目标是提升尾部类的识别正确率.最近几年,研究者们开始尝试将对比学习的思想和技术应用到长尾学习任务中.

文献[95]提出K-正样本对比损失 (K-positive contrastive loss,KCL),将对比学习与长尾识别任务结合起来.具体而言,在长尾学习的特征学习阶段,KCL 使用对比学习方法,但每个训练样本仅随机选取K个同类样本.而在后续的分类器训练阶段,仍采用传统的交叉熵损失,但使用类均衡采样,以平衡不同类的样本量、提升少数类的分类准确度.文献[96]提出目标监督对比学习 (Targeted supervised contrastive learning,TSC) 方法,将监督对比学习用于长尾识别的任务中.该方法首先在特征空间中设定均匀分布的聚类中心,然后,在KCL 损失的基础上,增加样本到其聚类中心之间的距离计算的损失项,以将样本逼近其聚类中心,使得不同类别之间的分类界限更加清晰.

文献[97]提出平衡对比学习损失 (Balanced contrastive learning,BCL),用于长尾识别.该方法将类别中心加入到对比学习计算中,并求批中每个类别的样本的梯度的平均值,以减少多数类样本在梯度方面的影响.

2.6.5 其他任务

对比学习除了在分类、分割、预测这些任务中有广泛的应用以外,在多模态学习任务中,也有重要作用.多模态学习任务通常包含两大类子问题,即模态内的特征学习问题和模态间特征对齐问题.

Yang 等[81]提出了一种视觉-语言跨模态对比学习方法.该方法提出将对比学习方法应用于模态内特征提取网络的训练,使各模态的特征提取网络能力更强,解决了跨模态学习过程中模态内的特征学习问题.Dong 等[82]将对比学习运用在包含5 个模态数据的模型训练中.针对模态内特征学习问题,该方法采用掩码恢复任务作为模态内模型的代理任务.然后,针对不同模态特征之间的对齐问题,设计模态间对比学习模块,利用模态间的对齐得分矩阵衡量不同模态间信息的相似度,进行更好的对比学习.Afham 等[98]将对比学习算法引入到3D 点云表示学习中.该模型采用两个并行的对比学习方法,其中一个对比学习方法基于SimCLR 网络结构,在点云数据内部进行对比学习,另一个对比学习方法引入二维图像数据,将点云数据与对应的二维图像数据进行跨模态的对比学习.

Laskin 等[99]将对比学习结合到强化学习中,用于提高特征提取网络的能力.该方法基于MoCo 架构,分支1 的输出,送入强化学习中;分支1和分支2 的输出,组对送入对比学习中.

3 综合对比分析

本节根据前文提出的对比学习归类方法,对现有的方法进行归纳汇总和整体分析.表4 汇总了代表性的对比学习方法及其所属归类 (包括具体样本对构造、图像增广方法、网络架构类型和损失函数).另外,本节还对代表性对比学习方法的性能进行了对比分析.

3.1 整体分析

表4 以时间为序,依据前文提出的归类方法,对主要的深度对比学习算法进行归纳汇总,从样本对构造、图像增广、网络架构和损失函数4 个层面进行分析.该表的最后一列主要是为了区分是否为有监督对比学习方法,“无标签”表示数据无标注,对应无监督对比学习方法,“部分标签”表示半监督对比学习算法,而 “有标签”表示监督对比学习算法.

表4 对比学习方法整体归类分析Table 4 Analysis of different contrastive learning methods based on our proposed taxonomy

图14 从宏观上统计各细分类所采用方法的占比情况.其中,1) 在样本对构造层,最常采用的为随机采样方法,即将数据集打乱顺序,从其中随机抽样一个批次进行训练.但其它样本对构造方法越来越受到研究者的关注 (尤其是正样本扩充和困难样本构造类方法);2) 在网络架构层,最常用的是同步对称网络架构,但以MoCo 为代表的异步对称网络架构和同步非对称网络架构也得到了大量关注;3) 在损失函数层面,最常用的是InfoNCE 损失函数及其变种,占比约70%,但随着对比学习下游应用的发展,混合损失函数不断涌现;4) 在应用领域层面,目前对比学习最常用于无监督学习领域,但也有越来越多的工作将其应用在有监督学习和半监督学习中.需要说明的是,在图像增广层,大部分工作都是直接采用简单的图像变换方法,而数据合成及图像语义增强方法较少,故未对其进行可视化展示.

图14 不同类型的对比学习方法统计展示Fig.14 The statistical results of different contrastive learning methods

分析不同对比学习方法随时间演进的规律,发现对比学习呈现以下发展趋势:从样本对构造层面来看,对比学习从一开始需要大批次采样负样本,发展到通过队列采样负样本,再发展到不需要负样本的对比学习方法,以减轻对比学习对计算资源的要求,这亦是其必须解决的关键问题之一.

从网络架构层面来看,对比学习有以下发展趋势:最初的对比学习架构主要采用同步对称和异步对称架构,但随着BYOL和SimSiam 等异步非对称网络发展,因其只需要正样本和小批次数据就能进行对比学习训练的优点,这种网络架构得到了越来越多的关注.同时,由于聚类方法能够有效地提取数据的语义信息,因此聚类方法与上述4 种架构的结合也越来越受到研究者的关注,并得到了一定的发展.此外,所采用的主干网络的结构也逐渐从卷积神经网络向Transformer 过渡.从损失函数层面来看,对比学习呈以下发展趋势:从初始的InfoNCE 损失函数发展到各种变种,再到尝试采用多种传统损失函数进行对比学习,再到混合多种不同类型的损失函数进行训练,以提升模型的性能.

从下游任务来看,对比学习从开始时只关注图像分类,逐渐向视频分析、遥感图像处理、医学影像分析、文本分析和多模态学习等任务拓展,且具有进一步的发展空间.

3.2 不同对比方法的性能分析

本部分内容将不同对比学习算法在常用数据集上的性能表现进行对比和分析.

1) 图像分类.图像分类是最常见的下游任务,现有方法通常在ImageNet 数据集上采用第1.6 节中给出的线性评估方法进行比较.表5 给出了不同算法在ImageNet 数据集上的分类准确度.可以观察到,在ImageNet 数据集上的分类任务中,在无监督学习中,SwAV 方法获得了最佳的分类效果,在有监督学习中,PaCo 获得了最好的效果.除了ImageNet 之外,常用于图像分类评估的数据集还有Cifar10和Cifar100,Food101,Birdsnap,Sun397,Cars,Aircraft,DTD,Pets,Caltech-101,Flowers等.为全面评估对比学习方法得到模型的可迁移性能,在这些数据集上采用第1.6 节中给出的评估方法进行对比分析,其中,主干网络模型均采用Res-Net50,在ImageNet 数据集上训练得到.结果如表6所示.表中VOC07 采用mAP (Mean average precision) 指标进行验证,Aircraft、Pets、Caltech和Flowers 数据集采用平均准确率 (Mean per class accuracy) 进行验证,其余数据集采用Top 1 分类进度进行验证.半监督学习根据所采用的有标注数据的比例进行分类性能的评估.如表7 所示,1%指的是训练过程中使用了1%的有标注数据,10%指的是训练过程中使用了10%的有标注数据.其中,所有方法采用的主干网络均为ResNet50.整体而言,SimCLRv2 取得了最佳的半监督分类效果.

表5 不同对比学习算法在ImageNet 数据集上的分类效果Table 5 The classification results of different contrastive learning methods on ImageNet

表7 不同半监督对比学习算法在ImageNet 上的分类效果Table 7 The classification results of different semi-supervised contrastive learning methods on ImageNet

2) 图像检测和分割.在图像检测和分割任务中,VOC和COCO 数据集是较为常用的数据集.不同对比学习算法在这两个数据集上的分割性能在表8 中进行了汇总展示.

表8 中的所有模型均在ImageNet 数据集上进行预训练,随后在VOC 数据集或COCO 数据集上进行微调.表中所列出的算法均采用图像变换方法进行图像增广.网络结构方面,SimCLR 采用同步对称结构,MoCo和DenseCL 采用异步对称结构,BYOL和SimSiam 采用异步非对称结构,SwAV采用聚类对比学习结构.损失函数层面,SimCLR、MoCo 以及DenseCL 均采用InfoNCE 损失函数;BYOL、SwAV 及SimSiam 均采用传统损失函数(如第2.5.2 节所述).

表8 不同对比学习算法在图像分割任务上的性能表现Table 8 The image segmentation results of different contrastive learning methods on VOC and COCO dataset

由于DenseCL 在训练过程中加入了局部对比学习结构,使得学习到的模型对局部信息的提取能力提高,进而提高了模型的检测和分割能力,获得了目前最好的图像检测和分割效果.

4 现存挑战和未来发展方向

4.1 现存挑战

4.1.1 对比学习中的崩塌问题研究

崩塌问题是对比学习研究中经常会遇到的问题,崩塌包含两种现象,第1 种称为完全崩塌,第2种称为维度崩塌.完全崩塌指的是对于任意输入,模型会将其输出到同一个特征向量上.维度崩塌是指特征向量只能占据特征空间的某一个子空间中的现象.完全崩塌如图15(a)所示,维度崩塌如图15(b)所示.

图15 完全崩塌与维度崩塌示例Fig.15 Example of complete collapse and dimensional collapse

一般来说,有两种办法观测网络是否发生崩塌:1) 将训练好的特征提取网络应用到下游任务,若下游任务表现不好,则可能出现崩塌.2) 特征提取网络训练完成后,首先,将一个批次的测试数据进行特征提取.然后,计算该批次特征矩阵的协方差矩阵.最后,对协方差矩阵进行奇异值分解.如果奇异值矩阵对角线上的值在某一个维度开始发生断层现象,则网络发生了崩塌[72].

对于采用负样本进行对比学习的方法来说,由于训练过程中网络可以见到大量不同的负样本,因此在一定程度上可以避免维度崩塌问题.而对于只采用正样本进行对比学习的算法来说,则需要一些特殊的设计以避免崩塌[4-6].SwAV 采用聚类的思想避免了不同的输入输出到同一个特征向量上的问题,从而防止了完全崩塌的出现.BYOL 采用了非对称的网络设计和动量更新方法避免网络的完全崩塌.SimSiam 通过实验证明了,通过交叉梯度回传,能够有效的防止网络完全崩塌.在避免维度崩塌问题上,有一些论文专门对其进行研究和讨论,根据这些论文的讨论内容,可以将其分为两种思路,即缓解维度崩塌思路和避免维度崩塌思路.

1) 缓解维度崩塌

Jing 等[72]探讨了对比学习中出现的维度崩塌问题,作者发现,在对比学习中,强大的图像增广方法和隐式正则化可能是产生维度崩塌的原因.在该论文中,作者提出了一个简单有效的解决维度崩塌办法:DirectCLR.DirectCLR 采用与SimCLR 相似的同步对称网络架构,但进行了下述两点改进:1) 抛弃投影头.2) 在完成特征提取之后,只在特征向量的前d个维度上计算损失.对于这种方法的一个直观的理解是:通过训练,将没有崩塌的维度全部集中到前d个维度中去,因此最后在前d个维度上就没有了崩塌问题.在这种理解下,超参数d的物理意义为没有发生崩塌的子空间维度.

DirectCLR 中的实验证明,与没有投影头的SimCLR 相比,DirectCLR 的效果要好一些.然而当SimCLR 有一个两层的非线性投影头的时候,表现会比DirectCLR 要好很多.这个现象可能在一定程度上证明了如下观点:投影头在对比学习方法中承担着寻找无崩塌子空间的任务.在该观点下,首先,特征提取网络将输入样本进行特征提取,获得特征矩阵.然后,投影头将高维特征矩阵映射为低维投影矩阵.最后,在低维的投影空间中计算损失.通过一次投影头的降维变换,将在高维特征空间中可能出现的崩塌现象转移到没有崩塌的低维投影空间中,从而保证了损失计算的有效性.

2) 避免维度崩塌

对维度崩塌的直观理解是特征空间中的部分维度失去了信息.为了避免这种情况的出现,Zbontar 等[101]等计算分支1 特征矩阵和分支2 特征矩阵的协方差矩阵,通过将协方差矩阵的学习目标设计为同形状的单位矩阵,来完成以下两个目标:1) 保证每个维度信息的有效性.2) 消除不同维度之间信息的相关性.通过设计上述学习目标,在训练过程中,协方差矩阵的主对角线上的元素值会逐渐向1 靠近,其它元素的值会逐渐向0 靠近.由于协方差矩阵的主对角线元素可以代表该维度信息的信息量,大于0 可以保证该维度没有发生崩塌,非对角线元素代表不同维度之间信息的相关性,等于0 即可保证各维度信息独立.因此通过学习,在避免维度崩塌出现的同时也消除了维度间的冗余性,使得训练过程更加稳定有效.Hua 等[102]深度分析了自监督学习中的特征崩塌问题,同样提出特征去相关方法避免崩塌.

Bardes 等[103]进行了更加深入的探索,提出分别在分支1和分支2 的特征矩阵上采用与Zbontar类似的方法去除维度间的冗余性.与Zbontar 方法不同的是,Bardes 引入了特征矩阵的方差信息,当某一个维度的方差信息向0 靠近时,可以认为该维度发生了崩塌,因此作者通过合页损失使得每个维度的方差信息向超参数γ靠近,从而避免了崩塌.此外,该方法还引入了不变项约束,该约束采用MSE 损失减小同一个样本在分支1 中特征和在分支2 中特征之间的距离.

4.2 算法效率优化

在对比学习获得成功的背后,因其需要大批次样本参与学习的特点,从而对计算资源和存储资源产生较高要求,这在一定程度上限制了对比学习的发展.Bao 等[104]将对比学习过程中使用的负样本数量N与分类任务训练过程进行联合分析,发现增加N的值可以使得分类损失的上界和下界之间的截距减小.这篇论文从理论角度解释了负样本数量与下游任务性能之间的关系,证明了在无监督预训练阶段使用的负样本数量越大,对后续的分类任务的训练结果就越稳定.Yeh 等[71]通过对InfoNCE损失求解梯度发现对比学习存在负正耦合效应.此处的负正耦合效应指的是以下两种情况:1) 当正样本对相似度高 (简单正样本对) 时,损失对负样本回传的梯度变小.2) 当查询样本与所有负样本相似度都很小 (简单负样本) 时,损失对正样本回传的梯度变小.以上两种情况说明无论是训练中采用简单正样本对或简单负样本集均会造成训练效率低的问题.为了解决这个问题,论文提出解耦对比学习损失函数DCL.该损失去除了InfoNCE 中的负正耦合系数,从而可以用更小的批次来训练对比学习网络,同时提高计算效率.除此以外,很多经典的对比学习方法如BYOL,SimSiam 等都对训练批次大小进行了不同的实验.然而,如何利用更小的批次获得更好的对比学习效果,这仍是未来的一个挑战.

4.3 一致性与均匀性矛盾问题

在对比学习中,由于输出特征经过正则化,因此所有图像均会被映射到特征空间的单位超球面上.为了使模型具有良好的泛化能力,希望在超球面上分布的特征具有以下两点特质:1) 同类样本特征集合具有一致性;2) 所有特征分布具有均匀性[62].一致性指的是相同类的样本特征应当集合在超球面的同一片区域内,均匀性指的是所有样本的特征应当在超球面均匀分布,直观理解如图16 所示.避免神经网络崩塌的最好办法就是同时满足一致性和均匀性.均匀性有助于对比学习学习到可分离的特征,但是过度追求均匀性,将会导致一些语义相似的样本的特征一定程度上互相远离.Wang 等[105]针对这个问题进行详细分析,认为在对比学习训练中,一致性与均匀性是一个互相对抗的关系.该论文通过对InfoNCE 损失函数中的温度参数τ进行分析,发现温度参数τ的取值影响一致性与均匀性的结果,因此对于采用InfoNCE 损失进行对比学习的方法来说,温度参数τ的取值对模型最终的表现非常重要.

图16 对比学习中一致性和均匀性的概念Fig.16 The concept of uniformity and alignment in contrastive learning

4.4 未来发展方向

本文在对目前的对比学习论文进行归纳和总结后,认为该研究领域还存在许多可以探索的问题,同时存在一些可以与其他领域互相借鉴和发展的方向,具有广泛的研究前景,以下是对该领域发展的展望:

1) 对比学习中样本对的选择方法仍存在发展空间,在训练过程中剔除假负样本以及选择合适的正样本对能够有效地提高特征学习网络的学习效果.因此如何更加合理地剔除假负样本和选择正样本对是一个值得研究的关键问题.

2) 解决对比学习训练过程中的一致性与均匀性矛盾是一个十分重要的问题,如果该问题得到解决,能在很大程度上提高特征提取网络在下游任务上的泛化能力.

3) 主动学习是一种通过最少的标注样本获得最好的训练效果的学习技术[106].在深度主动学习领域,网络模型需要首先在一个含有标签的数据集L0上进行预训练,然后通过查询策略从无标签数据集U中筛选最有用的样本给专家进行标注,最后更新当前训练的有标签数据集L,采用L的数据继续训练网络.重复以上过程直到标注预算耗尽或触发停止策略[106].对比学习是一种良好的模型预训练方法,可以自发的通过无标签数据或少量标签数据训练出特征提取模型,因此可以将对比学习算法引入到主动学习的网络模型预训练过程中,或作为辅助主动学习挑选待标注样本的方法.

4) 对比学习和无监督域自适应[107-108]的结合.在无监督域自适应问题中,源域数据存在标签,目标域数据不存在标签,源域数据和目标域数据分布相近或相同,且拥有相同的任务[107],如何将源域数据和目标域数据一同训练,使得模型能够在目标域上获得良好的效果是无监督域自适应的核心问题.在无监督域自适应研究中,源域数据和目标域数据可以通过自监督训练方法联合训练模型,对比学习就是一种先进的自监督训练算法,因此如何将对比学习方法与无监督域自适应方法进行有效结合是一个值得研究的问题.

5) 目前对比学习主要的下游应用是分类任务,如何设计更多的对比学习方法应用到检测、追踪等下游任务中,也将是未来的发展方向之一.

5 结束语

对比学习是近年的研究热点.本文系统梳理了对比学习的研究现状,提出一种将现有方法划分为样本对构造层、图像增广层、网络架构层、损失函数层和应用层的归类方法,并从自监督对比学习算法入手,分析和归纳近四年主要的对比学习方法.而且,本文还全面对比了不同方法在各种下游任务中的性能表现,指出了对比学习现存的挑战,勾勒了其未来发展方向.对比学习研究作为一个快速发展的研究领域,在理论依据、模型设计、损失函数设计及与下游任务结合等方面还有较大的研究空间.

猜你喜欢

分支架构损失
基于FPGA的RNN硬件加速架构
一类离散时间反馈控制系统Hopf分支研究
胖胖损失了多少元
功能架构在电子电气架构开发中的应用和实践
基于云服务的图书馆IT架构
巧分支与枝
玉米抽穗前倒伏怎么办?怎么减少损失?
Apparent diffusion coefficient by diffusion-weighted magnetic resonance imaging as a sole biomarker for staging and prognosis of gastric cancer
WebGIS架构下的地理信息系统构建研究
一般自由碰撞的最大动能损失