Sentence-BERT论文阅读笔记
目录
-
1. 第一篇论文《Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks》
-
- 1.1 论文基本信息部分
-
- 1.2 研究背景与动机
-
- 1.3 模型框架设计
-
- 1.4 实验部分及其相关内容
-
- 1.4.1 训练数据来源
-
- 1.4.2 实验结果分析
-
- 1.4.3 消融实验研究
-
1.5 小结
-
- 1.4 实验部分及其相关内容
-
2. 第二篇论文:改进版SBERT:基于数据增强方法提升双编码器在对分句得分为任务中的性能
- 2.1 论文基本信息
- 2.2 研究动机
- 2.3 模型架构
-
2.3.1 改进版SBERT
- 2.3.2 基于改进版SBERT的数据域适应方法
-
2.4 实验
-
- 2.4.1 数据集
-
- 2.4.1.1 单领域数据集
-
2.4.1.2 多领域数据集
- 2.4.2 实验结果
-
这次阅读笔记专门梳理了SBERT领域的核心文献,在首篇文章中开创性地提出了SBERT这一概念,在后续研究中则聚焦于其在数据增强策略上的创新应用。具体而言,在首篇文章中Nils Reimers团队成功实现了对复杂语义的理解能力,在第二篇文章中则进一步优化了基于SBERT的数据增强方法。
SBERT属于当下应用效果显著的应用领域中的一个模型。SBERT基于孪生网络架构能够生成固定长度且保持语义内涵的句向量。通常会采用余弦相似度、曼哈顿距离以及欧式距离等方法来进行比较。

基于此提出的模型框架不仅能够实现复杂的特征提取能力而且在推理速度上也达到了较高的水平. 该框架采用了先进的注意力机制设计思路能够在捕捉长距离依赖关系方面表现出色. 此外 该模型还通过引入多层交互机制增强了语义表示的能力 并且在多个基准测试中均展现了优异的表现. 理论分析表明 该模型在计算复杂度上具有较高的效率 同时也能够较好地平衡准确性与效率之间的关系. 在实验部分 我们通过对比实验验证了所提出的方法与现有相关工作在性能指标上的优势.
1. 第一篇学术论文《S-BERT: Sentence Embeddings Based on Siamese-based BERT Architecture》

1.1 论文基本信息
论文来源:
EMNLP-IJCNLP 2019
论文引用:
Reimers N , Gurevych I . Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks[C]// Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP). 2019.
论文链接:
https://arxiv.org/abs/1908.10084
code:
https://www.sbert.net/index.html
摘要:
BERT(Devlin et al.,2018)和RoBERTa(Liu et al.,2019)在句子对打分任务(如语义-文本相似性(STS))上取得了最佳性能。然而,这需要将两个句子都输入到网络中,这会造成巨大的计算开销。例如,在10000个句子的集合中找到最相似的句子对需要使用BERT进行大约5000万次推理计算(~65小时)。BERT的构造使得它不适用于语义相似性搜索以及聚类等无监督任务。
在本研究中,我们开发出了一种新的预训练语言模型Sentence-BERT(SBERT),它是基于预训练BERT/RoBERTa架构的一种优化方法。该模型采用双胞胎架构与三元组关系网络相结合的方式,能够有效提取具有语义意义的句子嵌入,并通过余弦相似度量评估匹配程度。与传统的基于BERT/RoBERTa的方法相比,该模型大幅降低了找到最优匹配配对所需的时间,从原本耗时65小时降至约5秒,同时保留了原有的准确性
我们对SBERT模型及其增强版本SRoBERTa进行了全面比较分析,在常规的句子相似性任务以及跨领域学习任务中进行了深入考察,并对其性能表现进行了详细评估
1.2 动机
采用机器学习中的聚类算法与深度学习中的语义表示技术相结合的方式,在自然语言处理领域中被广泛采用的一种方法是通过将每个句子映射至向量空间,并确保语义相似的句子对应的向量在该空间中具有较高的近邻性。
研究团队正在推进单个句子输入到BERT系统中,并提取固定大小的句子嵌入。通常采用的方式包括计算BERT输出层的平均值(即BERT embeddings)以及利用第一个token([CLS]token)的信息作为表示手段。然而由于BERT架构本身的特点,在这种情况下生成的句子嵌入表现相对较弱。与基于GloVe词向量简单求均值的方式相比表现更为逊色
常见的做法是将文本匹配问题转化为二分类任务。为了实现这一目标, 我们会将两个输入文本连接成一个序列, 并在两者之间插入特殊分隔符"SEP"。随后, 通过经过12层或24层Transformer模块进行编码处理后, 计算输出层所有子词向量的平均值或提取"CLS"位置上的特征作为整个句子的向量表示, 并应用Softmax函数进行最终分类任务。

在包含1万条句子的数据集中识别出一对最为相似的句子对,在这种情况下因为可能的组合数量极大而使得任务难度显著增加需进行共计49,995,000次推理运算以确定最优配对
在一块V100 GPU上使用BERT计算,将消耗65小时 。
为了解决BERT输出的句子向量效果欠佳以及句子组合输入计算耗时过长的问题, 本文提出了一种称为SBERT的方法, 基于孪生网络架构设计, 能够生成固定长度的同时保留了语义信息的句向量. 进而采用余弦距离、曼哈顿距离或欧式距离等方法来计算它们之间的相似程度.
该神经网络架构展现出明显的对称特性,如同一对镜像结构;因此,在下图中展示的这种神经网络架构被研究人员称为"Siamese Network"(即孪生网络)。

从本质上说,在"孪生"机制中起着核心作用的是两个网络共享相同的编码器(即 sentence encoder)。这种架构确保了将输入文本转化为统一向量空间的能力。通过动态交互处理两段文本之间的关系特征,并基于此输出分类结果或相似性评估。"孪生网络"设计简洁且训练稳定性高,在许多需要可靠文本分析的任务中表现优异。
例如,在本例中,我们有两个文本样本,分别将它们作为输入传递给 sentence encoder 进行特征提取与编码。这些输入被投影至一个新的嵌入空间中以生成对应的两个特征向量u和v。随后,我们将这两个特征向量进行融合操作后传递给下游任务模型以计算这两个文本样本之间的相似度
整个过程有2个值得关注的点:
- 在训练和测试中,模型的编码器是权重共享的(“孪生”);编码器的选择非常广泛,传统的CNN、RNN和Attention、Transformer都可以
- 得到特征u、v后,可以直接使用cosine距离、欧式距离得到两个文本的相似度;不过更通用的做法 是,基于u和v构建用于匹配两者关系的特征向量,然后用额外的模型学习通用的文本关系映射;毕竟我们的场景不一定只是衡量相似度,可能还有问答、蕴含等复杂任务
因为获得了句子的嵌入向量,在针对前文所述的任务时,则只需计算大约超过26万对词向量之间的余弦相似度,并进一步利用SBert系统仅需用时5秒 即可完成整个过程。
基于已预先训练好的BERT与RoBERTa网络的基础上进行微调处理,并生成有用的句子嵌入模型。此方法显著降低了所需的时间成本:SBERT模型可以在不到20分钟内完成模型微调工作,并相较于其他同类的句子嵌入方法而言,在性能上具有明显的优势
1.3 模型
SBERT沿用了孪生网络的结构,文本Encoder部分用同一个BERT来处理。
SBERT operates based on the BERT/RoBERTa output and adds a pooling operation to extract fixed-size sentence embeddings.
常用的Pooling操作有:
- 使用[CLS] token进行池化(即仅获取[CLS]位置的嵌入)
- 对于均值池化(Mean pooling),计算各Token对应的平均向量
- 在最大池化(Max pooling)中,则选择各Token嵌入的最大值
在训练过程中构建了孪生与三重网络用于更新参数从而使得生成的句子嵌入不仅具有语义意义而且可以通过余弦相似度进行对比
同时使用了不同的目标函数进行训练。
使用分类目标函数
将u、v拼接,接入全连接网络,经softmax分类输出;损失函数用交叉熵。

W_t \in R^{3n \times k}, n为句子嵌入的维度,k为分类的标签数目

回归目标函数
计算并生成余弦相似度值;基于均方根误差(MSE, mean-squared-error)的方法被用于训练损失函数。
Triplet Objective Function
论文中也给出了相应的损失函数

针对STS(Semantic Textual Similarity)任务而言,在当前研究中广泛使用的SOTA(State-of-the-Art)方法通常会训练一种复杂的模型架构来生成高质量的文本摘要。这种方法的核心目标是将输入的文本嵌入转换为表示其相似性的分数。然而,在实际应用中发现这一类模型在处理大规模数据集时存在明显局限性:因为当数据集规模增大时(如句子集合达到一定大小),每对句子之间的比较次数呈平方增长(N^2),导致计算成本急剧上升,并因此难以实现高效的标量评估指标。
在测试环节中,SBERT主要采用余弦相似度来评估两个句子的语义相近程度。

1.4. 实验
1.4.1 训练所用的数据集
(1)SNLI语料库(1.0版)
https://nlp.stanford.edu/projects/snli/
由57万条人工编译的英语句子对构成的一个集合,在经过人工标注以实现均衡分类的基础上,并带有蕴含、矛盾及中立(entailment, contradiction, and neutral)标签的支持下,则旨在实现自然语言推理的任务——也被称作文本蕴含识别任务

(2)Multi-Genre NLI
https://cims.nyu.edu/~sbowman/multinli/
Multi-Genre NLI represents an evolution of SNLI, maintaining the same format and comprising 43,000 pairs of English sentences. Its distinguishing feature lies in its comprehensive approach to various genres, encompassing both spoken and written texts, alongside unique cross-genre transfer evaluation capabilities.
1.4.2 实验结果
测试数据:
STS12-STS16:SemEval 2012-2016
STSb: STSbenchmark
该基准(STSb)由Cer团队于2017年提出,并提供了广泛使用的数据集。这些数据用于评估监督学习环境中的句子相似性。该数据集包含了8,628对句子,并分别来自标题类、新闻类和论坛类。这些数据被划分为训练集大小为5,749、验证集大小为1,500以及测试集大小为1,379。
数据示例:
3.750 A dog is trying to get bacon off his back. A dog is trying to eat the bacon on its back.
SICK-R: SICK relatedness dataset
无监督实验结果

为了计算句子嵌入与测试数据提供的参考相似度标签之间的Spearman’s rank correlation系数来评估模型的效果
斯皮尔曼等级相关系数(Spearman’s rank correlation coefficient)
它基于某种单调函数来衡量两个统计变量之间的关联程度。假设数据中没有重复项,在两变量达到完全单调关系时(即一者随另一者按相同方向变化),斯皮尔曼相关系数为±1
斯皮尔曼相关系数即为其对应的等级变量间的皮尔逊相关系数。对于大小为n的样本中每个原始观测值(X_i, Y_i)(其中i=1,2,…,n),我们通过排序得到其对应的等级数据(x_i, y_ i)(其中x_ i=\text{rank}(X_ i)和y_ i=\text{rank}(Y_ i)),计算得到其对应的皮尔逊相关系数\rho。
等级数据x_i,y_i是每个原始数据的降序位置的平均。
| 变量 | 降序位置(仅示意,不使用) | 降序位置的平均(使用) |
|---|---|---|
| 0.8 | 5 | 5 |
| 1.2 | 4 | \frac {4+3} {2} = 3.5 |
| 1.2 | 3 | \frac {4+3} {2} = 3.5 |
| 2.3 | 2 | 2 |
| 18 | 1 | 1 |
实际应用中,变量间的连结是无关紧要的,于是可以通过简单的步骤计算 ρ。
被观测的两个变量的等级的差值d_i = x_i - y_i,则\Large \rho =1-{{\frac {6\sum d_{i}^{2}}{n(n^{2}-1)}}}

正的斯皮尔曼相关系数反应两个变量 X 和 Y 单调递增的趋势。
研究表明,在直接应用BERT输出时会表现出较差性能。经测试发现,在计算平均BERT嵌入时所获得的相关性仅为54.81分(较低水平),而采用[CLS]token所得的相关性则仅为29.19分(显著低于前者)。其效果均不如计算平均Glove词向量的效果强
基于本文所提出的孪生网络结构及微调机制的应用,在相关性方面取得了显著提升,并且明显优于InferSent和USE。
SBERT的表现比USE差的唯一数据集是SICK-R。
完成两个阶段的实验:仅限于STSb数据集上的训练,并依次进行先NLI、后STSb的数据集上的训练。

经研究发现充足的训练数据集带来了显著提升无明显差别
1.4.3 消融实验
在初步阶段对多种池化策略进行考察,在后续阶段深入分析或探讨u,v向量拼接策略的不同组合方式
对于分类目标函数,我们基于SNLI和多NLI数据集训练SBERT。
对于回归目标函数,我们在STS基准数据集的训练集上进行训练。
使用余弦相似性和斯皮尔曼秩相关在STSb的dev set上评估。

当在NLI数据集上运用分类损失函数进行训练时,在池化操作中的作用相对较小;相比之下,u与v向量连接的方式在整个模型性能中的重要性更为突出。其中最为关键的部分是element-wise差值:|u−v|;这个指标用于衡量两个句子嵌入在各维度上的差异程度,并确保相似的句子对彼此更加接近,从而使得不同类型的句子对彼此更加远离
1.5 小结
从整体角度看SBert能够帮助我们生成高质量的句向量 ,在多种任务中可能展现出更好的性能。 在推理环节中采用的方法是计算余弦相似度的方式,在这一过程中预测时间得到了显著缩短。
第二篇论文:Augmented SBERT: 基于双编码器的数据增强方法用于提升对偶句子得分任务的表现

2.1 论文基本信息
论文来源:
arXiv
论文引用:
Thakur N, Reimers N, Daxenberger J, et al. Augmented sbert: Data augmentation method for improving bi-encoders for pairwise sentence scoring tasks[J]. arXiv preprint arXiv:2010.08240, 2020.
论文链接:
https://arxiv.org/abs/2010.08240
code:
https://www.sbert.net/index.html
摘要:
句子对评分有两种方法:一是Cross-encoders,对输入对执行full-attention;二是Bi-encoders,将每个输入独立地映射到密集向量空间。虽然Cross-encoders通常可以获得更高的性能,但对于许多实际使用场景来说,它们的速度太慢了。另一方面,Bi-encoders需要大量的训练数据和针对目标任务的微调,使模型达到具有竞争力的性能。本文提出了一种简单而有效的数据增强策略,称为增强SBERT,其中我们使用Cross-encoders来标记一组数据更多的输入对,以增强Bi-encoders的训练数据。我们展示了,在这个过程中,选择句子对是非常重要的,也是该方法成功的关键。我们在多个领域内任务和一个领域自适应任务上评估我们的方法。与Bi-encoders性能相比,增强SBERT在领域内任务和领域自适应任务上分别提高了6个百分点和37个百分点。
2.2 动机
通常在性能指标方面Cross-encoders表现更为出色
本研究进行了对比实验,在STSb基准数据集上评估了两种模型:采用预训练BERT进行微调训练的cross-encoder及其与基于SBERT进行微调训练的bi-encoder之间的性能对比。

注意到当训练数据不足的时候,
差异尤其显著。
由此可见,在这种情况下,
本文提出了一种命名为Augmented SBERT(AugSBERT)的数据增强方法。
注意到当训练数据不足的时候,
差异尤其显著。
由此可见,在这种情况下,
本文提出了一种命名为Augmented SBERT(AugSBERT)的数据增强方法。
2.3 模型
2.3.1 Augmented SBERT
基于预训练性能优异的cross-encoder模型, 我们依据预先确定的取样策略(待详细说明)选取一对一对的文本, 并通过cross-encoder模型对其进行标记. 我们将这类弱标记的数据样本归类为silver数据集, 它们将与gold训练数据集结合在一起. 随后, 在这一扩大后的学习样本集合上构建bi-directional encoder模型. 我将其命名为Augmented SBERT(AugSBERT).

句子对采样策略:
在我们的领域内实验中
考虑到n个句子就有 n \times (n-1)/2种可能的组合, 关键在于确保优化措施的有效实施, 这一点至关重要.
Random Sampling(RS)
采用随机采样的方法,在两组样本中容易导致两组样本之间存在显著差异。这样的设置会导致silver数据集中的标签分布呈现明显的偏向性。
Kernel Density Estimation (KDE)
旨在使silver数据集与其golden训练集在标签分布上具有相似性?为此?我们需要从大量随机抽取的数据样本中施加轻量化的标记,并仅保留部分样本。
在进行分类任务时,在sliver数据集中选择了所有的阳性样本作为基础;接着,在剩余的阴性样本中进行了有代表性的抽样,并确保sliver数据集中的阳性与阴性样本的比例与golden数据集训练时保持一致。
在回归任务中,我们采用核密度估计法(KDE)来估算分数s的连续概率密度函数F_{gold}(s)以及F_{sliver}(s)。我们的目标是使得这两种分布在空间上的差异最小化。
以概率Q(s)保留得分为s的样本。

BM25 Sampling
该信息索引方案采用BM25方法来评估查询与文档之间的相关性程度。
它是一种核心方法。
为每个独一无二的句子创建索引,并通过查询每个单独的句子来检索出与之相关的前k个相似度高的句子。进而采用cross-encoder模型来进行弱标签学习。
Semantic Search Sampling
该算法的主要局限在于仅能识别具有词汇交集的内容。在实际应用中通常难以发现完全没有或极少 vocabulary overlap 的情况也不会被生成结果进而无法成为 silver 数据集的一部分为了提高模型性能 在 golden training set 中构建并 fine-tuning 一个 SBERT 模型 并在此基础上进一步优化对 similar sentence pairs 的采样策略通过计算余弦 similarity 作为衡量标准 在给定语料库中寻找与查询语句最匹配的内容针对大规模数据集的问题 在实际应用中通常会采用近似最近邻搜索技术(例如 Faiss 等高效算法)来加速查询速度
BM25 + Semantic Search Sampling
综合运用BM25算法与语义搜索采样技术。通过整合这些策略能够有效捕获词汇与语义相关联的句子。这可能使标签分布向否定类信息发生偏移。
2.3.2 Domain Adaptation with AugSBERT
我们期望SBERT在域外数据上有更好的表现。
SBERT难以将包含未见过术语的句子转换为具有意义的向量空间
不幸的是,新领域的标记数据很少可用。

因此,我们评估了本文提出的数据增强策略在领域自适应任务上的表现:
- 基于带有配对注释的数据集,在源域上训练cross-encoder(BERT)。
- 通过训练后的cross-encoder模型,在目标域的数据上进行标记。
- 经过上述标记过程后,在训练bi-encoder模型时会利用这些带标记的句子。
2.4 实验
2.4.1 数据集
对句子对的评分可以划分为回归任务与分类任务;在回归任务中,则会为输入间的相似程度分配一个分数值;在分类任务中,则采用不同的标签进行识别与划分;这些标签包括paraphrase与non-paraphrase两种类型。
2.4.1.1 单领域数据集
在我们的单域(即域内)实验中,设置了如下任务:
句子对回归任务:
基于语义的文本相似性测试(SemEval-Spanish: SemEval Spanish STS)
二元句子对分类任务
- Quora Q&A 查询对齐问题(QP)
- 研究 paraphrase 数据集(MRPC)

2.4.1.2 多领域数据集
将重复问题检测 建模为问题与问题(标题/标题)二元分类任务。
下面四个数据集全部是重复问题检测的数据集,用来做领域自适应实验。
- AskUbuntu: 由Stack Exchange提供技术支持的专业问答平台
- Quora: 源自知名问题解答网站Quora的内容分享平台
- Sprint: 基于Sprint技术论坛收集的技术问答数据集
- SuperUser: 由Stack Exchange提供技术支持的专业IT问答社区

比率表示重复对(正)比非重复对(负)。
2.4.2 实验结果
领域内任务的训练结果

研究表明,在回归与分类任务方面AugSBERT的表现均超越了SBERT,并且在某些特定的数据集上甚至超过了作为性能基准模型的BERT(cross-encoder)
深入分析一下AugSBERT模型的迁移性能。源领域被定义为... 目标领域被定义为... 在In-Domain场景下... SBERT模型则采用基于...的方式进行训练

通过实验结果可以看出,在与普通SBERT模型相比时
研究表明AskUbuntu、Sprint和SuperUser等数据库均源自技术论坛的技术库资源。相比之下,Quora数据库涉及的领域范围更为广泛。实验结果表明,若基于Quora数据库训练的SBERT模型迁移到其他三个数据库进行测试,其表现几乎等同于随机猜测水平;然而,在迁移至其他三个数据库的过程中,其效果并不显著优于未经强化学习方法优化的原始模型。通过引入数据增强技术,在经过强化学习优化后,基于Quora数据库训练的BERT模型能够识别并标注部分目标领域的实例;而经过类似处理后的AugSBERT依然能够识别出大量目标领域的关键信息,从而展现出明显的性能提升优势。相反,若以AskUbuntu、Sprint和SuperUser等基础数据库训练出的BERT模型迁移到目标领域较为广泛的Quora数据库上时,其表现将显著逊色于前者;从实验结果可以看出,针对Quora数据库迁移时,AugSBERT相较于未经优化的传统SBERT模型几乎没有带来实质性的性能提升效果
