关于句子表示学习的方法一些见闻
句子表示是解决各类任务(分类,信息检索,阅读理解等等)的基础,因此,如何学习有效的句子表示一直受到大家的关注。句子表示学习的发展大致经历了这几个阶段:早期人们的工作集中在如何学习更好的单词表示,而一个句子一般是由若干个单词组成的,因此将单词的表示池化(类似于求和取平均)作为句子的表示是其中一种方法(Yoon Kim, 2014)。当时单词表示学习一种很成功的方法是Word2vec之一的Skip-gram。它的思想是对于一句话,挖掉其中一个单词,让剩下的单词去预测这个被挖掉的单词。于是有人借助这种思想去学习句子表示,即让一个文档中的其他句子去预测被挖掉的句子(Kiros et al., 2015)。2018年BERT预训练模型的诞生给NLP领域带来了巨大的变化,它所产生的单词表示和句子表示质量相比以往有明显提升。但是如何借助BERT模型去得到句子表示还是有一些细微的差别,有的工作将BERT产生的单词表示作池化操作作为句子表示,或者是直接采取[CLS]这个标记的表示作为句子表示,这些方法在SimCSE(Gao et al., 2021)里作为baseline都得到了对比。但是BERT模型产生的句子表示质量还是不能令人满意,主要有两方面原因。一是表示本身在一些特殊的任务(比如句子对回归)上面表现并不好,甚至不如Glove 这种池化单词表示的方法。因此,有一系列的工作的对此进行了改进(Reimers et al., 2019; Zhang et al., 2020;Gao et al., 2021; Jiang et al., 2022)。还有一方面原因是在BERT模型在句子对回归任务上的低效率。这类任务的一个关键问题是使得语义相近的句子,其表示在嵌入空间里面距离也是相近的,