赞
踩
接着之前的句向量表示模型进行相似句计算的方法,这篇接着介绍一种新的方法-SimCSE。文章来自普林斯顿陈丹琦,引入了对比学习的思想进行sentence embedding的学习,刷爆了无监督与有监督语义相似度计算任务,成为SOTA,甚至本文的无监督方法超过了其他有监督方法的效果,还是很惊艳的。对比学习的思想是拉近相似样本,推开不相似的样本。相似样本的构造经过实验比较采用了dropout mask的方法。
之前的sentence embedding的方法主要是前面介绍的SBERT(孪生网络的形式)和对生成的向量进行分布归整的方法:bert-flow等。对比学习的目标就是学习一个优质的语义表示空间,使用alignment(对齐)和uniformity(均匀)来衡量效果。对齐这个指标和句向量相似的衡量一致,而均匀这个指标就是bert-flow中向量均匀分布的要求一致。
论文:https://arxiv.org/abs/2104.08821
解读:SimCSE: Simple Contrastive Learning of Sentence Embeddings - 知乎
苏剑林也在中文任务上对SimCSE进行了实验:中文任务还是SOTA吗?我们给SimCSE补充了一些实验 - 科学空间|Scientific Spaces,而美团在ACL2021上也提出对比学习文本表示模型:思想方法和结论和SimCSE也是如出一辙。
ACL 2021|美团提出基于对比学习的文本表示模型,效果提升8%
接下来就是我使用SimCSE在具体业务场景的一些实验了:
在之前的相似句任务上再一次进行对比实验,对无监督的SimCSE的实验结果如下:
sbert | 90.5% |
simcse(cls/mean)bert-base 768维 | 86.3%/87% |
simcse(cls/mean)roberta-base 768维 | 88.4%/88.8% |
simcse(cls/mean)electra-small 64维 | 86.6%/86.6% |
SimCSE的效果对比有监督的sbert还是相差了至少2个点,在没有标注语料的场景或者冷启动阶段SimCSE确实是一种很好的方法。
在具体的业务场景下,1.对于标注语料是必不可少的,可以在损失中加入对比损失,对比损失+分类损失的PariSupCon也证实了效果优于sbert,这是实验结果;2.使用poly_encoder的方法,加大两个query的交互计算,因为在错误分析中发现了:没有聚焦到正确的主体而导致的错误,这部分错误或许可以使用attention的方式捕获;或者是使用keyword-bert的方式训练。这方面的实验尝试后续给出结果。
keywordBERT介绍及具体实验效果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。