Loading [MathJax]/jax/output/CommonHTML/fonts/TeX/AMS-Regular.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Sentence-BERT详解

Sentence-BERT详解

作者头像
mathor
发布于 2020-10-23 03:01:05
发布于 2020-10-23 03:01:05
4.3K0
举报
文章被收录于专栏:mathormathor
简述

BERT和RoBERTa在文本语义相似度(Semantic Textual Similarity)等句子对的回归任务上,已经达到了SOTA的结果。但是,它们都需要把两个句子同时送入网络,这样会导致巨大的计算开销:从10000个句子中找出最相似的句子对,大概需要5000万(C210000=49,995,000)个推理计算,在V100GPU上耗时约65个小时。这种结构使得BERT不适合语义相似度搜索,同样也不适合无监督任务,例如聚类

解决聚类和语义搜索的一种常见方法是将每个句子映射到一个向量空间,使得语义相似的句子很接近。通常获得句子向量的方法有两种:

  1. 计算所有Token输出向量的平均值
  2. 使用[CLS]位置输出的向量

然而,UKP的研究员实验发现,在文本相似度(STS)任务上,使用上述两种方法得到的效果却并不好,即使是Glove向量也明显优于朴素的BERT句子embeddings(见下图前三行)

Sentence-BERT(SBERT)的作者对预训练的BERT进行修改:使用Siamese and Triplet Network(孪生网络和三胞胎网络)生成具有语义的句子Embedding向量。语义相近的句子,其Embedding向量距离就比较近,从而可以使用余弦相似度、曼哈顿距离、欧氏距离等找出语义相似的句子。SBERT在保证准确性的同时,可将上述提到BERT/RoBERTa的65小时降低到5秒(计算余弦相似度大概0.01秒)。这样SBERT可以完成某些新的特定任务,比如聚类、基于语义的信息检索等

模型介绍
Pooling策略

SBERT在BERT/RoBERTa的输出结果上增加了一个Pooling操作,从而生成一个固定维度的句子Embedding。实验中采取了三种Pooling策略做对比:

  1. CLS:直接用CLS位置的输出向量作为整个句子向量
  2. MEAN:计算所有Token输出向量的平均值作为整个句子向量
  3. MAX:取出所有Token输出向量各个维度的最大值作为整个句子向量

三种策略的实验对比效果如下

由结果可见,MEAN的效果是最好的,所以后面实验默认采用的也是MEAN策略

模型结构

为了能够fine-tune BERT/RoBERTa,文章采用了孪生网络和三胞胎网络来更新参数,以达到生成的句子向量更具语义信息。该网络结构取决于具体的训练数据,文中实验了下面几种机构和目标函数

Classification Objective Function

针对分类问题,作者将向量u,v,|uv|三个向量拼接在一起,然后乘以一个权重参数WtR3n×k,其中表示向量的维度,表示label的数量

损失函数为CrossEntropyLoss

注:原文公式为,我个人比较喜欢用表示向量拼接的意思

Regression Objective Function

两个句子embedding向量的余弦相似度计算结构如下所示,损失函数为MAE(mean squared error)

Triplet Objective Function

更多关于Triplet Network的内容可以看我的这篇Siamese Network & Triplet NetWork。给定一个主句和一个负面句子,三元组损失调整网络,使得之间的距离尽可能小,之间的距离尽可能大。数学上,我们期望最小化以下损失函数:

其中,表示句子的embedding,表示距离,边缘参数表示的距离至少应比的距离近。在实验中,使用欧式距离作为距离度量,设置为1

模型训练细节

作者训练时结合了SNLI(Stanford Natural Language Inference)和Multi-Genre NLI两种数据集。SNLI有570,000个人工标注的句子对,标签分别为矛盾,蕴含(eintailment),中立三种;MultiNLI是SNLI的升级版,格式和标签都一样,有430,000个句子对,主要是一系列口语和书面语文本

蕴含关系描述的是两个文本之间的推理关系,其中一个文本作为前提(Premise),另一个文本作为假设(Hypothesis),如果根据前提能够推理得出假设,那么就说前提蕴含假设。参考样例如下:

Sentence A (Premise)

Sentence B (Hypothesis)

Label

A soccer game with multiple males playing.

Some men are playing a sport.

entailment

An older and younger man smiling.

Two men are smiling and laughing at the cats playing on the floor.

neutral

A man inspects the uniform of a figure in some East Asian country.

The man is sleeping.

contradiction

实验时,作者使用类别为3的softmax分类目标函数对SBERT进行fine-tune,batch_size=16,Adam优化器,learning_rate=2e-5

消融研究

为了对SBERT的不同方面进行消融研究,以便更好地了解它们的相对重要性,我们在SNLI和Multi-NLI数据集上构建了分类模型,在STS benchmark数据集上构建了回归模型。在pooling策略上,对比了MEAN、MAX、CLS三种策略;在分类目标函数中,对比了不同的向量组合方式。结果如下

结果表明,Pooling策略影响较小,向量组合策略影响较大,并且效果最好

Reference
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Sentence-BERT: 一种能快速计算句子相似度的孪生网络
BERT和RoBERTa在文本语义相似度等句子对的回归任务上,已经达到了SOTA的结果。但是,它们都需要把两个句子同时喂到网络中,这样会导致巨大的计算开销:从10000个句子中找出最相似的句子对,大概需要5000万(C100002=49,995,000)个推理计算,在V100GPU上耗时约65个小时。这种结构使得BERT不适合语义相似度搜索,同样也不适合无监督任务(例如:聚类)。
zenRRan
2020/05/18
8.7K1
Sentence-BERT: 一种能快速计算句子相似度的孪生网络
一文详尽之Embedding(向量表示)!
文本是一类非常重要的非结构化数据,如何表示文本数据一直是机器学习领域的一个重点研究方向。文本向量就是深度学习时代产生的一种文本表示的方法。
Datawhale
2025/01/19
4K0
一文详尽之Embedding(向量表示)!
从 Sentence-BERT 谈句子表征
在之前那篇 NLP 表征的历史与未来[1] 里,我们几乎从头到尾都在提及句子表征,也提出过一个很重要的概念:“句子” 才是语义理解的最小单位。不过当时并没有太过深入细节,直到做到文本相似度任务时才发现早已经有人将其 BERT 化了。
NewBeeNLP
2021/11/15
1.8K0
从 Sentence-BERT 谈句子表征
BERT-Flow | 文本语义表示新SOTA
「Key insight:」 虽然预训练BERT已经广泛地运用到了各种下游的NLP任务上,但在文本语义相似度计算任务上,未经微调的BERT句向量的质量常常不如GloVe句向量。针对这个问题,作者首先分析了BERT句向量分布的性质,然后利用标准化流无监督地将BERT句向量的分布变换成更规整的高斯分布,实验结果表明作者提出的BERT-flow在多项任务上取得了SOTA表现。
NewBeeNLP
2021/01/08
1.9K0
Doc Embedding-语义相似度计算
考虑本身数据集的一些特点,针对表达多样性,语言噪音,同义词,人工标注等,参考数据增强的一些做法。
百川AI
2021/10/19
1.2K0
预训练句子表征——【EMNLP 2019】Sentence-BERT
在许多NLP任务(特别是在文本语义匹、文本向量检索等)需要训练优质的句子表示向量,模型通过计算两个句子编码后的Embedding在表示空间的相似度来衡量这两个句子语义上的相关程度,从而决定其匹配分数。尽管基于BERT在诸多NLP任务上取得了不错的性能,但其自身导出的句向量(【CLS】输出的向量、对所有输出字词token向量求平均)质量较低。由于BERT输出token向量预训练中,后面接的的分类的任务。所以其实输出token向量并不适合作为生成句子表示。美团一篇论文中提到,发现以这种方式编码,句子都倾向于编码到一个较小的空间区域内,这使得大多数的句子对都具有较高的相似度分数,即使是那些语义上完全无关的句子对,并将此称为BERT句子表示的“坍缩(Collapse)”现象:
小爷毛毛_卓寿杰
2021/12/07
6610
预训练句子表征——【EMNLP 2019】Sentence-BERT
ACL 2021 | 事实核查不是终点:通过记忆增强的关键句检索检测已被核查过的消息
AI 科技评论报道 作者 | 盛强 AI 科技评论今天介绍一篇被 ACL 2021 收录的论文,这篇论文介绍了一种基于记忆增强关键句匹配的检索信息重排序方法,可以用于一项事实核查与假新闻检测的新任务——检测已被核查过的消息。 论文题目:《Article Reranking by Memory-Enhanced Key Sentence Matching for Detecting Previously Fact-Checked Claims》 作者:盛强、曹娟、张雪遥、李锡荣、钟雷 单位:中国科学院计算
AI科技评论
2023/04/26
4550
ACL 2021 | 事实核查不是终点:通过记忆增强的关键句检索检测已被核查过的消息
文献阅读:Sentence-BERT:Sentence Embeddings using Siamese BERT-Networks
文献链接:https://arxiv.org/pdf/1908.10084.pdf
codename_cys
2022/04/13
5960
文献阅读:Sentence-BERT:Sentence Embeddings using Siamese BERT-Networks
NLP 语义匹配:经典前沿方案整理
这篇跟大家讨论相关的技术,主要包括BERT-avg、BERT-Whitening、SBERT、SimCES四个。
NewBeeNLP
2021/11/12
1.4K0
NLP 语义匹配:经典前沿方案整理
对比学习在语义表征中的应用:SBERT/SimCSE/ConSERT/ESimCSE复现
本篇博文主要比较目前常用的Sentence Embedding方法,包括双塔模型SBERT,对比学习SimCSE、ConSERT、ESimCSE,这里谈谈论文里的细节,以及本人在中文语料(Chinese-SNLI、Chinese-STS-B)复现后的结果。
对白
2022/04/01
2.2K0
对比学习在语义表征中的应用:SBERT/SimCSE/ConSERT/ESimCSE复现
5分钟 NLP系列 — SentenceTransformers 库介绍
SentenceTransformers 是一个可以用于句子、文本和图像嵌入的Python库。可以为 100 多种语言计算文本的嵌入并且可以轻松地将它们用于语义文本相似性、语义搜索和同义词挖掘等常见任务。
deephub
2022/03/12
3.7K0
5分钟 NLP系列 — SentenceTransformers 库介绍
Sentence-Transformer的使用及fine-tune教程
Sentence-Transformer官方文档写的很详细,里面有各种你可能会用到的示例代码,并且都有比较详细的说明,如果有什么问题,应该先去看官方文档
mathor
2020/10/26
9.6K1
Sentence-Transformer的使用及fine-tune教程
大型语言模型:SBERT — 句子BERT
Transformer 在 NLP 领域取得了进化性的进步,这已不是什么秘密。基于 Transformer,还发展出了许多其他机器学习模型。其中之一是 BERT,它主要由几个堆叠的 Transformer 编码器组成。除了用于一系列不同的问题(例如情感分析或问答)之外,BERT 在构建词嵌入(表示单词语义的数字向量)方面变得越来越流行。
数据科学工厂
2023/09/19
1.1K0
大型语言模型:SBERT — 句子BERT
一文详解文本语义相似度的研究脉络和最新进展
每天给你送来NLP技术干货! ---- ©作者 | 崔文谦 单位 | 北京邮电大学 研究方向 | 医学自然语言处理 编辑 | PaperWeekly 本文旨在帮大家快速了解文本语义相似度领域的研究脉络和进展,其中包含了本人总结的文本语义相似度任务的处理步骤,文本相似度模型发展历程,相关数据集,以及重要论文分享。 文本相似度任务处理步骤 通过该领域的大量论文阅读,我认为处理文本相似度任务时可以分为一下三个步骤: 预处理:如数据清洗等。此步骤旨在对文本做一些规范化操作,筛选有用特征,去除噪音。 文本表示:
zenRRan
2022/08/26
3K0
一文详解文本语义相似度的研究脉络和最新进展
文献阅读:SimCSE:Simple Contrastive Learning of Sentence Embeddings
主要思路感觉还是接着之前的SentenceBert一脉相承的(这部分内容我之前也写过一个小博客《文献阅读:Sentence-BERT:Sentence Embeddings using Siamese BERT-Networks》进行过介绍),主体还是使用的Bert或者Roberta模型,但是不同于sentence bert的截断迁移,这里采用的方式是通过引入对比学习来直接对sentence embedding进行学习,从而达到一个更好的效果。
codename_cys
2022/04/13
5940
文献阅读:SimCSE:Simple Contrastive Learning of Sentence Embeddings
文本嵌入,语义搜索与sentence-transformers库
近期在研究开源的 rust 实现的向量数据库 qdrant。顾名思义,向量数据是用于存储和查询向量的数据库,而向量本质上是一个多维空间中的点。如果要用向量数据库处理文本数据,就需要将文本转换为向量表示,机器学习术语叫做文本嵌入(Text Embedding)。
杜逸先
2023/12/24
1.9K0
【比赛】CCL“中国法研杯”相似案例匹配评测竞赛 - TOP队伍攻略分享
上周末参加了在云南昆明举办的“第十八届中国计算语言学大会”(The Eighteenth China National Conference on Computational Linguistics, CCL 2019)。CCL作为国内最好的NLP会议之一,笔者收获满满,感触颇深。于是写下这篇文章,和大家分享之所见所闻。
zenRRan
2019/11/01
1K0
CCKS 2020「基于标题的大规模商品实体检索」竞赛冠军,DeepBlueAI团队技术分享
第十四届全国知识图谱与语义计算大会(CCKS 2020) 11 月 12 日至 15 日在江西南昌举行,CCKS(China Conference on Knowledge Graph and Semantic Computing)是由中国中文信息学会语言与知识计算专委会定期举办的全国年度学术会议。CCKS 已经成为国内知识图谱、语义技术、语言理解和知识计算等领域的核心会议。CCKS 2020 举办的各项挑战赛公布了最终结果,来自深兰科技北京 AI 研发中心的 DeepBlueAI 团队斩获了 3 项冠军和 1 项亚军,并获得了一项技术创新奖。
机器之心
2020/11/20
9220
CCKS 2020「基于标题的大规模商品实体检索」竞赛冠军,DeepBlueAI团队技术分享
无所不能的Embedding7 - 探索通用文本表达[FastSent/InferSent/GenSen/USE]
在4/5章我们讨论过用skip-thought,quick-thought任务来进行通用文本向量提取,当时就有一个疑问为什么用Bookcorpus这种连续文本,通过预测前一个和后一个句子的方式得到的文本向量,能在下游任务里取得比较好的效果呢?这一章我们来聊聊都有哪些SOTA通用文本框架,或许直接使用它们的场景已经不多,但你依旧能在各个前沿方法中看到它们的影子。我们会主要聊聊以下内容
风雨中的小七
2021/03/03
9010
无所不能的Embedding7 - 探索通用文本表达[FastSent/InferSent/GenSen/USE]
特定领域知识图谱融合方案:技术知识前置【一】-文本匹配算法、知识融合学术界方案、知识融合
本项目主要围绕着特定领域知识图谱(Domain-specific KnowledgeGraph:DKG)融合方案:技术知识前置【一】-文本匹配算法、知识融合学术界方案、知识融合业界落地方案、算法测评KG生产质量保障讲解了文本匹配算法的综述,从经典的传统模型到孪生神经网络“双塔模型”再到预训练模型以及有监督无监督联合模型,期间也涉及了近几年前沿的对比学习模型,之后提出了文本匹配技巧提升方案,最终给出了DKG的落地方案。这边主要以原理讲解和技术方案阐述为主,之后会慢慢把项目开源出来,一起共建KG,从知识抽取到知识融合、知识推理、质量评估等争取走通完整的流程。
汀丶人工智能
2023/01/18
9020
推荐阅读
相关推荐
Sentence-BERT: 一种能快速计算句子相似度的孪生网络
更多 >
加入讨论
的问答专区 >
1北京宏哥擅长4个领域
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档