请选择 进入手机版 | 继续访问电脑版
 找回密码

上海老站长门户

点击联系客服
客服QQ: 客服微信:
查看: 87|回复: 36

CV和NLP领域比较学习研究进展

[复制链接]

1

主题

1

帖子

-7

积分

限制会员

积分
-7
发表于 2021-9-28 07:35:12 | 显示全部楼层 |阅读模式
对比学习方法(CV)

对比学习要做什么?

教练训练的典型问题是尺寸数据有限。

目前NLP领域的经验是,用于自我监督事前训练的数据量越多,模型越复杂,模型能吸收的知识越多,下游任务效果就越好。这可能是Bert出现后反复证明的。

所以比较学习的出现是图像领域“在没有更大尺寸数据集的情况下,如何使用3358www.sina.com/事前训练模式吸收图像本身的事前知识分布,获得事前训练的模型”。

比较学习是自监督的一种。也就是说,应该直接从没有标注尺寸的图像中学习知识,而不依赖标注数据。

目前比较学习似乎处于“没有明确定义,有指导方针”的状态。其指导方针是自监督学习

比较学习Paper将处理的几个关键事项:

如何配置相似的实例和如何配置不相似的实例

如何构建能够遵循上述指导原则的表达学习模式结构

防止模型崩溃的方法(model  collapse)。

通过自动构造相似实例和不相似实例,要求习得一个表示学习模型,通过这个模型,使得相似的实例在投影空间中比较接近,而不相似的实例在投影空间中距离比较远。

SimCLR是在形象领域2020年ICML会议上提出的,是比较“标准”的比较学习模式。

第一,与以前的模型效果相比有了很大的提高。第二,使用对称结构,整体上比较简洁明确。第三,它建立的结构已经成为其他比较学习模式的标准组成部分。

SimCLR:一个典型的负例对比学习方法





例行施工方法如上图所示。对于图,我们从可能的增强工作集T中随机提取两个,即t1T和t2T,分别作用于原始图像上,形成两个增强的新图像,这两个是彼此的例子。(阿尔伯特爱因斯坦,Northern  Exposure(美国电视剧),在训练时,Batch内的其他图像可以是x1或x2的阴性例子。

比较学习想学习将图片映射到投影空间,并在该空间放大正距离,从而推开负事例距离的表达模型。也就是说,表达模型无视表面元素,强迫图像学习一致的内部结构信息,即遮挡不变性、旋转不变性、颜色不变性等特定类型的不变性。SimCLR证明,如果能够同时融合多个图像增强任务,可以提高比较学习模式任务的难度,大大提高比较学习效果。

如何构造正负例

说明:通过该系统将教育数据投射到表达空间,采取一定的方法,使定期距离比较近
#xff0c;负例距离比较远。



上图展示了SimCLR模型的整体结构。是的,它是一个双塔模型,不过图像领域一般叫Branch(上下两个分支)。

我们随机从无标训练数据中取N个构成一个Batch,对于Batch里的任意图像,根据上述方法构造正例,形成两个图像增强视图:Aug1和Aug2。Aug1 和Aug2各自包含N个增强数据,并分别经过上下两个分支,对增强图像做非线性变换,这两个分支就是SimCLR设计出的表示学习所需的投影函数,负责将图像数据投影到某个表示空间。

以上分支为例。Aug1首先经过特征编码器Encoder(一般采用ResNet做为模型结构,这里以函数 fθ代表),经CNN转换成对应的特征表示 。之后,是另外一个非线性变换结构Projector(由[FC->BN->ReLU->FC]两层MLP构成,这里以函数 gθ代表),进一步将特征表示hi映射成另外一个空间里的向量zi。这样,增强图像经过 gθ(fθ(x)) 两次非线性变换,就将增强图像投影到了表示空间,下分枝的Aug2过程类似。(问题:为什么这种投影操作,要做两次:经验结果)。

对于Batch内某张图像x来说,在Aug1和Aug2里的对应的增强后图像分别是xi和xj,他们互为正例,而xi和Aug1及Aug2里除xj之外的其它任意2N-2个图像都互为负例。在经过变换后,增强图像被投影到表示空间。通过定义合适的损失函数,来实现“正例距离较近,负例距离较远”的目标。

距离度量函数

首先需要一个度量函数,以判断两个向量在投影空间里的距离远近,一般采用相似性函数来作为距离度量标准。

具体而言,相似性计算函数采取对表示向量L2正则后的点积或者表示向量间的Cosine相似性:



损失函数

损失函数很关键,SimCLR的损失函数采用InfoNCE Loss,某个例子对应的InfoNCE损失为:



其中代表两个正例相应的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正则,或者采用Cosine相似性,就等价于将表示向量投影到了单位超球面上进行相互比较。

很多对比学习模型相关实验也证明了:对表示向量进行L2正则能提升模型效果。

Alignment和Uniformity



论文 《Understanding Contrastive Representation Learning through Alignment and Uniformity on the Hypersphere》,对好的对比学习系统进行了探讨。它提出好的对比学习系统应该具备两个属性。

  • **Alignment:**指的是相似的例子,也就是正例,映射到单位超球面后,应该有接近的特征,也即是说,在超球面上距离比较近
  • **Uniformity:**指的是系统应该倾向在特征里保留尽可能多的信息,这等价于使得映射到单位超球面的特征,尽可能均匀地分布在球面上,分布得越均匀,意味着保留的信息越充分。分布均匀意味着两两有差异,也意味着各自保有独有信息,这代表信息保留充分。

    模型坍塌(Collapse)



    Uniformity特性的极端反例,是所有数据映射到单位超球面同一个点上,这极度违背了Uniformity原则,因为这代表所有数据的信息都被丢掉了,体现为数据极度不均匀得分布到了超球面同一个点上。也就是说,所有数据经过特征表示映射过程后,都收敛到了同一个常数解,一般将这种异常情况称为模型坍塌(Collapse)(参考上图)。

    重新审视类似SimCLR结构的对比学习模型

    可以看到,对比学习模型结构里的上下两个分枝,首先会将正例对,或者负例对,通过两次非线性映射,将训练数据投影到单位超球面上。然后通过体现优化目标的InfoNCE损失函数,来调整这些映射到单位超球面上的点之间的拓扑结构关系,希望能将正例在超球面上距离拉近,负例在超球面上推远。那么损失函数InfoNCE又是怎么达成这一点的呢?



    分子部分体现出“Alignment”属性,它鼓励正例在单位超球面的距离越近越好;而分母里负例,则体现了“Uniformity”属性,它鼓励任意两对负例,在单位超球面上,两两距离越远越好。

    **温度超参 τ 有什么作用呢?**目前很多实验表明,对比学习模型要想效果比较好,温度超参 τ 要设置一个比较小的数值,一般设置为0.1或者0.2。问题是:将这个超参设大或设小,它是如何影响模型优化过程的呢?目前的研究结果表明,InfoNCE是个能够感知负例难度的损失函数,而之所以能做到这点,主要依赖超参。

    对比学习方法分类(图像)

    如果从防止模型坍塌的不同方法角度,我们可大致把现有方法划分为四种:基于负例的对比学习方法、基于对比聚类的方法、基于不对称网络结构的方法,以及基于冗余消除损失函数的方法。

    对比学习方法归类

    基于负例的对比学习方法



    所有在损失函数中采用负例的对比学习方法,都是靠负例的Uniformity特性,来防止模型坍塌的,这包括SimCLR系列及Moco系列等很多典型对比学习模型

    基于对比聚类的方法



    代表模型SwAV。

    对于Batch内某张图像x来说,假设其经过图像增强Aug1和Aug2后,获得增强图像x1,x2,x1与x2则互为正例。x1走上分枝,x2走下分枝,SwAV对Aug1和Aug2中的表示向量,根据Sinkhorn-Knopp算法,在线对Batch内数据进行聚类。SwAV要求表示学习模型根据x1预测x2所在的类,同样的,也要求x2预测x1所在的类。

    该方法要求某个投影点在超球面上,向另外一个投影点所属的聚类中心靠近,体现了Alignment原则;和其它聚类中心越远越好,这体现了Uniformity属性。

    SwAV面临模型坍塌问题,具体表现形式为:Batch内所有实例都聚类到同一个类里。所以为了防止模型坍塌,SwAV对聚类增加了约束条件,要求Batch内实例比较均匀地聚类到不同的类别中。本质上,它与直接采用负例的对比学习模型,在防止模型坍塌方面作用机制是类似的,是一种隐形的负例。

    基于不对称网络结构的方法



    代表模型BYOL:只用正例来训练对比学习模型,靠上下分枝的结构不对称,防止模型坍塌。

    基于冗余消除损失函数的方法



    代表模型 Barlow Twins。

    既没有使用负例,也没有使用不对称结构,主要靠替换了一个新的损失函数,可称之为“冗余消除损失函数”,来防止模型坍塌。

    实验结果

    目前绝大多数对比学习模型在做模型训练的时候,采用的是ImageNet数据集,在评测的时候,主要实验也是在ImageNet上做的,那么问题是:对比学习本质上是种自监督预训练模型,希望能够从ImageNet数据集上自监督地学到一些图像先验知识与结构。那么,这种从ImageNet数据集学到的知识,能否很好地迁移到其它数据集呢?

    论文“How Well Do Self-Supervised Models Transfer?”对13个知名自监督模型,在40多种数据集上进行相对公平地对比测试,得出了一些很有价值的结论。



    对比学习方法(NLP)

    CV领域的对比学习研究在近两年风生水起,也逐渐影响到NLP领域,从2020年起,NLP领域逐渐有一些利用对比学习思想,自监督训练sentence-embedding的idea。

    我自己的调研中,通过如何运用Contrastive Learning思想,分成两类:

  • 损失联合方式自监督:将CL的loss和其他loss混合,通过联合优化,使CL起到效果:CLEAR,DeCLUTER,SCCL。
  • 非联合方法自监督:构造增强样本,fine-tune模型:Bert-CT,ConSERT,SimCSE。

    下面分别从背景、方案、数据增强方法和实验效果介绍几个典型模型。

    损失联合方式自监督

    1.CLEAR

    链接:

    https://arxiv.org/pdf/2012.15466.pdf

    **背景:**作者认为,当前的预训练模型都是基于word-level的,没有基于sentence-level的目标,对sentence的效果不好。

    **方案:**word-level和sentence-level的loss联合。



    对比损失函数:



    **数据增强方法:**token层



    实验效果:

    GLUE:



    SentEval:



    2.DeCLUTR

    **链接:**https://arxiv.org/abs/2006.03659

    **方案:**是一个不用训练数据的自监督的方法,是对pretrain过程的优化。



    数据增强方法:

    方案:选N个document组成一个batch,每个document取A个anchor,就有AN个,anchor取一个positive,也有AN个,共2AN个点。对于每一个点,除了和它组成正例的一对的2个,其他2AN-2都是负例

    宗旨:认为距离anchor span越近的文本越相似,因此anchor span和它周边的span作为正例

    用不同的Beta分布去限制anchor和positive span的长度,一般anchor比positive要长,而且anchor最长可以到512。

    作者认为:

    1. 长anchor可以让embedding达到同时表征sentence级别和paragraph级别的作用

    2. 这样配置下游任务效果好 a)学到了global-to-local的信息 b)生成多个positive后可以获得diversity的信息

    3. 因为一个batch里有多个文档,不同文档的span组成的负例是easy负例,同文档的span组成的负例是hard负例。

    **实验效果:**对比学习过程中的ENCODER和MLM部分的Pretrained model是RoBerta和DistillRoBerta,pooling用的mean pooling。

    **扩展知识:**Bert vs RoBerta vs AlBert



    评测数据集是SentEval,SentEval是一个用于评估句子表征的工具包,包含 17 个下游任务,其输入是句子表示,输出是预测结果。



    可以看到本文方案往往不是最优的那个,但是作者对比了 没用对比学习方法和用了对比学习方法(最后的Transformer-* VS DeCLUTER-*)的结果,说明了自己方案有效。

    3.Supporting Clustering with Contrastive Learning

    **链接:**https://arxiv.org/abs/2103.12953(NAACL 2021)

    **背景:**在学习过程的开始阶段,不同的类别常常在表征空间中相互重叠,对如何实现不同类别之间的良好分离,带来了巨大的挑战。

    **方案:**利用对比学习,去做更好的分离。通过联合优化top-down聚类损失和bottom-up 实体级别的对比loss,来达到同时优化intra-cluster和inter-cluster的目的。





    分Instance-CL部分和Clustering部分两个部分。

    Instance-CL:

    [ol]
  • 随机选M个样本组成一个batch,数据增强方法生成2M个样本,依然是从一个样本中生成的2个为一对正样本,和其他2M-2组成负样本
  • 数据增强方法:
  • 每个样本用InfoCNE去算loss, Instance-CL loss 为2M样本的平均值。
    [/ol]


    数据增强方法:

  • WordNet Augmenter:用wordNet中的同义词进行替换;
  • Contextual Augmenter:用pretrained model去找最合适的词去进行插入或替换;
  • Paraphrase via back translation:翻译成一种语言再翻译回来;

    实验效果:



    非联合方式自监督

    1.BERT-CT (ICLR2021)

    **背景:**从各种预训练模型的某层中取出的embedding,并不能很好表征句子,而且越接近目标的层,效果越不好。作者认为训练目标极为重要。

    **方案:**用两个超参不一样的模型来取sentence embedding,尽可能让正例对的点积更大,负例对的点积更小。

    数据增强方法:

    正例:同句子的不同embedding;

    负例:随机选7个不同的句子;

    实验效果:



    2.SimCSE

    **链接:**https://arxiv.org/abs/2104.08821

    **背景:**直接用BERT句向量做无监督语义相似度计算效果会很差,任意两个句子的BERT句向量的相似度都相当高,其中一个原因是向量分布的非线性和奇异性,正好,对比学习的目标之一就是学习到分布均匀的向量表示,因此我们可以借助对比学习间接达到规整表示空间的效果,这又回到了正样本构建的问题上来,而本文的创新点之一正是无监督条件下的正样本构建。

    **方案&数据增强方法:**本文作者提出可以通过随机采样dropout mask来生成xi+,回想一下,在标准的Transformer中,dropout mask被放置在全连接层和注意力求和操作上,其中z是随机生成的dropout mask,由于dropout mask是随机生成的,所以在训练阶段,将同一个样本分两次输入到同一个编码器中,我们会得到两个不同的表示向量z,z’,将z’作为正样本,则模型的训练目标为:



    这种通过改变dropout mask生成正样本的方法可以看作是数据增强的最小形式,因为原样本和生成的正样本的语义是完全一致的(注意语义一致和语义相关的区别),只是生成的embedding不同而已。

    实验效果:



    你好,我是对白,硕士毕业于清华,现大厂算法工程师,拿过八家大厂的SSP offer。

    本科时独立创业五年,成立两家公司,并拿过总计三百多万元融资(已到账),项目入选南京321高层次创业人才引进计划。创业做过无人机、机器人和互联网教育,保研后选择退出。

    我每周至少更新一篇原创,分享自己的算法技术、创业心得和人生感悟。我正在努力实现人生中的第一个小目标,上方关注后可以加我私信交流。

    期待你关注我的公众号,我们一起前行。

  • 回复

    使用道具 举报

    1

    主题

    672

    帖子

    129

    积分

    注册会员

    Rank: 2

    积分
    129
    发表于 2021-9-28 07:39:41 | 显示全部楼层
    难得一见的好帖
    回复

    使用道具 举报

    1

    主题

    631

    帖子

    137

    积分

    注册会员

    Rank: 2

    积分
    137
    发表于 2021-9-28 08:06:48 | 显示全部楼层
    找到好贴不容易,我顶你了,谢了
    回复

    使用道具 举报

    2

    主题

    688

    帖子

    231

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    231
    发表于 2021-9-28 08:38:29 | 显示全部楼层
    学习了,谢谢分享、、、
    回复

    使用道具 举报

    1

    主题

    645

    帖子

    105

    积分

    注册会员

    Rank: 2

    积分
    105
    发表于 2021-9-28 09:14:23 | 显示全部楼层
    路过,学习下
    回复

    使用道具 举报

    1

    主题

    658

    帖子

    152

    积分

    注册会员

    Rank: 2

    积分
    152
    发表于 2021-9-28 10:13:25 | 显示全部楼层
    沙发!沙发!
    回复

    使用道具 举报

    1

    主题

    665

    帖子

    106

    积分

    注册会员

    Rank: 2

    积分
    106
    发表于 2021-9-28 11:02:39 | 显示全部楼层
    不错不错,楼主您辛苦了。。。
    回复

    使用道具 举报

    1

    主题

    647

    帖子

    154

    积分

    注册会员

    Rank: 2

    积分
    154
    发表于 2021-9-28 11:26:24 | 显示全部楼层
    路过,学习下
    回复

    使用道具 举报

    1

    主题

    671

    帖子

    172

    积分

    注册会员

    Rank: 2

    积分
    172
    发表于 2021-9-28 11:46:46 | 显示全部楼层
    前排支持下分享
    回复

    使用道具 举报

    1

    主题

    656

    帖子

    163

    积分

    注册会员

    Rank: 2

    积分
    163
    发表于 2021-9-28 12:08:25 | 显示全部楼层
    不错,支持下楼主
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ| 无图版|手机版|小黑屋| 上海@IT精英团

    Copyright © 2001-2015 Comsenz Inc.   All Rights Reserved.

    Powered by Discuz! X3.4

    快速回复 返回顶部 返回列表