1 背景介绍
1.1 对比学习思想
孪生神经网络训练:旨在拉近同类图像的特征之间的距离、推远不同类图像之间的距离, 以获得更好的特征提取模型
自监督学习:其中的实例判别任务, 将同一批次中的每个样本视作一个独立的类, 故类别的数量与该批次的样本数量相同.
1.2 对比学习定义
对比学习的公式化定义及常用网络架构:
该公式的目标是最大化相同图像增广后的两个样本之间的相似度, 同时最小化不同图像经过不同增广后的特征之间的相似度及不同图像经过相同增广后的特征之间的相似度.
同步对称网络架构:
1.3 对比学习与度量学习的关系
相似:学习目标类似, 二者都在优化特征空间, 使得数据在特征空间中类内距离减小、类间距离增大.
不同:
对比学习 | 度量学习 | |
---|---|---|
训练数据构建方式 | 标签信息筛选样本对, 分别得到正样本对和负样本对 | 标签信息筛选样本对, 分别得到正样本对和负样本对 |
网络架构 | 特征提取网络之后增加小型的投影头网络, 将特征空间转换到投影空间中进行损失计算 | 只有特征提取网络, 通过设计度量损失函数优化特征提取模型 |
适用情况 | 适用于无标注、有标注、部分标注的数据, 支持监督、无监督和半监督学习 | 需要有标注的数据,适用于监督学习 |
1.4 对比学习与自监督学习的关系
初始的对比学习方法是自监督学习的一种,是实现无监督学习的一种重要途径,可以作为监督学习的前置, 进行模型预训练.
1.5 常用数据集
ImageNet-1K是对比学习方法最常用的数据集, 该数据集是 ImageNet 数据集的一个子集.
Cifar10 和 Cifar100是常见的应用于图像分类的数据集. 常用于分类任务评估的数据集: Food101, Birdsnap, Sun397, Cars, Aircraft, DTD, Pets, Caltech-101, Flowers.
VOC 数据集常用来评估目标检测和分割任务.
COCO数据集是一个可用于大规模目标检测、分割和关键点检测的数据集.
1.6 评价方法
在进行评估之前, 将预训练好的模型作为下游任务的主干网络, 然后, 根据下游任务和数据集的要求, 在主干网络后加入对应的任务头网络, 最后采用线性或微调方法进行评估.
两种方法均采用下游任务数据集的测试集评估模型.
线性评估方法: 冻结主干网络参数, 只训练下游任务头网络.
微调评估方法: 采用下游任务的数据训练由主干网络及任务头组成的整体网络.
2 对比学习研究现状
2.1 归类方法
对比学习工作系统的归纳总结:
特征提取网络主要使用 ResNet(Residual neuralnetwork)、Transformer[31] 等主流神经网络结构, 损失函数层分为基于互信息的损失函数、传统损失函数和混合损失函数
2.2 样本处理及样本对构造方法
对数据集的采样:
- 对无标注数据集, 通常采用随机采样的方法构建一个批次的数据;
- 对有标注数据集, 通过标签信息采样训练数据, 能够有效提高对比学习效果.
困难样本构造:
困难负样本对: 特征相似度高但并非同类
困难正样本对: 属于同一类特征相似度不高
增加困难样本在同批次中的比例能够提升网络在下游任务中的表现,在特征空间上将负样本对图像对应的两个特征向量插值, 正样本对图像对应的两个特征向量外推, 构造新的、更加困难的样本对, 最终提高对比学习的效果.
剔除假负样本:
假负样本对: 是同一类, 但计算损失时误归为负样本对
Huynh 等将图像用多种增广方法生成支持集,将该图像对应的负样本与该图像支持集进行特征相似性计算, 并将前K个最相似的负样本视为假负样本,直接剔除, 或移入到正样本集合.
正样本扩充法:
不包含图像增广方法, 是从可用的数据资源中寻找隐藏的、与输入样本类别相同的图像
- 在监督对比学习中, 由于同类样本已知, 一般无需扩充正样本.
- 而在无监督对比学习中, 若图像数据没有标注信息, 一般无法进行正样本扩充. 但在一些特殊场景下, 如行人重识别、遥感图像处理、视频分析, 可以基于某些假设, 对正样本进行扩充.
- 在半监督学习领域, Wang 等提出通过部分标签训练的分类器, 在当前训练批次中利用余弦相似度指标寻找正样本的方法, 扩充正样本数量.
构造多视图样本:
多数对比学习方法的数据为同一个视图,构造多视图样本将同一幅图像在多个不同视图下的表达分别进行特征提取, 然后进行对比学习,以提升对比学习的效果.
2.3 图像增广方法
图像变换方法:
传统的图像变换方法有随机裁剪、颜色失真、灰度化等方法. SimCLR发现由随机裁剪和颜色失真组成的变换组合能够获得更好的对比学习效果.
裁剪通常是必须的变换方法之一, 存在裁剪后的正样本对:
- 信息重叠过多:无助于对比学习.
- 完全不重叠:不能促进对比学习, 这种情况称为错误正样本(False positive, FP)
Solution: Peng 等针对以上问题, 首先利用热图定位目标区域, 然后采用中心抑制抽样策略, 在目标区域内离物体中心越远的像素点被采样到的概率越高. 得到采样点后, 以采样点为中心, 并使用随机生成的宽高, 进行最终的图像裁剪操作.
图像合成方法:
图像合成不同于图像变换, 其能够生成新的内容.
视频分析中,Ding 等提出复制粘贴的图像合成方法, 将所选视频帧的前景区域粘贴到其他视频帧的背景图像中, 得到合成的视频帧.
图像语义增广方法:
直接对图像中物体的语义进行修改, 如将图像中的物体的颜色或角度进行改变.
最小化在不同增广下样本间的互信息有利于提高对比学习的效果. 引入对抗训练策略寻找可以最小化训练样本对互信息的图像变换编码器 , 通过与 InfoNCE 联合训练, 获得了更适用于下游任务的模型, 经过训练得到的图像变换编码器 可认为是一个语义增广器.
2.4 对比学习网络架构设计
同步或异步,对称或非对称: 同步更新指网络的两个分支同时梯度更新, 异步指权值更新方法不同; 对称指网络结构相同,非对称则相反.
同步对称网络架构:
SimCLR是最早提出采用同步对称网络架构的对比学习工作.
首先,输入一个样本, 经过两种图像增广方法产生成对的训练样本. 然后, 通过特征提取网络和投影头将样本输出到投影空间. 最后, 在投影空间进行损失计算并回传梯度, 更新特征提取网络和投影头的参数.
同步非对称网络架构:
分支 1 和分支 2 采用不同的网络结构,但同时采用梯度更新
对比预测编码方法 CPC
- 分支 1 与分支 2 均含有投影头,但投影头结构不相同: CSNAS
- 分支 1 和分支 2 的特征提取网络数量不相等: SelfCon
异步对称网络架构:
MoCo 是经典的采用异步对称网络架构的对比学习方法.
动量更新:
动量更新机制能够有效防止极端样本对参数更新影响过大的问题.
基于异步对称网络架构的方法都将该队列结构作为其默认的组成部分:
队列结构减小了对存储资源的要求, 又取消了训练必须采用大批次数据的约束, 提升了计算速度.
DINO(Self-distillation with no labels): 采用 Transformer 作为骨干网络, 将自监督对比学习转换为蒸馏学习的任务.
异步非对称网络架构:
两种形式:
- 采用 MoCo 作为主干网络, 但是投影头数量不一致, 代表为BYOL 方法.
- 是网络架构不对称, 同时采用梯度交叉更新的方法, 代表为SimSiam方法.
捷径解(网络崩塌)问题:
BYOL 在分支 1 中额外增加了一个预测头 (MLP), 构成了非对称网络架构, 并将对比学习的实例判别代理任务替换为比对任务.
SimSiam使用交叉梯度更新.
聚类对比学习结构:
聚类算法能够在无监督情况下自动学习数据的语义信息.
深度聚类算法 (Deep cluster): 通过 K-Means 聚类产生伪标签, 然后利用伪标签对模型进行自监督训练.
原型对比学习算法 (Prototypicalcontrastive learning, PCL): 分支 1 采用梯度更新, 分支 2 采用动量更新. 分支 2采用 K-Means 算法依据样本特
征进行聚类. 分支 1 得到的每个样本特征与分支 2 的所有聚类中心计算聚类对比学习损失.分层聚类对比学习方法 (Hierarchical contrastive selective coding, HCSC): 通过多层聚类来实现对数据集中存在的分层语义现象的模拟.
2.5 损失函数设计
InfoNCE 损失函数及变种:
互信息 是一个概率论中的概念, 可以衡量两个随机变量 和 之间的相关性:
通过 InfoNCE 损失来间接优化互信息, 将最大化互信息转换为真实分布占合成分布的概率密度比的预测问题.
Van 等和 Poole等证明了优化 InfoNCE 损失等价于优化变量之
间的互信息的下界, 并且
SimCLR 首先将 InfoNCE 损失引入, 优化目标位最大化两个不同增广图像之间的互信息.
分子表示同一个样本的两种不同变换得到的正样本对的特征相似度, 分母是不同图像组成的负样本集合中的每个负样本对的相似度的和.
ProtoNCE 损失函数:
- 分子部分改为正样本与其所在的聚类中心之间的相似.
- 分母部分改为计算样本与其它聚类中心之间的相似度.
解耦对比学习损失 (Decoupled contrastive loss, DCL):
去除 InfoNCE损失函数中的负正耦合项, 并将损失展开成两部分
DirectNCE 损失函数: 所使用的样本特征维度大小不同, 样本只取前 个维度计算损失.
FNCL 损失函数: 首先确定当前正在处理的样本对应的假负样本, 然后在分母中计算负样本对之间的相似度时,去除假负样本的部分.
SCL 损失函数: 面向有监督学习.
传统损失函数在对比学习中的应用:
非监督的特征相似度度量:
- 欧氏距离: 通过最小化均方误差损失 (Mean square error, MSE), 可以直接减小同类特征点之间的欧式距离, 实现让同类特征靠近的目的.
- 余弦相似度: 直接最大化相同样本的不同增广的特征之间的余弦相似度也能达到对比学习的目标.
有监督的相似度计算:
- SwAV 方法, 采用交叉熵损失训练模型, 利用回传梯度进行更新.
- 合页损失 (Hinge loss): 支持向量机与对比学习结合
混合损失函数:
有监督混合损失: 将SCL 与交叉熵损失结合起来的损失与交叉熵分类损失联合训练.
半监督混合损失: 基于伪标签图结构对比学习方法 CoMatch.
无监督混合损失: Park 等将对比学习损失融合到基于 GAN 的图像风格迁移任务中, 该方法对变换前后相同位置的图像块进行对比学习.
2.6 相关应用
对比学习下游任务: 分类、分割、预测等.
静态数据: 图像、关系型数据、点云和图结构等.
序列数据: 视频、音频、信号等.
分类任务:
图像分类任务: Hou 等提出基于对比学习的半监督高光谱图像分类算法, 解决有标注数据不足时高光谱图像分类问题.
文本数据的情感分类研究: 在下游的分类器训练阶段, 采用 SCL 损失和交叉熵损失联合优化网络.
Wang 等提出一个混合框架进行特征提取和分类器的联合学习. 采用同步对称网络架构, 并在特征提取网络后面加入一个分类器. 训练过程中, 通过一个平滑因子来调整两个损失的权重, 主导作用由对比学习向分类器学习过渡.
分割任务:
分割任务指的是对图像的语义分割、实例分割, 视频中的动作分割等任务.
Wang 等提出密集对比学习算法 (Dense contrastive learning, DenseCL): 提出全局对比学习框架和局部对比学习框架, 每个框架均采用同步对称网络架构, 两个框架共享同一个特征提取网络. 局部对比学习框架对卷积得到的特征取消拉平操作, 从而保留特征的空间信息, 使得学习到的特征提取网络更适合于分割任务.
视频及关系数据预测任务:
使用密集预测编码(Dense predictive coding, DPC)[53], 预测视频未来帧的信息, Han 等 将 DPC 与存储库思想结合起来, 提出存储增强密集预测编码方法.
面向关系型数据的增广方法: 先在输入样本的对应维度上随机抹除一部分数据, 然后, 从其他样本的相同维度的数据中随机抽取信息填充到当前输入样本被抹除的位置中, 最后, 基于同步对称架构的网络进行对比学习.
长尾识别任务:
长尾数据是指尾部类众多的不均衡数据, 而长尾学习的主要研究目标是提升尾部类的识别正确率.
- K-正样本对比损失 (K-positive contrastive loss, KCL): 长尾学习特征学习阶段, 使用对比学习方法,每个训练样本仅随机选取K个同类样本. 后续的分类器训练阶段, 仍采用传统的交叉熵损失, 但使用类均衡采样.
- 目标监督对比学习 (Targeted supervised contrastive learning, TSC):
- 平衡对比学习损失 (Balanced contrastive learning, BCL):
其他任务:
多模态学习任务:
Yang 等提出了一种视觉 语言跨模态对比学习方法.
Dong 等将对比学习运用在包含 5 个模态数据的模型训练中.
Afham 等将对比学习算法引入到 3D 点云表示学习中.
3 综合对比分析
对现有的方法进行归纳汇总和整体分析.
3.1 整体分析
表4从样本对构造、图像增广、网络架构和损失函数 4 个层面进行分析.
图 14 从宏观上统计各细分类所采用方法的占比情况:
- 在样本对构造层, 最常采用的为随机采样方法.
- 在网络架构层, 最常用的是同步对称网络架构.
- 在损失函数层面, 最常用的是 InfoNCE 损失函数及其变种.
- 在应用领域层面, 目前对比学习最常用于无监督学习领域.
对比学习呈现以下发展趋势:
- 从样本对构造层面来看, 最终发展到不需要负样本的对比学习方法
- 从网络架构层面来看, BYOL 和 SimSiam 等异步非对称网络逐步发展, 聚类方法与4 种架构的结合越来被关注, 主干网络向 Transformer 过渡.
- 从损失函数层面来看, 最终到混合多种不同类型的损失函数进行训练.
- 从下游任务来看, 逐渐向视频分析、遥感图像处理、医学影像分析、文本分析和多模态学习等任务拓展.
3.2 不同对比方法的性能分析
图像分类:
在 ImageNet 数据集上的分类准确度:
- 在无监督学习中, SwAV 方法获得了最佳的分类效果.
- 在有监督学习中, PaCo 获得了最好的效果.
半监督学习根据所采用的有标注数据的比例进行分类性能的评估:
- SimCLRv2 取得了最佳的半监督分类效果.
图像检测和分割:
在 ImageNet 数据集上进行预训练, 在 VOC 数据集或 COCO 数据集上进行微调. 采用图像变换方法进行图像增广,
DenseCL 在训练过程中加入了局部对比学习结构, 获得了目前最好的图像检测和分割效果.
4 现存挑战和未来发展方向
4.1 现存挑战
对比学习中的崩塌问题研究:
完全崩塌: 对于任意输入,模型会将其输出到同一个特征向量上
维度崩塌: 特征向量只能占据特征空间的某一个子空间中的现象.
观测网络是否发生崩塌:
- 将训练好的特征提取网络应用到下游任务, 表现不好则可能出现崩塌.
- 计算该批次特征矩阵的协方差矩阵, 并进行奇异值分解, 若奇异值矩阵对角线上的值在某一个维度开始发生断层现象, 则网络发生了崩塌.
完全崩塌避免:
- SwAV 采用聚类的思想避免了不同的输入输出到同一个特征向量上的问题.
- BYOL 采用了非对称的网络设计和动量更新方法.
- SimSiam 通过实验证明了, 通过交叉梯度回传,能够有效的防止网络完全崩塌.
维度崩塌避免:
缓解维度崩塌:
DirectCLR: 与 SimCLR 相似的同步对称网络架构, 但是抛弃投影头, 且在完成特征提取之后, 只在特征向量的前 个维度上计算损失.
避免维度崩塌:
将协方差矩阵的学习目标设计为同形状的单位矩阵: 保证每个维度信息的有效性, 消除不同维度之间信息的相关性. 协方差
矩阵的主对角线上的元素值会逐渐向 1 靠近, 其它元素的值会逐渐向 0 靠近. 主对角线元素大于 0 可以保证该维度没有发生崩塌. 非对角线元素等于 0 即可保证各维度信息独立.
4.2 算法效率优化
Bao 等证明了在无监督预训练阶段使用的负样本数量越大, 对后续的分类任务的训练结果就越稳定.
Yeh 等提出解耦对比学习损失函数 DCL, 去除了 InfoNCE 中的负正耦合系数, 从而可以用更小的批次来训练对比学习网络,同时提高计算效率.
4.3 一致性与均匀性矛盾问题
对比学习中输出特征经过正则化会将所有图像映射到特征空间的单位超球面上. 其上特征应具有以下两点特质:
- 同类样本特征集合具有一致性;
- 所有特征分布具有均匀性;
避免神经网络崩塌的最好办法就是同时满足一致性和均匀性. Wang 等认为在对比学习训练中, 一致性与均匀性是一个互相对抗的关系.
4.4 未来发展方向
-
对比学习中样本对的选择方法仍存在发展空间.
-
解决对比学习训练过程中的一致性与均匀性矛盾是一个十分重要的问题.
-
可以将对比学习算法引入到主动学习的网络模型预训练过程中, 或作为辅助主动学习挑选待标注样本的方法.
-
在无监督域自适应研究中, 源域数据和目标域数据可以通过自监督训练方法联合训练模型, 而对比学习就是一种先进的自监督训练算法.
学习中输出特征经过正则化会将所有图像映射到特征空间的单位超球面上. 其上特征应具有以下两点特质: -
同类样本特征集合具有一致性;
-
所有特征分布具有均匀性;
[外链图片转存中…(img-N37MxTRL-1718446950507)]
避免神经网络崩塌的最好办法就是同时满足一致性和均匀性. Wang 等认为在对比学习训练中, 一致性与均匀性是一个互相对抗的关系.
4.4 未来发展方向
- 对比学习中样本对的选择方法仍存在发展空间.
- 解决对比学习训练过程中的一致性与均匀性矛盾是一个十分重要的问题.
- 可以将对比学习算法引入到主动学习的网络模型预训练过程中, 或作为辅助主动学习挑选待标注样本的方法.
- 在无监督域自适应研究中, 源域数据和目标域数据可以通过自监督训练方法联合训练模型, 而对比学习就是一种先进的自监督训练算法.
- 设计更多的对比学习方法应用到检测、追踪等下游任务中.