探索对比学习的改进-经典对比学习 vs 分组对比学习

目前,对比学习已经不再局限于通过拉近正样本、推开负样本来学习表示的方法。

最新(2020后)的Group Contrastive Learning对比学习方法,对经典对比学习的局限进行了改进。

1 经典对比学习

经典对比学习看作是所有基于辨别正负对来学习表示的方法的统称。

它不仅限于图像,也广泛应用于自然语言处理、音频、图学习等领域。

1.1 样本&目标

从通过比较来学习为核心目标出发,定义的一类自监督学习方法。

一般情况下,会包括

锚点样本:一个数据点(如图像、句子)。

正样本:与锚点样本相似或相关的数据。在自监督学习中,通常通过对锚点样本进行数据增强(如裁剪、颜色抖动、旋转等)来生成。

负样本:与锚点样本不相似或不相关的数据。通常是批次中的其他随机样本。

这类对比学习的目标,是学习一个编码器,使得在表示空间,锚点与正样本的距离很近,而与负样本的距离很远。

1.2 代表方法

以下是一些经典对比学习方式的典型实现。

1)SimCLR

SimCLR是一个简洁而强大的对比学习框架,使用一个对称InfoNCE损失函数。它明确地定义了正样本对(同一图像的两个增强视图)和负样本对(与其他所有图像的增强视图)。

2)MoCo

MoCo引入了动量编码器和动态字典队列,需要维持一个巨大的负样本队列,提升对比学习质量。

3)CLIP

CLIP将对比学习应用于多模态,即图像-文本对。

正样本是匹配的图像和文本描述,负样本是批次中不匹配的图像和文本。

CLIP学习了一个跨模态的联合表示空间。

2 分组对比学习

近年来GCL是针对经典对比学习局限性提出的具体改进方法,是GCL更常见和具体的技术指代。

通过利用样本间的隐含结构,减少了对单一增强视图的过拟合,解决了语义相似样本被误作负样本的问题。

在图像分类、目标检测、语义分割等下游任务上,相比传统实例对比学习有稳定提升。

2.1 经典CL局限

在SimCLR、MoCo中,每个图像都是一个独立的类。

这带来一个问题,两个语义相似但不同的样本,如两只不同的狗,会被视为负样本而强行推开。

这可能会损害学到的表示质量,造成语义信息的损失。

2.2 实例级到分组级

GCL不再将每个样本视为独立类,而是将语义相似样本隐式/显式地分组,以组为单位进行对比。

其核心假设是在一个批次或记忆库中,存在多个样本属于同一语义类别。

GCL的目标是拉近整个正样本组的距离,同时推开不同组的距离。

这使得模型能够学习到更高级、更具语义的共性特征,而不仅仅是实例本身的判别特征。

2.3 GCL实现方式

GCL通常采用如下关键实现方式

1)构建软正样本/软分组

不依赖真实标签,而是通过模型本身的预测或特征相似度来动态发现潜在的相似样本。

常见做法是对于一个锚点样本,除了自身增强视图(最强正样本),还将特征空间最邻近的K个样本也视为软正样本或属于同一个软组。

2)定制损失函数

在训练时,通常需要修改InfoNCE。

具体为使其分母中的负样本不包含这些软正样本,或者为它们分配较小的权重。

或者设计一种组吸引损失,将组内样本聚拢。

2.4 代表方法

以下是一些分组对比学习方式的典型实现

1)PCL

Prototypical Contrastive Learning引入一组样本的特征中心作为对比单位。

参考链接如下

https://github.com/salesforce/PCL

2)NNCLR

NNCLR使用最近邻样本作为额外的正样本。

参考链接如下所示

https://keras.io/examples/vision/nnclr/

3)DINO

DINO网络通过无标签数据集上的对比学习,革新了视觉特征表示方法。

https://arxiv.org/pdf/2104.14294

reference


A Simple Framework for Contrastive Learning of Visual Representations

https://arxiv.org/pdf/2002.05709

simclr

https://github.com/google-research/simclr

MoCo

https://github.com/AlexZaikin94/MoCo-v2

Momentum Contrast for Unsupervised Visual Representation Learning

https://arxiv.org/pdf/1911.05722

CLIP

https://github.com/openai/CLIP

Generalized Contrastive Learning for Universal Multimodal Retrieval

https://arxiv.org/pdf/2509.25638

Prototypical Contrastive Learning of Unsupervised Representations

https://arxiv.org/abs/2005.04966

PCL

https://github.com/salesforce/PCL

Self-supervised contrastive learning with NNCLR

https://keras.io/examples/vision/nnclr/

Emerging Properties in Self-Supervised Vision Transformers

https://arxiv.org/pdf/2104.14294

GroupContrast: Semantic-aware Self-supervised Representation Learning

for 3D Understanding

https://openaccess.thecvf.com/content/CVPR2024/papers/Wang_GroupContrast_Semantic-aware_Self-supervised_Representation_Learning_for_3D_Understanding_CVPR_2024_paper.pdf

相关推荐
red_redemption2 小时前
自由学习记录(114)
学习
saoys2 小时前
Opencv 学习笔记:图像旋转 + 模板匹配(解决旋转目标定位问题)
笔记·opencv·学习
£漫步 云端彡2 小时前
Golang学习历程【第十二篇 错误处理(error)】
开发语言·学习·golang
£漫步 云端彡2 小时前
Golang学习历程【第九篇 结构体(struct)】
学习·golang·xcode
川西胖墩墩2 小时前
新手在线画泳道图PC端简单操作快速做出标准化流程图表
学习·流程图·敏捷流程
saoys2 小时前
Opencv 学习笔记:提取轮廓中心点坐标(矩计算法)
笔记·opencv·学习
楼田莉子3 小时前
Linux学习:进程信号
linux·运维·服务器·c++·学习
●VON3 小时前
React Native for OpenHarmony:井字棋游戏的开发与跨平台适配实践
学习·react native·react.js·游戏·性能优化·交互
盐焗西兰花3 小时前
鸿蒙学习实战之路-Reader Kit获取目录列表最佳实践
学习·华为·harmonyos