Advertisement

论文阅读Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks

阅读量:

论文信息

题目

采用双层BERT架构进行的句法嵌入技术

作者

Nils Reimers, Iryna Gurevych

论文水平

EMNLP 2019

其它

论文获取链接:https://arxiv.org/abs/1908.10084


Abstract

尽管BERT和RoBERTa在诸多文本处理任务方面表现卓越,在文本语义相似度等回归任务上也实现了SOTA效果(State-of-the-Art),但它们仍存在一定的局限性:这些模型都需要将待比较的两个句子输入至模型进行评估。从这个角度而言,在一个包含10000个不同句子的集合中寻找与某一个特定句 Cluster 最为接近的配对关系就需要经过5千万次推理运算后仍需约65小时才能完成该操作。基于此可以看出,在语义相似度搜索等特定应用场景下 Bert 模型并不具备高效的适用性

本文研究中, 研究者提出了一种新型模型, Sentence-BERT(简称 SBERT)。SBERT 基于二层或多层 BERT 网络架构, 具体架构将在后续内容中进行详细阐述. 如果基于 RoBERTa 模型, 则可将其命名为 SRoBTAr.

基于SBERT模型生成的句子嵌入表示可以直接利用余弦相似度对两个句子进行相似性评估。值得注意的是,在传统BERT模型中,需要从整个集合中每次选取两两组合进行比较,在每次比较时将这些句子输入BERT进行特征提取,并计算其间的余弦相似度以确定最接近的相关性陈述。相比之下,在SBERT模型下完成这一任务所需的时间仅为5秒左右。

作者在多个关键领域中对SBERT模型进行了测试,并指出该模型表现出最佳表现。


Introduction

SBERT模型能够有效地从语义层面捕捉一个句子的本质特征,在向量空间中具有较高相似度的句子其对应的嵌入向量之间的距离会更加接近。这样一来 SBERT模型不仅能够有效执行诸如大规模语义相似度比较 聚类 以及通过语义搜索实现的信息检索等任务 而且还特别适合处理那些传统方法如BERT难以胜任的应用场景。

我们之前曾提到过,在应用BERT评估两个句子语义相似性时存在一定的局限性:直接将多个句子拼接后输入模型并不适合于大规模的多句相似度计算任务;具体而言,在一个包含n个句子的集合中寻找最相似的一对需要执行n*(n-1)/2次两两比较操作,并且每次比较都需要将两个待测句子输入到BERT模型中进行评估;这样的计算量对于大规模的数据处理来说是一个显著的挑战

一种通用的技术是将意义相似的句子映射到同一个向量空间中的相应位置,并通过一个独特的向量来表示整个句子。

BERT通常采用的方法用于表征每个句子的是通过提取第一个[CLS] token的输出特征或计算所有token输出特征的平均值以获取其语义表达。经过实验验证发现 这些策略往往会导致生成的结果质量较低

为了解决问题的目的,作者开发了SBERT模型,并通过该模型生成的sentence embeddings即可计算两句子之间的相似程度。这些similarity metrics包括cosine相似度、欧氏距离以及曼哈顿距离等方法。

与其他的句子表征模型相比,SBERT在很多任务上都取得了SOTA。


首先详细阐述了BERT后文接着探讨了其他几种相关的句子表征方法,并列举了如InferSent、SkipThought和Universal Sentence Encoder等具体的实现方案。在后续的实验章节中也会与这些方法进行对比分析。

SBERT采用了基于预训练BERT改进型模型,在实际应用中大幅降低了训练所需的时间,在仅需约20分钟的微调过程中就已显著超过了众多其他sentence embedding技术方案


Model

SBERT模型主要应用了三种不同的池化方式:CLS、MEAN和MAX;其中,在大多数情况下,默认使用的池化方法是MEAN。

通过双层或多层网络架构对BERT/RoBERTa进行微调训练,并优化相关参数设置后发现,在调整后的模型中能够生成的句子嵌入能够直接通过余弦相似度计算其相似程度

实验的结构和目标函数:

分类目标函数Classification Objective Function
将三个句子向量uv及其差值|u-v|进行连接操作后与经过训练确定的权重矩阵w_t∈R^{3n×k}进行计算。
计算得到o = softmax(w_t(u,v,|u-v|))
其中n分别表示每个句子向量的维度大小,而k则代表标签类别总数。
结构示意图如图1所示:

在这里插入图片描述
  • 回归目标函数Regression Objective Function:

通过余弦相似度公式计算两个句子embedding之间的相似程度,并用均方误差作为损失函数。 结构如图2所示:

在这里插入图片描述
  • 三元组目标函数Triplet Objective Function:
    给定三个文本片段a、其正样本片段p和负样本片段n。通过微调网络实现的目标是使ap的欧氏距离小于an的距离。具体而言,在此过程中,目标片段a的嵌入s_a应尽可能靠近其正样本嵌入s_p的同时远离其负样本嵌入s_n
    损失函数定义如下:

\text{triplet\_loss} = \max(||s_a - s_p|| - ||s_a - s_n|| + \epsilon, 0)

其中参数\epsilon的作用是确保正样本片段p的嵌入与目标片段a之间的距离至少超过负样本片段n与目标片段a之间距离的\epsilon值。
在实验设置中,默认采用欧氏距离度量,并设定超参数\epsilon=1

Training Details

使用SNLIMulti-Genre NLI数据集训练SBERT。

训练参数设置:

  • Batch size is configured as 16
    • Adam optimizer’s learning rate is set to 2 \times 10^{-5}
    • Learning rate warm-up phase is applied with a linear schedule, covering the initial 10% of training dataset.
    • Average pooling strategy is adopted for aggregating feature maps.

Evaluation - Semantic Textual Similarity

在一些文本语义相似度任务(STS)评估SBERT表现。

采用余弦相似度计算两个句子嵌入向量之间的相似性程度;同时尝试了曼哈顿距离和欧氏距离;实验结果表明两者的效果基本一致。

Unsupervised STS

涉及的数据集包括:STS tasks 2012 - 2016STS benchmark以及SICK-Relatedness等。
这些训练集均标注了从0到5的标签值:其中数值为零表示两个句子完全无关;数值达到五则表明两个句子高度相似甚至完全相同。
通过实证分析发现,在评估STS任务时,皮尔逊相关系数表现不够理想。
鉴于此原因,在进行评估时更适合采用斯皮尔曼相关系数作为评价指标。
实验结果如表1所示:

在这里插入图片描述

实验分析:

  • 实验结果显示,在该类任务中BERT模型的效果显著不如GloVe,并且这一结果也验证了前面提到的观点即BERT模型不适配应用于该类任务。
  • SBERT带来了明显的提升效果但在SICK-R数据集上的表现却不及Universal Sentence Encoder这一模型这不得不自圆其说。
  • 尽管RoBERTa相较于BERT在多个任务领域展现了更好的性能但在本研究的具体实验中这两个模型的表现差距并不显著。

Supervised STS

使用的数据集:STS benchmark (STSb)
实验结果如表2所示:

在这里插入图片描述

实验采用了两种不同的预训练策略以对比性能表现:

  1. 仅基于STSb数据集进行模型参数优化;
  2. 首先在NLI数据集上进行模型预训练后,在STSb数据集上进一步优化模型参数。

实验分析:

  • 实验结果显示,在SBERT模型中,第二种训练策略表现稍优于其他方法,并将性能提升至1至2个百分点。
  • 在BERT模型上,两种策略均表现出显著效果,并且第二种策略将性能提升到3至4个百分点。
  • BERT与RoBERTa之间的性能差距较小。

Argument Facet Similarity

使用的主要数据源:Argument Facet Similarity (AFS)
与STS标准数据集相比存在显著差异性特征, AFS基准通常基于对话中截取的关键论据构建, 而STS基准则多依赖于描述性语料.
考虑到Argument数据分析的独特性, 在这一特定的数据集合中许多传统方法表现欠佳.

实验结果如表3所示:

在这里插入图片描述

实验分析:

  • 基于tf-idf、GloVe以及InferSent等方法在该数据集上的测试结果表明,在10折交叉验证中其表现均显著低于预期水平。
  • 从跨主题评估的角度来看,在这种场景下Spearman相关性评分差距达到了7分之多。
  • 其具体原因在于:需预先将未曾接触过的具有相似论点及理由的主题映射至向量空间中的同一区域区域;相比之下,
    BERT则只需逐词比较两个句子之间的差异即可完成任务。

Wikipedia Sections Distinction

使用训练集:Wikipedia

基于经验观察到,在同章节或同段落内的句子之间的相似程度相较于来自不同段落的句子而言更为显著。因此,Wikipedia训练集将来自同一个段落的句子归类为正面样本,并将其归类为负面样本的是来自于不同段落的句子。

实验结果如表4所示:

在这里插入图片描述

Evaluation - SentEval

该研究采用了 SentEval 数据集作为基础框架,并基于此构建了一个新的评价指标体系

在这里插入图片描述

实验结果如表5所示:

在这里插入图片描述

实验分析:

  • 由实验结果显示,在虽然SBERT的主要目标并非迁移学习的情况下,
  • SBERT在情感分析等多方面任务中均展现出显著优势。
  • 在TREC数据集上的性能略逊于Universal Sentence模型,
  • 这主要是由于该模型通过广泛覆盖的问题类型进行预训练的缘故,
  • 因此,在问题类型分类任务中,
  • Universal Sentence模型更为合适。
  • 基于余弦相似度、曼哈顿距离及欧式距离等指标,
  • average/cls BERT嵌入方式不适于应用于这些评估标准。

Ablation Study

消融实验是一种常用的技术手段其核心思想类似于控制变量法旨在探究模型各参数设置之间的相对重要性

研究人员对两个关键实验展开了系统性研究。第一个实验旨在评估不同池化策略对模型性能的影响;第二个实验则比较了将不同句子向量拼接方式应用于各类别分类任务的效果。通过多组随机种子进行多次独立实验,并计算其平均表现以获得更为可靠的评估。

分类目标函数基于SNLI数据集进行训练,回归目标函数基于STS数据集进行训练,并采用STS数据集作为验证测试。所有消融实验均应用了Mean pooling策略。

实验结果如表6所示:

在这里插入图片描述

实验分析:

  • 在分类任务中进行目标函数训练时发现,在池化操作带来的性能变化方面差别并不大(差异不大),而连接操作的影响则非常显著(非常大)。
    • 当引入u \cdot v时反而会导致性能下降(降低),而最重要的特征体现在|u - v|这一指标上。
    • 在回归任务中进行目标函数训练时发现,在池化操作带来的性能变化方面差别并不大(差异不大),而MAX pooling表现最为糟糕(最差)。

Computational Efficiency

在该段落中,作者评估了SBERT的计算效率,并对其他模型进行了比较;所有模型均采用了STS数据集作为测试基准。

作者采用了降低padding tokens计算成本的方法:将相似长度的句子放入同一个minibatch中,并根据该minibatch中的最长序列进行填充操作;这样一来便能降低总的填充token数量及操作次数。

实验结果如表7所示:

在这里插入图片描述

实验分析:

  • 在CPU上运行时,在SBERT的表现较弱于InferSent的原因在于其采用了结构简单且仅依赖一个Bi-LSTM的设计;相比之下BERT则采用了更为复杂的12层Transformer架构。
    • 不论是基于Transformer架构还是其他技术路径的选择,在实际应用中我们发现,在GPU环境下通过批处理优化后的SBERT运行效率超越了基于单层Transformer架构的InferSent模型。

Conclusion

全部评论 (0)

还没有任何评论哟~