本文主要是介绍Augmented SBERT,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1 简介
句子对评分任务(Pairwise sentence scoring tasks)在NLP上有非常广泛的应用,如信息检索、问答、复制问题检测、聚类等。
有两种处理句子对的方法:
(1)cross-encoder,两个句子同时输入到网络模型中,对输入句子对采用全注意力方法,如BERT,其有较好的表现力,却在实际场景中运行效率低、开销大。如在n=10000个句子中找到相似的句子对,BERT要进行n*(n-1)/2=49995000次预测计算,在单个V100 GPU上,需要运行65小时。BERT还有个缺点是其没有独立的Sentence embeddings产生。
(2)Bi-encoder,需要大量的训练数据,以及在目标任务上进行微调来获得较好的表现力。如SBERT。Bi-encoder预测速度快,如上面的任务,使65小时减少到5秒。但通常Bi-encoder的表现力不如cross-encoder
本文我们提出了一个简单有效的数据增强策略,称为“Augmented SBERT”。我们使用cross-encoder标注很多输入语句对来增强训练数据,以用于Bi-encoder。
本文跟进2021年《Augmented SBERT: Data Augmentation Method for Improving Bi-Encoders for Pairwise Sentence Scoring Tasks》翻译总结。
2 Related work
Sentence embeddings 在最近的文献中研究很广泛。早期的技术包括Skip-thought vectors非监督方法和InferSent、USE监督方法。
DiPair 网络结构与我们的相似,不过其主要关注预测速度,同时进行了表现力与预测速度之间的权衡研究。
而我们的Augmented SBERT主要关注采样技巧,下面会讨论。
3 方法
3.1 Augmented SBERT
采用 cross-encoder弱标注(label)的数据,我们叫做silver dataset,他们会与gold训练数据合并。我们然后在者扩展后的数据上训练 bi-encoder。
3.2 语句对采样策略
采用cross-encoder弱标注所有可能的句子对组合会导致巨大的开销,甚至可能导致模型表现力下降。所以我们需要合适的采样策略,减少弱标注的句子对,提升模型表现力。
(1) Random Sampling (RS)
(2) Kernel Density Estimation (KDE):目的是保证silver 数据和gold数据的分布保持一致。为此,我们弱标注大量随机的句子对后,但只保留一定的组合。如对于分类任务,只保留positive的句子对;对于回归任务,使用 kernel density estimation (KDE)来估计连续的对于分数s的密度函数Fgold(s) and Fsilver(s)。
不过,KDE采样策略计算效率不好,需要大量随机的采样。我们后面没有采用该方法。
(3) BM25 Sampling (BM25):采用Okapi BM25算法。我们利用ElasticSearch。对每个句子提取最相似的k个句子。然后这些句子对使用cross-encoder弱标注,并都被当做silver数据使用。该方法运行效率很高。本文推荐此方法。
(4) Semantic Search Sampling (SS):BM25的一个缺点是只能找到词汇重叠的句子,所以同义词,其没有或者只有很少重叠的句子不会被选择。该方法,我们使用cosine-similarity选择最相似的k个语句。也可以采用Faiss。
(5) BM25 + Semantic Search Sampling (BM25- S.S.)
3.3 域适配任务(Domain adaptation)
4 数据
句子对评分任务主要分为回归任务和分类任务。回归任务是用一个分数类描述输入间的相似性;分类任务是采用不同的标签,如释义的、非释义的。
5 实验结果
这篇关于Augmented SBERT的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!