sentence-BERT
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) argmaxwL=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相关推荐
- sentence Bert解读及代码示例
0-前序 Bert已经是相当6了,但在STS(语义文本相似性)任务中,需要将两个句子都输入到网络中,也就是说要过模型,这样计算量就大了.如下是文本相似性,并不是语义. from transformer ...
- BERT与ERNIE
1. 前言 本文讲解预训练Transformer模型常用的方法:BERT与ERNIE. 本人全部文章请参见:博客文章导航目录 本文归属于:自然语言处理系列 本系列实践代码请参见:我的GitHub 前文 ...
- 文献阅读:SimCSE:Simple Contrastive Learning of Sentence Embeddings
文献阅读:SimCSE:Simple Contrastive Learning of Sentence Embeddings 1. 文献内容简介 2. 主要方法介绍 3. 主要实验介绍 1. STS ...
- 句向量 Sentence Embedding
句向量 Sentence Embedding 摘要 本文主要对句向量的发展和relate work介绍一下,可以看作一个简单的综述内容,句向量在NLP中有着很重要的作用,同时在许多NLP实际任务中会类 ...
- 对各大预训练语言模型的简单总结和评述(BERT/RoBERTa/ALBERT/ELECTRA/ERNIE/structBERT/SpanBERT...)
前言 本文系对BERT及其各种优化的简单总结.如RoBERTa.ALBERT.ERNIE.SBERT.MacBERT等. 随积累,即时更新. 总结 BERT 初始预训练任务简介: MLM,即完形填空. ...
- 前沿重器[10] | bert语义空间的思考
[前沿重器] 栏目主要给大家分享各种大厂.顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术.具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有. 往期回顾 前沿重器[5] | ...
- Tensorlfow2.0 二分类和多分类focal loss实现和在文本分类任务效果评估
Tensorlfow2.0 二分类和多分类focal loss实现和在文本分类任务效果评估 前言 二分类 focal loss 多分类 focal loss 测试结果 二分类focal_loss结果 ...
- 心路分享 | 2022暑期算法实习复盘
作者 | Player 编辑 | NewBeeNLP 面试锦囊之面经分享系列,持续更新中 后台回复『面试』加入讨论组交流噢 背景 211CS本+港三DS硕,硕士research的方向是NLP,目标 ...
- 网页怎么预先加载模型_修补预先训练的语言模型
网页怎么预先加载模型 Can you fill in the words that I've removed from a recent announcement? 您能填写我从最近的公告中删除的词吗 ...
- NLP领域表达退化各向异性理解及对应策略总结
前言:今年8月份在与同学撰写deepfake相关论文的过程中偶然听导师提到各向同性与各向异性这两个词,当时以为这是cv领域的概念,回去一查发现是物理领域的,就没再深究.最近看到一篇使用对比学习解决开放 ...
最新文章
- mysql 1115_从ADS1115 Python向MySQL插入数据
- 结棍!Spring 支持 PHP 了!?
- CAShapeLayer和CAGradientLayer
- 深入源码 UITableView 复用技术原理分析
- Python知识点笔记-条件选择、循环和函数
- 信息系统项目管理师范围管理
- java 优秀开源项目
- 一种软阴影的实现方法
- 转DateTimePicker 控件的使用
- Windows server 2008R2 如何成功离线安装.net 4.7.2
- 微专题:数据中心选址
- 使用Axure实现原型设计(一)
- 三级分销之父徐张生:人人店引领微商界版“裂变”
- Factor Graphs and GTSAM
- 自动化测试Robot FrameWork框架
- Android游戏之仿 微信飞机大战
- linux设置全局代理
- Uinux/linux vi保存退出命令 (如何退出vi)
- 超强反爬虫方案!Requests 什么的通通爬不了
- 适合新手拿来练习的springboot+vue前后端分离小Demo