对比学习方法(CV)对比学习有什么作用?监督训练的一个典型问题是标记数据有限。根据目前NLP领域的经验,自监督预训练使用的数据量越大,模型越复杂,模型吸收的知识越多,对下游任务的效果越好。自从伯特出现以来,这可能已经被一次又一次地证明了。因此,对比学习的出现是图像领域为了解决“如何在没有更大标注数据集的情况下,利用自监督预训练模式吸收图像本身的先验知识分布,得到预训练模型”。对比学习是一种自监督学习,即在不依赖标记数据的情况下,从未标记的图像中学习知识。目前,对比学习似乎处于“没有明确定义和指导原则”的状态。其指导原则是:通过自动构造相似实例和不同实例,需要获得一个表征学习模型。通过这个模型,相似的实例在投影空间中距离较近,而不同的实例在投影空间中相距较远。比较学习论文会涉及到的一些关键点:如何构造相似的例子和不同的例子;如何构建可以遵循上述准则的表示学习模型结构;以及如何防止模型崩溃(ModelCollapse);SimCLR:一个典型的反例对比学习方法SimCLR,是在图像领域的2020年ICML会议上提出的,是一种比较“标准”的对比学习模型。一是与以往机型相比,效果明显提升;二是采用对称式结构,整体结构较为简洁明了。第三,它建立的结构已成为其他比较学习模型的标准组成部分。如何构造正例和负例正例构造方法如上图所示。对于某张图片,我们从可能的增强操作集合T中随机选取两种:t1~T和t2~T,分别作用于原图,形成两张增强后的新图像,两者互为正例。在训练期间,batch中的任何其他图像都可以用作x1或x2的反例。对比学习希望获得一定的表示模型,可以将图片映射到一定的投影空间,在这个空间中,正例的距离被拉近,负例的距离被推开。也就是说,表示模型被迫忽略表面因素,学习图像内部一致的结构信息,即学习某些类型的不变性,如遮挡不变性、旋转不变性、颜色不变性等。SimCLR已经证明,如果可以同时融合多个图像增强操作,增加对比学习模型的任务难度将显着提高对比学习的效果。构建表示学习系统的指导原则:通过该系统将训练数据投影到一定的表示空间中,采用一定的方法使正例之间的距离相对较近,负例之间的距离相对较远。上图展示了SimCLR模型的整体结构。没错,就是双塔模型,只是像场一般称为Branch(上下分支)。我们从未标记的训练数据中随机选择N以形成批次。对于batch中的任意一幅图像,按照上述方法构建正例,形成两个图像增强视图:Aug1和Aug2。Aug1和Aug2各包含N个增强数据,分别经过上下分支对增强后的图像进行非线性变换。这两个分支是SimCLR设计的表示学习所需的投影函数,负责将图像数据投影到某个表示空间。以上面的分支为例。Aug1首先经过特征编码器Encoder(一般采用resNet作为模型结构,这里用函数fθ表示),由CNN转换成相应的特征表示。之后还有另一个非线性变换结构Projector(由[FC->BN->ReLU->FC]双层MLP组成,这里用函数gθ表示),进一步将特征表示hi映射到另一个向量zi中空间。这样,增强后的图像经过两次gθ(fθ(x))的非线性变换,增强后的图像被投影到表示空间中。lowerbranch的Aug2流程类似。(问题:为什么这个投影操作要做两次:实证结果)。对于Batch中的某个图像x,在Aug1和Aug2中对应的增强图像分别为xi和xj,它们互为正例,xi和Aug1、Aug2中除xj图像外的任何其他2N-2都是负例其他。变换后,增强图像被投影到表示空间中。通过定义一个合适的损失函数,达到“更接近正例,更远负例”的目的。距离度量函数首先需要一个度量函数来判断投影空间中两个向量之间的距离。通常,相似度函数被用作距离度量。具体来说,相似度计算函数采用表示向量L2的正则化点积或者表示向量之间的Cosine相似度:lossfunction损失函数很重要,SimCLR的损失函数使用的是InfoNCELoss,对应的InfoNCEloss是一个exampleis:表示两个正例对应的Embedding。在InfoNCE函数中,分子部分鼓励正例的相似度越高,即表示空间中的距离越近越好;而分母部分则鼓励任何负例之间的向量相似度越低,即距离越远越好。上面介绍了SimCLR的关键方法。这个过程本身其实就是一种标准的预训练模式;利用海量未标注图像数据,根据比较学习的指导原则,学习一个好的Encoder模型及其对应的特征表示。所谓好的Encoder是指输入图像,能够学习和提取关键特征。这个过程和Bert模型通过MLM自监督预训练的目的是一样的,只是方法不同。学好Encoder后,在解决具体的下游任务时,可以使用学习到的参数在Encoder中初始化ResNet模型,并使用下游任务标签数据来Fine-tuning模型参数,期待预训练阶段学到的知识转移到下游任务效果。可以看出SimCLR有很多组件,比如Encoder、Projector、图像增强、InfoNCE损失函数等。事实上,我们最不想要的就是Encoder,所有其他组件和损失函数都只用于训练高质量的Encoder。结构。目前所有的对比学习模型都是如此,请注意这一点。SimCLR的贡献,一是证明了复合图像增强的重要性;另一个是Projector结构。两者的结合为比较学习系统带来了很大的性能提升,将比较学习的性能提升至或超过监督模型。之后对比学习模型基本采用了Encoder+Projector的二次映射结构,以及复合图像增强的方式。用于判断和比较学习的标准比较学习系统。在进行特征表示相似度计算时,需要先对表示向量进行L2正则化,然后进行点积计算,或者直接使用Cosine相似度。你为什么要这样做?许多研究表明,将特征表示映射到单位超球面上有很多优点。这里有两个关键,一个是单位长度,一个是超球面。首先,与带有向量长度信息的点积相比,去除长度信息后的单位长度向量运算可以增加深度学习模型的训练稳定性。此外,当表示向量映射到超球体上时,如果模型的表示能力足够好,可以将超球体上的相似示例聚集到更近的区域,则很容易使用线性分类器将某些类与其他类区分开来(参考上图)。在对比学习模型中,对学习到的表示向量进行L2正则化,或者利用余弦相似度,相当于将表示向量投影到单位超球体上进行相互比较。许多与比较学习模型相关的实验也证明了对表示向量进行L2正则化可以提高模型效果。AlignmentandUniformity论文《Understanding Contrastive Representation Learning through Alignment and Uniformity on the Hypersphere》探索了良好的对比学习系统。它提出一个好的对比学习系统应该具有两个属性。Alignment:指相似的例子,即正例。映射到单位超球体后,应该有相近的特征,即超球体上的距离比较近。均匀性:指的是系统应该倾向于在特征上保留尽可能多的信息,相当于使映射到单位超球面上的特征尽可能均匀地分布在球体上,分布越均匀说明特征越充分信息被保留。均匀分布意味着两者之间存在差异,也意味着各自保留了唯一的信息,也就是说信息得到了完整的保存。模型坍缩(Collapse)Uniformity特征的极端反例是所有的数据都映射到单位超球体上的同一个点,这是对Uniformity原则的极端违背,因为这意味着所有的数据信息都丢失了,这体现在数据的极度不均匀。分布在超球面上的同一点上。也就是说,所有数据经过特征表示映射过程后都收敛到同一个常数解,这种异常情况一般称为模型崩溃(Collapse)(参考上图)。重新审视类似于SimCLR结构的比较学习模型,我们可以看到比较学习模型结构中的上下分支首先通过正例对或负例对两个非线性映射将训练数据投射到单元上在超球面上。然后,通过反映优化目标的InfoNCE损失函数,调整映射到单位超球面的点之间的拓扑结构关系,希望使正例在超球面上更近,负例在超球面上更远。那么损失函数InfoNCE是如何实现的呢?分子部分体现了“Alignment”属性,鼓励正例尽可能靠近单位超球面;而分母中的负例反映了“均匀性”属性,它鼓励任意两对负例。在单位超球面上,两对之间的距离越远越好。温度超参数τ的作用是什么?目前很多实验表明,如果比较学习模型要有效,温度超参数τ应该设置一个比较小的值,一般设置为0.1或0.2。问题是:将这个超参数设置大或小,它如何影响模型优化过程?目前的研究结果表明,InfoNCE是一种可以感知反例难度的损失函数,而之所以能做到这一点,主要取决于超参数。对比学习方法分类(图片)从防止模型崩溃的不同方法来看,我们可以将现有方法大致分为四类:基于反例的对比学习方法、基于对比聚类的方法、基于非对称网络结构的方法、以及一种基于冗余消除损失函数的方法。比较学习方法的分类基于反例的对比学习方法所有在损失函数中使用反例的比较学习方法都是依靠反例的Uniformity特性来防止模型崩溃。这包括SimCLR系列和Moco系列等许多典型型号。对比学习模型基于对比聚类的方法表示模型SwAV。对于batch中的一幅图像x,假设它经过图像增强Aug1和Aug2,增强后的图像x1,x2,x1和x2互为正例。X1向上分支,x2向下分支,SwAV根据Sinkhorn-Knopp算法对Aug1和Aug2中的表示向量在线聚类batch中的数据。SwAV需要表示学习模型根据x1来预测x2的类,同样需要x2来预测x1的类。这种方法要求某个投影点在超球面上,靠近另一个投影点所属的簇中心,体现了Alignment原则;离其他聚类中心越远越好,体现了Uniformity属性。SwAV面临模型崩溃的问题,具体形式是:Batch中的所有实例都聚类到同一个类中。因此,为了防止模型崩溃,SwAV在聚类中加入了约束条件,要求batch中的实例更均匀地聚类到不同的类别中。本质上和直接使用反例的对比学习模型类似,其防止模型崩溃的机制也类似,都是隐形的反例。基于非对称网络结构的方法表示模型BYOL:只使用正例训练比较学习模型,上下分支结构不对称,防止模型崩溃。基于冗余去除损失函数的方法代表模型BarlowTwins。既没有使用反例,也没有使用非对称结构,主要是通过更换一个新的损失函数,可以称之为“冗余消除损失函数”,来防止模型崩溃。实验结果目前,大多数对比学习模型在进行模型训练时都使用ImageNet数据集。在评估过程中,主要的实验也是在ImageNet上进行的。那么问题来了:对比学习本质上是一种自我监督的预测方法。训练模型希望自监督地从ImageNet数据集中学习一些图像先验知识和结构。那么,这种从ImageNet数据集学到的知识能否很好的迁移到其他数据集呢?论文“自监督模型的迁移效果如何?”针对13个知名的自监督模型,在40多种数据集上进行了比较公平的对比测试,得出了一些有价值的结论。Contrastivelearningmethod(NLP)CV领域的对比学习研究在近两年蓬勃发展,并逐渐影响到NLP领域。2020年以来,NLP领域出现了一些自监督训练sentence-embedding。主意。在我自己的研究中,如何使用ContrastiveLearning的思想可以分为两类:Lossjointself-supervision:将CLloss和其他loss混合,通过联合优化让CL有效:CLEAR,DeCLUTER,SCCL。非联合方法的自监督:构建增强样本、微调模型:Bert-CT、ConSERT、SimCSE。下面从背景、方案、数据增强方法和实验结果等方面介绍几种典型模型。lossjointself-supervision1.CLEAR链接:https://arxiv.org/pdf/2012.15466.pdf背景:作者认为目前的预训练模型都是基于word-level,没有sentence-level为基础的目标。句子的效果不好。解决方案:词级和句子级损失的结合。对比损失函数:数据增强方法:token层实验结果:GLUE:SentEval:2.DeCLUTR链接:https://arxiv.org/abs/2006.03659解决方法:是一种没有训练数据的自监督方法,属于预训练过程优化。数据增强方法:方案:选取N篇文档组成一个batch,每个文档取一个anchor,有AN点,anchor取一个positive,还有AN点,一共2AN点。对于每一个点,除了和它构成正对的那两个,其他2AN-2都是负例。目的:距离anchorspan越近的文本被认为越相似,所以将anchorspan和它周围的span作为正例使用不同的Beta分布来限制anchor和positivespan的长度。一般anchor比positive长,anchor最多可达512。笔者认为:1.长anchor可以让embedding同时达到表示句子级别和段落级别的功能。2、这样配置下游任务效果还是不错的。信息3.因为一个batch中有多个文档,所以由不同文档的span组成的负例是easynegativeexamples,由同一个文档的span组成的负例是hardnegativeexamples。实验结果:对比学习过程中ENCODER和MLM的Pretrained模型分别为RoBerta和DistillRoBerta,均值池化为pooling。扩展知识:BertvsRoBertavsAlBert评估数据集是SentEval,一个评估句子表示的工具包,包括17个下游任务,其输入是句子表示,输出是预测。可以看出这篇文章的方案往往不是最优的,但是作者比较了无用的比较学习方法和比较学习方法(最终的Transformer-*VSDeCLUTER-*)的结果,可见他的方案有效。3.SupportingClusteringwithContrastiveLearning的链接:https://arxiv.org/abs/2103.12953(NAACL2021)背景:在学习过程的开始,不同的类别经常在表示空间中相互重叠。两者之间的良好分离提出了巨大的挑战。解决方案:使用对比学习来实现更好的分离。通过联合优化自上而下的聚类损失和自下而上的实体级比较损失,达到同时优化簇内和簇间的目的。它分为两部分:Instance-CL部分和Clustering部分。Instance-CL:随机选择M个样本组成一个batch,数据增强方法生成2M个样本,仍然从一个样本中生成2个作为一对正样本,其他2M-2个组成一个负样本数据增强方法:每个使用InfoCNE计算样本的损失,Instance-CL损失是2M样本的平均值。数据增强方法:WordNetAugmenter:用wordNet中的同义词替换;ContextualAugmenter:使用预训练模型找到最适合插入或替换的词;Paraphraseviabacktranslation:翻译成一种语言再翻译回来;实验结果:nonJointself-supervision1.BERT-CT(ICLR2021)背景:各种预训练模型某一层的embedding不能很好的表示句子,越靠近目标层效果越差。笔者认为,训练目标极其重要。解决方案:使用两个不同超参数的模型做sentenceembedding,尽量让正例对的点积大一些,负例对的点积小一些。数据增强方法:正例:同一句话的不同embedding;反例:随机选择7个不同的句子;实验效果:2.SimCSE链接:https://arxiv.org/abs/2104.08821背景:直接使用BERT句向量无监督语义相似度计算效果会很差。任意两个句子的BERT句向量相似度都很高。原因之一是矢量分布的非线性和奇异性。恰好比较学习的目标之一就是学习到一个均匀分布的向量表示,所以我们可以通过对比学习的方式间接达到正则表示空间的效果,这又回到了正样本构建的问题上,其中之一本文的创新点在于在无监督条件下构建正样本。Scheme&DataAugmentationMethod:本文作者提出可以通过随机采样dropoutmask来生成xi+。回想一下,在标准的Transformer中,dropoutmask是放在全连接层和attentionsum操作上的,其中z是随机生成的dropoutMask,由于dropoutmask是随机生成的,所以在训练阶段,同一个样本是两次输入同一个encoder,我们会得到两个不同的表示向量z,z',z'作为正样本,模型的训练目标是:这种通过改变dropoutmask来生成正样本的方法可以是视为数据增强的最小形式,因为原始样本和生成的正样本的语义是完全一致的(注意语义一致性和语义相关性的区别),只是生成的embedding不同。实验结果:作者介绍对话,清华大学硕士毕业,现为大厂算法工程师,已收到8大厂SSPoffer。本科时自己创业五年,成立了两家公司,共融资300多万元(已入账)。项目入选南京市321高层次创业人才引进计划。以无人机、机器人和互联网教育起家,研究生毕业后选择退出。
