文献阅读笔记 # Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks

article/2024/3/2 10:15:03
  • 《Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks》 用于快速搭建NLP任务的demo的开源项目sbert的原始论文,star数很多,ACL 2019。
  • 资源: pdf | code | doc
  • 本文文献完成于 2019 年,因此仅代表当时的数据。
  • 相关工作:bert-as-a-service | InferSent | universal-sentence-encoder
@inproceedings{reimers-2019-sentence-bert,title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",author = "Reimers, Nils and Gurevych, Iryna",booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",month = "11",year = "2019",publisher = "Association for Computational Linguistics",url = "https://arxiv.org/abs/1908.10084",
}

Abstract

BERT(2018) 和 RoBERTa(2019) 在 sentence-pair regression 类任务(如,semantic textual similarity, STS, 语义文本相似度任务)中取得了 SOTA,但计算效率低下,因为 BERT 的构造使其不适合 semantic similarity search 也不适合无监督任务,如聚类。

  • 10000 sentences 找到最相似的 pair 需要约5千万次BERT推理(单张V100 ~65hours)

本文提出的 Sentence-BERT(SBERT) 使用了 Siamese 和 triplet network structures 对 BERT 网络进行修改生成 semantically meaningful sentence embedding 并可以通过余弦相似度进行比较。

  • 这将寻找最相似 pair 的工作量在保持准确性的情况下从 ~65 hours 降低到约 5 seconds,约提速5万倍
  • semantically meaningful 这里指在语义相近的句子在向量空间中相近。

本文在 STS 和常见的迁移学习任务中评估了 SBERT 和 SRoBERTa,并取得了 SOTA(2019年)。

1 Introduction

  • BERT 在不同的句子分类或句子对回归任务上刷新了 SOTA。其采用了 cross-encoder 结构:两个句子被输入进 transformer network 并预测 target value。但这个设置由于组合空间太大不适用于很多情况。
  • 孪生和三元网络结构的采用让SBERT适用于BERT所不适用的特定新任务,如大规模语义相似度比较、聚类和通过语义搜索进行信息检索。

解决聚类和语义搜索的一个通用思路是把每个句子映射到向量空间且语义相似的句子的嵌入表示在向量空间中是相近的。一种尝试是将句子输入到 BERT 中并获得固定长度的 sentence embeddings。最常见的方法是 average the BERT output layer(BERT embeddings) 或者使用 first token([CLS] token) 的输出。但这种方式产生的嵌入质量很低:甚至比 2014 年的 GloVe embeddings 的还差。本文提出的 SBERT 就是解决 BERT 用来产生语义感知 embedding 问题的解决方案。

  • 孪生架构可以得到输入句子的固定长度的向量。
  • 使用余弦、曼哈顿、欧几里得距离等相似度量指标可以获得语义相似的句子,并且这些相似性度量指标在现代硬件上可以非常高效的计算。

本文在 NLI data 上 fine-tune 了 SBERT,获得了超越 InferSent(2017)、Universal Sentence Encoder(2018) 的嵌入。在 7 个 STS 任务上 SBERT 均超越了前述算法,在 SentEval (2018,一种用于评估 sentence embedding 的 toolkit) 上也实现了改进。

2 Related Work

  • BERT,pre-trained transformer network,BERT 用于句子对回归任务中的输入包含两个句子,由[SEP] token 分割。应用了超过 12 层(base-model)或者 24 层(large-model)的 Multi-head attention。输出被传递给一个简单的回归函数以获得最终的 label。RoBERTa 对 BERT 的 pre-training 过程进行了细微调整获得了进一步的提升。但 BERT 一个严重缺点是没有独立计算 sentence embedding,因此很难直接从 BERT 获得句子的嵌入。一种尝试是将单个句子输入到 BERT 中并获得固定长度的 sentence embeddings,然后通过 average the BERT output layer(BERT embeddings)【类似 average word embedding】或者使用 first token([CLS] token) 的输出。这两种方式在 bert-as-a-service repo 中有提供。
  • Sentence embeddings
    • Skip-Thought: encoder-decoder 预测周围的句子。
    • InferSent:a siamese BiLSTM network with max-pooling over the output
      • Datasets: Stanford Natural Language Inference dataset;MultiGenre NLI dataset;
    • Universal Sentence Encoder:transformer network;augments unsupervised learning with training on SNLI.
  • Humeau et al. (2019) 解决了 BERT 中的 cross-encoder 运行时的开销问题并提出 poly-encoders 来计算 m context vectors 和使用注意力预先计算的 candidate embeddings 之间的 score。这个方案在大规模集合中查找最高得分的句子比较有效。缺点是 poly-encoders 的 score function 不是对称的(symmetric),并且对于聚类这样的算法计算开销太大,O(n^2)。

3 Model

SBERT 在 BERT/RoBERTa 的输出中添加了 pooling 以获得固定大小的 sentence embedding。本文实验了三种 pooling 策略(默认策略是 MEAN):1)使用CLS-token的输出;2)MEAN-strategy:计算所有输出向量的平均值;3)MAX-strategy:计算输出向量的 max-over-time。

网络结构取决于具体任务。如下所示:
Classification Objective Function:将 sentence embedding u、v 和 element-wise difference |u-v| 连接起来,并与可训练的权重Wt∈R3n∗kW_t\in{R^{3n*k}}WtR3nk相乘。

  • n: 句子嵌入的维度;k:标签总数;使用交叉熵进行优化。


Regression Objective Function:余弦相似度;loss选用MSE(mean-squared-error)。

Triplet Objective Function:anchor sentence a, positive sentence p, negative sentence n。triplet loss 目标是让 a 和 p 之间的距离比 a 和 n 之间的距离小。

  • sxs_xsx: sententce embedding for a/n/p;Margin ϵ\epsilonϵ 确保 sps_pspsas_asa 的距离至少比 sns_nsnϵ\epsilonϵ。这里实验距离度量采用了欧氏距离,ϵ=1\epsilon=1ϵ=1

3.1 Training Details

本文在 SNLI 和 Multi-Genre NLI 的组合数据集上训练 SBERT。SNLI 是一个包含57万个句子对的集合,标注了 contradiction, eintailment 和 neutral 的 label。Multi-Genre NLI 包含43万个句子对,涵盖了一系列口语和书面语的体裁。本文每个 epoch 以一个 3-way softmax-classifier 目标函数微调 SBERT。

batch size 设置为 16;采用学习率为 2e-5 的 Adam 优化器;linear learning rate warm-up over 10% of the training data;

  • Note:warm-up:模型刚开始训练时通常不太稳定,因此初始学习率设置的应该较低,但过低的学习率会导致网络训练很慢,因此采用较低学习率逐渐增加到较大学习率的方式实现网络训练的”热身“。

4 Evaluation - Semantic Textual Similarity

我们评估了 SBERT 在常见文本语义相似度(STS)任务中的性能。SOTA 的方法通常学习一个(复杂的)回归函数,然而,这些回归函数是 work pair-wise 且由于组合爆炸,如果句子集合达到一定规模,这些函数通常是不 scalable 的。相反,本文使用余弦相似度来比较两个句子嵌入之间的相似度。也用负的曼哈顿距离和负的欧氏距离作为相似性度量,但结果大致相同。

4.1 Unsupervised STS

数据集:STS tasks 2012 - 2016、STS benchmark、SICK-Relatedness。
训练集提供 0-5 的标签,0 表示两个句完全无关,5 表示两个句子完全相同。
经过实验证明,Pearson 相关性很不适合于评估 STS 任务。因此,使用 Spearman 相关性来评估。

  • 实验结果表明,BERT模型在该类任务上表现极差,结果比GloVe还低,也验证了前文所说的,BERT模型不适合应用于该类任务上。

4.2 Supervised STS

数据集:STS benchmark (STSb)
微调SBERT。在预测时,我们计算句子嵌入之间的余弦相似度。所有实验都用10个随机种子进行训练,以排除统计方差。
两种训练策略:1)只在STSb训练集上训练;2)在NLI训练集上预训练,再在STSb数据集上训练。
实验结果:在SBERT模型上,第二种训练策略表现更好,提高了1-2个点。在BERT模型上,两种策略的影响较大,第二种策略提高了3-4个点。

4.3 Argument Facet Similarity

数据集:Argument Facet Similarity (AFS)
该数据集与STS数据集相比差异较大,STS数据通常是描述性的数据,而AFS数据是来自对话中的论据节选。由于 Argument数据集的特殊性,很多方法在该数据集上表现很多差。

  • 在交叉主题评估上,SBERT的Spearman评分与BERT相差了7个点。原因是SBERT需要事先将未曾见过的具有相似的主张和理由的主题映射到向量空间中同一块区域,这个难度较大,然而BERT只需要逐一比较两个句子的单词差异。

4.4 Wikipedia Sections Distinction

训练集:Wikipedia section triplets dataset
经验认为,来自同一段落的句子间是比来自不同段落的句子更接近的,相似度更高。因此,Wikipedia 训练集将来自同一段的句子作为正例,来自不同段的句子作为负例。

5 Evaluation - SentEval

在 SentEval 中 sentence embedding 被用于逻辑回归分类器的特征。逻辑回归分类器在 10-fold 交叉验证设置下的各种任务上进行训练,并计算 test-fold 的 accuracy。

SBERT Sentence Embedding 并不是为了便于 Transfer Learning 到其他任务上。本文认为对新的任务微调 SBERT 是更合适的方式(因为会更新 SBERT 所有层)。但 SentEval 还是可用来评估对不同任务下当前的 embedding 的质量。

比较任务(seven SentEval transfer tasks):

  • MR: Sentiment prediction for movie reviews snippets on a five start scale
  • CR: Sentiment prediction of customer product reviews
  • SUBJ: Subjectivity prediction of sentences from movie reviews and plot summaries
  • MPQA: Phrase level opinion polarity classification from newswire
  • SST: Stanford Sentiment Treebank with binary labels
  • TREC: Fine grained question-type classification from TREC
  • MRPC: Microsoft Research Paraphrase Corpus from parallel news sources

6 Ablation Study

  • different pooling strategies:MEAN, MAX, CLS
  • classification objective function:评估不同的 different concatenation 方法。对每个不同的设置,用10个不同的随机数种子初始化并训练SBERT,最终平均其表现。

分类任务采用数据集:SNLI、Multi-NLI;回归任务采用数据集:STS benchmark。

如表所示,分类任务采用的 concatenation 方式对结果影响较大,pooling 策略影响很小。但在回归任务中 pooling 策略影响很大,concatenation 与回归任务无关。

7 Computational Efficiency

  • 实验数据集:STS benchmark
  • 实验设备:Intel i7-5820K CPU @ 3.30GHz, Nvidia Tesla V100 GPU, CUDA 9.2 and cuDNN
    • smart batching strategy:相近长度的句子被分到相同组,并 padding 到 mini-batch 组内最长元素的长度。

8 Conclusion

  • 本文发现 BERT 直接对句子生成 embedding 在 STS tasks 中甚至不如 GloVe embeddings。因此本文提出 Sentence-BERT(SBERT)。SBERT 在孪生 triplet 网络架构中微调 BERT,在常见任务上取得了 SOTA。但把SBERT 架构中的 BERT 替换为 RoBERTa 在实验中无显著提升。
  • SBERT 能解决 BERT 不能解决的一些任务,且计算效率有极大提升。

http://www.ngui.cc/article/show-845542.html

相关文章

FFmpeg基础:音视频中的那些核心参数

文章目录帧率修改帧率码率修改码率计算文件Size码率和帧率是视频文件的关键指标参数,这些参数决定了一个视频文件的质量。如果我们知道了一个视频文件中所有流的码率我们就可以计算出这个视频文件的大小了。深刻理解码率和帧率概念对于使用ffmpeg进行音视频开发是很…

JAVA练习33

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、题目-有效的字母异位词 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 1月2…

最详细的华为VRP操作指南

第二章:华为VRP系统 通用路由平台VRP(Versatile Routing Platform)是华为公司数据通信产品的通用操作系统平台。它以IP业务为核心,采用组件化的体系结构,在实现丰富功能特性的同时,还提供了基于应用的可裁…

DW 2023年1月Free Excel 第八次打卡 Excel数据可视化

第八章Excel数据可视化 数据下载地址与参考链接:https://d9ty988ekq.feishu.cn/docx/Wdqld1mVroyTJmxicTTcrfXYnDd 1 条形图 案例1 打开data/chap8/8.1xlsx中的【案例1】,现在有湖北区2022/01/01的不同商品的销售额。 问题1:如何更加直观…

设计模式之简单工厂

现在有一个这样的需求:控制台输入俩个数,并输入运算符,计算并输出结果。上述需求乍一看,特别像一个小型的计算器,记得初学Java时,实现过。 实现一: 创建计算器类,控制台输入俩个数…

2、SPSS的基本知识

目录 一、SPSS软件的安装和启动 二、SPSS的基本操作环境 (1)数据编辑窗口(主程序窗口) (2)SPSS结果输出窗口 三、SPSS软件的退出 四、SPSS软件的三种基本使用方式 五、SPSS数据的结构和定义方法 1.…

人事管理系统

人才是单位的宝贵财富,而人事管理是人才资源的核心,因此快捷、高效的人事档案理系统成为单位的基本需求。 系统的主要目的是实现企业人事的信息化管理,主要业务是实现对员工信息的管理。 一、功能需求分析 人事管理系统主要是对人事档案管理…

(Java高级教程)第四章必备前端基础知识-第三节2:JavaScript数组、函数和对象

文章目录一:数组二:函数三:对象一:数组 数组:JavaScript中的数组和Java中的ArrayList有点相似,可以动态扩容,并且由于它是动态类型的语言,所以数组内的元素类型不要求一定是相同的 …

八字-十天干、十二地支、六十甲子

六十甲子是十天干与十二地支的组合,60为一周期,用年、月、日、时四个柱子撑起时间的大厦,所以年月日时也称四柱:甲子,乙丑,……,葵亥(一共60)。 十天干:甲乙丙丁卯己庚辛…

Shiro学习文档

Shiro Java安全框架 1.什么是权限管理 ​ 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。 权限管理…