探索对比学习的改进-经典对比学习 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

相关推荐
知识分享小能手20 小时前
Redis入门学习教程,从入门到精通,Redis 概述:知识点详解(1)
数据库·redis·学习
red_redemption1 天前
自由学习记录(135)
学习
金山几座1 天前
C#学习记录-事件
开发语言·学习·c#
X在敲AI代码1 天前
推荐系统学习 D1推荐系统核心概述
学习·推荐算法
我的xiaodoujiao1 天前
API接口自动化测试详细图文教程学习系列1--序章
python·学习·pytest
圆弧YH1 天前
服务器及网站操作
学习
Alphapeople1 天前
具身智能学习路线
学习
肖恭伟1 天前
VScode入门学习
ide·vscode·学习
fengci.1 天前
ctfshow(web入门)279-286
java·开发语言·学习
炽烈小老头1 天前
【每天学习一点算法 2026/03/16】电话号码的字母组合
学习·算法