Abstract & Introduction & Related Work
- 研究任务
- sentence embedding
- 已有方法和相关工作
- InferSent
- Universal Sentence Encoder
- Skip-Thought
- 面临挑战
- BERT在文本语义相似度上达到了sota,然而,它需要将两个句子都送入网络,这导致了大量的计算开销。在10,000个句子的集合中找到最相似的一对,需要用BERT进行大约5千万次推理计算(约65小时)。BERT的构造使其不适合于语义相似性搜索以及无监督的任务,如聚类
- 创新思路
- 使用连体和三连体网络结构,得出有语义的句子嵌入,可以使用余弦相似度进行比较。
这将寻找最相似对的代价从BERT/RoBERTa的65小时减少到SBERT的约5秒,同时保持BERT的准确性 - 之前的神经句嵌入模型都是从零开始训练,而我们在BERT/RoBERTa上面fine-tune,甚至可以少于20分钟
- 使用连体和三连体网络结构,得出有语义的句子嵌入,可以使用余弦相似度进行比较。
- 实验结论
- sota
Model
Sentence-BERT在BERT和RoBERTa的输出层加了一个pooling层,以获得一个固定大小的句子嵌入
我们试验了三种集合策略:
- 使用CLS-token的输出
- 计算所有输出向量的平均值(MEANstrategy)
- 以及计算输出向量的max-over-time(MAX-strategy)
默认配置是MEAN
为了微调BERT / RoBERTa,我们创建了连体和三连体网络(Schroff等人,2015),以更新权重,使产生的句子嵌入具有语义,并可以与余弦相似性进行比较
Classification Objective Function
先pooling,然后相减的绝对值再concat到一起,送到softmax分离器里面
Regression Objective Function
两个句向量的余弦相似度:
Triplet Objective Function
给定一个锚定句子a,一个正样例句子p,和一个负样例句子n,三段式损失调整网络,使a和p之间的距离小于a和n之间的距离
Training Details
我们用3个软分类器的目标函数对SBERT进行了微调,用于一个epoch。我们使用了16个批次,Adam优化器的学习率为 2 e − 5 2e-5 2e−5,在10%的训练数据上进行线性学习率预热。我们默认的汇聚策略是MEAN
Evaluation - Semantic Textual Similarity
Unsupervised STS
Supervised STS
Argument Facet Similarity
Wikipedia Sections Distinction
Evaluation - SentEval
Ablation Study
Computational Efficiency
Conclusion
我们表明,BERT开箱即用,将句子映射到一个向量空间,而这个向量空间相当不适合与余弦相似性等常见的相似性措施一起使用。七个STS任务的性能低于GloVe平均嵌入的性能。
为了克服这一缺陷,我们提出了Sentence-BERT(SBERT)。SBERT在一个连体/三连体网络结构中对BERT进行了微调。我们在各种常见的基准上评估了其质量,在那里它可以实现比最先进的句子嵌入方法的显著改善。在我们的实验中,用RoBERTa代替BERT并没有产生明显的改善。
SBERT在计算上是高效的。在GPU上,它比InferSent快约9%,比Universal Sentence Encoder快约55%。SBERT可以用于那些用BERT建模在计算上不可行的任务。例如,用分层聚类法对10,000个句子进行聚类,用BERT需要大约65个小时,因为必须计算大约5000万个句子组合。使用SBERT,我们能够将这一工作减少到大约5秒
Remark
看到这个65小时到5秒钟我就人傻了,46800倍的效率???还outperform??
不愧是best paper,大道至简,牛逼!!