Abstract

朴素bert和roberta在句子分类和句子对回归表现好,但因为模型结构问题不适用于语义相似度检索和聚类。【朴素bert即是语言模型也是估计器,不能拿出单独的句向量】

作者改变了朴素Bert的结构为孪生和三胞网络,可以获得好的句向量,保证了精度的同时极大加快了速度。

Introduction

新的模型适用于大规模的语义检索。新的模型把孪生网络的特征提取层换成了bert

以往人们的做法是用所有token的输出向量的平均池化或者CLS token,这样产生的句向量甚至不如glove。

新的模型处理单句输入为固定长度向量,之后可以用余弦相似度、欧式距离、曼哈顿距离等度量可以提取高质量的句向量。

结果表明,照17和18sota提高了11和5个百分点。

Related work

旧的模型缺点就是句向量产生和计算不独立。

为了解决这个问题,人们尝试用单句输入得到的wam或cls vector做句向量,以及由word2vec派生的skip-thought/quick-thought.

作者使用预训练bert和roberta而非随机初始化,只做训练句向量的fine-ture,时间短见效快。

Model

为了得到固定长度的句向量,作者尝试了三种pooling策略,MEAN > CLS > MAX,结果显示MEAN最好。

向量组合u/v/u-v最好

网络结构见下图

左图目标函数为交叉熵,讲bert+pooling得到的u、v和|u-v|向量进行拼接,接输出层softmax,进行训练。

右图目标函数为MSE。

三胞网络不在图中,为三个同构同参bert接平均池化得到原句向量a,正句向量p和负句向量n,损失函数
a r g m a x w L = m a x ( ∣ a − p ∣ 2 − ∣ a − n ∣ 2 + 1 , 0 ) argmax_wL = max(|a-p|^2 - |a-n|^2+1, 0) argmaxw​L=max(∣a−p∣2−∣a−n∣2+1,0)

Evaluation

余弦相似度 曼哈度距离 欧式距离 三者结果差不多

Intel i7-5820K CPU @ 3.30GHz, Nvidia Tesla V100 GPU, CUDA 9.2 and cuDNN

Conclusion

提出了新的句向量生成方式——sentence-BERT,取得了很大提升

实验中用roberta替换bert,并没有取得显著效果

Supplement

朴素bert从n句子找最相近的两个需要做n**2次bert推理,sentence-bert只需要n次

Vocabulary

massive 大而重

derive 获取 得到

drawback 缺点

are depicted in 被展示在

Reference

https://mathor.blog.csdn.net/article/details/109057391

https://mathor.blog.csdn.net/article/details/109166024

https://www.sbert.net/index.html

https://roomylee.github.io/sentence-bert/

TODO

  • fine-ture
  • bert和roberta参数冻结吗?
  • sentence-bert和bert在v100单次推理只需要5ms?

sentence-BERT相关推荐

  1. sentence Bert解读及代码示例

    0-前序 Bert已经是相当6了,但在STS(语义文本相似性)任务中,需要将两个句子都输入到网络中,也就是说要过模型,这样计算量就大了.如下是文本相似性,并不是语义. from transformer ...

  2. BERT与ERNIE

    1. 前言 本文讲解预训练Transformer模型常用的方法:BERT与ERNIE. 本人全部文章请参见:博客文章导航目录 本文归属于:自然语言处理系列 本系列实践代码请参见:我的GitHub 前文 ...

  3. 文献阅读:SimCSE:Simple Contrastive Learning of Sentence Embeddings

    文献阅读:SimCSE:Simple Contrastive Learning of Sentence Embeddings 1. 文献内容简介 2. 主要方法介绍 3. 主要实验介绍 1. STS ...

  4. 句向量 Sentence Embedding

    句向量 Sentence Embedding 摘要 本文主要对句向量的发展和relate work介绍一下,可以看作一个简单的综述内容,句向量在NLP中有着很重要的作用,同时在许多NLP实际任务中会类 ...

  5. 对各大预训练语言模型的简单总结和评述(BERT/RoBERTa/ALBERT/ELECTRA/ERNIE/structBERT/SpanBERT...)

    前言 本文系对BERT及其各种优化的简单总结.如RoBERTa.ALBERT.ERNIE.SBERT.MacBERT等. 随积累,即时更新. 总结 BERT 初始预训练任务简介: MLM,即完形填空. ...

  6. 前沿重器[10] | bert语义空间的思考

    [前沿重器] 栏目主要给大家分享各种大厂.顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术.具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有. 往期回顾 前沿重器[5] | ...

  7. Tensorlfow2.0 二分类和多分类focal loss实现和在文本分类任务效果评估

    Tensorlfow2.0 二分类和多分类focal loss实现和在文本分类任务效果评估 前言 二分类 focal loss 多分类 focal loss 测试结果 二分类focal_loss结果 ...

  8. 心路分享 | 2022暑期算法实习复盘

    作者 | Player 编辑 | NewBeeNLP 面试锦囊之面经分享系列,持续更新中  后台回复『面试』加入讨论组交流噢  背景 211CS本+港三DS硕,硕士research的方向是NLP,目标 ...

  9. 网页怎么预先加载模型_修补预先训练的语言模型

    网页怎么预先加载模型 Can you fill in the words that I've removed from a recent announcement? 您能填写我从最近的公告中删除的词吗 ...

  10. NLP领域表达退化各向异性理解及对应策略总结

    前言:今年8月份在与同学撰写deepfake相关论文的过程中偶然听导师提到各向同性与各向异性这两个词,当时以为这是cv领域的概念,回去一查发现是物理领域的,就没再深究.最近看到一篇使用对比学习解决开放 ...

最新文章

  1. mysql 1115_从ADS1115 Python向MySQL插入数据
  2. 结棍!Spring 支持 PHP 了!?
  3. CAShapeLayer和CAGradientLayer
  4. 深入源码 UITableView 复用技术原理分析
  5. Python知识点笔记-条件选择、循环和函数
  6. 信息系统项目管理师范围管理
  7. java 优秀开源项目
  8. 一种软阴影的实现方法
  9. 转DateTimePicker 控件的使用
  10. Windows server 2008R2 如何成功离线安装.net 4.7.2
  11. 微专题:数据中心选址
  12. 使用Axure实现原型设计(一)
  13. 三级分销之父徐张生:人人店引领微商界版“裂变”
  14. Factor Graphs and GTSAM
  15. 自动化测试Robot FrameWork框架
  16. Android游戏之仿 微信飞机大战
  17. linux设置全局代理
  18. Uinux/linux vi保存退出命令 (如何退出vi)
  19. 超强反爬虫方案!Requests 什么的通通爬不了
  20. 适合新手拿来练习的springboot+vue前后端分离小Demo

热门文章

  1. 如何制作思科和华为设备的console线
  2. NS32F103C8T6 可完美替代 STM32F103C8T6
  3. I.MX6U-ALPHA开发板(主频和时钟配置实验)
  4. 关于Python的基础练习题
  5. 微信小程序 —— 自定义长圆形view
  6. 不止一面的百变 ACE
  7. 外贸小白适合哪种邮箱?
  8. 在太平洋人寿保险公司工作好不好?
  9. 涨停板第二天开盘的三种操作方法
  10. 野子 - 苏运莹蓝鲸