对比学习方法(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负例。





