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

75 篇文章 7 订阅
61 篇文章 2 订阅

在这里插入图片描述

abstract

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

1 Introduction

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

3 Model

3.1 结构图

在这里插入图片描述

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

在这里插入图片描述

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数据集评估

在这里插入图片描述

5.3 详细cross-topic评估结果

在这里插入图片描述

6. 消融实验

在这里插入图片描述

7 计算效率

在这里插入图片描述

8 结论

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值