三十一、USE[2018]

  1. 对于许多 NLP 任务来说,可用的训练数据数量有限。这给 data hungry 的深度学习方法带来了挑战。鉴于标注监督训练数据的成本很高,对于大多数 NLP 任务来说,通常无法获得非常大的训练集。许多模型通过使用预训练的 word embedding (如 word2vecGloVe 产生的 word embedding),隐式地进行有限的迁移学习来解决这个问题。然而,最近的工作表明,使用 pre-trained sentence level embedding 在下游任务有很强的表现。

    在论文 《Universal Sentence Encoder》 中,作者提出了两个用于产生 sentence embedding 的模型,这些模型显示了对其他一些 NLP 任务的良好迁移。作者在下游任务上包含不同数量的训练数据进行实验,作者发现,所提出的 sentence embedding 可以用非常少的 task specific 训练数据来获得令人惊讶的良好任务表现。

    此外,作者还讨论了关于内存需求、以及 CPU/GPU 上的计算时间的 trade-off 。作者还对不同长度的句子进行了资源消耗比较。

31.1 模型

  1. 我们提供了两个新的模型来将句子编码为 embedding 向量。一个利用了 Transformer 架构,另一个为深度平均网络 deep averaging network: DAN 。这两个模型都是在 TensorFlow 中实现的,并可从 TF Hub 下载。这两个模型将英语字符串作为输入,并产生固定维度的 embedding representation 作为输出。

    这里提供了一个最小的 code snippet ,将一个句子转换成一个 sentence embedding

    所得到的 embedding tensor 可以直接使用,也可以纳入更大的 model graph 中从而用于特定的任务。如下图所示, sentence embedding 可以很简单地用于计算 sentence level 的语义相似性分数,在semantic textual similarity: STS 基准上取得优异的表现。当被包含在更大的模型中时, sentence encoding model 可以为特定任务进行微调。

  2. 这里介绍了我们两个编码模型的模型结构。这两个编码器有不同的设计目标:基于 Transformer 架构的编码器以高准确性为目标,代价是更大的模型复杂性和资源消耗;基于 DAN 架构的编码器以高效推理为目标,代价是略低的准确性。

    • Transformer:在Transformer 中,我们通过对句子中每个 word representation 进行相加,从而得到 sentence representation 。具体而言,编码器将小写的 PTB tokenized string 作为输入,并输出一个 512 维的向量来作为 sentence embedding

      编码器模型被设计为尽可能的通用,这是通过使用多任务学习来实现的:单个编码器模型被用来支持多个下游的任务。支持的任务包括:

      • 类似 Skip-Thought 的任务,用于从任意的文本中进行无监督学习。Skip-Thought 任务用一个基于 Transformer 架构的模型取代了原始论文中使用的 LSTM

      • 对话式的 input-response 任务,用于包含对话数据。

      • 分类任务,用于监督数据的训练。

      正如实验部分所示,基于 Transformer 的编码器实现了最佳的整体迁移性能。然而,这是以计算时间和内存用量随句子长度急剧增加为代价的。

    • Deep Averaging Network: DAN:针对 wordbi-graminput embedding 首先进行平均,然后馈入一个深度前馈神经网络来产生 sentence embedding 。同样地,DAN encoder 将小写的 PTB tokenized string 作为输入,并输出一个 512 维的向量来作为 sentence embeddingDAN encoder 的训练方式与 Transformer-based encoder 类似。我们利用多任务学习,即用一个 DAN encoder 来为多个下游任务提供 sentence embedding

      DAN encoder 的主要优点是计算时间与输入序列的长度成线性关系。与 《Deep unordered composition rivals syntactic methods for text classification》 类似,我们的结果表明,DAN 在文本分类任务上取得了强大的 baseline 性能。

    Transformer-based encoder 是在最后融合多个 wordrepresentation,然后融合结果直接输出;DAN encoder 是首先融合多个 wordrepresentation,融合结果通过深度前馈神经网络进行非线性变换并最后输出。

    这两个模型都需要从头开始训练,而没有使用 pre-trained model 来初始化。

31.2 实验

  1. 训练 Encoder 的训练数据:

    • sentence encoding model 的无监督训练数据来自各种网络资源,包括维基百科、网络新闻、网络问答网页和讨论区。

    • 我们通过对 Stanford Natural Language Inference: SNLI 语料库中的监督数据进行训练来增强无监督学习。与InferSent的发现类似,我们观察到对 SNLI 的训练提高了迁移性能。

  2. Transfer Task (即,下游任务):这里介绍了用于迁移学习实验的数据,还介绍了描述 model biasWord Embedding Association Test: WEAT 数据。下表总结了每个数据集的测试集大小,还总结了验证集大小和训练集大小(如果有的话)。

    • Movie Review: MR:电影评论片段的情绪,以五星评级为标准。

    • Customer Review: CR:从客户评论中挖掘出来的句子的情感。

    • SUBJ:从电影评论和剧情摘要中挖掘的句子的主观感受 subjectivity

    • MPQA:来自新闻数据的短语级别的意见的极性 polarity

    • TREC:来自 TREC 的细粒度的 question classification

    • SST:二元短语级别的情感分类 sentiment classification

    • STS Benchmark:句子对之间的 semantic textual similarity: STS ,通过与人类判定的皮尔逊相关性进行评分。

    • WEAT:来自心理学文献的隐性关联测试(implicit association test: IAT )的 word pair ,用于描述模型的 bias

  3. 迁移学习方法:

    • 对于 sentence classification 迁移任务,Transformer sentence encoderDAN sentence encoder 的输出被馈入一个 task specific DNN

    • 对于 pairwise semantic similarity 迁移任务,我们通过以下公式直接评估由Transformer sentence encoderDAN sentence encoder 产生的 sentence embedding 的相似性:

      (1)sim(u,v)=(1arccos(uvu×v)/π)

      我们首先计算两个 sentence embedding 的余弦相似度,然后使用 arccos 将余弦相似度转换成角度距离。

      为什么不能直接使用余弦相似度,反而转换成角度?作者并未解释原因。实际上,余弦相似度更为常见。

  4. baseline:对于每个下游任务,我们包括只利用 word level transferbaseline,以及完全不利用迁移学习的 baseline

    • word level transfer:我们使用在新闻数据语料库上训练的 word2vec skip-gram 模型的 word embeddingpretrained word embedding 被作为两种模型的输入:convolutional neural network: CNN 模型、DAN 模型。

    • 完全不利用迁移学习:直接用 CNNDAN 在不使用任何 pretrained word embeddingpretrained sentence embedding 的情况下训练。

  5. 结合 sentence level 迁移和 word level 迁移(Combined Transfer):我们将这两种方法结合起来,将 combined representation 馈入下游任务的分类层。

    此外,我们我们还探讨了将 sentence level 的迁移学习的 representation 、以及不使用 word level 的迁移学习的 baselinerepresentation 拼接起来。

  6. 下游任务的超参数用 Vizier 和轻度的人工调优相结合的方式来调优。模型超参数在任务的验证集(如果有的话)上调优,否则在训练集(如果有的话)上交叉验证来调优。如果既没有训练集也没有验证集,那么通过测试集来调优。每个下游任务的模型用不同的随机初始化权重重复训练 10 次,我们报告平均结果。

    当下游任务的训练数据有限时,迁移学习是至关重要的。我们探讨了在使用和不使用迁移学习的情况下,改变下游任务可用的训练数据量对该任务性能的影响。对比 Transformer-based encoderDAN-based encoder ,我们展示了模型的复杂度、以及所需的数据量之间的 tradeoff 从而达到任务的目标准确性。

    为了评估我们的 encoder模型的 bias ,我们评估了我们的模型在 WEAT 单词列表上学到的各种关联的强度。我们将我们的结果与《Semantics derived automatically from language corpora contain human-like biases》的结果进行了比较,他们发现 word embedding 可以用来重现人类在隐式关联任务上的表现,包括良性的关联和潜在的不良关联。

  7. 下表给出了下游任务的表现。可以看到:

    • Transformer-based encoder 的迁移学习通常表现得和 DAN-based encoder 的迁移学习一样好或更好。

    • 对于某些任务来说,使用更简单、更快的 DAN encoder 的迁移学习,可以和更复杂的 Transformer encoder 的表现一样好甚至更好。

    • 利用 sentence level 的迁移学习的模型,往往比只使用 word level 的迁移学习的模型表现更好。

    • 大多数任务的最佳表现是由同时使用 sentence levelword level 迁移学习的模型获得的。

  8. 下表说明了不同数量的训练数据的下游任务性能。可以看到:

    • 对于较少的数据量,sentence level 的迁移学习可以获得令人惊讶的任务表现。

    • 随着训练集规模的增加,不使用迁移学习的模型接近于使用迁移学习的模型的性能。

  9. 下表对比了 GloVe embeddingbiasDAN embeddingbias

    • GloVe 类似,我们的模型再现了在 flowers vs. insectspleasantness vs. unpleasantness 之间的 human association

    • 然而,我们的模型在针对揭示年龄歧视、种族主义、以及性别歧视的 probe 方面显示出比 GloVe 更弱的关联。

    word association pattern 的差异可归因于训练数据构成的差异、以及 task mixture (这些任务用于训练 sentence embedding)。

  10. 资源使用:这里给出了在不同的句子长度下,Transformer encoderDAN encoder 的内存用量和计算资源,如下图所示。

    • 计算资源:Transformer encoder 的时间复杂度是句子长度的 O(n2) ,而 DAN encoderO(n)

      • 对于短句子,Transformer encoder 只比简单得多的 DAN encoder 慢一些。然而,随着句子长度的增加,Transformer encoder 的计算时间明显增加。

      • 相反,DAN encoder 的计算时间随着句子长度的增加几乎保持不变。由于 DAN encoder 的计算效率非常高,对于 Transformer encoder来说,使用 GPU 而不是 CPU 往往会有更大的实际影响。

    • 内存用量:与计算资源类似,Transformer encoder 的内存用量随着句子长度的增加而迅速增加,而 DAN encoder 的内存用量保持不变。

      我们注意到,对于 DAN encoder 来说,内存的使用主要是由用于存储模型的 unigram embeddingbigram embedding 的参数所支配。由于 Transformer encoder 只需要存储 unigram embedding ,因此对于短句来说,Transformer encoder 需要的内存几乎是 DAN encoder 的一半。

三十二、Sentence-BERT[2019]

  1. 在论文 《Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks》 中,作者提出了 Sentence-BERT: SBERT ,这是一种使用 siamese networktriplet network 来针对 BERT 网络的修改,能够得出有语义的 sentence embedding 。这使得 BERT 能够用于某些新的任务,而这些任务到现在为止还不适用于 BERT 。这些任务包括大规模的语义相似性比较、聚类、以及通过语义搜索 semantic search 进行信息检索 information retrieval

    BERT 在各种句子分类、以及 sentence-pair regression 任务上创造了新的 SOTA 性能。BERT 使用一个 cross-encoder :两个句子被馈入 transformer 网络,然后 transformer 网络预测出 target value 。然而,由于可能的组合太多,这种 setup 不适合于各种 pair regression 任务。例如,在 n=10000 个句子的集合中,找到相似度最高的一对句子,需要用 BERT 执行 n(n1)/2=49995000 次推理计算。 在一个现代的 V100 GPU 上,这需要大约 65 个小时。类似地,在 Quora 的超过 40M 个现有问题中,找到与一个新问题最相似的问题,可以用 BERT 建模为 pair-wise comparison ,然而,对每个新问题需要 50 多个小时才能找到最相似的问题(在已有的所有问题中)。

    解决聚类和语义搜索的一个常见方法是,将每个句子映射到一个向量空间,使得在这个向量空间中,语义相似的句子就会很接近。研究人员已经开始将单个句子输入 BERT ,并得出固定尺寸的 sentence embedding 。最常用的方法是对 BERT 输出层(即,BERT embedding )进行均值池化、或者使用第一个 token(即,[CLS] token)的输出。正如论文将展示的,这种常见的做法产生了相当糟糕的 sentence embedding ,往往比 GloVe embedding 的均值池化更糟糕。

    为了缓解这个问题,论文 《Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks》 开发了 SBERTsiamese network 使得可以导出针对输入句子的固定尺寸的 representation 向量。然后使用像余弦相似性、或曼哈顿/欧几里得距离这样的相似性度量,可以找到语义上相似的句子。这些相似度度量可以在现代硬件上极其有效地进行,使 SBERT 可以用于语义相似度搜索、以及聚类。在 10000 个句子的集合中寻找最相似的 sentence pair 的复杂性,从使用 BERT65 小时减少到使用 SBERT 的几秒钟(计算 10000sentence embedding 耗费 SBERT5 秒,计算余弦相似度约 0.01 秒)。通过使用优化的 index 结构,寻找最相似的 Quora 问题可以从 50 小时减少到几毫秒。

    论文在 NLI 数据上对 SBERT 进行了微调,它所创建的 sentence embedding 明显优于其他 SOTAsentence embedding 方法,如 InferSentUniversal Sentence Encoder

    • 在七个 Semantic Textual Similarity: STS 任务上,SBERT 相对 InferSentUniversal Sentence Encoder 分别实现了 11.7 分和 5.5 分的改进。

    • sentence embedding 的评估工具包 SentEval 上,SBERT 相对 InferSentUniversal Sentence Encoder 分别实现了2.1 分和 2.6 分的改进。

    SBERT 可以适配特定的任务。它在一个具有挑战性的 argument similarity 数据集、以及一个区分维基百科文章不同部分的句子的 triplet dataset 上创造了新的 SOTA 性能。

  2. 相关工作:

    • BERTBERT 是一个预训练的 transformer 网络,它为各种 NLP 任务提供了新的 SOTA 的结果,包括问答、句子分类、sentence-pair regression 。用于sentence-pair regressionBERT 的输入由两个句子组成,由一个特殊的 [SEP] token 分开。BERTSemantic Textual Semilarity: STS benchmark 上创造了新的 SOTA 性能。RoBERTa 表明,BERT 的性能可以通过对预训练过程的小的调整来进一步提高。我们还测试了 XLNet ,但它导致的结果总体上比 BERT 更差。

      BERT 网络结构的一个很大的缺点是没有计算独立的 sentence embedding ,这使得很难从 BERT 中得出 sentence embedding 。为了绕过这一限制,研究人员将单个句子馈入 BERT ,然后通过将所有输出取平均(类似于对句子中所有单词的 word embedding 取平均)、或使用特殊的 [CLS] token 的输出,从而得出一个固定尺寸的向量。这两个方法也由流行的 bert-as-a-service-repository 所提供。据我们所知,到目前为止,还没有评估这些方法是否会导致有用的 sentence embedding

    • sentence embeddingsentence embedding是一个被充分研究的领域,人们已经提出了数十种方法。

      • Skip-Thought 训练了一个 encoder-decoder 架构来预测 surrounding sentences

      • InferSent 使用 Stanford Natural Language Inference: SNLI 数据集、和 Multi-Genre NLI 数据集的标记数据来训练一个 siamese BiLSTM network ,并对输出进行最大池化。 实验结果表明,InferSent 一直优于 SkipThought 等无监督的方法。

      • Universal Sentence Encoder 训练了一个 transformer 网络(使用类似于 Skip-Thought 的无监督学习),并通过对 SNLI 的训练增强了无监督学习。

      • FastSent 表明,训练 sentence embedding 的任务对其质量有很大影响。

      • 之前的工作(InferSent《Universal Sentence Encoder》)发现:SNLI 数据集适合训练 sentence embedding

      • 《Learning Semantic Textual Similarity from Conversations》提出了一种使用 siamese DAN 网络和 siamese transformer 网络对 Reddit 的对话进行训练的方法,在 STS benchmark 数据集上取得了良好的效果。

      • 《Real-time Inference in Multi-sentence Tasks with Deep Pretrained Transformers》 解决了来自 BERTcross-encoder 的运行时间开销,并提出了一种方法( poly-encoders )通过 attention 来计算 m 个上下文向量和 precomputed 的候选 embedding 之间的分数。这个想法对于在更大的集合中寻找最高得分的句子是有效的。然而, poly-encoders 有一个缺点,即 score function 不是对称的,而且计算开销对于像聚类这样的 case 来说太大(O(n2)score computation )。

      以前的 neural sentence embedding 方法是从随机初始化开始训练的。这里我们使用预训练好的 BERT 网络和 RoBERTa 网络,只对其进行微调以产生有用的 sentence embedding 。这大大减少了所需的训练时间。SBERT 可以在不到 20 分钟内完成微调,同时产生比其它 sentence embedding 方法更好的结果。

32.1 模型

  1. SBERTBERT/RoBERTa 的输出上增加了一个池化操作,从而获得一个固定尺寸的 sentence embedding 。我们试验了三种池化策略:使用 CLS-token 的输出、均值池化策略MEAN-strategy (计算所有输出向量的平均值)、最大池化策略MAX-strategy (沿着position 维度计算输出向量的最大值)。默认配置是均值池化策略。

  2. 为了微调 BERT/RoBERTa ,我们创建了 siamese networktriplet network 来更新权重,使得产生的 sentence embedding 具有语义,并可以用余弦相似度进行比较。网络结构取决于可用的训练数据。我们试验了以下网络结构和目标函数:

    • Classification Objective Function:我们将 sentence embedding uv、以及它们之间的逐元素差进行拼接,然后乘以权重矩阵 WtRK×(3d)

      (2)o=softmax(Wt[u,v,|uv|])

      其中:dsentence embedding 维度,Klabel 的数量,[] 为向量拼接。

      我们优化交叉熵损失。整体结构如下图所示。

    • Regression Objective Function:我们计算 sentence embedding uv 之间的余弦相似度,如下图所示。我们使用mean-squared-error:MSE loss 作为目标函数。

    • Triplet Objective Function:给定一个锚点句子anchor sentence a ,一个 positive sentence p 和一个 negative sentence ntriplet loss 使得 ap 之间的距离小于 an 之间的距离。在数学上讲,我们最小化以下损失函数:

      (3)max(saspsasn+ϵ,0)

      其中:ssentence embedding 为距离函数,ϵmargin (使得 spsn 更接近 sa 至少 ϵ 的距离)。

      在我们的实验中,我们使用欧氏距离并设置 ϵ=1

  3. 训练细节:我们在 SNLIMulti-Genre NLI 数据集的组合上训练 SBERT

    • SNLI 包含 570ksentence pair ,并被标注了矛盾 contradiction 、蕴含 eintailment 、以及中性 neutral 等三种标签。

    • MultiNLI 包含了 430ksentence pair ,涵盖了一系列的口语的和书面语的体裁。

    我们用 3-way softmax classifier objective functionSBERT 进行了微调,微调一个 epoch 。我们使用 batch size = 16Adam 优化器(学习率为 2e-5 ),并使用线性学习率调度,其中在 10% 的训练数据上进行学习率预热。我们默认的池化策略是均值池化。

    注意:根据论文在相关工作中的介绍,论文使用 pretrained BERT/RoBERTa 来初始化模型。因此这里的微调更像是“预微调”,即预训练和微调中间的步骤。

32.2 实验

32.2.1 Semantic Textual Similarity

  1. 我们评估了 SBERT在常见的语义文本相似性 Semantic Textual Similarity: STS 任务中的表现。SOTA 的方法通常学习一个(复杂的)回归函数,将 pair-wise sentence embedding 映射到相似性分数。然而,这些回归函数是 pair-wise 工作的,可扩展性很差。相反,我们总是使用余弦相似度来比较两个 sentence embedding 之间的相似度。

    我们还用负曼哈顿距离、以及负欧氏距离作为相似度指标来进行实验,但所有方法的结果都大致相同。

  2. 无监督 STS:我们在不使用任何 STS-specific 训练数据的情况下评估了 SBERTSTS 中的表现。我们使用 2012-2016 年的 STS 任务、STS benchmarkSICK-Relatedness 数据集。这些数据集对 sentence pair 的语义相关度提供了 0 ~ 5 的标签。我们使用sentence embedding 余弦相似度和 ground-truth 之间的 Spearman’s rank correlation (而不是 Pearson correlation)。

    Spearman’s rank correlation:首先将原始数据排序,然后为每个数据赋予一个 rank 。对于两组数据,分别计算它们各自 rank 序列的皮尔逊相关系数:

    (4)ρ=i(xix¯)(yiy¯)i(xix¯)2(yiy¯)2

    Pearson correlation 就是对原始数据直接计算相关系数。

    实验结果如下表所示。可以看到:

    • 直接使用 BERT 的输出会导致相当差的性能。对 BERT embedding 的均值池化只达到了 54.81 的平均相关度,而使用 CLS-token 输出只达到了 29.19 的平均相关度。两者都比计算 GloVe embedding 的均值要更差。

    • 使用所描述的 siamese network 结构和微调机制大大改善了相关性,大大超过了 InferSentUniversal Sentence Encoder 的表现。

      SBERT 表现比 Universal Sentence Encoder 差的唯一数据集是 SICK-RUniversal Sentence Encoder 是在各种数据集上训练的,包括新闻、问答网页和讨论区,这似乎更适合 SICK-R 的数据。相比之下,SBERT 只在维基百科(通过 BERT )和 NLI 数据上进行了预训练。

    • 虽然 RoBERTa 能够提高几个监督任务的性能,但我们只观察到 SBERTSRoBERTa 在生成 sentence embedding 方面的微小差异。

  3. 监督 STSSTS benchmark: STSb 是一个流行的数据集,用于评估有监督的 STS系统。数据集包括来自 caption 、新闻、以及论坛三个 category8628sentence pair 。它被分为训练集(5749 个样本 )、验证集(1500 个样本)、测试集(1379 个样本)。BERT 在这个数据集上创造了新的 SOTA 的性能,它将两个句子都传给了网络,并使用简单的回归方法进行输出。

    我们使用训练集,利用 regression objective functionSBERT 进行微调。在预测时,我们计算 sentence embedding 之间的余弦相似度。所有系统都是用 10 个随机种子进行训练从而考虑方差。

    读者猜测:回归目标是在余弦相似度之上进行的,因此两个 sentence embedding 越相似则 output 越大。

    实验结果如下表所示。我们用两种设置进行了实验:只在 STSb 上训练、先在NLI 上训练然后在 STSb 上训练(即,利用 NLI 数据进行预微调)。我们观察到:

    • SBERT 上,第二种策略导致了 1-2 分的轻微改善。

    • BERT 上,第二种策略导致了 3-4 分的轻微改善。

    • 我们没有观察到 BERTRoBERTa 之间的显著差异。

    注意:这里的 BERT-NIL-STSb-base 用的是 pair-wiseBERT,而不是 Avg. BERT embeddings

  4. Argument Facet Similarity: AFS:我们在 AFS 语料库上评估 SBERTAFS 语料库标注了来自社交媒体对话的 6ksentential argument pair ,涉及三个有争议的话题:枪支管制、同性恋婚姻、死刑。这些数据被标注为从0 ("不同的话题")到5 ("完全等同")的等级。

    AFS 语料库中的相似性概念与 STS 数据集中的相似性概念相当不同。STS 数据通常是描述性的,而 AFS 数据是对话中的争论性摘录 argumentative excerpt 。要被认为是相似的,论点 argument 不仅要提出相似的主张,而且要提供相似的推理 reasoning 。 此外,AFS 中的句子之间的词汇差距 lexical gap 要大得多。因此,简单的无监督方法以及 SOTASTS 系统在这个数据集上表现很差。

    我们在两种场景中在这个数据集上评估 SBERT

    • 我们使用 10-fold cross-validation 来评估 SBERT 。这种评估设置的一个缺点是,不清楚方法对不同主题的泛化性如何。

    • 我们在 cross-topic setup 上评估 SBERT 。我们在两个主题上训练,在剩余的主题上评估。我们对所有三个主题重复这一过程,并对结果进行平均。

      第二种方法可以评估在 unseen 主题上的表现。

    SBERT 使用 Regression Objective Function 进行微调。相似性得分是使用基于 sentence embedding 的余弦相似性来计算的。我们还提供了皮尔逊相关系数 r ,然而我们表明皮尔逊相关系数有一些严重的缺点,应该避免用于比较 STS 系统。

    实验结果如下表所示,可以看到:

    • tf-idfaverage GloVe embedding 、或 InferSent 这样的无监督方法在这个数据集上表现得相当糟糕,得分很低。

    • 10-fold cross-validation setup 中训练 SBERT ,其性能几乎与 BERT 相当。

    • 然而,在跨主题评估中,我们观察到 SBERT 的性能在 Spearman correlation 指标下降了约 7 个点。

      为了被认为是相似的,论点应该涉及相同的主张并提供相同的推理。BERT 能够使用注意力机制来直接比较两个句子(例如 word-by-word 的比较),而 SBERT 必须把来自 unseen 的主题的单个句子映射到一个向量空间,从而使具有类似主张 claim 和理由 reason 的论点接近。这是一个更具挑战性的任务,这似乎需要超过两个主题的训练,才能与 BERT 相媲美。

  5. Wikipedia Sections Distinction《Learning Thematic Similarity Metric from Article Sections Using Triplet Networks》 使用维基百科为 sentence embedding 方法创建了一个主题细化的训练集、验证集、以及测试集。Wikipedia 的文章被分成不同的章节,每个章节聚焦于某些方面。该论文假设:同一章节的句子比不同章节的句子在主题上更接近。他们利用这一点创建了一个大型的弱标记的 sentence triplet 数据集:anchor 样本和正样本来自同一章节,而负样本来自同一文章的不同章节。

    我们使用该数据集。我们使用 Triplet Objective,在大约 1.8Mtraining triplet 上训练 SBERT 一个 epoch,然后在 222,957test triplet 上评估。我们使用准确率作为评估指标:正样本是否比负样本更接近 anchor

    结果如下表所示。 《Learning Thematic Similarity Metric from Article Sections Using Triplet Networks》 提出的 Bi-LSTM 方法微调了具有 triplet lossBi-LSTM 架构,从而得到 sentence embedding (下表中 Dor et al. 这一行的结果)。可以看到:SBERT 显著优于 Bi-LSTM 方法。

32.2.2 SentEval

  1. SentEval 是一个流行的工具包,用于评估 sentence embedding 的质量。sentence embedding 被用作逻辑回归分类器的特征。逻辑回归分类器在 10-fold cross-validation setup 中对各种任务进行训练,并计算 test-fold 的预测准确率。

    SBERT sentence embedding 的目的不是为了用于其他任务的迁移学习。我们认为针对新任务微调 BERT 是更合适的迁移学习方法,因为它更新了 BERT 网络的所有层。然而,SentEval 仍然可以对我们的sentence embedding 在各种任务中的质量进行评估。我们在以下七个 SentEval 迁移任务上将 SBERT sentence embedding 与其他 sentence embedding 方法进行比较:

    • Movie Review: MR:电影评论片段的情感,以五等评分为标准。

    • Customer Review: CR:从客户评论中挖掘出来的句子的情感。

    • SUBJ:从电影评论和剧情摘要中挖掘的句子的主观感受 subjectivity

    • MPQA:来自新闻数据的短语级别的意见的极性 polarity

    • SST:二元短语级别的情感分类 sentiment classification

    • TREC:来自 TREC 的细粒度的 question classification

    • Microsoft Research Paraphrase Corpus: MRPC:来自 parallel 的新闻源的微软研究院转述语料库。

    结果如下表所示。可以看到:

    • InferSent 以及 Universal Sentence Encoder 相比,其平均性能提高了约 2 个百分点。尽管迁移学习不是 SBERT 的目的,但它在这项任务上的表现超过了其他 SOTAsentence embedding 方法。 看来,SBERTsentence embedding 很好地捕捉了情感信息:与 InferSentUniversal Sentence Encoder 相比,我们观察到 SentEval 的所有情感任务(MRCRSST )都有很大的改进。唯一一个 SBERT 明显比 Universal Sentence Encoder 差的数据集是 TREC 数据集。Universal Sentence Encoder 在问答数据上进行了预训练,这似乎对 TREC 数据集的问题类型分类任务有利。

    • average BERT embeddings、或使用 BERT CLS-token output ,在各种 STS 任务中取得了不好的结果(Table 1 ),比average GloVe embeddings 更差。然而,对于 SentEvalaverage BERT embeddings 、以及使用 BERT CLS-token output 取得了不错的结果(Table 5 ),超过了average GloVe embeddings 。造成这种情况的原因是不同的设置。

      • 对于 STS 任务,我们使用余弦相似度来估计 sentence embedding 之间的相似性。余弦相似性对所有维度都是平等的。

      • 相比之下,SentEval将逻辑回归分类器用于 sentence embedding 。这允许某些维度对分类结果有更高或更低的影响。

      我们的结论是:average BERT embeddingsBERT CLS-token output 返回的 sentence embedding 不可能用于余弦相似度或曼哈顿/欧氏距离。对于迁移学习,它们的结果比 InferSentUniversal Sentence Encoder 略差。然而,在 NLI 数据集上使用所描述的具有 siamese network 结构的微调,产生的 sentence embedding 达到了 SentEval工具包的 SOTA

32.2.3 消融研究

  1. 这里我们对 SBERT 的不同方面进行了消融研究,以便更好地了解其相对重要性。我们评估了不同的池化策略(MEAN/MAX/CLS)。对于 classification objective function ,我们评估了不同的 concatenation 方法。

    对于每个可能的配置,我们用 10 个不同的随机种子训练 SBERT ,并对其性能进行平均。objective function(分类或回归)取决于数据集:

    • 对于classification objective function ,我们在 SNLIMulti-NLI 数据集上训练 SBERT-base ,并在 NLI 数据集上进行评估。

    • 对于 regression objective function ,我们在 STS benchmark 数据集的训练集上进行训练,并在 STS benchmark 验证集上进行评估。

    结果如下表所示。可以看到:

    • classification objective function:根据 NLI 这一列,可以看到:池化策略的影响相当小,而 concatenation 模式的影响要大得多。

      对于 concatenation 模式,InferSentUniversal Sentence Encoder 都使用 [u,v,|uv|,u×v] 作为 softmax 分类器的输入,其中 [] 为向量拼接,× 为逐元素乘法。然而,在 SBERT 中,加入逐元素乘法 u×v 降低了性能。最重要的部分是逐元素的差值 |uv|

      如果使用人工特征交叉用于 softmax 的输入,那么在推断期间,就无法直接用余弦相似度,而是必须经过相同的人工特征交叉以及 softmax

    • regression objective function :根据 STSb 这一列,可以看池化策略有很大的影响:MAX 策略的表现明显比 MEANCLS-token 策略更差。这与 InferSent 相反,他们发现 InferSentBiLSTM layer 使用MAX (而不是MEAN)池化更好。

32.2.4 计算效率

  1. sentence embedding 有可能需要对数百万个句子进行计算,因此,需要有较高的计算速度。这里我们将 SBERTaverage GloVe embeddingsInferSentUniversal Sentence Encoder 进行比较。我们使用 STS benchmark 的句子来比较。

    • average GloVe embedding 是通过一个简单的 for-loop 来实现的,其中采用了 pythondictionary lookupnumpy

    • InferSent 是基于 PyTorch 的。

    • Universal Sentence Encoder 来自 TensorFlow Hub,是基于 TensorFlow 的。

    • SBERT 是基于 PyTorch 的。

    为了改进 sentence embedding 的计算,我们实施了一个 smart batching 策略:具有相似长度的句子被分在一组,并且在一个 mini-batch 中填充到最长的元素。这极大地减少了 padding tokens 的计算开销。性能是在一台配备英特尔 i7-5820K CPU @ 3.30GHzNvidia Tesla V100 GPUCUDA 9.2、以及 cuDNN 的服务器上测得的。结果如下表所示。

    • CPU 上,InferSentSBERT 快大约 65% 。这是由于网络结构简单得多。InferSent 使用单个 Bi-LSTM layer ,而 BERT 使用12 个堆叠的 transformer layer

      然而,transformer network 的一个优势是在 GPU 上的计算效率。此时,带有 smart batchingSBERTInferSent 快约 9% 、比Universal Sentence Encoder 快约 55%

    • smart batchingCPU 上实现了 89% 的提速,在 GPU 上实现了 48% 的提速。

    • average GloVe embeddings 显然在很大程度上是计算 sentence embedding 的最快方法。

    为什么 InferSentUniversal Sentence Encoder 没有用 smart batching?这是不公平的比较。Universal Sentence ENcoder 也是 transformer-based 模型,也可以采用 smart batching

三十三、SimCSE[2021]

  1. 学习通用的 sentence embedding 是自然语言处理中的一个基本问题,在文献中得到了广泛的研究。在论文 《SimCSE: Simple Contrastive Learning of Sentence Embeddings》 中,作者推进了 SOTAsentence embedding 方法,并证明了 contrastive objective 在与预训练的语言模型(如 BERTRoBERTa )相结合时可以非常有效。论文提出了 SimCSE ,一个简单的 contrastive sentence embedding framework ,它可以从未标记数据或标记数据中产生卓越的 sentence embedding

    • unsupervised SimCSE 简单地预测了 input sentence 本身,其中只有 dropout 被用作噪音(下图 (a) 所示)。换句话说,将同一个句子传递给 pre-trained encoder 两次:通过两次应用标准的 dropout ,可以得到两个不同的 embedding 作为 "positive pair" 。然后,SimCSE 把同一 mini-batch 中的其他句子作为 "negatives" ,模型在这些 negatives 之间预测出正样本。

      虽然看起来非常简单,但这种方法比预测 next sentence 、以及离散的数据增强(如单词删除、单词替换)等训练目标要好很多,甚至与之前的监督方法相匹敌。通过仔细分析,作者发现 dropout 作为 hidden representation 的最小 "data augmentation" ,而去除 dropout 则会导致 representation collapse

    • supervised SimCSE 建立在最近使用 natural language inference: NLI 数据集进行 sentence embedding 的成功基础上,并将标注的 sentence pair 纳入对比学习 contrastive learning 中(下图 (b) 所示)。与之前的工作不同的是,作者将其作为一个 3-way classification 任务(蕴含entailment 、中性neutral 、以及矛盾contradiction ),并利用 entailment pair 可以自然地作为正样本的事实。作者还发现,增加相应的 contradiction pair 作为 hard negatives ,可以进一步提高性能。与之前使用相同数据集的方法相比,这种对 NLI 数据集的简单使用实现了性能的大幅提高。作者还比较了其它的标注的 sentence-pair 数据集,发现 NLI 数据集对于学习 sentence embedding 特别有效。

    为了更好地理解 SimCSE 的强大性能,作者借用了 《Understanding contrastive representation learning through alignment and uniformity on the hypersphere》的分析工具,该工具以语义相关的 positive pairs 和整个 representation space 的均匀性uniformity 之间的 alignment 来衡量学到的 embedding 的质量。通过实验分析,作者发现无监督 SimCSE 本质上提高了均匀性,同时通过 dropout noise 避免了 degenerated alignment ,从而提高了 representation 的表达能力。同样的分析表明,NLI 训练信号可以进一步改善 positive pairs 之间的 alignment ,并产生更好的 sentence embedding 。作者还与最近发现的 pre-trained word embeddings 遭受各向异性的现象相联系,并证明(通过谱域的角度)contrastive learning objective "平坦化" 了 sentence embedding space 的奇异值分布,从而提高了 uniformity

    作者在七个标准语义文本相似性semantic textual similarity: STS 任务和七个迁移任务上对 SimCSE 进行了综合评估。在 STS 任务上,无监督SimCSE 和监督 SimCSE 使用 BERT-base 分别实现了 76.3%81.6% 的平均Spearman’s correlation ,与之前的最佳结果相比,分别有 4.2%2.2% 的提高。SimCSE 在迁移任务上也取得了有竞争力的表现。

  2. 相关工作:

    • sentence embedding 的早期工作是通过预测给定句子的周围句子 surrounding sentence 从而基于分布式假说 distributional hypothesis 之上来建立的。

      • 《Unsupervised learning of sentence embeddings using compositional n-gram features》 表明:简单地用 n-gram embedding 来增强 word2vec 的想法会得到强大的结果。

      • 最近的几个(同时进行的)方法通过对同一句子或文档的不同视图(来自数据增强、或模型的不同副本)从而引入 contrastive objective

      • 与这些工作相比,SimCSE 采用了最简单的思想,从标准的 dropout 中获取同一句子的不同输出,在 STS 任务中表现最好。

    • 与无监督的方法相比,监督的sentence embedding 具有更强的性能。

      • InferSent 提出在NLI 数据集上微调一个 Siamese 模型,并进一步扩展到其他 encoderpre-trained model

      • 此外,《ParaNMT-50M: Pushing the limits of paraphrastic sentence embeddings with millions of machine translations》证明:双语的语料和 back-translation 语料为学习语义相似性提供了有用的监督。

    • 另一个工作重点是 regularizing embedding ,以缓解 representation degeneration 问题,并在预训练的语言模型上获得显著的改进。

33.1 模型

33.1.1 Contrastive Learning 的背景

  1. 对比学习contrastive learning 的目的是通过把语义相近的邻居拉到一起、把非邻居推开,从而学习有效的 representation 。它假设一组 paired examples D={(xi,xi+)}i=1m,其中 xixi+ 在语义上相关。我们遵从 《 A simple framework for contrastive learning of visual representations》 的对比学习框架,采用具有 in-batch negativescross-entropy objective :令 hihi+ 分别表示 xixi+representation ,那么针对 (xi,xi+) 的、包含 Npairmini-batchtraining objective 为:

    (5)Li=logexp(sim(hi,hi+)/τ)j=1Nexp(sim(hi,hj+)/τ)

    其中:τ 是一个温度超参数,sim(h1,h2)=h1h2h1×h2 为余弦相似度。

    在这项工作中,我们使用预训练的语言模型(如 BERTRoBERTa )对输入句子进行编码:h=fθ(x),然后使用 contrastive learning objective 对所有参数进行微调。

  2. 正样本:对比学习的一个关键问题是如何构建 (xi,xi+) pair 。在 visual representation 中,一个有效的解决方案是将同一张图像的两个随机变换(如裁剪、翻转、变形、旋转)分别作为 xixi+ 。最近在 language representation 中也采用了类似的方法,其中采用了删除单词、打乱顺序、以及单词替换等数据增强技术。然而,由于其离散的特性,NLP 中的数据增强本身就很困难。正如我们将在后面介绍的那样,简单地在 intermediate representation 上使用标准的 dropout ,就超越了这些离散的操作。

    NLP 中,类似的 contrastive learning objective 已经在不同的背景下进行了探索。在这些情况下,(xi,xi+) 是从监督的数据集中收集的,如 question-passage pair 。由于 xixi+ 的不同性质,这些方法总是使用 dual-encoder framework ,即对 xixi+ 使用两个独立的编码器 f1f2。对于 sentence embedding《An efficient framework for learning sentence representations》 也使用了具有 dual-encoder 的对比学习,将当前句子和下一个句子构成为 (xi,xi+)

  3. alignment and uniformity:最近,《Understanding contrastive representation learning through alignment and uniformity on the hypersphere》 确定了与对比学习相关的两个关键属性(即,对齐性 alignment 和均匀性 uniformity ),并提议用它们来衡量 representation 的质量。

    • 给定一个 positive pair pposalignment 计算 paired instancesembedding 之间的期望距离(假设 representation 已经被归一化):

      (6)Lalign=E(xi,xi+)pposf(x)f(x+)2
    • 另一方面,uniformity 衡量 embedding 的均匀分布程度:

      (7)Luniform=logE(x,y) i.i.d.pdatae2f(x)f(y)2

      其中 pdata 表示数据分布。

    这两个指标与对比学习的目标很一致:正样本应该保持接近,而随机样本的 embedding 应该在超球上散开。在下面的章节中,我们还将使用这两个指标来证明我们方法的内部原理。

33.1.2 Unsupervised SimCSE

  1. 无监督 SimCSE 的想法非常简单:取句子集合 {xi}i=1m ,然后使用 xi+=xi 。该方法起作用的关键因素是:对 xixi+ 使用独立采样的 dropout mask

    Transformer 的标准训练中,在全连接层和 attention probabilities 上有 dropout mask (默认 p=0.1)。我们令 hiz=fθ(xi,z) ,其中z 是用于 dropoutrandom mask 。我们只需将相同的 input 馈入编码器两次,就可以得到两个具有不同dropout mask (即,zz)的 embedding ,然后 SimCSE 的训练目标变为:

    (8)Li=logexp(sim(hizi,hizi)/τ)j=1Nexp(sim(hizi,hjzj)/τ)

    其中:Nmini-batch 包含的样本数量。

    注意:z 只是 Transformer 中的标准 dropout mask ,我们不添加任何额外的 dropout

  2. dropout noise 作为数据增强: 我们把它看作是一种最小形式的数据增强,即,positive pair 采取完全相同的句子,它们的 embedding 只在 dropout mask 上有所不同。我们将这种方法与其他 training objectiveSTS-B 验证集上进行比较。

    下表将我们的方法与常见的数据增强技术进行了比较,如裁剪、单词删除、以及单词替换,可以看作是 h=fθ(g(x),z)g()x 上的一个(随机的)离散操作。我们注意到:即使删除一个词也会损害性能,而且没有一个离散的数据增强能超越 dropout noise

    这里的 w/o dropout 表示没有 dropout,这个时候 z=z=0 ,因此 hi=hi+ 。这时候的训练目标是:将不同的句子推开(并没有将相似的句子拉近)。

  3. 我们还将这个 self-prediction training objectivenext-sentence objective 进行比较,采取一个编码器或两个独立的编码器。如下表所示,我们发现:

    • SimCSE 的表现比 next-sentence objective 要好得多(在 STSB 上为 82.5 vs 67.4 )。

    • 使用一个编码器而不是两个编码器,最终效果有很大的差异。

  4. 为什么能成功:为了进一步了解 dropout noise 在无监督 SimCSE 中的作用,我们在下表中尝试了不同的 dropout rate ,并观察到:

    • 所有的变体都低于 Transformer 中默认的 dropout rate p=0.1 的效果。

    • 两个极端情况特别有趣,即 p=0no dropout)、fixed 0.1 (使用默认的 dropout rate p=0.1 ,但 pair 使用相同的 dropout mask)。在这两种情况下,pairresulting embedding 是完全相同的,这导致了急剧的性能下降。

      为什么 fixed 0.1 的性能下降得远远超过 no dropout ?论文并未讲原因。

    我们在训练过程中每隔 10step 获取模型的 checkpoint ,并在下图中直观地显示了对齐性 alignment 和均匀性 uniformity 指标。除了 SimCSE 之外,下图还包含一个简单的数据增强模型 "delete one word" 。我们从预训练模型作为初始化。如下图所示:

    • 随着训练的推进(从 pretrained checkpoint 开始),所有的模型都大大改善了均匀性。

      luniform 越小,则均匀性越好。

    • 然而,两个特殊变体的对齐性也急剧下降,而我们的无监督 SimCSE 保持了稳定的对齐性,这要归功于 dropout noise 的使用。

      这也证明了从 pretrained checkpoint 开始是至关重要的,因为它提供了良好的 initial alignment

      lalign 越小,则对齐性越好。

    • 最后,"delete one word" 提高了对齐性,但在均匀性指标上取得的收益较小,最终表现不如无监督 SimCSE

33.1.3 Supervised SimCSE

  1. 我们已经证明,添加 dropout noise 能够使 positive pair (xi,xi+)ppos 保持良好的对齐。这里我们研究是否可以利用监督数据集来提供更好的训练信号,从而提高 alignment 。已有工作证明(InferSentSBERT),通过预测两个句子之间的关系是蕴含entailment 、中性neutral、还是矛盾contradiction ,监督的自然语言推理natural language inference: NLI 数据集对于学习 sentence embedding 是有效的。在我们的对比学习框架中,我们直接从监督的数据集中提取 (xi,xi+) pair ,并使用它们来优化 Li

  2. 标记数据的选择:我们首先探索哪些监督数据集特别适合构建 positive pair (xi,xi+) 。我们用一些有 sentence-pair 样本的数据集进行实验,包括:

    • QQPQuora question pairs

    • Flickr30k :每张图片都有 5 个人类写的 captions ,我们认为同一图片的任何两个 captions 都是 positive pair

    • ParaNMT :一个大规模的 back-translation paraphrase 数据集。

    • NLISNLIMNLI 数据集。

    我们用不同的数据集训练对比学习模型(即,Li ),并在下表中比较结果。为了公平比较,我们也使用相同数量的 training pairs 进行了实验(sample 这一列)。整个数据集的实验结果参考 full 这一列。可以看到:在所有的选项中,使用来自 NLISNLI+MNLI )数据集的 entailment pair 的表现最好。

    我们认为这是合理的,因为 NLI 数据集包括高质量的、来自人类标注的 pairs。另外,人类标注员要根据premises 手动写出 hypotheses ,而且两个句子的 lexical overlap 往往较低。例如,我们发现(SNLI + MNLI )中的 entailment pairlexical overlap (两个 bags of words 之间 F1 来衡量)为 39% ,而 QQPParaNMT 数据集的 lexical overlap60%55%

  3. Contradiction 作为 hard negatives:最后,我们进一步利用 NLI 数据集的优势,将其 contradiction pairs 作为 hard negatives 。在 NLI 数据集中,给定一个premise ,标注员需要手动写出一个绝对真实的句子(entailment ),一个可能是真实的句子(neutral ),以及一个绝对错误的句子(contradiction )。因此,对于每个 premise 和它的 entailment hypothesis ,都有一个伴随的 contradiction hypothesis (见Figure 1 的例子)。

    正式地,我们将 (xi,xi+) 扩展为 (xi,xi+,xi),其中 xipremise,xi+xientailment hypothesiscontradiction hypothesis。然后,训练目标 Li 被定义为(Nmini-batch 的大小):

    (9)Li=logexp(sim(hi,hi+)/τ)j=1N[exp(sim(hi,hj+)/τ)+exp(sim(hi,hj)/τ)]

    Table 4 (上表)所示,添加 hard negatives 可以进一步提高性能( 84.9 -> 86.2 ),这就是我们的 final supervised SimCSE

    我们还试图加入 ANLI 数据集、或将其与我们的无监督 SimCSE 方法相结合,但没有发现有意义的改进。我们还考虑在监督的SimCSE 中采用双编码器框架,但它损害了性能(86.2 -> 84.2 )。

33.1.4 与各向异性的联系

  1. 最近的工作发现了 language representations 中的各向异性问题 anisotropy problem《How contextual are contextualized word representations? comparing the geometry of BERT, ELMo, and GPT-2 embeddings》BERT-Flow),即学到的 embedding 在向量空间中占据一个狭窄的锥体,这严重限制了它们的表达能力。

    • 《Representation degeneration problem in training natural language generation models》 阐述了具有 tied input/output embeddings 所训练的语言模型会导致各向异性的 word embedding

    • 《How contextual are contextualized word representations? comparing the geometry of BERT, ELMo, and GPT-2 embeddings》pre-trained contextual representation 中进一步观察到这一点。

    • 《Improving neural language generation with spectrum control》表明,语言模型中 word embedding matrix 的奇异值会急剧衰减:除了几个主导性的奇异值,其他的都接近于零。

    缓解这个问题的一个简单方法是后处理:要么消除主导的主成分 principal component、要么将 embedding 映射到一个各向同性的分布。另一个常见的解决方案是在训练期间添加正则化。在这项工作中,我们表明,无论是理论上还是经验上,contrastive objective 也能缓解各向异性问题。

  2. 各向异性问题与均匀性有天然的联系,两者都强调了 embedding 应该均匀地分布在空间中。直观而言,优化 contrastive learning objective 可以改善均匀性(或缓解各向异性问题),因为该目标将 negative instances 推开。在这里,我们从奇异谱singular spectrum 的角度出发(这是分析 word embedding 的常见做法),并表明 contrastive objective 可以 "flatten" sentence embedding 的奇异值分布,使representations 各向同性。

    遵从 《Understandingcontrastive representation learning through alignment and uniformity on the hypersphere 》 的观点,当 negative instances 的数量接近无穷大时,contrastive learning objective 的渐进可以用以下公式表示(假设 f(x) 是归一化的):

    (10)1τE(x,x+)ppos[f(x)f(x+)]+Expdata[logExpdata[ef(x)f(x)/τ]]

    其中:第一项保持positive instances 的相似性,第二项将negative pairs 推开。

    pdata 在有限样本 {xi}i=1m 上是均匀的,并且令 hi=f(xi) ,则我们可以从第二项与 Jensen 不等式中得出以下公式:

    (11)Expdata[logExpdata[ef(x)f(x)/τ]]=1mi=1mlog(1mj=1mehihj/τ)1τm2i=1mj=1mhihj

    WRm×d 是对应于 {xi}i=1msentence embedding matrix ,即 W 的第 i 行为 hi 。则优化上式中的第二项实质上是最小化 WW中所有元素的和的上界,即 Sum(WW)=i=1mj=1mhihj

    由于我们将 hi 归一化,所以 WW 对角线上的所有元素都是1 ,那么 tr(WW)(所有特征值之和)就是一个常数。根据 《On the trace and the sum of elements of a matrix》,如果 WW 中的所有元素都是正数,如下图所示,大多数时候都是这种情况,那么 Sum(WW)WW 最大特征值的上界。当最小化上式中的第二项时,我们减少了 WWtop eigenvalue ,并内在地 "flatten"embedding 空间的奇异谱 singular spectrum 。因此,对比学习有望缓解 representation degeneration 问题,提高 sentence embedding 的均匀性。

    下图为在不同的 human ratings 分组上, STS-B pairs 的余弦相似度分布(都是正数)。

    余弦相似性就是 hihj ,就是 (WW) 的第 i 行第 j 列的元素。human 评分越低,则预期余弦相似性也是更低的(否则说明 sentence emebdding 不好)。

33.2 实验

  1. 我们对 7 个语义文本相似性semantic textual similarity: STS 任务进行了实验。请注意,我们所有的 STS 实验都是完全无监督的,没有使用 STS 训练集。即使是监督的SimCSE ,我们也仅仅是遵从InferSent ,采取额外的标记数据集进行训练。我们还评估了 7 个迁移学习任务。我们与 SBERT 有类似的看法,即 sentence embedding 的主要目标是聚集语义相似的句子,因此将 STS 作为主要结果。

33.2.1 STS 任务

  1. 7STS 任务:STS 2012–2016 (这里包含五个, 每一年内一个)、STS BenchmarkSICK-Relatedness

  2. 在与以前的工作进行比较时,我们在已发表的论文中找出了无效的比较模式,包括:是否使用额外的回归器、Spearman’s vs Pearson’s correlation 、结果的汇总方式。

    • 额外的回归器:

      • 默认的 SentEval 实现在 STS-BSICKRfrozen sentence embedding 的基础上应用线性回归器,并在这两个任务的训练集上训练回归器。

      • 而大多数 sentence representation 论文采用 raw embedding 并以无监督的方式评估。

      在我们的实验中,我们没有应用任何额外的回归器,而是直接对所有的 STS 任务采取余弦相似度。

    • 报告的指标:文献中使用了 Pearson 相关系数和 Spearman 相关系数。《Task-oriented intrinsic evaluation of semantic textual similarity》 认为,Spearman 相关系数衡量的是排名而不是实际分数,它更适合评估 sentence embedding 的需要。对于我们所有的实验,我们报告了 Spearman’s rank correlation

    • 聚合方法:鉴于每年的 STS 挑战赛都包含几个子集,从这些子集中收集结果有不同的选择:

      • 一种方法是将所有的主题串联起来,并报告整体的 Spearman 相关系数,记做 "all"

      • 另一种方法是分别计算不同子集的结果并取其平均值。如果是简单的平均值,则记做 "mean" ;如果按子集大小加权,表示为 "wmean"

    然而,大多数论文并没有说明他们所采取的方法,这使得公平比较具有挑战性。我们以一些最新的工作为例:SBERTBERT-flowBERT-whitening。在下表中,我们将我们的复现结果与 SBERTBERT-whitening 的报告结果进行了比较,发现:SBERT 采取了 "all" 设置,但BERT-flowBERT-whitening 采取了 "wmean" 设置,尽管BERT-flow 声称他们采取的设置与 SBERT 相同。由于 "all" 设置将不同主题的数据融合在一起,使得评价更接近真实世界的场景,除非特别说明,否则我们采取 "all" 设置。

    最终,我们的评估中遵循 SBERT 的设置(没有额外的回归器、采用 Spearman 相关系数,以及 "all" 汇总)。

  3. 我们在下表中列出了以前一些工作的评估设置。有些设置是由论文报告的,有些是通过比较结果和检查其代码推断出来的。我们可以看到:在不同的论文中,评估协议是非常不一致的。我们呼吁在评估 sentence embedding 时统一设置,以利于未来的研究。我们还将发布我们的评估代码,以提高可复现性。

  4. 训练细节:我们从 BERTRoBERTapre-trained checkpoint 开始,将 [CLS] representation 作为 sentence embedding (不同池化方法的比较参考消融实验部分)。我们在英语维基百科的 106 个随机采样的句子上训练无监督的 SimCSE ,并在 MNLISNLI 数据集的组合(314k 个样本)上训练有监督的 SimCSE

    这里的 ”有监督/无监督“ 指的是预训练阶段是否用监督数据来预训练,而不是说 target task 是否用监督数据。

    我们用 transformers package 实现 SimCSE

    • 对于有监督的 SimCSE ,我们训练我们的模型3epochs ,在STS-B 的验证集上每 250 个训练步来评估模型,并保留最佳 checkpoint 用于在测试集上进行最终的评估。

    • 对于无监督的 SimCSE ,我们做了同样的工作,只是我们对模型训练了一个 epoch

    注意:在整个过程中,模型没有使用 STS-B 的训练集。

    我们在 STS-B 验证集上进行了网格搜索,其中 batch size 搜索范围 {64, 128, 256, 512} 、学习率搜索范围 {1e-5, 3e-5, 5e-5},并采用下表中的超参数设置。我们发现:只要相应地调优学习率,SimCSEbatch size 并不敏感,这与对比学习需要大batch size 的结论相矛盾(《A simple framework for contrastive learning of visual representations》)。这可能是由于所有的 SimCSE 模型都是从预训练好的 checkpoint 开始的,这已经为我们提供了一套良好的初始参数。

    对于无监督的 SimCSE 和有监督的SimCSE ,我们采用 [CLS] representation ,并且有一个 MLP layer 在其上方,其中这个 MLP layer 的输出作为 sentence representation 。此外,对于无监督的SimCSE ,我们在训练期间包含 MLP layer 但是在测试期间抛弃这个 MLP layer,因为我们发现它能带来更好的性能(参考消融研究的部分)。

    注意:这里不是直接用 [CLS] representation 作为 sentence embedding,而是将 [CLS] representation 经过了一个 MLP layer 映射之后再作为 sentence embedding

    最后,我们再引入一个可选的变体,即在 Li 中增加一个 masked language modeling: MLM objective 作为辅助损失:L1+λ×Lmlm ,其中 λ 为超参数。这有助于 SimCSE 避免对 token-level knowledge 的灾难性遗忘。正如后面实验部分所示,我们发现增加这个 MLM objective 可以帮助提高迁移任务的性能(而不是 sentence-level STS 任务)。

  5. Baseline 方法:我们将无监督的 SimCSE 和有监督的 SimCSE 与在 STS 任务上之前 SOTAsentence embedding 方法进行比较。

    • 无监督 baseline 包括 average GloVe embeddingaverage BERT/RoBERTa embedding ,以及后处理方法(如 BERT-flowBERT-whitening )。

    • 我们还与最近几个使用 contrastive objective 的方法进行了比较,包括:

      • IS-BERT:它使全局特征和局部特征之间的 agreement 最大化。

      • DeCLUTR:它将同一文件的不同 spans 作为 positive pair

      • CT:它将来自两个不同编码器的同一句子的 embedding 进行对齐。

    • 其他监督方法包括 InferSentUniversal Sentence EncoderSBERT/RoBERTa ,它们采用后处理方法(如 BERT-flowwhitening、 以及 CT )。

    其中:

    • 对于 average GloVe embeddingInferSentUniversal Sentence Encoder,我们直接报告 SBERT 的结果,因为我们的评估设置与他们相同。

    • 对于 BERTRoBERTa ,我们从 HuggingFace 下载预训练的模型权重,并用我们自己的脚本评估模型。

    • 对于 SBERTSRoBERTa ,我们重新使用原始论文的结果。对于原始论文没有报告的结果,例如 SRoBERTa 在迁移任务上的表现,我们从 SentenceTransformers 下载模型权重并进行评估。

    • 对于 DeCLUTRcontrastive tension ,我们在我们的环境中重新评估他们的 checkpoint

    • 对于 BERT-flow ,由于他们的原始数字采取了不同的设置,我们使用他们的代码重新训练他们的模型,并使用我们自己的脚本评估模型。

    • 对于 BERT-whitening ,我们按照原始论文中相同的池化方法,即 first-last average pooling ,实现了我们自己版本的 whitening 脚本。我们的实现可以复现原始论文的结果(见 Tabele B.2 )。

    • 对于 BERT-flowBERT-whitening ,它们都有两种后处理的变体:一种是采用 NLI 数据("NLI" )、另一种是直接学习目标数据集上的 embedding 分布("target")。我们发现,在我们的评估环境中,"target" 通常比 "NLI" 差(如下表所示 ),所以我们在主要结果中只报告了"NLI" 变体。

  6. 下表显示了 7STS 任务的评估结果。可以看到:无论是否有额外的 NLI 监督,SimCSE 都能在所有的数据集上大幅提高结果,大大超过了以前的 SOTA 模型。具体来说:

    • 我们的无监督 SimCSE-BERT_base 将以前的最佳平均 Spearman 相关系数从 72.05% 提高到 76.25% ,甚至可以与有监督的 baseline 相媲美。

    • 当使用 NLI 数据集时,SimCSE-BERT_base 进一步将SOTA 的结果推到 81.57% 。在 RoBERTa 编码器上的收益更加明显,我们的监督 SimCSERoBERTa_large 上达到了 83.76%

  7. 由于以前的工作使用了与我们不同的评估协议,我们在这些设置中进一步评估了我们的模型,以便与公布的数字进行直接比较。我们用 "wmean"Spearman's correlation 来评估 SimCSE ,以直接与BERT-flowBERT-whitening 进行比较,如下表所示。

33.2.2 迁移任务

  1. 我们在以下迁移任务中评估我们的模型:MRCRSUBJMPQASST-2TRECMRPC 。在不同方法产生的(frozen 的) sentence embedding 的基础上训练一个逻辑回归分类器。我们遵循 SentEval 的默认配置。迁移任务的评估结果如下表所示,可以看到:

    • 有监督的 SimCSE 的表现与以前的方法相当或更好,尽管无监督模型的趋势仍不清楚。

    • 增加 MLM 目标一致地提高迁移任务的性能,证实了我们的直觉,即 sentence-level objective 可能不会直接有利于迁移任务。

    • 与基础模型相比,后处理方法(BERTflow/whitening )都伤害了性能,表明 representation 的良好的均匀性并不能为迁移学习带来更好的 embedding

      下表中没有 BERTflow/whitening 的内容,所以结论没有数据支撑?

    正如我们前面所论证的,我们认为迁移任务不是 sentence embedding 的主要目标,因此我们把 STS 的结果作为主要比较对象。

33.2.3 消融研究

  1. 我们研究了不同的池化方法、 hard negatives 、归一化、温度、MLM objective 的影响。本节中所有报告的结果都是基于 STS-B 验证集。

  2. 池化方法:SBERTBERT-Flow 表明,采用预训练模型的average embeddings (特别是来自第一层的 embedding 和最后一层的 embedding )导致了比 [CLS] representation 更好的性能。下表显示了在无监督的 SimCSE 和有监督的 SimCSE 中不同池化方法的比较。对于 [CLS] representation ,原始的BERT 实现在其之上采取了一个额外的 MLP 层。这里,我们考虑对 [CLS] 的三种不同设置:具有 MLP 层、没有 MLP 层、在训练期间保留MLP 层但是在测试时将其删除(即 w/MLP(train))。我们发现:

    • 对于无监督的SimCSE 来说,在训练期间保留MLP 层但是在测试时将其删除,这种方法的效果最好。

    • 对于有监督的 SimCSE 来说,不同的池化方法并不重要。

    默认情况下,对于无监督的SimCSE ,我们采用 [CLS] with MLP (train) ;对于有监督的SimCSE ,采用 [CLS] with MLP

  3. hard negatives:直观而言,将 hard negativescontradiction 样本)与其他 in-batch negatives 区分开来可能是有益的。因此,我们扩展了监督 SimCSEtraining objective ,以纳入不同 negatives 的权重:

    (12)Li=logexp(sim(hi,hi+)/τ)j=1N[exp(sim(hi,hj+)/τ)+αIijexp(sim(hi,hj)/τ)]

    其中:Iij{0,1} 为一个示性函数,当且仅当 i=j 时等于 1,否则等于 0α 为超参数。

    我们用不同的α 值训练 SimCSE ,并在STS-B 的验证集上评估训练好的模型。我们还考虑将neutral 样本作为 hard negatives (权重固定为 1.0 )。如下表所示,α=1 的表现最好,neutral 样本不会带来进一步的收益。

    这里有两种 hard 负样本:contradiction 样本、neutral 样本。

  4. 归一化和温度:我们分别使用点积和余弦相似性在不同的温度下训练 SimCSE ,并在 STS-B 验证集上评估它们。如下表所示:在精心调整的温度 τ=0.05 的情况下,余弦相似性比点积更好。

    NA 表示点击相似性;其它列表示余弦相似性。

  5. MLM 辅助任务:最后,我们研究不同 λMLM 辅助目标的影响。如下表所示,token-level MLM objective 对迁移任务的平均性能带来适度的改善,但它在 STS-B 任务中带来了持续的下降。

33.2.4 原理洞察

  1. 这里我们进行进一步分析,以了解 SimCSE 的内部工作。

    • uniformity and alignment:下图显示了不同 sentence embedding 模型的均匀性和对齐性以及它们的平均 STS 结果。一般来说,具有较好对齐性和均匀性的模型能取得较好的性能,证实了 《Understanding contrastive representation learning through alignment and uniformity on the hypersphere》 的发现。我们还观察到:

      • 虽然预训练的 embedding 具有良好的对齐性,但其均匀性较差(即 embedding 是高度各向异性的)。

      • BERT-flowBERT-whitening 这样的后处理方法极大地改善了均匀性,但也遭受了对齐性的退化。

      • 无监督的 SimCSE 有效地改善了预训练的 embedding 的均匀性,同时保持了良好的对齐性。

      • SimCSE 中加入监督数据,进一步改善了对齐性。

    • 定性比较:我们使用 SBERT_baseSimCSE-BERT_base 进行了一个小规模的检索实验。我们使用 Flickr30k 数据集中的 150kcaption ,并采取任何随机的句子作为query 来检索相似的句子(基于余弦相似度)。如下表中的几个例子所示,与SBERT 检索到的句子相比,SimCSE 检索到的句子质量更高。

  2. 奇异值的分布:下图显示了 SimCSE 与其他 baseline 的奇异值分布(sentence embedding 矩阵)。

    • 对于无监督的情况,奇异值下降最快的是普通的 BERT embedding ;对于有监督的情况,奇异值下降最快的是 SBERT embedding 。而 SimCSE 有助于平坦化频谱分布。

    • 基于后处理的方法,如 BERT-flowBERT-whitening 使曲线更加平坦,因为它们直接旨在将 embedding 映射到各向同性分布。

  3. 为了直接显示我们的方法在 STS 任务上的优势,我们在下图中说明了具有不同 human ratings 组的 STS-Bpair 的余弦相似度分布。可以看到:

    • 与所有的 baseline 模型相比,无监督 SimCSE 和有监督SimCSE 都能更好地区分具有不同程度相似性的 sentence pair ,从而在 STS 任务上有更好的表现。

    • 此外,SimCSE 通常显示出比 BERTSBERT 更分散的分布,但与 whitened distribution 相比,也在语义相似的 sentence pair 上保留了较低的方差。这一观察结果进一步验证了 SimCSE 可以实现更好的 alignment-uniformity balance

      即,SimCSE 的分布既不像 BERT_base-whitening 一样过于分散、也不像 BERT_base 一样过于集中。

三十四、BERT-Flow[2020]

  1. 最近,像 BERT 这样的预训练语言模型及其变体已被广泛用作自然语言的 representation 。尽管它们通过微调在许多 NLP 任务上取得了巨大的成功,但来自没有微调的 BERTsentence embedding 在语义文本相似性 semantic textual similarity: STS 方面明显逊色。例如,它们甚至不如 GloVe embedding 的表现,后者没有上下文并且用一个更简单的模型训练。这些问题阻碍了将BERT sentence embedding 直接应用到许多现实世界的场景中,在这些场景中,收集标记数据是非常昂贵的,甚至是难以解决的。

    在论文 《On the Sentence Embeddings from Pre-trained Language Models》 中,作者旨在回答两个主要问题:

    • 为什么 BERT 导出的 sentence embedding 在检索语义相似的句子时表现不佳?是它们携带的语义信息太少,还是仅仅因为这些embedding 中的语义信息没有被正确利用?

    • 如果 BERT embedding 捕获到了足够的语义信息,但很难被直接利用,那么我们如何才能在没有外部监督信息的情况下使其更容易被利用?

    为此,作者首先研究了 BERT 预训练目标与语义相似性任务之间的联系。作者的分析显示,BERTsentence embedding 应该能够直观地反映句子之间的语义相似性,这与实验观察相矛盾。 《Representation degeneration problem in training natural language generation models》 发现语言建模性能会受到所学的各向异性的 word embedding space 的限制,其中 word embedding 占据了一个狭窄的锥体;《How contextual are contextualized word representations? comparing the geometry of bert, elmo, and gpt-2 embeddings》 也发现 BERTword embedding 也受到各向异性的影响。受到这些论文的启发,作者假设,来自 BERTsentence embedding (作为来自最后几层的 context embedding 的平均值)可能存在类似问题。通过对 embedding 的经验探测,作者进一步观察到,BERTsentence embedding space 在语义上是不平滑的,而且在某些方面被定义得很差,这使得它很难通过简单的相似度量(如点积相似度或余弦相似度)直接使用。

    为了解决这些问题,作者提出通过 normalizing flowsBERT sentence embedding 分布转化为平滑的和各向同性的高斯分布,这是一个由神经网络参数化的可逆函数。具体来说,该方法学习一个 flow-based generative model ,从而最大化一个似然函数,该似然函数代表通过无监督的方式从标准的高斯潜变量Gaussian latent variable 中生成 BERT sentence embedding 的可能性。在训练过程中,只有 flow network 被优化,而 BERT 参数保持不变。学到的 flowBERT sentence embedding 和高斯潜变量之间的可逆映射函数,然后被用来将 BERT sentence embedding 转换到高斯空间。作者将所提出的方法命名为 BERT-flow

    作者在不使用任何下游监督的情况下对 7 个标准的语义文本相似性 benchmark 进行了广泛的实验。实验结果表明:flow transformation 能够一致地将 BERT 提高 12.70 个点,在 cosine embedding 相似性和人类标注的相似性之间的 Spearman 相关系数方面平均提高 8.16 个点。

    当考虑外部监督信息时,BERT-flow 优于Sentence-BERT ,导致了新的 SOTA 。除了语义相似性任务外,作者还将 sentence embedding 应用于question-answer entailment task QNLI ,直接不需要task-specific 监督,并证明了BERT-flow 的优越性。此外,进一步分析表明,BERT 导出的相似性会与 lexical similarity 过度相关(与语义相似性相比),而,BERT-flow 可以有效地补救这一问题。

    Lexical Similarity 由编辑距离来衡量,刻画了两个句子在 word-level 上的相似性,而不是语义相似性。

34.1 理解 BERT 的 Sentence Embedding Space

  1. 为了用 BERT 将一个句子编码成一个固定长度的向量,通常做法是在 BERT 的最后几层计算 context embeddings 的平均值,或者在[CLS] token 的位置提取 BERT context embedding 。请注意,在生成 sentence embedding 时没有被掩码的 token ,这与 pretraining 是不同的。

    SBERT 证明,这种 BERT sentence embedding 在语义相似度方面落后于 SOTAsentence embedding 。在 STS-B 数据集上,BERT sentence embeddingaveraged GloVe embedding 相比更没有竞争力,其中 GloVe 是几年前提出的一个简单的、non-contextualizedbaseline 。尽管如此,这种效果差在现有文献中还没有得到很好的理解。

    注意,正如SBERT 所证明的那样,averaging context embeddings 一直优于 [CLS] embedding 。因此,除非另有提及,否则我们将 context embeddings 的均值作为 BERT sentence embedding ,并在本文的其余部分中不区分它们。

34.1.1 语义相似性和 BERT Pre-training 之间的联系

  1. 考虑关于 token 的一个序列 x1:T=(x1,,xT)。语言建模 language modeling: LM 以自回归方式来因子化联合概率 p(x1:T) ,即:p(x1:T)=t=1Tlogp(xtct),其中 ct=x1:t1t 时刻的上下文序列。

    为了捕获预训练期间的双向上下文,BERT 提出了一个 masked language modeling: MLM 目标,它因子化了 noisy reconstruction 的概率 p(x¯x^)=t=1Tmtp(xtct),其中 x^ 是一个被破坏的序列,x¯ 是被掩码的token ,当 xt 被掩码时 mt=1 否则等于 mt=0,上下文 ct=x^

    注意,LMMLM 都可以简化为,建模在给定上下文 c 的条件下 token x 的条件分布,这通常由一个 softmax 函数来描述:

    (13)p(xc)=exp(hcwx)xexp(hcwx)

    其中:

    • hccontext embedding ,它是上下文 c 的函数,通常由一个神经网络来建模。

    • wx word embedding ,它是 token x 的函数,通常由 embedding lookup table 来参数化。

    注意,虽然 MLMLM 的条件分布的形式相同,但是二者的上下文不同:

    • MLM 的上下文 ct=x^ ,即被破坏的完整序列,对于任何 t 都是相同的一个序列。

      LM 的上下文 ct=x1:t1 ,即 t 时刻之前的序列,对于不同的 t 为不同的值。

    BERT sentence embedding 之间的相似性可以简化为 BERT context embedding 之间的相似性 hchc 。 然而,正如 p(xc) 的公式所示,BERT 的预训练并不明确涉及 hchc 的计算。因此,我们很难得出 hchc 具体代表什么数学公式。

  2. 作为语义相似性代理的Co-Occurrence 统计:我们不直接分析 hchc ,而是考虑 hcwx ,即 context embedding hcword embedding wx 之间的点积。根据 《Breaking the softmax bottleneck : A high-rank rnn language model》的研究,在一个训练良好的语言模型中,hcwx 可以近似地分解为:

    (14)hcwxlogp(xc)+λc=PMI(x,c)+logp(x)+λc

    其中:

    • PMI(x,c)=logp(x,c)p(x)×p(c)x 和上下文 c 之间的 point-wise 互信息。

    • logp(x)word-specific 项。

    • λccontext-specific 项。

    PMI 刻画了两个事件共同发生的频率,相比比它们独立发生的频率,要高多少。注意,co-occurrence statistics 是以计算的方式处理 "语义" 的典型工具,用于近似 word-level semantic similarity 。因此,大致上说,计算 context embeddingword embedding 之间的点积是有语义的。

  3. Higher-Order Co-Occurrence Statistics 作为 Context-Context Semantic Similarity:在预训练期间,两个上下文 cc 之间的语义关系可以通过它们与单词的联系来推断和加强。具体而言,如果上下文 cc 都与同一个单词 w 共同出现,那么这两个上下文就可能具有相似的语义。

    higher-order context-context co-occurrence 也可以在预训练期间被推断和被传播。context embedding hc 的更新可以影响另一个context embedding hc 也可以进一步影响另一个 hc 。因此,context embedding 可以通过高阶共现关系在它们之间形成隐式交互。

34.1.2 各向异性的 Embedding Space 诱发了很差的语义相似性

  1. 正如前面所讨论的,BERT 的预训练应该隐式地鼓励具有语义的 context embedding 。为什么没有微调的 BERT sentence embedding 会产生较差的性能?

    为了研究失败的根本问题,我们使用 word embedding 作为代理,因为单词和上下文共享相同的 embedding 空间。如果 word embedding 表现出一些误导性的属性,那么 context embedding 也会有问题,反之亦然。

    《Representation degeneration problem in training natural language generation models》《Improving neural language generation with spectrum control》发现,根据最大似然 p(xc) 的训练,通常会产生一个各向异性anisotropic 的词嵌入空间 word embedding space 。 "各向异性" 是指 word embedding 在向量空间中占据一个狭窄的锥体。《How contextual are contextualized word representations? comparing the geometry of bert, elmo, and gpt-2 embeddings》 也观察到这一现象。

  2. 此外,我们对学到的各向异性的 embedding 空间有两个经验性的观察:

    • 观察一:Word Frequency Biases the Embedding Space :我们预期 embedding 诱导的相似性与语义相似性一致。

      正如 《Representation degeneration problem in training natural language generation models》 所讨论的,各向异性与词频的不平衡性高度相关。他们证明,在某些假设下,Transformer 语言模型中 non-appeared token 的最佳 embedding 可以离原点极远。他们还试图将这一结论粗略地推广到很少出现的单词。

      为了在 BERT 的背景下验证这一假设,我们计算了 BERT word embedding 和原点之间的平均L2 距离。在下表的上半部分,我们观察到高频词都离原点更近,而低频词则离原点更远。

      这一观察表明:word embedding 可以被单词频率带偏。这与 hcwxPMI(x,c)+logp(x)+λc 中的