【无标题】

我为大家整理了对比学习在最新各大顶会上的论文合集及相应代码,所列举的论文涉及领域包括但不限于CV, NLP, Audio, Video, Multimodal, Graph, Language model等,GitHub地址:

https://github.com/coder-duibai/Contrastive-Learning-Papers-Codes

  • 一篇是对比学习在CV与NLP领域中的研究进展,写得比较系统与全面,里面介绍了对比学习是什么,以及该技术如何应用在各个领域中,包括MoCo、SimCLR、BYOL、SwAV、SimCSE等;
  • 另一篇则梳理了ICLR2021上对比学习在NLP领域六大方向中的应用,均收获了很多小伙伴们的私信,感兴趣的同学也可以看一看:

1.对比学习(Contrastive Learning)在CV与NLP领域中的研究进展

2.ICLR2021对比学习(Contrastive Learning)NLP领域论文进展梳理

本篇文章则梳理了对比学习在ICLR2021、ICLR2020和NIPS2020中非常值得大家一读的一些经典论文,构思非常巧妙,涵盖了CV和NLP领域,且与之前两篇文章中介绍的模型均不重叠。后续等NIPS2021论文公开后,也会持续更新并分享给大家,话不多说,开始进入正题叭。

对比学习(ICLR2021/2020)

值得一读的八篇论文

1.PCL

5435cf46ea173ddcd975f75fd7744306.png

论文标题:Prototypical Contrastive Learning of Unsupervised Representations(基于聚类算法)

论文方向:图像领域,提出原型对比学习,效果远超MoCo和SimCLR

论文来源:ICLR2021

论文链接:https://arxiv.org/abs/2005.04966

论文代码:https://github.com/salesforce/PCL

Abstract

本文提出了一个无监督表示学习:Prototypical Contrastive Learning (PCL)模型,该模型解决了逐实例(instance wise)对比学习的基本缺陷。PCL不仅可以为实力判别任务学习低层(low level)特征,更重要的是它可以encode数据的语义结构到embedding space中

  • 原形(prototype):一组语义相似的实例的代表性编码(representative embedding)

作者将几个不同粒度的原型分配给每个实例,并构造一个对比损失ProtoNCE loss,使嵌入的样本更接近其对应的原型,而不是其他原型。在实践中,我们可以通过对嵌入进行标准聚类来找到原型。PCL可以被formulate成EM算法,原形(prototypes)作为潜在变量,其中E步通过聚类(k-means)寻找原形的分布,M步利用对比学习(优化ProtoNCE loss)更新网络参数(假设每个原型是一种各向同性高斯分布,可以证明最小化ProtoNCE等价于最大化log似然)

img

在EM框架下,实例判别任务可以看作PCL的特例,其中每个实例的原型是其增强特征,且每个原型周围的高斯分布具有相同的固定方差

Prototypical Contrastive Learning

  1. Preliminaries

给定训练数据集 X={x1,x2,…,xn} ,无监督表示学习网络 fθ 将 X 映射到 V={v1,v2,…,vn} , vi 是 xi 的最佳表示,该目标通过逐实例(instance wise)的对比学习得到

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4SNz1jeT-1659966832745)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220802221858886.png)]

在MoCo网络中, vi′=fθ′(xi) 表示正样本embedding( vj′ 中有一个正样本embedding, r 个负样本embedding), fθ′ 为momentum encoder

在PCL中,用prototype c 代替 v′ ,per-prototype 集中程度估计(concentration estimation)代替 τ ,PCL结构图如下

img

其中clustering 和表示学习在每个epoch迭代运行

\2. PCL as Expectation-Maximization

我们的目标是寻找一个网络 θ 可以最大化n个样本的log似然

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KdAcqbgv-1659966832748)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220802221925452.png)]

存在潜在变量 C={ci}i=1k 即数据的prototype,则可以重写上面log似然

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xwe8qB2x-1659966832752)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220802221935037.png)]

由于无法直接优化上式( C 未知),则根据Jensen不等式构建其下界

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AZNrFIAh-1659966832754)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220802221946511.png)]

为了让不等式取等号需要 p(xi,ci;θ)Q(ci) 为常数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P5ss46xj-1659966832755)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220802221957218.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VBTVNThL-1659966832756)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220802222010169.png)]

上式为E步所需计算的式子(即得到 Q(ci) ),M步固定 Q(ci) (看作常数)最大化下界函数,由于 Q(ci) 被看作常数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QNjvL8qf-1659966832757)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220802222026644.png)]

【注】上面推导过程和EM的推导基本完全相同

  • E Step

该步骤目的是估计 p(ci|xi;θ) ,作者在 vi′=fθ′(xi) 特征上运行k-means算法,将prototype ci 看作第 i 个簇的中心点,作者定义

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vvVtjSbT-1659966832758)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220802222122032.png)]

  • M Step

基于E步,现在可以最大化下界函数

作者假设每个cluster ci 的先验分布都满足均匀分布,因为我们没有提供任何样本,即

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VFCvEKPC-1659966832759)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220802222133978.png)]

作者假设每个prototype周围的分布是各向同性的高斯分布,则可得出

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1vqG52uW-1659966832761)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220802222145341.png)]

其中 xi∈cs , vi=fθ(xi) ,如果给 c 和 v 都施加l2正则化,则 (v−c)2=2−2v⋅c

综合上述内容,M步需要优化的式子如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5NuZJ12A-1659966832762)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220802222200100.png)]

可以看出上式与InfoNCE相似,因此InfoNCE可以看作最大对数似然估计的特例: vi 的prototype是与其相同实例的增强特征 vi′ (即 c=v′ ),特征分布在每个实例的集中程度(concentration)是固定的(即 ϕ=τ )

在实际实现中,作者采用与NCE相同的方法,采样 r 个负prototype来计算正则化项。为了能对编码层次结构的prototype有更robust的概率估计,作者用不同的聚类数量 K={km}m=1M 进行 M 次聚类,此外作者增加InfoNCE loss来保持局部光滑性并引导聚类。最终的目标函数ProtoNCE如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FsU8Jc39-1659966832763)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220802221817358.png)]

  1. Concentration estimation

由于不同prototype周围的embedding的分布都有不同程度的集中程度(concentration),因此作者使用 ϕ 对其估计( ϕ 值越小集中程度越大),我们使用同一簇 c 内的momentum特征 {vz′}z=1Z 计算 ϕ 。

我们期望 ϕ 在以下两个情况时值很小:

  • vz′ 和 c 之间的平均距离很小
  • 簇包含的很多特征点(即 Z 很大)

因此定义 ϕ 为

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rBChEJ7r-1659966832764)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220802221748855.png)]

其中,α 为平滑变量保证小簇不会出现过大的 ϕ ,我们对每组prototype进行归一化,使其为 τ 的均值

在ProtoNCE中, ϕsm 用来衡量 vi 和其prototype csm 之间相似度的尺度因子,通过提出的 ϕ 可以让松散的簇( ϕ 值大)相似度降低,紧密的簇(ϕ 值小)相似度增大,因此可以产生更平衡的cluster且其集中程度(concentration)相似,如下图(a)所示

img

PCL算法伪代码如下

img

2.BalFeat

bc1275e167b50d36ff93a6ff963aa2d8.png

论文标题:Exploring Balanced Feature Space For representation Learning

论文方向:图像领域,主要解决类别分布不均匀的问题

论文来源:ICLR2021

论文链接:https://openreview.net/forum?id=OqtLIabPTit

e0ad03ce65c9bef95f1b52cd34de5553.png

现有的自监督学习(SSL)方法主要用于训练来自人工平衡数据集(如ImageNet)的表示模型。目前还不清楚它们在实际情况下的表现如何,在实际情况下,数据集经常是不平衡的。基于这个问题,作者在训练实例分布从均匀分布到长尾分布的多个数据集上,对自监督对比学习和监督学习方法的性能进行了一系列的研究。作者发现与具有较大性能下降的监督学习方法不同的是,自监督对比学习方法即使在数据集严重不平衡的情况下也能保持稳定的学习性能。

这促使作者探索通过对比学习获得的平衡特征空间,其中特征表示在所有类中都具有相似的线性可分性。作者的实验表明,在多个条件下,生成平衡特征空间的表征模型比生成不平衡特征空间的表征模型具有更好的泛化能力。基于此,作者提出了k-positive对比学习,它有效地结合了监督学习方法和对比学习方法的优点来学习具有区别性和均衡性的表示。大量实验表明,该算法在长尾识别和正常平衡识别等多种识别任务中都具有优越性。

3.MiCE

343251bde8a80be4c09b2456240d8f88.png

论文标题:MiCE: Mixture of Contrastive Experts for Unsupervised Image Clustering

论文方向:图像领域,对比学习结合混合专家模型MoE,无需正则化

论文来源:ICLR2021

论文链接:https://arxiv.org/abs/2105.01899

论文代码:https://github.com/TsungWeiTsai/MiCE

2e0340795de65aa0f35f6ae75892d910.png

目前深度聚类方法都是使用two-stage进行构建,即首先利用pre-trained模型进行表示学习,之后再使用聚类算法完成聚类,但是由于这两个stage相互独立且现有的baseline在表示学习中并没有很好的建模语义信息,导致后面无法得到很好的聚类。

作者提出一个统一概率聚类模型Mixture of Contrastive Experts (MiCE),其同时利用了对比学习学习到的判别性表示(discriminative representation)和潜在混合模型获取的语义结构(semantic structures)。受多专家模型(mixture of experts ,MoE)启发,通过引入潜变量来表示图像的聚类标签,从而形成一种混合条件模型,每个条件模型(也称为expert)学习区分实例的子集,同时该模型采用门控函数(gating function)通过在专家之间分配权重,将数据集根据语义信息划分为子集。进一步,为了解决潜在变量引起的非简单推断(nontrivial inference)和其他训练问题,作者进一步构建了可扩展的EM算法,并给出了收敛性证明。其中E步,根据观测数据得到潜在变量后验分布的估计,M步最大化关于所有变量的对数条件似然。

MICE具有以下优点:

  • 方法论上的统一:MICE结合了通过对比学习得到的判别性表示和通过统一概率框架内的潜在混合模型得到的语义结构的优点。
  • 无需正则化:MICE仅通过EM进行优化,不需要任何其他的辅助loss和正则化loss。

Preliminary

定义无标签数据集合 ,其中每个样本 会被分配一个独一无二的代理标签 ,即任两个不同的样本代理标签不同(该代理标签可以与图片索引有关)。使用无监督方法学习representation,考虑两个encoder ,分别生成经过L2归一化后的 (每个样本输入之前会经过随机数据增强),我们可以将概率分类器建模为

Mixture of Contrastive Experts (MiCE)

数据量为 的数据集 ,cluster数量为 ,考虑一个潜在变量 为图片 的cluster label,则作者将(1)式改写为MiCE Gate Function

门控函数根据输入图像的语义为expert加权,将实例判别任务分为K个子任务,定义encoder ,则对于图片 的输出为 ,则门控函数定义如下

其中 为temperature, 表示gating prototype,所有prototype和图像 都在 空间经过L2归一化。

门控函数根据图像 和gating prototype之间的余弦相似度对数据集进行软划分(soft partitioning),我们可以把它看作是一个基于prototype的判别聚类模块,使用后验推理来获得聚类标签,以考虑expert中的附加信息。

Experts

每个expert(定义为无正则化模型 )解决由门控函数安排的实例判别子任务,因此图像 被第 个expert识别为第 的概率为

其中, 为归一化因子,通常难以计算。

类似MoCo,构建学生网络 将图像 映射成 个连续 同样教师网络 的输出为 ,具体来说, 分别表示 在第 expert上的学生 和教师 ,参数化非归一化模型为

其中 表示expert的cluster protype。

在(5)式中,第一个instance-wise点积计算实例层次(instance-level)信息,以在每个expert中产生具有判别性的表示(discriminative representation),第二个instance-prototype点积将类别层次(class-level)信息整合到表示学习中,使之能够围绕prototype形成清晰的集群结构,因此产生的embedding具有语意结构同时有足够的判别性来表示不同实例

该式子基于MoCo和EMA构造,更多细节查看原文附录D。

4.i-Mix

0fdff67c362b3240f1b5b62c775f417b.png

论文标题:i-Mix: A Strategy for Regularizing Contrastive Representation Learning

论文方向:图像领域,少样本+MixUp策略来提升对比学习效果

论文来源:ICLR2021

论文链接:https://arxiv.org/abs/2010.08887

论文代码:https://github.com/kibok90/imix

32977229ff39b18a5ef240ea07d6a83e.png

对比表示学习已经证明了从未标记数据中学习表示是有效的。然而,利用领域知识精心设计的数据增强技术已经在视觉领域取得了很大进展。

作者提出了i-Mix,一个简单而有效的领域未知正则化策略,以改善对比表示学习。作者将 MixUp 技巧用在了无监督对比学习上,可有效提升现有的对比学习方法(尤其是在小数据集上):给每个样本引入虚拟标签,然后插值样本空间和 label 空间进行数据增强。实验结果证明了i-Mix在图像、语音和表格数据等领域不断提高表示学习的质量。

MixUp (Zhang et al., 2018)是一种有效的正则化,计算开销可以忽略不计。它在输入空间和标签空间中对两个数据实例进行线性插值,并通过最小化插值数据和标签上定义的交叉熵损失来训练模型。其中,对于两个标记数据(xi, yi), (xj, yj), MixUp损失定义如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OFyGL6ML-1659966832766)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220803201308440.png)]

i-mix:引入实例混合(instance mix),这是一种数据驱动的增强策略,用于对比表征学习,以改善学习表征的泛化。直观地说,i-Mix不是混合类标签,而是插入它们的虚拟标签,这表明它们在batch处理中的身份。

让B = {(xi,˜xi)}Ni=1是一批数据对,其中N是批大小,˜xi∈X是相同数据的两个视图,它们通常由不同的增强产生。对于每个锚xi,我们分别称为˜xi和˜xj≠i positive和negative 样本。然后,模型f学习在嵌入空间中最大化正对(来自相同数据的实例)的相似性,最小化负对(来自不同数据的实例)的相似性。f的输出是l2归一化的让vi∈{0,1}N是xi和在batch B中˜xi的虚拟标签,其中vi,i = 1和vi,j≠i = 0(v是实例相似性分数)。对于虚拟标签的一般样本对比损失(xi, vi), i-Mix损失定义如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Itv7Apa-1659966832767)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220803202626544.png)]

λ ~ Beta(α, α)是一个混合系数,Mix是一个混合算子,可以根据目标域进行调整:例如,MixUp(xi, xj;λ) = λxi +(1−λ)xj (Zhang et al., 2018)当数据值是连续的,和CutMix(xi, xj;λ)= Mλ o xi +(1−Mλ) o xj (Y un et al., 2019)当数据值与邻居有空间相关性时,其中Mλ是一个二元掩码过滤出一个相对面积为(1−λ)的区域,o是一个元素级的乘法。注意,有些混合操作符可能不适用于某些域:例如,当数据值及其空间邻居没有相关性时,CutMix就无效。然而,MixUp操作符通常在包括图像、语音和表格在内的领域都能很好地工作;我们使用它的i-Mix配方和实验,除非另有说明。在下文中,我们将展示如何将i-Mix应用于对比表征学习方法。

SimCLR (Chen等人,2020a)是一种没有记忆库的简单对比表示学习方法,其中每个锚都有一个正样本和(2N−2)负样本。让xN+i = ~ xi为简洁。则(2N−1)路判别损失为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ErA7gqmr-1659966832767)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220803204121355.png)]

s(f,˜f) = (f T ˜f)/ (||f|| ||˜f||)是两个l2归一化向量的内积。在这个公式中,i-Mix不是直接适用的,因为每个锚的虚拟标签的定义是不同的为了解决这个问题,我们通过从负样本中排除锚点来简化SimCLR的制定。然后,有了虚拟标签,n路判别损失写为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J4xRyFxA-1659966832768)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220803204718066.png)]

我们称之为 N-pair对比损失,因为公式类似于在度量学习的背景下的N-pair损失(Sohn, 2016)对于两个数据实例(xi, vi), (xj, vj)和一批数据pairs B = {(xi,˜xi)}Ni=1, the i-Mix loss is defined as follows:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iMs70tXU-1659966832769)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220803205010201.png)]

伪代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tYp5PNM0-1659966832770)(C:\Users\12558\AppData\Roaming\Typora\typora-user-images\image-20220803210649857.png)]

思路:在crosspoint上加入伪标签和mixup,配合聚类对比学习

5.Contrastive Learning with Hard Negative Samples

de4d5e96c0a2c7d3a3037de7b416a2b2.png

论文标题:Contrastive Learning with Hard Negative Samples

论文方向:图像&文本领域,研究如何采样优质的难负样本

论文来源:ICLR2021

论文链接:https://arxiv.org/abs/2010.04592

论文代码:https://github.com/joshr17/HCL

74f118db44713a8549ea94c0ef6b6a2f.png

对比学习在无监督表征学习领域的潜力无需多言,已经有非常多的例子证明其效果,目前比较多的针对对比学习的改进包括损失函数、抽样策略、数据增强方法等多方面,但是针对负对的研究相对而言更少一些,一般在构造正负对时,大部分模型都简单的把单张图像及其增强副本作为正对,其余样本均视为负对。这一策略可能会导致的问题是模型把相距很远的样本分得很开,而距离较近的负样本对之间可能比较难被区分。

基于此,本文构造了一个难负对的思想,主要目的在于,把离样本点距离很近但是又确实不属于同一类的样本作为负样本,加大了负样本的难度,从而使得类与类之间分的更开,来提升对比学习模型的表现。

好的难负样本有两点原则:1)与原始样本的标签不同;2)与原始样本尽量相似。

这一点就与之前的对比学习有比较明显的差异了,因为对比学习一般来说并不使用监督信息,因此除了锚点之外的其他样本,不管标签如何,都被认为是负对,所以问题的一个关键在于“用无监督的方法筛出不属于同一个标签的样本”。不仅如此,这里还有一个冲突的地方,既要与锚点尽可能相似,又得不属于同一类,这对于一个无监督模型来说是有难度的,因此本文在实际实现过程中进行了一个权衡,假如对样本的难度要求不是那么高的时候,就只满足原则1,而忽略原则2。同时,这种方法应该尽量不增加额外的训练成本。

2 具体方法

本文的重点在于如何进行难负样本采样,首先作者给出难负样本的采样分布函数:

img

即难负样本分布以与正类类别不同为条件的概率分布,是正负样本点积乘以系数之后的指数项再乘以单纯的负样本采样分布,控制采样的难易程度,值越大,代表样本越难。点积越大,就越大,表示这个样本更容易被采样,结合原则2,即尽量采样困难负样本。

但是这里没有解决原则1的问题,对于无监督方法,我们仍然不知道该怎么确定采样到的负样本与锚点的标签是不是一致的,这里作者用PU-learning的思想,把负样本分布拆成来自同标签分布与来自不同标签分布的两个部分:

img

这里对于来自的样本同样施以原则2,即为:

img

所以满足原则1和原则2的难负样本分布就可以写为:

img

上式的第一项就是常规的负样本分布,第二项作者提到可以使用语义保留转换去估计这一分布,传统无监督对比学习做的就是这件事儿。

所以原始对比损失:

img

就可以改写为只使用难负样本的情况:

img

分母第二项大括号里头的第一项就是之前的总负样本,第二项就是和锚点相似度很高的来自同一类的负样本。所以只需要求出分母中的两个均值,这个损失就算是给出来了。

计算这两项均值的方法,作者用的是蒙特卡洛重要性采样:

img

式子右边分母的和是两个配分函数,可以用均值近似:

img

作者提出,在pytorch框架下,这个操作只需要额外两行代码九就能搞定,不需要做另外的操作。

3 实验

作者以SimCLR为Baseline在几个数据集上进行了实验,给出了对应的实验效果:

img

发现使用这种难负样本机制有所改善。

第二点是作者把训练好的模型用到下游分类任务中,给出分类精度:

img

在部分数据集上比baseline有所提升。

但是这个β值并不是越大越好的,过大可能也存在问题:

img

可以发现,在β设置得较大的时候,模型的质量甚至会下降。

4 总结

实际上这个工作非常简单,思路就是在传统对比学习的基础之上,根据锚点与其负对计算出来的所有点积的大小来加权,使得与正对相似性高的负对的权重更大,相似性低的权重更小,从而来诱导编码器更加准确地进行区分,而它说的负对要来自于不同标签的样本,在无监督框架下并没有很好地体现,这部分主要是用了别人的工作,而不是他的原创,看代码可以发现,在这个地方实际上就是给锚点和其负对的点积减去了其正对的点积乘以认为设定的负样本中包含正样本的概率进行去正样本的近似,代码可以说是非常简洁,改动不大,有兴趣地话可以参考其官方pytorch代码:joshr17/HCL

6.LooC

4ac69607dca7d7cf23e7701669478a72.png

论文标题:What Should Not Be Contrastive in Contrastive Learning

论文方向:图像领域,探讨对比学习可能会引入偏差

论文来源:ICLR2021

论文链接:https://arxiv.org/abs/2008.05659

c4aef44f99f7aa358639508f09a9a606.png

当前对比学习的框架大多采用固定的数据增强方式,但是对于不同的下游任务,不同的数据增强肯定会有不一样的效果,例如在数据增强中加入旋转,那么下游任务就会难以辨别方向,本文针对该问题进行研究。

如果要应用一个数据增强集合 到模型中,传统模型的做法是将图片数据进行两次独立的数据增强(数据增强参数具有一定随机性)。作者提出LooC,方法是执行n+1 种数据增强,第一种是将图片数据进行两次独立的数据增强,也即是对所有数据增强方式全应用;剩下N种是将 参数固定,这样就保证了最终训练出来的模型会对 这种变换敏感,这n+1种数据增强方式最终会生成n+1种嵌入空间。最终loss如下:

a776d0078eae93e1731ffae00e6e91da.png

a2aa2d2cdbcb33307384e3ac7d377947.png

b52b997bdfc4326309e7d48b5aa2b8d8.png

作者发现原来的对比学习都是映射到同一空间,但是这样会有害学习其他的特征,所以作者把每个特征都映射到单独的特征空间,这个空间里都只有经过这一种数据增强的数据。

总而言之,数据增强是要根据下游任务来说的,分成不同的Embedding空间来适合多种不同的下游任务,但是对需要两种以上特征的下游任务效果可能就不好了。比如不仅仅需要结构信息,还需要位置。

*7.CALM*

9a5955f16075bade3903b6f3a4b2bf68.png

论文标题:Pre-training Text-to-Text Transformers for Concept-centric Common Sense

论文方向:文本领域,利用对比学习和自监督损失,在预训练语言模型中引入常识信息

论文来源:ICLR2021

论文链接:https://openreview.net/forum?id=3k20LAiHYL2

论文代码:https://github.com/INK-USC/CALM

7bf304aa9f3c43bb91086d61c3c37283.png

预训练语言模型 在一系列自然语言理解和生成任务中取得了令人瞩目的成果。然而,当前的预训练目标,例如Masked预测和Masked跨度填充并没有明确地对关于日常概念的关系常识进行建模,对于许多需要常识来理解或生成的下游任务是至关重要的。

为了用以概念为中心的常识来增强预训练语言模型,在本文中,作者提出了从文本中学习常识的生成目标和对比目标,并将它们用作中间自监督学习任务,用于增量预训练语言模型(在特定任务之前下游微调数据集)。此外,作者开发了一个联合预训练框架来统一生成和对比目标,以便它们可以相互加强。

cdab7e7cef7b15a6926f7cdee663152f.png

大量的实验结果表明,CALM可以在不依赖外部知识的情况下,将更多常识打包到预训练的文本到文本Transformer的参数中,在NLU和NLG 任务上都取得了更好的性能。作者表明,虽然仅在相对较小的语料库上进行了几步的增量预训练,但 CALM 以一致的幅度优于baseline,甚至可以与一些较大的 预训练语言模型相媲美,这表明 CALM 可以作为通用的“即插即用” 方法,用于提高预训练语言模型的常识推理能力。

*8.Support-set bottlenecks for video-text representation learning*

b00d96c3a629e1d6d29b144c2ae4e888.png

论文标题:Support-set bottlenecks for video-text representation learning

论文方向:多模态领域(文本+视频),提出了cross-captioning(字幕)目标

论文来源:ICLR2021

论文链接:https://arxiv.org/abs/2010.02824

f0c2ed462490c24ceee679606a6597bf.png

学习视频-文本表示的主流典范——噪声对比学习——增加了已知相关样本对的表示的相似性,例如来自同一样本的文本和视频,但将所有样本对都认为是负例。作者认为最后一个行为过于严格,即使对于语义相关的样本也强制执行不同的表示——例如,视觉上相似的视频或共享相同描述动作的视频。

在本文中,作者提出了一种新方法,通过利用生成模型将这些相关样本自然地推到一起来缓解这种情况:每个样本的标题必须重建为其他支持样本的视觉表示的加权组合。这个简单的想法确保表示不会过度专门用于单个样本,可以在整个数据集中重复使用,并产生明确编码样本之间共享语义的表示,这与噪声对比学习不同。作者提出的方法在 MSR-VTT、VATEX、ActivityNet 和 MSVD 的视频到文本和文本到视频检索方面明显优于其他方法。

Cross-modal discrimination和cross-captioning:作者的模型从两个互补的损失中学习:(a)Cross-modal 对比学习学习强大的联合视频文本的Embedding,但所有其他样本都被认为是负例,甚至推开语义相关的标题(橙色箭头)。(b) 我们引入了cross-captioning的生成任务,通过学习将样本的文本表示重构为支持集的加权组合,由其他样本的视频表示组成,从而缓解了这一问题。

a63f8ccd70e774e245138c6608641e99.png

作者的cross-modal框架具有判别(对比)目标和生成目标。该模型学习将公共Embedding空间中的视频-文本对与文本和视频编码器(顶部)相关联。同时,文本还必须重建为来自支持集的视频Embedding的加权组合,通过Attention选择,这会强制不同样本之间的Embedding共享。

对比学习(NIPS2020)

非常经典的九篇论文

04f248ef4609889b0062bb16b49351c8.png

1.SpCL

d47e1fc2bad5007412fc6face3a0ad65.png

论文标题:Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID

​ 基于混合记忆的领域自适应对象Re-ID自步调对比学习

论文方向:目标重识别,提出自步对比学习,在无监督目标重识别任务上显著地超越最先进模型高达16.7%

论文来源:NIPS2020

论文链接:https://arxiv.org/abs/2006.02713

论文代码:https://github.com/yxgeee/SpCL

e2048b996fa489491c7b1a8ceb0e6609.png

本文提出自步对比学习(Self-paced Contrastive Learning)框架,包括一个图像特征编码器(Encoder)和一个混合记忆模型(Hybrid Memory)。核心是混合记忆模型在动态变化的类别下所提供的连续有效的监督,以统一对比损失函数(Unified Contrastive Loss)的形式监督网络更新,实现起来非常容易,且即插即用。

a0a7b0c2587792c63ccf25b58a46b03e.png

上文中提到混合记忆模型(Hybrid Memory)实时提供三种不同的类别原型,作者提出了使用动量更新(Momentum Update),想必这个词对大家来说并不陌生,在MoCo、Mean-teacher等模型中常有见到,简单来说,就是以“参数= (1-动量)x新参数+动量x参数”的形式更新。这里针对源域和目标域采取不同的动量更新算法,以适应其不同的特性。

对于源域的数据而言,由于具有真实的类别,作者提出以类为单位进行存储。这样的操作一方面节省空间,一方面在实验中也取得了较好的结果。将当前mini-batch内的源域特征根据类别算均值,然后以动量的方式累计到混合记忆模型中对应的类质心上去。对于目标域的数据而言,作者提出全部以实例为单位进行特征存储,这是为了让目标域样本即使在聚类和非聚类离群值不断变化的情况下,仍然能够在混合记忆模型中持续更新(Continuously Update)。具体而言,将当前mini-batch内的目标域特征根据实例的index累计到混合记忆模型对应的实例特征上去。

2.SimCLR V2(Hinton又一巨作)

a71779161de401c4d457142f2a903a73.png

论文标题:Big Self-Supervised Models are Strong Semi-Supervised Learners

论文方向:图像领域(Google出品)

论文来源:NIPS2020

论文链接:Big Self-Supervised Models are Strong Semi-Supervised Learners

论文代码:https://github.com/google-research/simclr

本文针对深度学习中数据集标签不平衡的问题,即大量的未标注数据和少量标注数据,作者提出了一种弱监督的模型SimCLRv2(基于SimCLRv1)。作者认为这种庞大的、极深的网络更能够在自监督的学习中获得提升。论文中的思想可以总结为一下三步:

\1. 使用ResNet作为backbone搭建大型的SimCLRv2,进行无监督的预训练;

\2. 然后在少量有标注的数据上进行有监督的finetune;

\3. 再通过未标注的数据对模型进行压缩并迁移到特定任务上;

实验结果表明他们的模型对比SOTA是有很大的提升的:

ce70bec4de023cd0d4e55dcc131768c2.png

作者采用SimCLR中的对比训练方法,即,最大化图片与其增强后(旋转、放缩、颜色变换等)之间的关联程度,通过优化在其隐空间上的对比损失,其公式如下:

41924336490bb241bc0c77af56cd2aba.png

SimCLR V2的网络结构如下所示:

d726b4bdf222d810c2ffb16c64dd4c52.png

在SimCLR V2中,相比V1有一下几点改进:

  • V2大大加深了网络的规模,最大的规模达到了152层的ResNet,3倍大小的通道数以及加入了SK模块(Selective Kernels),据说在1%标注数据的finetune下可以达到29%的性能提升;
  • 首先V2使用了更深的projection head;其次,相比于v1在预训练完成后直接抛弃projection head,V2保留了几层用于finetune,这也是保留了一些在预训练中提取到的特征;
  • 使用了一种记忆机制(参考了这篇论文),设计一个记忆网络,其输出作为负样本缓存下来用以训练。

3.Hard Negative Mixing for Contrastive Learning

891e39f1ddf0a197c186cf96f7044978.png

论文标题:Hard Negative Mixing for Contrastive Learning

论文方向:图像和文本领域,通过在特征空间进行 Mixup 的方式产生更难的负样本

论文来源:NIPS2020

论文链接:https://arxiv.org/abs/2010.01028

难样本一直是对比学习的主要研究部分,扩大 batch size,使用 memory bank 都是为了得到更多的难样本,然而,增加内存或batch size并不能使得性能一直快速提升,因为更多的负样本并不一定意味着带来更难的负样本。于是,作者通过Mixup的方式来产生更难的负样本。该文章对这类问题做了详尽的实验,感兴趣的可以阅读原论文。

优点:本文提出的创建硬负样本的方法是在特征级别为每个查询点混合硬负样本。这与Manifold Mixup论文[29]有关,该论文最初针对监督学习。因此,硬负挖掘,以及作者提出的方式,是对对比学习的一些新贡献。(问题将在后面解释)对比学习的硬负样本演变的实证分析实际上很有趣,它可能会进一步激发未来研究人员看待硬负极挖掘的方式。

缺点:总的来说,我最担心的是所提出的方法的有效性不是很大。- 例如,它仅比ImageNet-100上的MoCo-v2(0.8%)和ImageNet-1k上的0.1(67.9%对68.0)的MoCo-v2有所改进。- PASCAL VOC检测的改进也不是很大。- 我还想知道所提出的方法是否与更高级的数据增强兼容,从而设置了更高的基线。例如,是否可以直接将建议的模块放入以改进[25]和[28]?在第233-234行中,这里的解释有点违反直觉。我知道,如果类间距离的增加超过类内方差,这是可能的,但是你能绘制它来更好地证明它吗?否则,增加类内方差应导致准确性降低。如图 3(b) 所示,为什么 s’ 和 s 不具有可比性。例如,最后一列显示增加s’实际上有害吗?如果能更深入地了解 s 和 s’ 如何真正操纵潜在空间(或 logits),那就太好了。为什么在第4节中,作者总是主张轻量级计算,我想知道运行时间的差异有多大(例如相对x%慢)?因为对来自非连续 GPU RAM 的 logits 和混合功能进行排名(因为队列中的前 N 个负样本不是连续的)应该需要一些时间。第141-150行需要修改。事实上,前文本任务的准确性在MoCo和MoCo v2之间下降,如图2(b)所示,主要是由非线性投影头而不是数据增强引起的,尽管增强也有所贡献。如果我错了,请纠正我。p 如何超越图 2(a) 中的 1?

4.Supervised Contrastive Learning

dcb7f5b231dd2ddc7dbabba068f014c5.png

论文标题:Supervised Contrastive Learning

论文方向:提出了监督对比损失(Google出品,必属精品)

论文来源:NIPS2020

论文链接:https://arxiv.org/abs/2004.11362

eb57518425ae6ec76bb6ac8f788c280c.png

img

加入label:

img

有监督方法vs自监督方法的对比损失:

  • supervised contrastive loss(左),将一类的positive与其他类的negative进行对比(因为提供了标签), 来自同一类别的图像被映射到低维超球面中的附近点。
  • self-supervised contrastive loss(右),未提供标签。因此,positive是通过作为给定样本的数据增强生成的,negative是batch中随机采样的。这可能会导致false negative(如右下所示),可能无法正确映射,导致学习到的映射效果更差。

a33f07482d0dbc59c18481cde139ecd7.png

论文核心点:

  • 其基于目前常用的contrastive loss提出的新的loss,(但是这实际上并不是新的loss,不是取代cross entropy的新loss,更准确地说是一个新的训练方式)contrastive loss包括两个方面:一是positive pair, 来自同一个训练样本 通过数据增强等操作 得到的两个feature构成, 这两个feature会越来越接近;二是negative pair, 来自不同训练样本的 两个feature 构成, 这两个feature 会越来越远离。本文不同之处在于对一个训练样本(文中的anchor)考虑了多对positive pair,原来的contrastive learning 只考虑一个。

  • 其核心方法是两阶段的训练。如上图所示。从左向右分别是监督学习,自监督对比学习,和本文的监督对比学习。其第一阶段:通过已知的label来构建contrastive loss中的positive 和negative pair。因为有label,所以negative pair 不会有false negative(见图1解释)。其第二阶段:冻结主干网络,只用正常的监督学习方法,也就是cross entropy 训练最后的分类层FC layer。

实验方面,主要在ImageNet上进行了实验,通过accuracy验证其分类性能,通过common image corruption 验证其鲁棒性。

这里需要说明一个广泛应用于contrastive learing的细节,实际上图片经过了两个network才变成了做inner product操作的128维的projection vector。首先图片通过一个 encoder network(图片通常用resnet的final pooling layer)变成2048维的vector,然后再通过一个projection network (基本大家都用的是一个全联接网络)变成128维的vector。而在contrastive learning结束之后,只保留encoder network,projection network就丢掉不要了。这篇论文拿到训练好的encoder network之后,把这个encoder fix住,用cross-entropy loss训练了一个全联接的linear classifier。这样的方法再和单纯的resnet+cross-entropy loss做比较。supervised contrastive 优于了cross entropy baselines。

5.Contrastive Learning with Adversarial Examples

ee6e9eff2b96581a75a5d1cf227eab5d.png

论文标题:Contrastive Learning with Adversarial Examples

论文方向:对抗样本+对比学习

论文来源:NIPS2020

论文链接:https://arxiv.org/abs/2010.12050

b70dfdda4576e25c225a940cc53e9de7.png

本文在标准对比学习的框架中,引入了对抗样本作为一种数据增强的手段,具体做法为在标准对比损失函数基础上,额外添加了对抗对比损失作为正则项,从而提升了对比学习基线的性能。简单来说,给定数据增强后的样本,根据对比损失计算对该样本的梯度,然后利用 FGSM (Fast Gradient Sign Method)生成相应的对抗样本,最后的对比损失由两个项构成,第一项为标准对比损失(两组随机增强的样本对),第二项为对抗对比损失(一组随机增强的样本以及它们的对抗样本),两项的重要性可指定超参数进行调节。

这篇文章将对抗样本引入对比学习的框架中,并提出了针对自监督学习的对抗训练算法CLAE(Contrastive Learning with Adversarial Examples)。该文表示,相比于传统的对比学习,使用对抗样本能够产生更加困难的正样本对(positive pairs),同时在对抗训练的优化过程中,考虑到一整个批次的所有图像能够产生更加困难的负样本对(negative pairs)。CLAE与现有的对比学习方法是兼容的,而且实验表明它能够在多个数据集上提升目前的对比学习算法的性能。

利用对比学习的损失函数生成对抗样本:

对比学习损失函数定义如下,其中分子部分用来拉近正样本对的表示,分母部分用来推远负样本对的表示。

img

为了寻找最优的图像变换方法,可以寻找最大化上述损失的数据增强方法,即求解

img

但是上述问题的定义并不明确,因为对于给定样本,真正重要的是两个变换之间的差异性,而不是其绝对值之间的差别。所以为了消除上述问题的模糊性,可以固定其中一个变换,以上问题变为

img

然而在图像变换集中进行搜索通常很困难,所以作者提出将搜索该变换替代为寻找给定变换的样本的对抗扰动。

img

img

总结一下,文中提出的对抗增强(adversarial augmentation)方法具体流程为,给定一组数据变换方法以及相应的一组变换后的样本,目标是计算变换后样本的对抗扰动,从而获得更加多样化的正样本对(即,经过变换的样本和通过对比损失产生的对抗样本)。背后的原理是,这样产生的正样本对增加了学习的难度,从而鼓励学习算法产生的特征更具不变性(invariant)。为了说明该对抗增强方法同时也进行了困难负样本挖掘(hard negative mining),作者把对比损失重写为交叉熵损失的形式,并借此说明,不同于监督学习中的对抗扰动仅是针对分类器的输入,对比损失的对抗扰动实际上是针对分类器的权重。因此通过优化对比学习损失生成对抗样本,实际上同时产生了更具挑战性的正负样本对。

6.LoCo

782d429127d1b4b853e62a49dabec462.png

论文标题:LoCo: Local Contrastive Representation Learning

论文方向:利用对比学习对网络进行各层训练

论文来源:NIPS2020

论文链接:https://arxiv.org/abs/2008.01342

794af6feb470f7ccbd0e0fa7ae61856a.png

上图左边,展示了一个使用反向传播的常规端到端网络,其中每个矩形表示一个下采样阶段。在中间,是一个GIM,其中在每个阶级的末尾加上一个infoNCE损失,但是梯度不会从上一级流回到下一级。编码器早期的感受野可能太小,无法有效解决对比学习问题。由于相同的infoNCE损失被应用于所有的局部学习块(包括早期和晚期),早期阶段的解码器由于感受野有限,很难得到表征进行正确的区分正样本。例如,在第一阶段,我们需要在特征图上使用 的核执行全局平均池化,然后将其发送到解码器(非线性全连接)进行分类。

我们可以在解码器中加入卷积层来扩大感受野。然而,这种增加并没有对端到端的simclr产生影响,因为最后阶段的感受野足够很大。其实,通过在局部阶段之间共享重叠级,就我们可以有效地使解码器的感受野变大,而不会在前向传递中引入额外的成本,同时解决了文中描述的两个问题。

7.What Makes for Good Views for Contrastive Learning?

246678839988f69208185551d7c18b0c.png

论文标题:What Makes for Good Views for Contrastive Learning?

论文方向:提出InfoMin假设,探究对比学习有效的原因(Google出品,必属精品)

论文来源:NIPS2020

论文链接:https://arxiv.org/abs/2005.10243

首先作者提出了三个假设:

  1. Sufficient Encoder
  2. Minimal Sufficient Encoder
  3. Optimal Representation of a Task

其次,作者举了一个非常有趣的例子,如下图所示:

b2134f6351a0b27eab23a12b15e9482f.png

数字, 在某个随机背景上以一定速度移动, 这个数据集有三个要素:

  1. 数字
  2. 数字的位置
  3. 背景

左边的v1即为普通的view, 右边v2+是对应的正样本, 所构成的三组正样本对分别共享了数字、数字的位置和背景三个信息,其余两个要素均是随机选择,故正样本也仅共享了对应要素的信息. 负样本对的各要素均是随机选择的。

49b4709fd0b409fd46e1f1bd65a6d7c6.png

实验结果如上表,如果像文中所表述的,正样本对仅关注某一个要素, 则用于下游任务(即判别对应的元素,如判别出数字,判别出背景, 判别出数字的位置),当我们关注哪个要素的时候, 哪个要素的下游任务的效果就能有明显提升(注意数字越小越好)。

本文又额外做了同时关注多个要素的实验, 实验效果却并不理想, 往往是背景这种更为明显,更占据主导的地位的共享信息会被对比损失所关注。

77c126ce1b270bb20fab23d35032bf0d.png

作者紧接着, 提出了一些构造 novel views 的办法。正如前面已经提到过的, novel views v1,v2应当是二者仅共享一些与下游任务有关的信息, 抓住这个核心。这样会形成一个U型,最高点定义为甜点,我们的目标就是让两个视图的信息能够刚好达到甜点,不多不少,只学到特定的特征。

8.GraphCL

f77584f5c95499f3cb7225839a95a0ef.png

论文标题:Graph Contrastive Learning with Augmentations

论文方向:图+对比学习

论文来源:NIPS2020

论文链接:https://arxiv.org/abs/2010.13902

c6f5b61ac0fe2ce1b9d416131bcfb24d.png

如上图所示,通过潜在空间中的对比损失来最大化同一图的两个扩充view之间的一致性,来进行预训练。

在本文中,作者针对GNN预训练开发了具有增强功能的对比学习,以解决图数据的异质性问题。

  • 由于数据增强是进行对比学习的前提,但在图数据中却未得到充分研究,因此本文首先设计四种类型的图数据增强,每种类型都强加了一定的先于图数据,并针对程度和范围进行了参数化;
  • 利用不同的增强手段获得相关view,提出了一种用于GNN预训练的新颖的图对比学习框架(GraphCL),以便可以针对各种图结构数据学习不依赖于扰动的表示形式;
  • 证明了GraphCL实际上执行了互信息最大化,并且在GraphCL和最近提出的对比学习方法之间建立了联系;
  • 证明了GraphCL可以被重写为一个通用框架,从而统一了一系列基于图结构数据的对比学习方法;
  • 评估在各种类型的数据集上对比不同扩充的性能,揭示性能的基本原理,并为采用特定数据集的框架提供指导;
  • GraphCL在半监督学习,无监督表示学习和迁移学习的设置中达到了最佳的性能,此外还增强了抵抗常见对抗攻击的鲁棒性。

9.ContraGAN

4dc78c21314927ae385cb81bdd00f770.png

论文标题:ContraGAN: Contrastive Learning for Conditional Image Generation

论文方向:条件图像生成领域

论文来源:NIPS2020

论文链接:https://arxiv.org/abs/2006.12681

论文代码:https://github.com/POSTECH-CVLab/PyTorch-StudioGAN

6fd48c429c6dcfa8ec34b45c8225b20c.png

本文的方法是:判别器的大致结构和projGAN类似,首先输入图片x经过特征提取器D,得到特征向量;然后分两个分支,一个用于对抗损失判断图片是否真实,一个用于将特征经过一个projection head h 变成一个维度为k的向量(这个D+h的过程称为 )。对于图片的类别,经过一个类别emmbedding 变成一个也是维度为k的向量。

损失函数也是infoNCE loss 只不过使用类标签的嵌入作为相似,而不是使用数据扩充。

100270ed6edbc2bed5a997905c03a60c.png

上面的损害将参考样本xi拉到更靠近嵌入e(yi)的类别,并将其他样本推开。但是这个loss可以推开具有与yi相同标签的被认为是负样本。因此,我们还要拉近具有相似类别的图片的距离:

cfa67620a3a4f3510a08a7cef08d8192.png

这样,就拉近图片和其类别的距离,同时拉近相同类别的图片的距离。

总结

对比学习已广泛应用在AI各个领域中,且作为自监督学习中的代表,效果甚至已经超越了很多有监督学习任务。很多互联网公司内部其实都有许许多多这样的业务需要大量人力进行标注,AI才能进行训练,从而得到一个不错的效果(无监督一般不敢上),而有了对比学习这个思想后,既能降本又能增效,AI炼丹师们终于可以开心的得到一个更好的效果,实现”技术有深度,业务有产出“这样的目标。期待对比学习这个领域诞生出更多好的作品,在各个应用方向开花结果,也期待NIPS2021的优秀论文们!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值