Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks paper学习

Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks paper学习_第1张图片

abstract

计算相似度,原始bert需要将两个句子都放到里面去重新计算,计算量非常大。
本文修改预训练bert的网络结构,利用siamese和triplet网络结构来计算语义相似度
优化了速度,维持了精度

1 Introduction

本文可以支持将bert用于大规模的相似度比较,聚类,信息检索,以及语义搜索。
现在比较常见的方法是取最后一层bert的平均值,或者取cls特征。
上面两个取得的embedding效果非常差,可能比平均Glove embedding还差
比inferSent网络居然高了差不多十个点?
polyencoders的score计算方式也比较耗时?

3 Model

3.1 结构图

Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks paper学习_第2张图片

3.2 解析

  • 分类目标函数:训练阶段利用[u, v, |u-v|]作为特征
  • 回归目标函数:推理阶段通过cos函数计算相似度,并使用均方误差作为损失函数
  • triplet损失函数:正样本的差值和负样本的差值的比较,正样本的差值应该小于负样本的差值。
  • 默认pooling策略是mean均值

3.3 triplet loss

Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks paper学习_第3张图片

5 Evaluation

5.1 总结

  1. 无监督STS:通过计算embedding之间的spearman rank分数来比较,直接使用bert效果比较差,mean 54.81, cls特征 29.19, 都比直接用Glove差
  2. 有监督STS:
    2.1 直接用STS训练
    2.2 在NLI预训练,然后再STS上训练,预训练大概带来1,2个点的提升
  3. cross-topic数据集上表现比较差,降低6-7个点,bert可以利用交叉特征,sbert相当于只利用了一个高纬度的topic特征,挑战比较大。

5.2 详细STS数据集结果

无监督和有监督STS数据集评估

Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks paper学习_第4张图片

5.3 详细cross-topic评估结果

Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks paper学习_第5张图片

6. 消融实验

Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks paper学习_第6张图片

7 计算效率

Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks paper学习_第7张图片

8 结论

bert->高质量的计算相似度的vector
gpu上:比infersent快9%,比Universal sentance encoder快55%
10000句子的聚类,bert要65小时,sbert,只需要5秒钟。

你可能感兴趣的:(nlp_paper,nlp学习,nlp,sentence-bert,sbert,孪生)