Contrastive Learning

1 参考资料

Abstract

2 引言

对比学习(Contrastive Learning)是深度学习中一种重要的学习方式,从计算机视觉领域(2018年)发展而来,特别在半监督学习和无监督学习中得到广泛应用。它的核心思想是通过比较样本对之间的相似性和差异性来学习数据的表示

通常,对比学习通过构建正负样本对来进行,其中相似的样本被视为正样本,不相似的样本被视为负样本。对比学习的算法被训练以最大化相似数据点之间的相似度,并最小化不相似数据点之间的相似度

对比学习最常用的基本模型架构是孪生网络和动量自编码器。孪生网络使用一对相同的神经网络来学习数据点之间的相似度函数,从而实现对数据的有效表示。

随着对比学习领域的蓬勃发展,众多经典研究不断涌现,令人瞩目的是,现在甚至可以在不依赖负样本的情况下进行对比学习。

此外,对比学习的灵活性和通用性使其能够与众多研究工作无缝结合,例如多模态、蒸馏、多视角、CV、NLP等等。

Summary

Pasted image 20240411103422.png|500

3 简介

本节,将大体按照论文的发表顺序,对对比学习的标志性论文进行简要的梳理。

本节目的是,了解对比学习的基本特点,脉络,适用任务

3.1 InstDisc

Short of Instance Discrimination

3.1.1 基本信息

原文名称:Unsupervised Feature Learning via Non-Parametric Instance Discrimination。

2018年 CVPR,Zhirong Wu 华人 3567 Citation 加州伯克利

Pasted image 20240411103728.png|400

3.1.2 主要思想

  1. 同一分类的图片,之间的相似度本来就比较高,并不是因为有同一语义标签。这就意味着标签不是不可或缺的。
  2. 把每一张图片都看成一个类别,进而推出了个体判别的任务。
  3. 目标,学到一种特征,把每一张图片彼此区分开。

3.1.3 技术细节

Pasted image 20240411230032.png|450

3.2 InvaSpread

原文名称:Unsupervised Embedding Learning via Invariant and Spreading Instance Feature。

2019年 CVPR ,Mang Ye 华人 cia 571 香港浸会大学(QS 290)

Pasted image 20240411104708.png|375

3.2.1 主要思想

3.2.2 技术细节

Pasted image 20240411230150.png|475

3.2.3 意义

3.3 CPC

原文名称:Representation Learning with Contrastive Predictive Coding。

2019年 CVPR ,Aaron van den Oord cia 8012 Google DeepMind(QS 290)

Pasted image 20240411110032.png|325

3.3.1 核心思想

3.3.2 技术细节

Pasted image 20240411111048.png|375
enc:encoderar:autoregression

3.3.3 意义

3.4 CMC

原文名称:Contrastive Multiview Coding

2019年CVPR,Yonglong Tian, cia 2290,MIT

Pasted image 20240411110901.png|350

3.4.1 核心思想

3.4.2 技术细节

Pasted image 20240411111008.png|425

3.4.3 意义

3.5 MOCO

原文名称:Momentum Contrast for Unsupervised Visual Representation Learning。

CVPR 2020 ,Kaiming He,cia 10716,Meta AI

Pasted image 20240411112114.png|450

3.5.1 技术细节

Pasted image 20240411111338.png|275

3.5.2 写作细节

一种写作思路(正常但普通):引言介绍对比学习是什么,然后之前工作有哪些,然后缺点局限性,提出MOCO,解决了什么问题,最后结果很好,证明了……。

这篇文章采用自顶向下的写法,介绍中,先写CV、NLP之间的区别,为什么无监督学习在CV的问题原因。之后在CV、NLP统一框架下,归纳为字典查询问题,在这种情况下进行介绍对比学习。最后,引申自己的主要工作:希望用字典……。

方法部分:定义目标函数,正负样本,网络结构,实现细节和伪代码(为了普适性,输入输出没有限定,编码器之间share也都是可以的)。

这种写法写的很大,别人可能看不懂。

3.6 SimCLR

原文名称:A Simple Framework for Contrastive Learning of Visual Representations。

ICML 2020,Ting Chen,cia 15622

Pasted image 20240411112343.png|400

Pasted image 20240411112201.png|450

3.6.1 技术细节

(2, sequence_length, 512) (2, sequence_length, 512)

(1, 3, 26) 1,2,3 -> a, b, c

Pasted image 20240411230737.png|375

3.6.2 实验细节

对比学习128维度就可以了。

消融实验,论证了图像任务中,众多数据增强的方式对于结果的不同影响。

Pasted image 20240411230830.png|525

3.6.3 意义

3.7 MOCO V2

技术报告:Improved Baselines with Momentum Contrastive Learning

3.7.1 核心思想

使用simCLR上的技术看看效果

3.7.2 实验结果

Pasted image 20240411231413.png|475

3.7.3 技术细节

需要8张 V100

3.8 SimCLR V2

原文名称:Big Self-Supervised Models are Strong Semi-Supervised Learners。

NIPS 2020,Ting Chen,cia 2130

3.8.1 技术细节

Pasted image 20240411231827.png|500

3.9 SwAV

原文名称:SwAV: swap assignment viewsUnsupervised Learning of Visual Features by Contrasting Cluster Assignments

NIPS 2020, M Caron, cia 3419

Pasted image 20240411232234.png|375

3.9.1 核心思想

3.9.2 技术细节

Pasted image 20240411232348.png

3.9.3 结果炸裂

使用的是ResNet,达到了有监督训练的水平80。


以下是不用负样本
就是正样本和正样本自己学,左脚踩右脚上天


3.10 BYOL

原文名称:Bootstrap your own latent: A new approach to self-supervised Learning。

NIPS 2020,Jean-Bastien Grill,cia 5821

3.10.1 技术细节

Pasted image 20240411232743.png

3.10.2 插曲

博客

Pasted image 20240321223004.png|475

在复现该模型时,发现模型不仅没有达到原论文效果,并且,出现了模型的坍塌。后来发现是一个很小的区别:复现代码MLP Projection,没有引入Batch Norm。因此,这篇博客作者认为,Batch Norm起到了至关重要的作用,并且猜测,Batch Norm 在计算mean和variance 时需要引入各个样本的数据,这就暴露了各个样本的信息,相当于和平均图片做了对比。

Pasted image 20240411233013.png

关键可能在于BN,下面是BYOL的MLP

Pasted image 20240411233034.png

MOCO V2 的MLP如下:

Pasted image 20240411232942.png

博客作者做了消融实验,他的结果是

Pasted image 20240411232913.png|450

作者又搞了实验进行回应,因为如果相当于和平均图片做了对比,那么这意味着BYOL的最大创新性:不需要负样本,站不住脚。

Pasted image 20240321224945.png

用了BN也可能崩,并且都不用BN,simCLR也崩(这个用了负样本训练,没有predictor)

最后,作者用了group norm和 weight standardization,没有用BN,发现也可以。

所以,BN还是起到了稳定训练的作用,而不是信息泄漏。

3.11 以上总结

Pasted image 20240321230120.png|475

结论:

4 一些细节

4.1 损失函数

4.1.1 原始想法

交叉熵CE

L(y^)=iKyilog(y^i)

softmax :

y^+=softmax(z+)=exp(z+)i=0kexp(zi)

以上拼一下:

logexp(z+)i=0kexp(zi)

问题在于:上式中的k指的是类别。

4.1.2 NCELoss

NoiseContrastiveEstimation:噪音对比估计
核心思想是将多分类问题转化成二分类问题,一个类是数据类别 data sample,另一个类是噪声类别 noisy sample,通过学习数据样本和噪声样本之间的区别,将数据样本去和噪声样本做对比,也就是”噪声对比(noise contrastive)“。

LNCEkMC=(w,c)D(logp(D=1c,w)+k×i=1,w¯qk1k×logp(D=0c,w¯))=(w,c)D(logp(D=1c,w)+i=1,w¯qklogp(D=0c,w¯)).

4.1.3 InfoNCELoss

Info NCE loss是NCE的一个简单变体,它认为如果你只把问题看作是一个二分类,只有数据样本和噪声样本的话,可能对模型学习不友好,因为很多噪声样本可能本就不是一个类,因此还是把它看成一个多分类问题比较合理。

Lq=logexp(qk+/τ)i=0kexp(qki/τ))

4.2 动量编码器

原始的大负样本流程
Pasted image 20240412135707.png|650

MOCO动量编码器的流程,核心改进

0451ec9b538c4d84aec31f6c627dc816.png

实验发现,适当增加m会带来更好地效果,因此MOCO m=0.999,也印证了缓慢更新key的encoder是使用队列dictionary的核心。

4.3 大batch_size,如何改进?

FlatNCE:小批次对比学习效果差的原因竟是浮点误差? - 科学空间|Scientific Spaces

4.4 NLP的特征投影

ACL 2021|美团提出基于对比学习的文本表示模型,效果相比BERT-flow提升8% - 美团技术团队

Pasted image 20240412115212.png|450

5 一些代码

GitHub - google-research/simclr: SimCLRv2 - Big Self-Supervised Models are Strong Semi-Supervised Learners

对比学习在NLP中应用全面解读_nlp 对比学习-CSDN博客

Zhicun Zeng