作者 | 王嘉宁@华师数据学院 整理 | NewBeeNLP https://wjn1996.blog.csdn.net/article/details/125528859
大家好,这里是NewBeeNLP。
Contrastive Learning(对比学习) 可以利用BERT更好地学习句子表征。其重点在于如何寻找正负样本。例如,使用inner dropout方法构建正样本。
现有的研究表明,BERT的句向量存在一个 坍缩现象 ,也就是句向量受到高频词的影响,进而坍缩在一个凸锥,也就是各向异性,这个性质导致度量句子相似性的时候存在一定的问题,这也就是 anisotropy 问题。
(1)Original BERT layers fail to improve the performance.
对比两种不同的sentence embedding方法:
评价两种sentence embedding的效果,采用sentence level anisotropy评价指标:
anisotropy :将corpus里面的sentence,两两计算余弦相似度,求平均。
对比了不同的语言模型,预实验如下所示:
(2)Embedding biases harms the sentence embeddings performance. token embedding会同时受到token frequency和word piece影响
For frequency bias, we can observe that high fre- quency tokens are clustered, while low frequency tokens are dispersed sparsely in all models (Yan et al., 2021). The begin-of-word tokens are more vulnerable to frequency than subword tokens in BERT. However, the subword tokens are more vul- nerable in RoBERTa.
如何避免BERT在表征句子时出现上述提到的问题,本文提出使用Prompt来捕捉句子表征。但不同于先前prompt的应用(分类或生成),我们并不是获得句子的标签,而是获得句子的向量,因此关于prompt-based sentence embedding,需要考虑两个问题:
本文提出一种基于prompt和对比学习的句子表征学习模型。
本文设计一个template,例如“[X] means [MASK]”,[X] 表示一个placehoder,对应一个句子,[MASK]则表示待预测的token。给定一个句子,并转换为prompt后喂入BERT中。有两种方法获得该句子embedding:
;
方法二将句子使用若干个MLM生成的token来表示,依然存在bias,因此本文只采用第一种方法
关于prompt设计上,可以采用如下三种方法:
采用对比学习方法,对比学习中关于positive的选择很重要,一种方法是采用dropout。本文采用prompt方法,为同一个句子生成多种不同的template,以此可以获得多个不同的positive embedding。
The idea is using the different templates to repre- sent the same sentence as different points of view, which helps model to produce more reasonable pos- itive pairs. 为了避免template本身对句子产生语义上的偏向。作者采用一种trick:
;
最后套入对比学习loss中进行训练:
作者在多个文本相似度任务上进行了测试,实验结果如图所示:
惊奇的发现,PromptBERT某些时候竟然比SimCSE高,作者也提出使用对比学习,也许是基于SimCSE之上精细微调后的结果。