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

  • 《Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks》 用于快速搭建NLP任务的demo的开源项目sbert的原始论文,star数很多,EMNLP 2019(CCF-B)。
  • 资源: 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| 连接起来,并与可训练的权重 W t ∈ R 3 n ∗ k W_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 之间的距离小。

  • s x s_x sx: sententce embedding for a/n/p;Margin ϵ \epsilon ϵ 确保 s p s_p sp s a s_a sa 的距离至少比 s n s_n sn ϵ \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 不能解决的一些任务,且计算效率有极大提升。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真·skysys

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值