对于许多 NLP
任务来说,可用的训练数据数量有限。这给 data hungry
的深度学习方法带来了挑战。鉴于标注监督训练数据的成本很高,对于大多数 NLP
任务来说,通常无法获得非常大的训练集。许多模型通过使用预训练的 word embedding
(如 word2vec
或 GloVe
产生的 word embedding
),隐式地进行有限的迁移学习来解决这个问题。然而,最近的工作表明,使用 pre-trained sentence level embedding
在下游任务有很强的表现。
在论文 《Universal Sentence Encoder》
中,作者提出了两个用于产生 sentence embedding
的模型,这些模型显示了对其他一些 NLP
任务的良好迁移。作者在下游任务上包含不同数量的训练数据进行实验,作者发现,所提出的 sentence embedding
可以用非常少的 task specific
训练数据来获得令人惊讶的良好任务表现。
此外,作者还讨论了关于内存需求、以及 CPU/GPU
上的计算时间的 trade-off
。作者还对不同长度的句子进行了资源消耗比较。
我们提供了两个新的模型来将句子编码为 embedding
向量。一个利用了 Transformer
架构,另一个为深度平均网络 deep averaging network: DAN
。这两个模型都是在 TensorFlow
中实现的,并可从 TF Hub
下载。这两个模型将英语字符串作为输入,并产生固定维度的 embedding representation
作为输出。
这里提供了一个最小的 code snippet
,将一个句子转换成一个 sentence embedding
:
import tensorflow_hub as hub
embed = hub.Module("https://tfhub.dev/google/universal-sentence-encoder/1")
embedding = embed(["The quick brown fox jumps over the lazy dog."])
所得到的 embedding tensor
可以直接使用,也可以纳入更大的 model graph
中从而用于特定的任务。如下图所示, sentence embedding
可以很简单地用于计算 sentence level
的语义相似性分数,在semantic textual similarity: STS
基准上取得优异的表现。当被包含在更大的模型中时, sentence encoding model
可以为特定任务进行微调。
这里介绍了我们两个编码模型的模型结构。这两个编码器有不同的设计目标:基于 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
:针对 word
和 bi-gram
的 input embedding
首先进行平均,然后馈入一个深度前馈神经网络来产生 sentence embedding
。同样地,DAN encoder
将小写的 PTB tokenized string
作为输入,并输出一个 512
维的向量来作为 sentence embedding
。DAN encoder
的训练方式与 Transformer-based encoder
类似。我们利用多任务学习,即用一个 DAN encoder
来为多个下游任务提供 sentence embedding
。
DAN encoder
的主要优点是计算时间与输入序列的长度成线性关系。与 《Deep unordered composition rivals syntactic methods for text classification》
类似,我们的结果表明,DAN
在文本分类任务上取得了强大的 baseline
性能。
Transformer-based encoder
是在最后融合多个word
的representation
,然后融合结果直接输出;DAN encoder
是首先融合多个word
的representation
,融合结果通过深度前馈神经网络进行非线性变换并最后输出。这两个模型都需要从头开始训练,而没有使用
pre-trained model
来初始化。
训练 Encoder
的训练数据:
sentence encoding model
的无监督训练数据来自各种网络资源,包括维基百科、网络新闻、网络问答网页和讨论区。
我们通过对 Stanford Natural Language Inference: SNLI
语料库中的监督数据进行训练来增强无监督学习。与InferSent
的发现类似,我们观察到对 SNLI
的训练提高了迁移性能。
Transfer Task
(即,下游任务):这里介绍了用于迁移学习实验的数据,还介绍了描述 model bias
的 Word 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
。
迁移学习方法:
对于 sentence classification
迁移任务,Transformer sentence encoder
和 DAN sentence encoder
的输出被馈入一个 task specific DNN
。
对于 pairwise semantic similarity
迁移任务,我们通过以下公式直接评估由Transformer sentence encoder
或 DAN sentence encoder
产生的 sentence embedding
的相似性:
我们首先计算两个 sentence embedding
的余弦相似度,然后使用 arccos
将余弦相似度转换成角度距离。
为什么不能直接使用余弦相似度,反而转换成角度?作者并未解释原因。实际上,余弦相似度更为常见。
baseline
:对于每个下游任务,我们包括只利用 word level transfer
的 baseline
,以及完全不利用迁移学习的 baseline
。
word level transfer
:我们使用在新闻数据语料库上训练的 word2vec skip-gram
模型的 word embedding
。pretrained word embedding
被作为两种模型的输入:convolutional neural network: CNN
模型、DAN
模型。
完全不利用迁移学习:直接用 CNN
和 DAN
在不使用任何 pretrained word embedding
或 pretrained sentence embedding
的情况下训练。
结合 sentence level
迁移和 word level
迁移(Combined Transfer
):我们将这两种方法结合起来,将 combined representation
馈入下游任务的分类层。
此外,我们我们还探讨了将 sentence level
的迁移学习的 representation
、以及不使用 word level
的迁移学习的 baseline
的 representation
拼接起来。
下游任务的超参数用 Vizier
和轻度的人工调优相结合的方式来调优。模型超参数在任务的验证集(如果有的话)上调优,否则在训练集(如果有的话)上交叉验证来调优。如果既没有训练集也没有验证集,那么通过测试集来调优。每个下游任务的模型用不同的随机初始化权重重复训练 10
次,我们报告平均结果。
当下游任务的训练数据有限时,迁移学习是至关重要的。我们探讨了在使用和不使用迁移学习的情况下,改变下游任务可用的训练数据量对该任务性能的影响。对比 Transformer-based encoder
和 DAN-based encoder
,我们展示了模型的复杂度、以及所需的数据量之间的 tradeoff
从而达到任务的目标准确性。
为了评估我们的 encoder
模型的 bias
,我们评估了我们的模型在 WEAT
单词列表上学到的各种关联的强度。我们将我们的结果与《Semantics derived automatically from language corpora contain human-like biases》
的结果进行了比较,他们发现 word embedding
可以用来重现人类在隐式关联任务上的表现,包括良性的关联和潜在的不良关联。
下表给出了下游任务的表现。可以看到:
Transformer-based encoder
的迁移学习通常表现得和 DAN-based encoder
的迁移学习一样好或更好。
对于某些任务来说,使用更简单、更快的 DAN encoder
的迁移学习,可以和更复杂的 Transformer encoder
的表现一样好甚至更好。
利用 sentence level
的迁移学习的模型,往往比只使用 word level
的迁移学习的模型表现更好。
大多数任务的最佳表现是由同时使用 sentence level
和 word level
迁移学习的模型获得的。
下表说明了不同数量的训练数据的下游任务性能。可以看到:
对于较少的数据量,sentence level
的迁移学习可以获得令人惊讶的任务表现。
随着训练集规模的增加,不使用迁移学习的模型接近于使用迁移学习的模型的性能。
下表对比了 GloVe embedding
的 bias
和 DAN embedding
的 bias
。
与 GloVe
类似,我们的模型再现了在 flowers vs. insects
和 pleasantness vs. unpleasantness
之间的 human association
。
然而,我们的模型在针对揭示年龄歧视、种族主义、以及性别歧视的 probe
方面显示出比 GloVe
更弱的关联。
word association pattern
的差异可归因于训练数据构成的差异、以及 task mixture
(这些任务用于训练 sentence embedding
)。
资源使用:这里给出了在不同的句子长度下,Transformer encoder
和 DAN encoder
的内存用量和计算资源,如下图所示。
计算资源:Transformer encoder
的时间复杂度是句子长度的 DAN encoder
是
对于短句子,Transformer encoder
只比简单得多的 DAN encoder
慢一些。然而,随着句子长度的增加,Transformer encoder
的计算时间明显增加。
相反,DAN encoder
的计算时间随着句子长度的增加几乎保持不变。由于 DAN encoder
的计算效率非常高,对于 Transformer encoder
来说,使用 GPU
而不是 CPU
往往会有更大的实际影响。
内存用量:与计算资源类似,Transformer encoder
的内存用量随着句子长度的增加而迅速增加,而 DAN encoder
的内存用量保持不变。
我们注意到,对于 DAN encoder
来说,内存的使用主要是由用于存储模型的 unigram embedding
和 bigram embedding
的参数所支配。由于 Transformer encoder
只需要存储 unigram embedding
,因此对于短句来说,Transformer encoder
需要的内存几乎是 DAN encoder
的一半。
在论文 《Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks》
中,作者提出了 Sentence-BERT: SBERT
,这是一种使用 siamese network
和 triplet 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
任务。例如,在 BERT
执行 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》
开发了 SBERT
。siamese network
使得可以导出针对输入句子的固定尺寸的 representation
向量。然后使用像余弦相似性、或曼哈顿/欧几里得距离这样的相似性度量,可以找到语义上相似的句子。这些相似度度量可以在现代硬件上极其有效地进行,使 SBERT
可以用于语义相似度搜索、以及聚类。在 10000
个句子的集合中寻找最相似的 sentence pair
的复杂性,从使用 BERT
的 65
小时减少到使用 SBERT
的几秒钟(计算 10000
个 sentence embedding
耗费 SBERT
约 5
秒,计算余弦相似度约 0.01
秒)。通过使用优化的 index
结构,寻找最相似的 Quora
问题可以从 50
小时减少到几毫秒。
论文在 NLI
数据上对 SBERT
进行了微调,它所创建的 sentence embedding
明显优于其他 SOTA
的 sentence embedding
方法,如 InferSent
和 Universal Sentence Encoder
。
在七个 Semantic Textual Similarity: STS
任务上,SBERT
相对 InferSent
和 Universal Sentence Encoder
分别实现了 11.7
分和 5.5
分的改进。
在 sentence embedding
的评估工具包 SentEval
上,SBERT
相对 InferSent
和 Universal Sentence Encoder
分别实现了2.1
分和 2.6
分的改进。
SBERT
可以适配特定的任务。它在一个具有挑战性的 argument similarity
数据集、以及一个区分维基百科文章不同部分的句子的 triplet dataset
上创造了新的 SOTA
性能。
相关工作:
BERT
:BERT
是一个预训练的 transformer
网络,它为各种 NLP
任务提供了新的 SOTA
的结果,包括问答、句子分类、sentence-pair regression
。用于sentence-pair regression
的 BERT
的输入由两个句子组成,由一个特殊的 [SEP] token
分开。BERT
在 Semantic 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 embedding
:sentence 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》
解决了来自 BERT
的 cross-encoder
的运行时间开销,并提出了一种方法( poly-encoders
)通过 attention
来计算 precomputed
的候选 embedding
之间的分数。这个想法对于在更大的集合中寻找最高得分的句子是有效的。然而, poly-encoders
有一个缺点,即 score function
不是对称的,而且计算开销对于像聚类这样的 case
来说太大(score computation
)。
以前的 neural sentence embedding
方法是从随机初始化开始训练的。这里我们使用预训练好的 BERT
网络和 RoBERTa
网络,只对其进行微调以产生有用的 sentence embedding
。这大大减少了所需的训练时间。SBERT
可以在不到 20
分钟内完成微调,同时产生比其它 sentence embedding
方法更好的结果。
SBERT
在 BERT/RoBERTa
的输出上增加了一个池化操作,从而获得一个固定尺寸的 sentence embedding
。我们试验了三种池化策略:使用 CLS-token
的输出、均值池化策略MEAN-strategy
(计算所有输出向量的平均值)、最大池化策略MAX-strategy
(沿着position
维度计算输出向量的最大值)。默认配置是均值池化策略。
为了微调 BERT/RoBERTa
,我们创建了 siamese network
和 triplet network
来更新权重,使得产生的 sentence embedding
具有语义,并可以用余弦相似度进行比较。网络结构取决于可用的训练数据。我们试验了以下网络结构和目标函数:
Classification Objective Function
:我们将 sentence embedding
其中:sentence embedding
维度,label
的数量,
我们优化交叉熵损失。整体结构如下图所示。
Regression Objective Function
:我们计算 sentence embedding
mean-squared-error:MSE loss
作为目标函数。
Triplet Objective Function
:给定一个锚点句子anchor sentence
positive sentence
negative sentence
triplet loss
使得
其中:sentence embedding
,margin
(使得
在我们的实验中,我们使用欧氏距离并设置
训练细节:我们在 SNLI
和 Multi-Genre NLI
数据集的组合上训练 SBERT
。
SNLI
包含 570k
个 sentence pair
,并被标注了矛盾 contradiction
、蕴含 eintailment
、以及中性 neutral
等三种标签。
MultiNLI
包含了 430k
个 sentence pair
,涵盖了一系列的口语的和书面语的体裁。
我们用 3-way softmax classifier objective function
对 SBERT
进行了微调,微调一个 epoch
。我们使用 batch size = 16
,Adam
优化器(学习率为 2e-5
),并使用线性学习率调度,其中在 10%
的训练数据上进行学习率预热。我们默认的池化策略是均值池化。
注意:根据论文在相关工作中的介绍,论文使用
pretrained BERT/RoBERTa
来初始化模型。因此这里的微调更像是“预微调”,即预训练和微调中间的步骤。
我们评估了 SBERT
在常见的语义文本相似性 Semantic Textual Similarity: STS
任务中的表现。SOTA
的方法通常学习一个(复杂的)回归函数,将 pair-wise sentence embedding
映射到相似性分数。然而,这些回归函数是 pair-wise
工作的,可扩展性很差。相反,我们总是使用余弦相似度来比较两个 sentence embedding
之间的相似度。
我们还用负曼哈顿距离、以及负欧氏距离作为相似度指标来进行实验,但所有方法的结果都大致相同。
无监督 STS
:我们在不使用任何 STS-specific
训练数据的情况下评估了 SBERT
在 STS
中的表现。我们使用 2012-2016
年的 STS
任务、STS benchmark
、SICK-Relatedness
数据集。这些数据集对 sentence pair
的语义相关度提供了 0 ~ 5
的标签。我们使用sentence embedding
余弦相似度和 ground-truth
之间的 Spearman’s rank correlation
(而不是 Pearson correlation
)。
Spearman’s rank correlation
:首先将原始数据排序,然后为每个数据赋予一个rank
。对于两组数据,分别计算它们各自rank
序列的皮尔逊相关系数:而
Pearson correlation
就是对原始数据直接计算相关系数。
实验结果如下表所示。可以看到:
直接使用 BERT
的输出会导致相当差的性能。对 BERT embedding
的均值池化只达到了 54.81
的平均相关度,而使用 CLS-token
输出只达到了 29.19
的平均相关度。两者都比计算 GloVe embedding
的均值要更差。
使用所描述的 siamese network
结构和微调机制大大改善了相关性,大大超过了 InferSent
和 Universal Sentence Encoder
的表现。
SBERT
表现比 Universal Sentence Encoder
差的唯一数据集是 SICK-R
。Universal Sentence Encoder
是在各种数据集上训练的,包括新闻、问答网页和讨论区,这似乎更适合 SICK-R
的数据。相比之下,SBERT
只在维基百科(通过 BERT
)和 NLI
数据上进行了预训练。
虽然 RoBERTa
能够提高几个监督任务的性能,但我们只观察到 SBERT
和 SRoBERTa
在生成 sentence embedding
方面的微小差异。
监督 STS
:STS benchmark: STSb
是一个流行的数据集,用于评估有监督的 STS
系统。数据集包括来自 caption
、新闻、以及论坛三个 category
的 8628
个 sentence pair
。它被分为训练集(5749
个样本 )、验证集(1500
个样本)、测试集(1379
个样本)。BERT
在这个数据集上创造了新的 SOTA
的性能,它将两个句子都传给了网络,并使用简单的回归方法进行输出。
我们使用训练集,利用 regression objective function
对 SBERT
进行微调。在预测时,我们计算 sentence embedding
之间的余弦相似度。所有系统都是用 10
个随机种子进行训练从而考虑方差。
读者猜测:回归目标是在余弦相似度之上进行的,因此两个
sentence embedding
越相似则output
越大。
实验结果如下表所示。我们用两种设置进行了实验:只在 STSb
上训练、先在NLI
上训练然后在 STSb
上训练(即,利用 NLI
数据进行预微调)。我们观察到:
在 SBERT
上,第二种策略导致了 1-2
分的轻微改善。
在 BERT
上,第二种策略导致了 3-4
分的轻微改善。
我们没有观察到 BERT
和 RoBERTa
之间的显著差异。
注意:这里的
BERT-NIL-STSb-base
用的是pair-wise
的BERT
,而不是Avg. BERT embeddings
。
Argument Facet Similarity: AFS
:我们在 AFS
语料库上评估 SBERT
。AFS
语料库标注了来自社交媒体对话的 6k
个 sentential argument pair
,涉及三个有争议的话题:枪支管制、同性恋婚姻、死刑。这些数据被标注为从0
("不同的话题")到5
("完全等同")的等级。
AFS
语料库中的相似性概念与 STS
数据集中的相似性概念相当不同。STS
数据通常是描述性的,而 AFS
数据是对话中的争论性摘录 argumentative excerpt
。要被认为是相似的,论点 argument
不仅要提出相似的主张,而且要提供相似的推理 reasoning
。 此外,AFS
中的句子之间的词汇差距 lexical gap
要大得多。因此,简单的无监督方法以及 SOTA
的 STS
系统在这个数据集上表现很差。
我们在两种场景中在这个数据集上评估 SBERT
:
我们使用 10-fold cross-validation
来评估 SBERT
。这种评估设置的一个缺点是,不清楚方法对不同主题的泛化性如何。
我们在 cross-topic setup
上评估 SBERT
。我们在两个主题上训练,在剩余的主题上评估。我们对所有三个主题重复这一过程,并对结果进行平均。
第二种方法可以评估在
unseen
主题上的表现。
SBERT
使用 Regression Objective Function
进行微调。相似性得分是使用基于 sentence embedding
的余弦相似性来计算的。我们还提供了皮尔逊相关系数 STS
系统。
实验结果如下表所示,可以看到:
像 tf-idf
、average GloVe embedding
、或 InferSent
这样的无监督方法在这个数据集上表现得相当糟糕,得分很低。
在 10-fold cross-validation setup
中训练 SBERT
,其性能几乎与 BERT
相当。
然而,在跨主题评估中,我们观察到 SBERT
的性能在 Spearman correlation
指标下降了约 7
个点。
为了被认为是相似的,论点应该涉及相同的主张并提供相同的推理。BERT
能够使用注意力机制来直接比较两个句子(例如 word-by-word
的比较),而 SBERT
必须把来自 unseen
的主题的单个句子映射到一个向量空间,从而使具有类似主张 claim
和理由 reason
的论点接近。这是一个更具挑战性的任务,这似乎需要超过两个主题的训练,才能与 BERT
相媲美。
Wikipedia Sections Distinction
:《Learning Thematic Similarity Metric from Article Sections Using Triplet Networks》
使用维基百科为 sentence embedding
方法创建了一个主题细化的训练集、验证集、以及测试集。Wikipedia
的文章被分成不同的章节,每个章节聚焦于某些方面。该论文假设:同一章节的句子比不同章节的句子在主题上更接近。他们利用这一点创建了一个大型的弱标记的 sentence triplet
数据集:anchor
样本和正样本来自同一章节,而负样本来自同一文章的不同章节。
我们使用该数据集。我们使用 Triplet Objective
,在大约 1.8M
个 training triplet
上训练 SBERT
一个 epoch
,然后在 222,957
个 test triplet
上评估。我们使用准确率作为评估指标:正样本是否比负样本更接近 anchor
?
结果如下表所示。 《Learning Thematic Similarity Metric from Article Sections Using Triplet Networks》
提出的 Bi-LSTM
方法微调了具有 triplet loss
的 Bi-LSTM
架构,从而得到 sentence embedding
(下表中 Dor et al.
这一行的结果)。可以看到:SBERT
显著优于 Bi-LSTM
方法。
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
的目的,但它在这项任务上的表现超过了其他 SOTA
的 sentence embedding
方法。 看来,SBERT
的 sentence embedding
很好地捕捉了情感信息:与 InferSent
和 Universal Sentence Encoder
相比,我们观察到 SentEval
的所有情感任务(MR
、CR
和SST
)都有很大的改进。唯一一个 SBERT
明显比 Universal Sentence Encoder
差的数据集是 TREC
数据集。Universal Sentence Encoder
在问答数据上进行了预训练,这似乎对 TREC
数据集的问题类型分类任务有利。
average BERT embeddings
、或使用 BERT CLS-token output
,在各种 STS
任务中取得了不好的结果(Table 1
),比average GloVe embeddings
更差。然而,对于 SentEval
,average BERT embeddings
、以及使用 BERT CLS-token output
取得了不错的结果(Table 5
),超过了average GloVe embeddings
。造成这种情况的原因是不同的设置。
对于 STS
任务,我们使用余弦相似度来估计 sentence embedding
之间的相似性。余弦相似性对所有维度都是平等的。
相比之下,SentEval
将逻辑回归分类器用于 sentence embedding
。这允许某些维度对分类结果有更高或更低的影响。
我们的结论是:average BERT embeddings
、BERT CLS-token output
返回的 sentence embedding
不可能用于余弦相似度或曼哈顿/欧氏距离。对于迁移学习,它们的结果比 InferSent
或 Universal Sentence Encoder
略差。然而,在 NLI
数据集上使用所描述的具有 siamese network
结构的微调,产生的 sentence embedding
达到了 SentEval
工具包的 SOTA
。
这里我们对 SBERT
的不同方面进行了消融研究,以便更好地了解其相对重要性。我们评估了不同的池化策略(MEAN/MAX/CLS
)。对于 classification objective function
,我们评估了不同的 concatenation
方法。
对于每个可能的配置,我们用 10
个不同的随机种子训练 SBERT
,并对其性能进行平均。objective function
(分类或回归)取决于数据集:
对于classification objective function
,我们在 SNLI
和 Multi-NLI
数据集上训练 SBERT-base
,并在 NLI
数据集上进行评估。
对于 regression objective function
,我们在 STS benchmark
数据集的训练集上进行训练,并在 STS benchmark
验证集上进行评估。
结果如下表所示。可以看到:
classification objective function
:根据 NLI
这一列,可以看到:池化策略的影响相当小,而 concatenation
模式的影响要大得多。
对于 concatenation
模式,InferSent
和 Universal Sentence Encoder
都使用 softmax
分类器的输入,其中 SBERT
中,加入逐元素乘法
如果使用人工特征交叉用于
softmax
的输入,那么在推断期间,就无法直接用余弦相似度,而是必须经过相同的人工特征交叉以及softmax
。
regression objective function
:根据 STSb
这一列,可以看池化策略有很大的影响:MAX
策略的表现明显比 MEAN
或 CLS-token
策略更差。这与 InferSent
相反,他们发现 InferSent
的 BiLSTM layer
使用MAX
(而不是MEAN
)池化更好。
sentence embedding
有可能需要对数百万个句子进行计算,因此,需要有较高的计算速度。这里我们将 SBERT
与 average GloVe embeddings
、InferSent
和 Universal Sentence Encoder
进行比较。我们使用 STS benchmark
的句子来比较。
average GloVe embedding
是通过一个简单的 for-loop
来实现的,其中采用了 python
的 dictionary lookup
和 numpy
。
InferSent
是基于 PyTorch
的。
Universal Sentence Encoder
来自 TensorFlow Hub
,是基于 TensorFlow
的。
SBERT
是基于 PyTorch
的。
为了改进 sentence embedding
的计算,我们实施了一个 smart batching
策略:具有相似长度的句子被分在一组,并且在一个 mini-batch
中填充到最长的元素。这极大地减少了 padding tokens
的计算开销。性能是在一台配备英特尔 i7-5820K CPU @ 3.30GHz
、Nvidia Tesla V100 GPU
、CUDA 9.2
、以及 cuDNN
的服务器上测得的。结果如下表所示。
在 CPU
上,InferSent
比 SBERT
快大约 65%
。这是由于网络结构简单得多。InferSent
使用单个 Bi-LSTM layer
,而 BERT
使用12
个堆叠的 transformer layer
。
然而,transformer network
的一个优势是在 GPU
上的计算效率。此时,带有 smart batching
的 SBERT
比 InferSent
快约 9%
、比Universal Sentence Encoder
快约 55%
。
smart batching
在 CPU
上实现了 89%
的提速,在 GPU
上实现了 48%
的提速。
average GloVe embeddings
显然在很大程度上是计算 sentence embedding
的最快方法。
为什么
InferSent
和Universal Sentence Encoder
没有用smart batching
?这是不公平的比较。Universal Sentence ENcoder
也是transformer-based
模型,也可以采用smart batching
。
学习通用的 sentence embedding
是自然语言处理中的一个基本问题,在文献中得到了广泛的研究。在论文 《SimCSE: Simple Contrastive Learning of Sentence Embeddings》
中,作者推进了 SOTA
的 sentence embedding
方法,并证明了 contrastive objective
在与预训练的语言模型(如 BERT
或 RoBERTa
)相结合时可以非常有效。论文提出了 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
在迁移任务上也取得了有竞争力的表现。
相关工作:
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
模型,并进一步扩展到其他 encoder
或 pre-trained model
。
此外,《ParaNMT-50M: Pushing the limits of paraphrastic sentence embeddings with millions of machine translations》
证明:双语的语料和 back-translation
语料为学习语义相似性提供了有用的监督。
另一个工作重点是 regularizing embedding
,以缓解 representation degeneration
问题,并在预训练的语言模型上获得显著的改进。
对比学习contrastive learning
的目的是通过把语义相近的邻居拉到一起、把非邻居推开,从而学习有效的 representation
。它假设一组 paired examples
《 A simple framework for contrastive learning of visual representations》
的对比学习框架,采用具有 in-batch negatives
的 cross-entropy objective
:令 representation
,那么针对 pair
的 mini-batch
的 training objective
为:
其中:
在这项工作中,我们使用预训练的语言模型(如 BERT
或 RoBERTa
)对输入句子进行编码:contrastive learning objective
对所有参数进行微调。
正样本:对比学习的一个关键问题是如何构建 pair
。在 visual representation
中,一个有效的解决方案是将同一张图像的两个随机变换(如裁剪、翻转、变形、旋转)分别作为 language representation
中也采用了类似的方法,其中采用了删除单词、打乱顺序、以及单词替换等数据增强技术。然而,由于其离散的特性,NLP
中的数据增强本身就很困难。正如我们将在后面介绍的那样,简单地在 intermediate representation
上使用标准的 dropout
,就超越了这些离散的操作。
在 NLP
中,类似的 contrastive learning objective
已经在不同的背景下进行了探索。在这些情况下,question-passage pair
。由于 dual-encoder framework
,即对 sentence embedding
,《An efficient framework for learning sentence representations》
也使用了具有 dual-encoder
的对比学习,将当前句子和下一个句子构成为
alignment and uniformity
:最近,《Understanding contrastive representation learning through alignment and uniformity on the hypersphere》
确定了与对比学习相关的两个关键属性(即,对齐性 alignment
和均匀性 uniformity
),并提议用它们来衡量 representation
的质量。
给定一个 positive pair
alignment
计算 paired instances
的 embedding
之间的期望距离(假设 representation
已经被归一化):
另一方面,uniformity
衡量 embedding
的均匀分布程度:
其中
这两个指标与对比学习的目标很一致:正样本应该保持接近,而随机样本的 embedding
应该在超球上散开。在下面的章节中,我们还将使用这两个指标来证明我们方法的内部原理。
无监督 SimCSE
的想法非常简单:取句子集合 dropout mask
。
在 Transformer
的标准训练中,在全连接层和 attention probabilities
上有 dropout mask
(默认 dropout
的 random mask
。我们只需将相同的 input
馈入编码器两次,就可以得到两个具有不同dropout mask
(即,embedding
,然后 SimCSE
的训练目标变为:
其中:mini-batch
包含的样本数量。
注意:Transformer
中的标准 dropout mask
,我们不添加任何额外的 dropout
。
dropout noise
作为数据增强: 我们把它看作是一种最小形式的数据增强,即,positive pair
采取完全相同的句子,它们的 embedding
只在 dropout mask
上有所不同。我们将这种方法与其他 training objective
在 STS-B
验证集上进行比较。
下表将我们的方法与常见的数据增强技术进行了比较,如裁剪、单词删除、以及单词替换,可以看作是 dropout noise
。
这里的
w/o dropout
表示没有dropout
,这个时候,因此 。这时候的训练目标是:将不同的句子推开(并没有将相似的句子拉近)。
我们还将这个 self-prediction training objective
与 next-sentence objective
进行比较,采取一个编码器或两个独立的编码器。如下表所示,我们发现:
SimCSE
的表现比 next-sentence objective
要好得多(在 STSB
上为 82.5 vs 67.4
)。
使用一个编码器而不是两个编码器,最终效果有很大的差异。
为什么能成功:为了进一步了解 dropout noise
在无监督 SimCSE
中的作用,我们在下表中尝试了不同的 dropout rate
,并观察到:
所有的变体都低于 Transformer
中默认的 dropout rate
两个极端情况特别有趣,即 no dropout
)、fixed 0.1
(使用默认的 dropout rate
pair
使用相同的 dropout mask
)。在这两种情况下,pair
的 resulting embedding
是完全相同的,这导致了急剧的性能下降。
为什么
fixed 0.1
的性能下降得远远超过no dropout
?论文并未讲原因。
我们在训练过程中每隔 10
个 step
获取模型的 checkpoint
,并在下图中直观地显示了对齐性 alignment
和均匀性 uniformity
指标。除了 SimCSE
之外,下图还包含一个简单的数据增强模型 "delete one word"
。我们从预训练模型作为初始化。如下图所示:
随着训练的推进(从 pretrained checkpoint
开始),所有的模型都大大改善了均匀性。
越小,则均匀性越好。
然而,两个特殊变体的对齐性也急剧下降,而我们的无监督 SimCSE
保持了稳定的对齐性,这要归功于 dropout noise
的使用。
这也证明了从 pretrained checkpoint
开始是至关重要的,因为它提供了良好的 initial alignment
。
越小,则对齐性越好。
最后,"delete one word"
提高了对齐性,但在均匀性指标上取得的收益较小,最终表现不如无监督 SimCSE
。
我们已经证明,添加 dropout noise
能够使 positive pair
alignment
。已有工作证明(InferSent
、SBERT
),通过预测两个句子之间的关系是蕴含entailment
、中性neutral
、还是矛盾contradiction
,监督的自然语言推理natural language inference: NLI
数据集对于学习 sentence embedding
是有效的。在我们的对比学习框架中,我们直接从监督的数据集中提取 pair
,并使用它们来优化
标记数据的选择:我们首先探索哪些监督数据集特别适合构建 positive pair
sentence-pair
样本的数据集进行实验,包括:
QQP
:Quora question pairs
。
Flickr30k
:每张图片都有 5
个人类写的 captions
,我们认为同一图片的任何两个 captions
都是 positive pair
。
ParaNMT
:一个大规模的 back-translation paraphrase
数据集。
NLI
:SNLI
和 MNLI
数据集。
我们用不同的数据集训练对比学习模型(即,training pairs
进行了实验(sample
这一列)。整个数据集的实验结果参考 full
这一列。可以看到:在所有的选项中,使用来自 NLI
(SNLI+MNLI
)数据集的 entailment pair
的表现最好。
我们认为这是合理的,因为 NLI
数据集包括高质量的、来自人类标注的 pairs
。另外,人类标注员要根据premises
手动写出 hypotheses
,而且两个句子的 lexical overlap
往往较低。例如,我们发现(SNLI + MNLI
)中的 entailment pair
的 lexical overlap
(两个 bags of words
之间 F1
来衡量)为 39%
,而 QQP
和 ParaNMT
数据集的 lexical overlap
为 60%
和55%
。
Contradiction
作为 hard negatives
:最后,我们进一步利用 NLI
数据集的优势,将其 contradiction pairs
作为 hard negatives
。在 NLI
数据集中,给定一个premise
,标注员需要手动写出一个绝对真实的句子(entailment
),一个可能是真实的句子(neutral
),以及一个绝对错误的句子(contradiction
)。因此,对于每个 premise
和它的 entailment hypothesis
,都有一个伴随的 contradiction hypothesis
(见Figure 1
的例子)。
正式地,我们将 premise,
,entailment hypothesis
和 contradiction hypothesis
。然后,训练目标 mini-batch
的大小):
如 Table 4
(上表)所示,添加 hard negatives
可以进一步提高性能( 84.9 -> 86.2
),这就是我们的 final supervised SimCSE
。
我们还试图加入 ANLI
数据集、或将其与我们的无监督 SimCSE
方法相结合,但没有发现有意义的改进。我们还考虑在监督的SimCSE
中采用双编码器框架,但它损害了性能(86.2 -> 84.2
)。
最近的工作发现了 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
也能缓解各向异性问题。
各向异性问题与均匀性有天然的联系,两者都强调了 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
的渐进可以用以下公式表示(假设
其中:第一项保持positive instances
的相似性,第二项将negative pairs
推开。
当 Jensen
不等式中得出以下公式:
令 sentence embedding matrix
,即
由于我们将 1
,那么 《On the trace and the sum of elements of a matrix》
,如果 top eigenvalue
,并内在地 "flatten"
了 embedding
空间的奇异谱 singular spectrum
。因此,对比学习有望缓解 representation degeneration
问题,提高 sentence embedding
的均匀性。
下图为在不同的 human ratings
分组上, STS-B pairs
的余弦相似度分布(都是正数)。
余弦相似性就是
,就是 的第 行第 列的元素。 human
评分越低,则预期余弦相似性也是更低的(否则说明sentence emebdding
不好)。
我们对 7
个语义文本相似性semantic textual similarity: STS
任务进行了实验。请注意,我们所有的 STS
实验都是完全无监督的,没有使用 STS
训练集。即使是监督的SimCSE
,我们也仅仅是遵从InferSent
,采取额外的标记数据集进行训练。我们还评估了 7
个迁移学习任务。我们与 SBERT
有类似的看法,即 sentence embedding
的主要目标是聚集语义相似的句子,因此将 STS
作为主要结果。
7
个 STS
任务:STS 2012–2016
(这里包含五个, 每一年内一个)、STS Benchmark
、SICK-Relatedness
。
在与以前的工作进行比较时,我们在已发表的论文中找出了无效的比较模式,包括:是否使用额外的回归器、Spearman’s vs Pearson’s correlation
、结果的汇总方式。
额外的回归器:
默认的 SentEval
实现在 STS-B
和 SICKR
的 frozen 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"
。
然而,大多数论文并没有说明他们所采取的方法,这使得公平比较具有挑战性。我们以一些最新的工作为例:SBERT
、BERT-flow
、BERT-whitening
。在下表中,我们将我们的复现结果与 SBERT
和 BERT-whitening
的报告结果进行了比较,发现:SBERT
采取了 "all"
设置,但BERT-flow
和 BERT-whitening
采取了 "wmean"
设置,尽管BERT-flow
声称他们采取的设置与 SBERT
相同。由于 "all"
设置将不同主题的数据融合在一起,使得评价更接近真实世界的场景,除非特别说明,否则我们采取 "all"
设置。
最终,我们的评估中遵循 SBERT
的设置(没有额外的回归器、采用 Spearman
相关系数,以及 "all"
汇总)。
我们在下表中列出了以前一些工作的评估设置。有些设置是由论文报告的,有些是通过比较结果和检查其代码推断出来的。我们可以看到:在不同的论文中,评估协议是非常不一致的。我们呼吁在评估 sentence embedding
时统一设置,以利于未来的研究。我们还将发布我们的评估代码,以提高可复现性。
训练细节:我们从 BERT
或 RoBERTa
的 pre-trained checkpoint
开始,将 [CLS] representation
作为 sentence embedding
(不同池化方法的比较参考消融实验部分)。我们在英语维基百科的 SimCSE
,并在 MNLI
和SNLI
数据集的组合(314k
个样本)上训练有监督的 SimCSE
。
这里的 ”有监督/无监督“ 指的是预训练阶段是否用监督数据来预训练,而不是说
target task
是否用监督数据。
我们用 transformers package
实现 SimCSE
。
对于有监督的 SimCSE
,我们训练我们的模型3
个 epochs
,在STS-B
的验证集上每 250
个训练步来评估模型,并保留最佳 checkpoint
用于在测试集上进行最终的评估。
对于无监督的 SimCSE
,我们做了同样的工作,只是我们对模型训练了一个 epoch
。
注意:在整个过程中,模型没有使用
STS-B
的训练集。
我们在 STS-B
验证集上进行了网格搜索,其中 batch size
搜索范围 {64, 128, 256, 512}
、学习率搜索范围 {1e-5, 3e-5, 5e-5}
,并采用下表中的超参数设置。我们发现:只要相应地调优学习率,SimCSE
对 batch 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
。
最后,我们再引入一个可选的变体,即在 masked language modeling: MLM objective
作为辅助损失:SimCSE
避免对 token-level knowledge
的灾难性遗忘。正如后面实验部分所示,我们发现增加这个 MLM objective
可以帮助提高迁移任务的性能(而不是 sentence-level STS
任务)。
Baseline
方法:我们将无监督的 SimCSE
和有监督的 SimCSE
与在 STS
任务上之前 SOTA
的 sentence embedding
方法进行比较。
无监督 baseline
包括 average GloVe embedding
、average BERT/RoBERTa embedding
,以及后处理方法(如 BERT-flow
和 BERT-whitening
)。
我们还与最近几个使用 contrastive objective
的方法进行了比较,包括:
IS-BERT
:它使全局特征和局部特征之间的 agreement
最大化。
DeCLUTR
:它将同一文件的不同 spans
作为 positive pair
。
CT
:它将来自两个不同编码器的同一句子的 embedding
进行对齐。
其他监督方法包括 InferSent
、Universal Sentence Encoder
和 SBERT/RoBERTa
,它们采用后处理方法(如 BERT-flow
、whitening
、 以及 CT
)。
其中:
对于 average GloVe embedding
、InferSent
、Universal Sentence Encoder
,我们直接报告 SBERT
的结果,因为我们的评估设置与他们相同。
对于 BERT
和 RoBERTa
,我们从 HuggingFace
下载预训练的模型权重,并用我们自己的脚本评估模型。
对于 SBERT
和 SRoBERTa
,我们重新使用原始论文的结果。对于原始论文没有报告的结果,例如 SRoBERTa
在迁移任务上的表现,我们从 SentenceTransformers
下载模型权重并进行评估。
对于 DeCLUTR
和 contrastive tension
,我们在我们的环境中重新评估他们的 checkpoint
。
对于 BERT-flow
,由于他们的原始数字采取了不同的设置,我们使用他们的代码重新训练他们的模型,并使用我们自己的脚本评估模型。
对于 BERT-whitening
,我们按照原始论文中相同的池化方法,即 first-last average pooling
,实现了我们自己版本的 whitening
脚本。我们的实现可以复现原始论文的结果(见 Tabele B.2
)。
对于 BERT-flow
和 BERT-whitening
,它们都有两种后处理的变体:一种是采用 NLI
数据("NLI"
)、另一种是直接学习目标数据集上的 embedding
分布("target"
)。我们发现,在我们的评估环境中,"target"
通常比 "NLI"
差(如下表所示 ),所以我们在主要结果中只报告了"NLI"
变体。
下表显示了 7
项 STS
任务的评估结果。可以看到:无论是否有额外的 NLI
监督,SimCSE
都能在所有的数据集上大幅提高结果,大大超过了以前的 SOTA
模型。具体来说:
我们的无监督 SimCSE-BERT_base
将以前的最佳平均 Spearman
相关系数从 72.05%
提高到 76.25%
,甚至可以与有监督的 baseline
相媲美。
当使用 NLI
数据集时,SimCSE-BERT_base
进一步将SOTA
的结果推到 81.57%
。在 RoBERTa
编码器上的收益更加明显,我们的监督 SimCSE
在 RoBERTa_large
上达到了 83.76%
。
由于以前的工作使用了与我们不同的评估协议,我们在这些设置中进一步评估了我们的模型,以便与公布的数字进行直接比较。我们用 "wmean"
和 Spearman's correlation
来评估 SimCSE
,以直接与BERT-flow
和 BERT-whitening
进行比较,如下表所示。
我们在以下迁移任务中评估我们的模型:MR
、CR
、SUBJ
、MPQA
、SST-2
、TREC
、MRPC
。在不同方法产生的(frozen
的) sentence embedding
的基础上训练一个逻辑回归分类器。我们遵循 SentEval
的默认配置。迁移任务的评估结果如下表所示,可以看到:
有监督的 SimCSE
的表现与以前的方法相当或更好,尽管无监督模型的趋势仍不清楚。
增加 MLM
目标一致地提高迁移任务的性能,证实了我们的直觉,即 sentence-level objective
可能不会直接有利于迁移任务。
与基础模型相比,后处理方法(BERTflow/whitening
)都伤害了性能,表明 representation
的良好的均匀性并不能为迁移学习带来更好的 embedding
。
下表中没有
BERTflow/whitening
的内容,所以结论没有数据支撑?
正如我们前面所论证的,我们认为迁移任务不是 sentence embedding
的主要目标,因此我们把 STS
的结果作为主要比较对象。
我们研究了不同的池化方法、 hard negatives
、归一化、温度、MLM objective
的影响。本节中所有报告的结果都是基于 STS-B
验证集。
池化方法:SBERT
、BERT-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
。
hard negatives
:直观而言,将 hard negatives
(contradiction
样本)与其他 in-batch negatives
区分开来可能是有益的。因此,我们扩展了监督 SimCSE
的 training objective
,以纳入不同 negatives
的权重:
其中:1
,否则等于 0
;
我们用不同的SimCSE
,并在STS-B
的验证集上评估训练好的模型。我们还考虑将neutral
样本作为 hard negatives
(权重固定为 1.0
)。如下表所示,neutral
样本不会带来进一步的收益。
这里有两种
hard
负样本:contradiction
样本、neutral
样本。
归一化和温度:我们分别使用点积和余弦相似性在不同的温度下训练 SimCSE
,并在 STS-B
验证集上评估它们。如下表所示:在精心调整的温度
NA
表示点击相似性;其它列表示余弦相似性。
MLM
辅助任务:最后,我们研究不同 MLM
辅助目标的影响。如下表所示,token-level MLM objective
对迁移任务的平均性能带来适度的改善,但它在 STS-B
任务中带来了持续的下降。
这里我们进行进一步分析,以了解 SimCSE
的内部工作。
uniformity and alignment
:下图显示了不同 sentence embedding
模型的均匀性和对齐性以及它们的平均 STS
结果。一般来说,具有较好对齐性和均匀性的模型能取得较好的性能,证实了 《Understanding contrastive representation learning through alignment and uniformity on the hypersphere》
的发现。我们还观察到:
虽然预训练的 embedding
具有良好的对齐性,但其均匀性较差(即 embedding
是高度各向异性的)。
像 BERT-flow
和 BERT-whitening
这样的后处理方法极大地改善了均匀性,但也遭受了对齐性的退化。
无监督的 SimCSE
有效地改善了预训练的 embedding
的均匀性,同时保持了良好的对齐性。
在 SimCSE
中加入监督数据,进一步改善了对齐性。
定性比较:我们使用 SBERT_base
和 SimCSE-BERT_base
进行了一个小规模的检索实验。我们使用 Flickr30k
数据集中的 150k
个 caption
,并采取任何随机的句子作为query
来检索相似的句子(基于余弦相似度)。如下表中的几个例子所示,与SBERT
检索到的句子相比,SimCSE
检索到的句子质量更高。
奇异值的分布:下图显示了 SimCSE
与其他 baseline
的奇异值分布(sentence embedding
矩阵)。
对于无监督的情况,奇异值下降最快的是普通的 BERT embedding
;对于有监督的情况,奇异值下降最快的是 SBERT embedding
。而 SimCSE
有助于平坦化频谱分布。
基于后处理的方法,如 BERT-flow
或 BERT-whitening
使曲线更加平坦,因为它们直接旨在将 embedding
映射到各向同性分布。
为了直接显示我们的方法在 STS
任务上的优势,我们在下图中说明了具有不同 human ratings
组的 STS-B
的 pair
的余弦相似度分布。可以看到:
与所有的 baseline
模型相比,无监督 SimCSE
和有监督SimCSE
都能更好地区分具有不同程度相似性的 sentence pair
,从而在 STS
任务上有更好的表现。
此外,SimCSE
通常显示出比 BERT
或 SBERT
更分散的分布,但与 whitened distribution
相比,也在语义相似的 sentence pair
上保留了较低的方差。这一观察结果进一步验证了 SimCSE
可以实现更好的 alignment-uniformity balance
。
即,
SimCSE
的分布既不像BERT_base-whitening
一样过于分散、也不像BERT_base
一样过于集中。
最近,像 BERT
这样的预训练语言模型及其变体已被广泛用作自然语言的 representation
。尽管它们通过微调在许多 NLP
任务上取得了巨大的成功,但来自没有微调的 BERT
的 sentence 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
预训练目标与语义相似性任务之间的联系。作者的分析显示,BERT
的 sentence 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》
也发现 BERT
的 word embedding
也受到各向异性的影响。受到这些论文的启发,作者假设,来自 BERT
的 sentence embedding
(作为来自最后几层的 context embedding
的平均值)可能存在类似问题。通过对 embedding
的经验探测,作者进一步观察到,BERT
的 sentence embedding space
在语义上是不平滑的,而且在某些方面被定义得很差,这使得它很难通过简单的相似度量(如点积相似度或余弦相似度)直接使用。
为了解决这些问题,作者提出通过 normalizing flows
将 BERT sentence embedding
分布转化为平滑的和各向同性的高斯分布,这是一个由神经网络参数化的可逆函数。具体来说,该方法学习一个 flow-based generative model
,从而最大化一个似然函数,该似然函数代表通过无监督的方式从标准的高斯潜变量Gaussian latent variable
中生成 BERT sentence embedding
的可能性。在训练过程中,只有 flow network
被优化,而 BERT
参数保持不变。学到的 flow
是 BERT 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
上的相似性,而不是语义相似性。
为了用 BERT
将一个句子编码成一个固定长度的向量,通常做法是在 BERT
的最后几层计算 context embeddings
的平均值,或者在[CLS] token
的位置提取 BERT context embedding
。请注意,在生成 sentence embedding
时没有被掩码的 token
,这与 pretraining
是不同的。
SBERT
证明,这种 BERT sentence embedding
在语义相似度方面落后于 SOTA
的 sentence embedding
。在 STS-B
数据集上,BERT sentence embedding
与 averaged GloVe embedding
相比更没有竞争力,其中 GloVe
是几年前提出的一个简单的、non-contextualized
的baseline
。尽管如此,这种效果差在现有文献中还没有得到很好的理解。
注意,正如SBERT
所证明的那样,averaging context embeddings
一直优于 [CLS] embedding
。因此,除非另有提及,否则我们将 context embeddings
的均值作为 BERT sentence embedding
,并在本文的其余部分中不区分它们。
考虑关于 token
的一个序列 language modeling: LM
以自回归方式来因子化联合概率
为了捕获预训练期间的双向上下文,BERT
提出了一个 masked language modeling: MLM
目标,它因子化了 noisy reconstruction
的概率 token
,当
注意,LM
和 MLM
都可以简化为,建模在给定上下文 token
softmax
函数来描述:
其中:
context embedding
,它是上下文
word embedding
,它是 token
embedding lookup table
来参数化。
注意,虽然
MLM
和LM
的条件分布的形式相同,但是二者的上下文不同:
MLM
的上下文,即被破坏的完整序列,对于任何 都是相同的一个序列。
LM
的上下文,即 时刻之前的序列,对于不同的 为不同的值。
BERT sentence embedding
之间的相似性可以简化为 BERT context embedding
之间的相似性 BERT
的预训练并不明确涉及
作为语义相似性代理的Co-Occurrence
统计:我们不直接分析 context embedding
word embedding
《Breaking the softmax bottleneck : A high-rank rnn language model》
的研究,在一个训练良好的语言模型中,
其中:
point-wise
互信息。
word-specific
项。
context-specific
项。
PMI
刻画了两个事件共同发生的频率,相比比它们独立发生的频率,要高多少。注意,co-occurrence statistics
是以计算的方式处理 "语义" 的典型工具,用于近似 word-level semantic similarity
。因此,大致上说,计算 context embedding
和 word embedding
之间的点积是有语义的。
Higher-Order Co-Occurrence Statistics
作为 Context-Context Semantic Similarity
:在预训练期间,两个上下文
higher-order context-context co-occurrence
也可以在预训练期间被推断和被传播。context embedding
context embedding
context embedding
可以通过高阶共现关系在它们之间形成隐式交互。
正如前面所讨论的,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》
发现,根据最大似然 anisotropic
的词嵌入空间 word embedding space
。 "各向异性" 是指 word embedding
在向量空间中占据一个狭窄的锥体。《How contextual are contextualized word representations? comparing the geometry of bert, elmo, and gpt-2 embeddings》
也观察到这一现象。
此外,我们对学到的各向异性的 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
可以被单词频率带偏。这与 word embedding
在训练过程中起到了连接 context embedding
的作用,因此 context embedding
可能会相应地被单词频率信息所误导,context embedding
保存的语义信息也会被破坏。
即,单词频率会影响
word embedding
进而影响context embedding
。
观察二:Low-Frequency Words Disperse Sparsely
:我们观察到,在学到的各向异性的 embedding
空间中,高频词集中在一起,而低频词则分散开。这一观察是通过计算 word emebdding
与它们的 k
近邻的平均 L2
距离实现的。在下表的下半部分,我们观察到,与高频词的 embedding
相比,低频词的 embedding
往往离其 k-NN
邻居更远。这表明,低频词往往是稀疏分散的。
由于稀疏性,在 embedding
空间中的低频单词的 embedding
周围可能会形成许多 "洞",在这些洞里的语义可能不好定义。注意,BERT sentence embedding
是通过对 context embeddings
取平均产生的,这是一个保凸的操作。然而,这些洞违反了 embedding
空间的凸性。这是 representation learining
中的一个常见问题。因此,所得到的 sentence embedding
可以位于定义不明确的区域,并且诱导的相似性也会有问题。
为了验证前面提出的假设,并避免 BERT sentence embedding
的无效,我们提出了一种称为 BERT-flow
的校准方法。该方法利用了从 BERT embedding space
到标准高斯潜在空间 Gaussian latent space
的可逆映射,如下图所示。可逆性条件保证了 embedding
空间和数据实例之间的互信息不会改变。
动机:标准的高斯潜在空间可能具有有利的特性,可以帮助我们解决问题:
与观察一的联系:
首先,标准高斯分布满足各向同性。标准高斯分布的概率密度不随角度的变化而变化。如果标准高斯的样本的 L2
范数被归一化,这些样本可以被看作是均匀分布在一个单位球体上。
我们还可以从奇异谱 singular spectrum
的角度来理解各向同性。如上所述, embedding
空间的各向异性源于词频的不均衡性。在传统 word embedding
的文献中,《All-but-the-top: Simple and effective postprocessing for word representations》
发现,dominating singular vectors
可能与词频高度相关,从而误导mislead
了 embedding
空间。通过拟合一个映射,该映射是各向同性分布的,embedding
空间的奇异谱可以被拉平。通过这种方式,与词频相关的奇异值方向,也就是dominating singular vectors
,可以被抑制。
与观察二的联系:
其次,高斯分布的概率密度在整个实空间上定义良好,这意味着没有 "洞" 的区域。高斯先验对于缓解 "洞" 的问题,已经在现有的 deep latent variable models
的文献中被广泛观察到。
Flow-based Generative Model
:flow-based generative model
(《Normalizing flows: Introduction and ideas》
)建立了一个从潜空间 observed space
其中:
根据 change-of-variables
定理,可观察到的 probabilistic density function: PDF
为:
在我们的方法中,我们通过最大化从标准高斯潜变量生成 BERT sentence embedding
的可能性来学习 flow-based generative model
。换句话说,base
分布 BERT sentence embedding
视为被观测空间
其中:
请注意,在训练期间,只有flow
参数被优化,而BERT
参数保持不变。最终,我们学习了一个可逆的映射函数 BERT sentence embedding
latent Gaussian representation
可逆映射 Glow
的设计(《Glow: Generative flow with invertible 1x1 convolutions》
)。Glow
模型是由多个可逆变换堆叠而成,即 actnorm
、可逆1 * 1
卷积、以及 affine coupling layer
。 我们通过用 additive coupling
取代 affine coupling
来简化模型,以降低模型的复杂性,并用 random permutation
取代可逆1 * 1
卷积,从而避免数值误差。
具体而言,flow-based model
由一组堆叠的可逆变换层所组成,即 additive coupling layer
,公式为:
其中:
如果仅仅只是简单地堆叠多层 additive coupling layer
,可以发现每一层输出的前
additive coupling layer
的逆变换
论文的核心在于这个
flow-based model
,网络结构(多少层、有没有batch normalization
等等)没有说明。网络优化的目标函数也没有说明。
在整个实验中,我们采用 BERT
的官方 Tensorflow
代码作为我们的 codebase
。请注意,我们将最大的序列长度改为 64
,以减少对 GPU
内存的消耗。对于 siamese BERT
的 NLI finetuning
,我们遵循 SBERT
中的设置(epochs=1
、学习率为 3e-5
、以及 batch size =16
)。我们的结果可能与他们公布的结果不同。作者在 https://github.com/UKPLab/sentence-transformers/issues/50
中提到,这是一个常见的现象,可能与随机数种子有关。请注意,他们的实现依赖于 Huggingface
的 Transformers repository
。这也可能导致具体结果之间的差异。
我们对 flow
的实现是由 GLOW
的官方 repository
以及 Tensor2tensor
库的实现而改编的。我们的flow
模型的超参数在下表中给出。在target
数据集上,我们以 1e-3
的学习率对 flow
参数学习一个 epoch
;在NLI
数据集上,我们以 2e-5
的学习率对 flow
参数学习 0.15
个 epoch
。优化器是 Adam
。
在我们对 STS-B
的初步实验中,我们在 STS-B
的数据集上调优超参数。从经验上看,与 learning schedule
相比,架构超参数对性能的影响不大。之后,我们在其他数据集上工作时不再调优超参数。根据经验,我们发现 flow
的超参数在不同的数据集上并不敏感。
数据集:STS benchmark (STS-B)
、SICK-Relatedness (SICK-R)
、STS tasks 2012 - 2016
等七个数据集。
我们通过 SentEval
工具包获得所有这些数据集。这些数据集为每个 sentence pair
提供了 0 ~ 5
之间的细粒度的 gold standard semantic similarity
。
评估程序:我们遵循先前工作中的程序,如用于 STS
任务的 SBERT
。预测相似性包括两个步骤:
首先,我们用一个句子编码器为每个句子获得 sentence embedding
。
然后,我们计算 input sentence pair
的两个 embedding
之间的余弦相似度,作为我们的模型预测的相似度。
报告中的数字是 predicted similarity
和 gold standard similarity
之间的 Spearman
相关系数,这与 SBERT
中的方法相同。
配置:我们在实验中同时考虑 BERT_base
和 BERT_large
。具体来说,我们使用最后一层或两层的 BERT context embeddings
的平均池化作为 sentence embedding
,这种方式的性能优于 [CLS] embedding
。有趣的是,我们的初步探索表明,与仅对最后一层进行平均池化相比,对 BERT
的最后两层进行平均池化(用 -last2avg
表示)一直产生更好的结果。因此,在评估我们自己的方法时,我们选择 -last2avg
作为默认配置。
在我们的方法中,flow-based objective
被最大化,并且 BERT
参数保持不变而仅更新 invertible mapping
。flow model
默认是通过完整的目标数据集(train + validation + test
)学习的。我们将这种配置记做 flow (target)
。请注意,虽然我们使用了整个目标数据集的句子,但学习 flow
并不使用任何标签进行训练,因此它是对 BERT sentence embedding space
的一个纯粹的无监督校准。
我们还测试了在 SNLI
和 MNLI
的 concatenation
上学到的flow-based model
,以进行比较(flow (NLI)
)。concatenated NLI
数据集包括大量的 sentence pair
(SNLI 570K + MNLI 433K
)。注意,"flow (NLI)"
不需要任何监督标签。当在 NLI
语料库上拟合 flow
时,我们只使用原始句子而不是 entailment label
。flow (NLI) setting
背后的一个直觉是,与Wikipedia
的句子(BERT
在其上进行了预训练)相比,NLI
和 STS
的原始句子都更简单、更短。这意味着 NLI-STS
的差异可能比 Wikipedia-STS
的差异相对要小。
我们在两种情况下进行了实验:
当外部标记数据不可用时。这是一个自然的设置,我们用无监督的目标来学习 flow
参数(即,BERT
参数是不变的。我们将这种方式称作 BERT-flow
。
我们首先在 SNLI+MNLI
文本对应分类任务上以 siamese
方式微调 BERT
(SBERT
)。对于 BERT-flow
,我们进一步学习 flow
参数。这种设置是为了与利用 NLI
监督的 SOTA
结果进行比较(SBERT
)。我们将这两个不同的模型分别表示为 BERT-NLI
和 BERT-NLI-flow
。
不使用 NLI
监督的结果如下表所示:
原始的 BERT sentence embedding
(采用 BERT_base
和 BERT_large
)未能超过 averaged GloVe embedding
。
对 BERT
模型的最后两层进行平均池化可以一致地改善结果。
仅仅采用
last2avg
就能大幅提升效果!
对于 BERT_base
和 BERT_large
,我们提出的 flow-based
方法(BERT-flow (target)
)可以进一步提高性能,分别平均提高 5.88
个点和 8.16
个点。
对于大多数数据集来说,在目标数据集上学习 flow
导致了比在NLI
上学习 flow
带来更大的性能提升。
唯一的例外是 SICK-R
,在 NLI
上训练flow
的效果更好。我们认为这是因为 SICK-R
是同时为 entailment
和 relatedness
而收集的。由于 SNLI
和 MNLI
也被收集用于 textual entailment
评估,SICK-R
和 NNLI
之间的分布差异可能相对较小。另外,由于 NLI
数据集的规模更大,所以在NNLI
上学习 flow
的性能更强也就不奇怪了。
使用 NLI
监督的结果如下表所示:与之前完全无监督的结果类似,我们来自可逆变换的各向同性 embedding
空间在大多数情况下能够持续改善 SBERT
基线,并以很大的幅度超过了SOTA
的 SBERT/SRoBERTa
结果。
随机种子的鲁棒性分析:我们在 STS-B
上用不同的随机种子进行了 5
次实验,在 NLI
监督的设置下。下表显示了带有标准差和中位数的结果。尽管 NLI finetuning
的方差不可忽略,但我们提出的 flow-based
的方法始终能带来改进。
除了语义文本相似性任务外,我们还研究了我们的方法在无监督的 question-answer entailment
上的有效性。我们使用Question Natural Language Inference: QNLI
数据集,这是一个包含110K
个 question-answer pair
的数据集,其中 5K+
个 pair
用于测试集。QNLI
从 SQUAD
中抽取问题及其相应的上下文句子,并将每个 pair
标注为 entailment
或 no entailment
。在本文中,我们进一步将 QNLI
调整为一个无监督的任务。一个问题和一个答案之间的相似性可以通过计算它们的 sentence embedding
的余弦相似度来预测。我们将 entailment
视为 1
,no entailment
视为 0
,并用 AUC
来评估方法的性能。
如下表所示,我们的方法在 QNLI
的验证集上一致地提高了 AUC
。同时,与在 NLI
上学习的 flow
相比,在 target
数据集上学习 flow
可以产生更好的结果。
在传统的 word embedding
的文献中,《A simple but tough-to-beat baseline for sentence embeddings》
和 《All-but-the-top: Simple and effective postprocessing for word representations》
也发现了 embedding
空间的各向异性现象,他们提供了几种方法来鼓励各向同性 isotropy
:
Standard Normalization: SN
:在这个想法中,我们通过计算 sentence embedding
的均值 embedding
进行简单的后处理,并通过 embedding
归一化。
Nulling Away Top-k Singular Vectors: NATSV
:《All-but-the-top: Simple and effective postprocessing for word representations》
发现,通过平均池化传统 word embedding
从而得到的 sentence embedding
往往有一个快速衰减的奇异谱。他们声称,通过将 top -k
个奇异向量 singular vectors
归零,可以避免 embedding
的各向异性,实现更好的语义相似性表现。
我们在 STS-B
数据集上与这些 embedding calibration
方法进行比较,结果如下表所示:
SN
有助于提高性能,但它落后于 NATSV
。这意味着 standard normalization
不能从根本上消除各向异性。通过结合这两种方法,并在验证集上仔细调优
我们的方法仍然产生了更好的结果。我们认为,NATSV
可以帮助消除各向异性,但它也可能丢弃 nulled vectors
中的一些有用信息。相反,我们的方法直接学习了一个可逆映射到各向同性的潜在空间,而没有丢弃任何信息。
除了语义相似性 semantic similarity
,我们还进一步研究了由不同 sentence embedding
方法诱导的词汇相似性 lexical similarity
。具体来说,我们使用编辑距离 edit distance
作为一对句子之间词汇相似性的衡量标准,并关注句子相似性(BERT sentence embedding
的余弦相似性)和编辑距离之间的相关性。在由许多 sentence pair
组成的数据集中,我们计算了语义相似性和编辑距离之间的 Spearman
相关系数 Spearman
相关系数。我们在 STS-B
数据集上进行实验,并将人类标注的 gold similarity
纳入该分析。
BERT-Induced Similarity
与 Lexical Similarity
过度相关:下表显示,BERT
诱导的相似性与编辑距离之间的相关性非常强( gold standard labels
与编辑距离的相关性小得多( Figure 2
中也可以观察到。特别是,对于编辑距离为 sentence pair
(用绿色突出显示),BERT
诱导的相似性与编辑距离极为相关。
Lexical Similarity
由编辑距离来衡量,刻画了两个句子在word-level
上的相似性,而不是语义相似性。
然而,gold standard
语义相似度与编辑距离的相关性并不明显。换句话说,经常出现这样的情况:通过修改一个词,一个句子的语义就会发生巨大的变化。"I like this restaurant"
和 "I dislike this restaurant"
这两个句子只相差一个词,但表达的语义是相反的。在这种情况下,BERT embedding
可能会失败。因此,我们认为,BERT sentence embedding
的 lexical proximity
过高,会破坏其诱导的语义相似性。
Flow-Induced Similarity
与 Lexical Similarity
表现出较低的相关性:通过将原始的 BERT sentence embedding
转化到学到的各向同性的潜在空间,embedding-induced similarity
不仅与gold standard
的语义相似性更加一致,而且与 lexical similarity
的相关性也更低,如下表的最后一行所示。这一现象在编辑距离 Figure 2
中以绿色标示)。这表明我们提出的 flow-based
的方法可以有效地抑制 lexical similarity
对 embedding
空间的过度影响。
sentence embedding
已被证明不能很好地捕获句子的基本语义,因为之前的工作表明,word representations of all words
都不是各向同性isotropic
的:它们在方向上不是均匀分布的。相反,它们在向量空间中占据一个狭窄的锥体,因此是各向异性anisotropic
的。
《How contextual are contextualized word representations? comparing the geometry of BERT, ELMo, and GPT-2 embeddings》
已经证明,来自 pre-trained model
的 contextual word embeddings
是如此的各向异性,任何两个 word embedding
的余弦相似度平均为 0.99
。
BERT-Flow
进一步调查发现,BERT sentence embedding
空间存在两个问题,即 word frequency biases the embedding space
、以及低频词稀疏地分散开,这为直接使用 BERT sentence embedding
来计算相似度带来了困难。
为了解决上述问题,《How contextual are contextualized word representations? comparing the geometry of BERT, ELMo, and GPT-2 embeddings》
阐述了导致各向异性问题的理论原因,这个原因在预训练的模型中观察到。《Representation degeneration problem in training natural language generation models》
设计了一种新的方法,通过正则化 word embedding matrix
来缓解 degeneration
问题。最近提出的 BERT-flow
通过 normalizing flow
将 BERT sentence embedding distribution
转化为平滑的、各向同性的高斯分布,这是一个由神经网络参数化的可逆函数。
在论文 《Whitening Sentence Representations for Better Semantics and Faster Retrieval》
中,作者没有像以前的尝试那样设计一个复杂的方法,而是发现一个简单而有效的后处理技术,白化 whitening
,足以解决 sentence embedding
的各向异性问题。具体而言,作者将sentence vectors
的平均值转化为 0
、将协方差矩阵转化为单位矩阵。此外,论文还引入了降维策略,以促进白化操作,进一步提高效果。
在 7
个标准的语义文本相似性 benchmark
数据集上的实验结果表明,论文的方法可以普遍提高模型性能,并在大多数数据集上达到SOTA
的效果。同时,通过加入降维操作,论文的方法可以进一步提高模型性能,并自然地优化内存存储、加快检索速度。
论文贡献如下:
论文探讨了 BERT-based sentence embedding
在相似性匹配任务中表现不佳的原因,即它不在标准正交基 standard orthogonal basis
上。
论文提出了一种后处理方法,白化,将 BERT-based sentence embedding
转化为标准正交基,同时降维。
在七个语义文本相似性任务上的实验结果表明,论文的方法不仅可以显著提高模型性能,而且还可以减少向量的维度。
相关工作:
在特定的 NLP
上下文中,已经出现了关于解决各向异性问题的早期尝试。
《A simple but tough-to-beat baseline for sentence embeddings》
首先为整个 semantic textual similarity dataset
计算 sentence representation
,然后从这些 sentence representation
中提取 top direction
,最后将 sentence representation
投射到 top direction
之外(即,仅保留 tail direction
)。通过这样做, top direction
将固有地编码整个数据集的 common information
。
《All-but-the-top: Simple and effective postprocessing for word representations》
提出了一种后处理操作:在具有正值和负值的 dense low-dimensional representation
上,他们从 word vectors
中消除了 common mean vector
、和一些 top dominating directions
,这样就使处理后的representation
更加强大。
《Representation degeneration problem in training natural language generation models》
提出了一种新颖的正则化方法来解决在训练自然语言生成模型中的各向异性问题。他们设计了一种新颖的方法,通过正则化 word embedding matrix
来缓解 degeneration
问题。由于观察到 word embedding
被局限在一个狭窄的锥体中,所提出的方法直接增加了锥体的孔径大小,这可以简单地通过降低 individual word embedding
之间的相似度来实现。
《How contextual are contextualized word representations? comparing the geometry of BERT, ELMo, and GPT-2 embeddings》
研究了 contextual contextualized word representation
的内在机制。他们发现,ELMo
、BERT
和GPT-2
的 upper layers
比 lower layers
产生更加 context-specific
的representation
。 这种 context-specificity
的增加总是伴随着各向异性的增加。
《On the sentence embeddings from pre-trained language models》
提出了 BERT-flow
,它通过用无监督目标学到的 normalizing flow
将各向异性的 sentence embedding distribution
转变为平滑的、各向同性的高斯分布。
谈到 SOTA
的 sentence embedding
方法,以前的工作发现 SNLI
数据集适合训练 sentence embedding
。
《Learning semantic textual similarity from conversations》
提出了一种使用 siamese DAN network
和 siamese transformer network
对来自 Reddit
的对话进行训练的方法,该方法在 STS benchmark
数据集上取得了良好效果。
《Universal sentence encoder》
提出了一个所谓的 Universal Sentence Encoder
,它训练了一个transformer
网络,并通过在SNLI
数据集上的训练来 augment
无监督学习。
在预训练方法的时代,《Real-time inference in multi-sentence tasks with deep pretrained transformers》
解决了来自 BERT
的 cross-encoder
的运行时间开销,并提出了一种方法(poly-encoders
),利用注意力计算 context vectors
和预先计算的 candidate embeddings
之间的分数。
《SBERT: Sentence embeddings using Siamese BERT networks》
是对 pretrained BERT network
的修改,使用 siamese network
和 triplet network
结构来推导出有语义的 sentence embedding
,可以使用 sentence embedding
的余弦相似度来计算句子之间的相似性。
通常我们计算 sentence embedding
的余弦相似度,从而衡量句子之间的相似性。一个问题是:余弦相似度对输入向量做了什么假设?换句话说,什么前提条件适合用余弦相似度进行比较?
我们通过研究余弦相似度的几何原理来回答这个问题。给定两个向量
然而,只有当坐标基为标准正交基时,上式才成立。BERT-Flow
验证了 BERT sentence embedding
已经包含了足够的语义,尽管它没有被正确利用。在这种情况下,如果根据上式来计算语义相似性的余弦值时,sentence embedding
表现不佳,原因可能是 sentence vector
所属的坐标基不是标准正交基。从统计学的角度来看,我们可以推断,当我们为一组向量选择 basis
时,应该保证每个基向量都是独立的、统一的。如果这组基是标准正交基,那么相应的一组向量就应该显示出各向同性。
总而言之,上述启发式假设阐述了:如果一组向量满足各向同性,我们可以认为它是由标准正交基派生出来的,其中也表明我们可以通过上述公式计算余弦相似度。否则,如果它是各向异性的,我们需要对 sentence embedding
进行转换,以强制其成为各向异性,然后使用上述公式来计算余弦相似性。
BERT-Whitening
认为各向同性问题并不是embedding
向量带来的,而是空间的基向量带来的(基向量不是标准正交基)。
Whitening Transformation
:BERT-flow
通过采用flow-based
的方法来解决上述假设。我们发现,利用机器学习中普遍采用的白化操作,也可以取得相当的收益。
众所周知,关于标准正态分布的均值为零、协方差矩阵为单位矩阵。因此,我们的目标是将sentence vector
的平均值转换成 0
、将协方差矩阵转换成单位矩阵。假设我们有一组 sentence embedding
sentence embedding
满足均值为零、协方差矩阵为单位矩阵:
该变换实际上对应于机器学习中的白化 whitening
操作,其中
注意,这里的向量为 ”行向量“。
最困难的部分是求解矩阵
变换之后的协方差矩阵为
因此,协方差矩阵是一个正定对称矩阵,满足如下形式的 SVD
分解:
其中:
正交矩阵:各行是单位矩阵且两两正交;各列是单位矩阵且两两正交,即
。
令
。
降维:众所周知,对角矩阵 sentence vector
被嵌入到一个较低维度的空间中。这样可以使余弦相似度的结果更加合理,并自然地加快向量检索的速度,因为检索速度与向量维度成正比。
事实上,从奇异值分解得出的对角矩阵 top k
列就可以达到这种降维效果,这在理论上等同于主成分分析 Principal Component Analysis: PCA
。这里,Whitening-k
。
Whitening-k Workflow
算法:
输入:已有的 embedding
集合
输出:转换后的 embedding
算法步骤:
根据
对 SVD
分解,从而得到
计算
对每个
该算法只能作为后处理从而优化现有
sentence embedding
集合,无法处理unseen
的sentence embedding
。这是因为SVD
作用在现有的sentence embedding
集合所对应的均值、协方差矩阵上。
BERT-Flow
可以作用到unseen
的sentence embedding
上,因为BERT-Flow
学习的是embedding
空间到高斯空间的一个可逆映射。
计算复杂度:均值
因此,计算
由于
,通常是一个很小的规模,因此对它进行 SVD
分解的时间复杂度几乎可以忽略不计。
为了我们的方法的有效性,我们提出了在多种配置下与语义文本相似性(semantic textual similarity: STS
)任务相关的各种任务的实验结果。
数据集:类似于 SBERT
,我们在没有任何 specific training data
的情况下,将模型性能与 STS
任务的 baseline
进行比较。评估的数据集包括:STS 2012-2016 tasks
、STS benchmark
、SICK-Relatedness dataset
一共七个数据集。对于每个sentence pair
,这些数据集提供了一个标准的语义相似度指标,范围从 0
到 5
。
我们采用 sentence embeddings
的余弦相似度和 gold labels
之间的 Spearman’s rank correlation
,因为 SBERT
认为它是 STS
任务中最合理的指标。评估过程与 BERT-flow
保持一致:我们首先将每个原始句子文本编码为sentence embedding
,然后计算 input sentence embedding pairs
之间的余弦相似度来作为我们预测的相似度分数。
baseline
:
无监督的 STS
:
Avg. GloVe embeddings
:采用 GloVe
作为 sentence embedding
。
Avg. BERT embeddings
和 BERT CLS-vector
:使用原始 BERT embedding
的均值、或者 CLS-token
的 output
。
监督的 STS
:
USE
:Universal Sentence Encoder
,其中用 Transformer
取代了 LSTM
。
SBERT-NLI
和 SRoBERTa-NLI
:在 NLI
组合数据集(包含 SNLI
和 MNLI
)上用 SBERT
训练方法来训练的 BERT
和 RoBERTa
。
实验配置:由于 BERTflow( NLI/target)
是我们要比较的主要 baseline
,所以我们基本上与他们的实验配置和符号保持一致。具体来说:
我们在实验中也同时使用 BERT_base
和 BERT_large
。
我们选择-first-last-avg
作为我们的默认配置,因为与只对最后一层取平均相比,对 BERT
的第一层和最后一层取平均可以稳定地实现更好的性能。
我们利用完整的target
数据集(包括训练集、验证集和测试集中的所有句子,但不包括所有标签)来计算白化参数 -whitening(target)
。
此外,-whitening(NLI)
表示白化参数是在NLI
语料库中获得的。 -whitening-256(target/NLI)
和 -whitening-384(target/NLI)
表示通过我们的白化方法,输出的embedding size
分别(从 768
维)降维到 256
和 384
。
实验中发现:降维之后的效果可能更好。
没有 NLI
监督的结果如下表所示:
虽然没有
NLI
监督信息,但是仍然有NLI
的样本数据(而没有label
)。
原始的 BERT sentence embedding
和 GloVe sentence embedding
毫无悬念地获得了最差的性能。
在BERT_base
下,我们的方法(具有 256
维的 sentence embedding
)一直优于BERT-flow
,并在 STS-B, STS-12, STS-13, STS-14, STS-15
数据集上分别达到了 SOTA
效果。
在 BERT_large
下,如果将 sentence embedding
的维度设置为 384
,就会取得更好的结果。与 BERT-flow
相比,我们的方法在大多数数据集上仍然获得了有竞争力的结果,并在 STS-B, STS-13, STS-14
数据集上达到了 SOTA
效果。
有 NLI
监督的结果如下表所示,其中 SBERT_base
和 SBERT_large
是通过 SBERT
中的方法在有监督标签的 NLI
数据集上训练的。
我们的 SBERT_base-whitening
在 STS-13, STS-14, STS-15, STS-16
任务上的表现优于 BERT_base-flow
。
我们的 SBERT_large-whitening
在 STS-B, STS-14, STS-15, STS-16
任务上的表现优于 BERT_large-flow
。
这些实验结果表明,我们的白化方法可以进一步提高 SBERT
的性能,尽管它是在 NLI
数据集的监督下训练的。
维度 Spearman
相关系数与维度 BERT_base embedding
和 BERT_large embedding
下模型性能的变化曲线。对于大多数任务来说,将 sentence vector
的维度降维到三分之一是一个相对最优的解决方案。
在 Table 1
的 SICK-R
结果中,虽然我们的 BERT_base-whitening-256(NLI)
不如 BERT_base-flow(NLI)
有效,但我们的模型有竞争优势,即 embedding size
较小( 256 vs. 768
)。
此外,如 Figure 1(a)
所示,当 embedding size
设置为109
时,我们的 BERT_base-whitening(NLI)
的相关性得分提高到了 66.52
,比 BERT_base-flow(NLI)
高出了 1.08
个点。
此外,其他任务也可以通过谨慎选择
传统的 word embedding
是静态的,每个单词都有单个 embedding
向量,与上下文无关。这带来了几个问题,最明显的是,一个多义词的所有意义都必须共享相同的representation
。最近的工作,即 deep neural language model
(如 ELMo
和 BERT
),已经成功地创建了 contextualized word representation
,word vector
对它们所处在的context
敏感。用 contextualized representation
取代 static embedding
,在一系列不同的 NLP
任务中产生了显著的改善,包括从问答任务到共指消解co-reference resolution
任务。
contextualized word representation
的成功表明,尽管只用语言建模任务进行训练,但它们学到了高度transferable
的、task-agnostic
的语言属性。事实上,在 frozen contextualized representation
上训练的线性模型可以预测单词的语言属性linguistic property
(例如,part-of-speech tag
),几乎与 SOTA
模型一样好。尽管如此,这些 representation
仍然没有得到很好的理解:
首先,这些contextualized word representation
到底有多么的 contextual
?
其次,BERT
和 ELMo
是否有无限多的 context-specific representation
可以分配给每个单词,还是说单词基本上是分配到有限数量的 word-sense representation
中的一个?
论文 《How Contextual are Contextualized Word Representations? Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings》
通过研究 ELMo
、BERT
和 GPT-2
的每一层的 representation space
的 geometry
来回答这个问题。论文的分析产生了一些令人惊讶的发现:
在所有三个模型的所有层中,所有单词的 contextualized word representation
都不是各向同性isotropic
的:它们在方向上不是均匀分布的。相反,它们是各向异性anisotropic
的,在向量空间中占据一个狭窄的锥体。GPT-2
最后一层的各向异性是如此的极端,以至于两个随机的单词平均而言会有几乎完美的余弦相似性!鉴于各向同性对 static embedding
有理论上的和经验上的好处(《All-but-the-top: Simple and effective postprocessing for word representations》
),contextualized representation
中各向异性的程度令人惊讶。
即,
contextualized work embedding
的各向异性。
同一单词在不同 context
中的出现具有 non-identical vector representations
。在向量相似性被定义为余弦相似性的情况下,同一单词的不同 representations
之间在上层中的不相似性更大。这表明,就像 LSTM
的上层产生更加 task-specific
的 representation
一样(《Linguistic knowledge and transferability of contextual representations》
),contextualizing model
的上层产生更加 context-specific
的 representation
。
即,不同层的
contextualization
程度不同,更高层产生更加contextualized
的embedding
。
context-specificity
在ELMo
、BERT
和 GPT-2
中表现得非常不同:
在ELMo
中,随着上层的context-specificity
增加,同一句子中的单词的 representation
越来越相似。
在 BERT
中,同一句子中的单词的 representation
在上层变得更加不相似,但平均而言仍然比随机采样的单词更加相似。
然而在GPT-2
中,同一句子中的单词的 representation
,并不比两个随机采样的单词更加相似。
即,同一个句子中的不同单词,在
ELMo
的更高层中越来越相似、在BERT
的更高层中更加不相似(但是比随机的单词更相似)、在GPT-2
中与随机单词的相似性差不多。
在对各向异性的影响进行调整后,平均来说,一个单词的contextualized representation
中只有不到 5%
的方差可以由其第一主成分解释 first principal component
。这一点在所有模型的所有 layer
上都成立。这表明:contextualized representation
并不对应于有限数量的 word-sense representation
,即使在最好的情况下,static embedding
也只是contextualized embedding
的糟糕的替代物。尽管如此,通过提取一个单词的contextualized representation
的 first principal component
而创建的 static embedding
在许多 word vector benchmark
上超越了 GloVe embedding
和 FastText embedding
。
这些洞察有助于证明为什么使用 contextualized representation
能在许多 NLP
任务中带来如此显著的改进。
相关工作:
Static Word Embedding
:Skip-gram with negative sampling: SGNS
和 GloVe
是生成 static word embedding
的最著名的模型之一。虽然在实践中它们迭代式地学习 embedding
,但已经理论上证明,它们都隐式地分解了一个 word-context matrix
,该矩阵包含 co-occurrence statistic
。static word embedding
的一个显著问题是,由于它们为每个单词创建了一个单一的 representation
,所以一个多义词的所有意义必须共享单个向量。
Contextualized Word Representation
:鉴于 static word embedding
的局限性,最近的工作试图创建 context-sensitive word representation
。ELMo, BERT, GPT-2
是深度神经语言模型,它们经过微调从而应用于广泛的下游 NLP
任务。它们的内部 word representation
被称作 contextualized word representation
,因为 word representation
是整个输入句子的一个函数。 这种方法的成功表明,这些 representation
捕获了语言的高度可迁移transferable
的、和任务无关 task-agnostic
的属性。
ELMo
通过拼接一个双层 biLSTM
的 internal states
,从而创建每个 token
的 contextualized representation
。这个双层 biLSTM
在双向语言建模任务上训练。
相比之下,BERT
和 GPT-2
分别是双向的和单向的 transformer-based
的语言模型。12
层的 BERT (base, cased)
和 12
层的 GPT-2
的每个 transformer layer
通过关注输入句子的不同部分来创建每个 token
的 contextualized representation
。
Probing Task
:之前对 contextualized word representation
的分析主要限于 probing task
。这涉及到训练线性模型来预测单词的句法(例如,part-of-speech tag
)和语义(例如,word relation
)属性。probing
模型的前提是,如果一个简单的线性模型可以被训练来准确预测语言属性,那么 representation
需要隐式地编码这一信息。然而这些分析发现,contextualized representation
编码了语义信息和句法信息,但它们无法回答这些representation
有多么地 contextual
,以及它们在多大程度上可以被 static word embedding
所取代。因此,我们在本文中的工作与大多数对 contextualized representation
的剖析明显不同。它更类似于 《The strange geometry of skip-gram with negative sampling》
,后者研究了 static word embedding space
的几何特性。
Contextualizing Model
:我们研究的 contextualizing model
是 ELMo
、BERT
和 GPT-2
。我们选择 BERT_base
,因为它在层数和维度方面与 GPT-2
最具可比性。所有模型都是在各自的语言建模任务中预训练过的。
尽管 ELMo
、BERT
和 GPT-2
分别有 2
、12
和12
个隐藏层,但我们也将每个 contextualizing model
的输入层作为其第 0
层。这是因为第 0
层不是 contextualized
的,使其成为比较后续层所做的 contextualization
的有用 baseline
。
数据:为了分析 contextualized word representation
,我们需要 input sentence
来馈入我们的 pretrained model
。我们的输入数据来自 2012-2016
年的 SemEval
语义文本相似性任务。我们使用这些数据集是因为它们包含了一些句子,在这些句子中出现了相同的单词但是具有不同的 context
。例如,单词 "dog"
出现在 "A panda dog is running on the road."
和 "A dog is trying to get bacon off his back."
。如果一个模型在这两个句子中为"dog"
生成了相同的 representation
,我们可以推断出没有 contextualization
;反之,如果生成了不同的 representation
,我们可以推断出它们在某种程度上被 contextualized
。
相同的单词出现在不同的
context
中,那么该单词如果具有不同的embedding
,则表示没有contextualized
。
利用这些数据集,我们将单词映射到它们出现的 sentence list
、以及它们在这些句子中出现的索引。在我们的分析中,我们不考虑那些出现在少于 5
个 unique context
中的单词。
衡量 Contextuality
:我们用三个不同的指标来衡量一个 word representation
的 contextual
程度:自相似性 self-similarity
、句内相似性 intra-sentence similarity
、最大可解释方差 maximum explainable variance
。
自相似性:令单词 word representation
。单词 layer
换句话说,一个单词 unique context
中的 contextualized representation
的平均余弦相似度。
如果第 representation
进行 contextualize
,那么 representation
在所有 contexts
中都是相同的)。
对于 representation
越 contextualized
,我们期望它的自相似性就越低。
这里有个前提条件:单词的
context
之间是均匀分布的(而不是集中在某些context
上)。
句内相似性:令 layer
换句话说,一个句子的句内相似性是其 word representation
和 sentence vector
之间的平均余弦相似度,而 sentence vector
只是这些 word vector
的平均值。
如果 contextualize
单词:给每个单词一个 context-specific representation
,并且同一个句子中的不同 word
具有不同的 word representation
。
如果 word
的 representation
之间区别很小,同一个句子中的单词仅仅是通过使其在向量空间中的 representation
收敛到一个很小的区域从而实现 contextualization
。
最大可解释方差:令 occurrence matrix
,representation
维度。令 singular value
。那么最大可解释方差被定义为:
contextualized representation
中可由其第一主成分解释的方差比例。它为我们提供了一个关于 word static embedding
可以在多大程度上取代 word contextualized representation
的上限。
0
,static embedding
的 replacement
就越差。
1
,那么 static embedding
将是 contextualized representation
的完美替代。
针对各向异性 Anisotropy
做调整:在讨论 contextuality
时,考虑各向同性isotropy
是很重要的。例如:
如果 word vector
是完全各向同性的(即方向均匀),那么 representation
被很差地 contextualized
。
然而,考虑到这样的情况,即 word vector
是如此的各向异性,任何两个单词的平均余弦相似度为 0.99
。此时 representation
被很好地 contextualized
。这是因为 context
中的 representation
平均而言比两个随机选择的单词更加不相似。
为了调整各向异性的影响,我们使用了三个 anisotropic baseline
,每个 baseline
对应于我们的一个 contextuality
指标。
对于自相似性和句内相似性,baseline
来自均匀随机采样的单词在不同 context
下的 representation
的平均余弦相似度。在一个给定的层中,word representation
的各向异性越大,这个 baseline
就越接近于 1
。
均匀随机采样了两个单词,然后计算它们之间的
embedding
的余弦相似度。采样多次并计算期望值。
对于最大可解释方差,baseline
是均匀随机采样的 word representation
中被其第一主成分解释的方差比例。在一个给定的层中,,word representation
的各向异性越大,这个 baseline
就越接近于 1
。即使是随机采样的单词,主成分也能解释很大一部分的方差。
均匀随机采样了一个
word
集合,然后计算它们的embedding
矩阵的第一主成分。采样多次并计算期望值。
由于 contextuality
指标是针对 contextualizing model
的每一层计算的,所以我们也为每一层计算单独的 baseline
。然后我们从每个指标值中减去其各自的 baseline
,得到 anisotropy-adjusted contexuality
指标。例如,anisotropy-adjusted
的自相似性为:
其中:word occurrence
的集合。
除非另有说明,本文其余部分中提到的 contextuality
指标是指 anisotropy-adjusted
的指标,其中原始指标和基线都是用 1K
个均匀随机采样的 word representation
估计的。
(An)Isotropy
:
在所有 non-input layers
中,contextualized representation
是各向异性 anisotropic
的。
如果来自某一层的 word representation
是各向同性 isotropic
的(即各方向均匀),那么均匀随机采样的单词之间的平均余弦相似度将是 0
(《A simple but tough-to-beat baseline for sentence embeddings》
)。 这个平均余弦相似度越接近于 1
,表示各向异性越大。
各向异性的几何解释是:
word representation
都在向量空间中占据一个狭窄的锥体,而不是在所有方向上都是均匀的。
各向异性越大,这个锥体就越窄(《The strange geometry of skip-gram with negative sampling》
)。
如下图所示,这意味着在 BERT
、ELMo
和GPT-2
的几乎所有层中,所有单词的 representation
都在向量空间中占据一个狭窄的锥体。唯一的例外是 ELMo
的 input layer
,它产生 static character-level embedding
,而不使用 contextual
信息甚至 positional
信息(《Deep contextualized word representations》
)。
然而,应该注意的是,并非所有的 static embedding
都一定是各向同性的:《The strange geometry of skip-gram with negative sampling》
发现,同样是 static
的 skipgram embedding
并不是各向同性的。
contextualized representation
通常在较高的层中更加各向异性。
如下图所示,对于 GPT-2
,均匀随机的单词之间的平均余弦相似度在第 2
层到第 8
层大致为 0.6
,但从第 8
层到第 12
层呈指数级增长。事实上,GPT-2
的最后一层的 word representation
是如此的各向异性,以至于任何两个单词的平均余弦相似度几乎都是 1.0
。
这种模式也适用于 BERT
和 ELMo
,不过也有例外:例如,BERT
的倒数第二层的各向异性比最后一层高得多。
对于static word embedding
,各向同性有理论上的和经验上的好处。
在理论上,各向同性允许在训练期间进行更强的 "self-normalization"
(《A simple but tough-to-beat baseline for sentence embeddings》
)。
而在实践中,从 static word embedding
中减去 mean vector
会导致在几个下游 NLP
任务上的改进(《All-but-the-top: Simple and effective postprocessing for word representations》
)。
因此,在contextualized word representation
中看到的极端程度的各向异性是令人惊讶的,特别是在较高的层。如下图所示,对于所有三个模型,contextualized hidden layer representation
几乎都比 input layer representation
更加各向异性,而后者没有纳入 context
。这表明高度的各向异性是 contextualization
过程所固有的,或者至少是 contextualization
过程的副产品。
Context-Specificity
:
contextualized word representation
在更高的 layer
上更加 context-specific
。
根据定义,在一个给定模型的给定层中,一个单词的 self-similarity
是它在不同 context
中的 representations
的平均余弦相似度(根据各向异性进行调整)。
如果 self-similarity
为 1
,那么这些 representations
就完全没有 context-specific
。
如果 self-similarity
为 0
,那么这些 representations
就具有最大的 context-specific
。
在下图中,我们绘制了 BERT
、ELMo
和GPT-2
各层中均匀随机采样的单词的平均 self-similarity
。例如,ELMo
的 input layer
的自相似度是1.0
,因为该层的 representation
是 static character-level embedding
。
在所有三个模型中,layer
越高,平均 self-similarity
越低。换句话说,layer
越高,contextualized representation
更加 context-specific
。这一发现具有直观的意义。在图像分类模型中,lower layer
识别更多的通用特征(如,边缘),而upper layer
识别更加 class-specific
的特征(《How transferable are features in deep neural networks?》
)。同样,在 NLP
任务上训练的 LSTM
的 upper layer
会学习更加 task-specific
的representation
(《Linguistic knowledge and transferability of contextual representations》
)。因此,由此可见,神经语言模型的 upper layer
会学习更加 context-specific
的 representation
,从而更准确地在给定 context
的条件下预测 next word
。
在所有三个模型中,GPT-2
的 representation
是最context-specific
的,GPT-2
最后一层的 representation
几乎是最大化地 context-specific
的。
停用词 stopword
(如,"the", "of", "to"
)具有最 context-specific
的representation
。
在所有的层中,stopwords
的self-similarity
是所有单词中最低的,这意味着它们的 contextualized representation
是最 context-specific
的。例如,在 ELMo
的各层中,平均 self-similarity
最低的单词是 "and"
、"of"
、"’s"
、"the"
、"to"
。鉴于这些词不是多义词,这相对来说是令人惊讶的。这一发现表明:一个单词所出现的各种 context
的 variety
,而不是其固有的多义性,是推动其 contextualized representation
的 variation
的原因。这回答了我们在 introduction
章节中提出的一个问题:ELMo
、BERT
和 GPT-2
并不是简单地将有限数量的 word-sense representation
中的一个分配给每个单词;否则,在具有如此少的 word sense
的单词的 representation
中就不会有如此多的变化。
context-specificity
在 ELMo
、BERT
和 GPT-2
中的表现非常不同。
如前所述,在 ELMo
、BERT
和 GPT-2
的 upper layers
,contextualized representation
更加 context-specific
。然而,这种 increased context-specificity
在向量空间中是如何体现的?同一句子中的 word representation
是否会收敛到一个点上,或者它们在与其他context
中的 representation
不同的同时,仍然保持着彼此之间的不同?为了回答这个问题,我们可以度量一个句子的句内相似度。
从定义可以看出,在给定模型的给定层中,一个句子的句内相似性是其每个 word representation
与它们的均值之间的平均余弦相似度,并根据各向异性进行调整。如下图所示,我们绘制了 500
个均匀随机采样的句子的平均句内相似度。
在 ELMo
中,同一句子中的单词在 upper layers
的相似度更高:随着句子中的 word representation
在 upper layers
变得更加 context-specific
,句内相似度也在上升。 这表明,在实践中,ELMo
最终将 《A synopsis of linguistic theory》
的分布假说背后的直觉延伸到了 sentence level
:因为同一句子中的单词共享相同的 context
,它们的 contextualized representation
也应该是相似的。
在 BERT
中,同一句子中的单词在 upper layers
中彼此更加不相似:随着句子中的单词的representation
在 upper layers
中变得更加 context-specific
,它们彼此渐行渐远,尽管也有例外(见下图中第 12
层)。然而,在所有层中,同一句子中的单词的平均相似性仍然大于随机选择的单词的平均相似性(即 anisotropy baseline
)。这表明,与 ELMo
相比,BERT
有一个更细微的 contextualization
,它认识到,虽然周围的句子告知了一个单词的含义,但同一句子中的两个单词不一定有相似的含义。
在 GPT-2
中,同一句子中的 word representation
并不比随机采样的单词更相似:平均而言,未调整的句内相似度与 anisotropy baseline
大致相同,因此从下图中可以看出,在 GPT-2
的大多数层中,anisotropy-adjusted
的句内相似度接近于 0
。事实上,句内相似度在 input layer
中是最高的,该层完全不对单词进行 contextualize
。这与 ELMo
和BERT
形成了鲜明的对比,ELMo
和 BERT
在除了一个层之外的所有其他层的平均句内相似度都高于 0.20
。
正如前面讨论 BERT
时指出的,这种行为仍然具有直观的意义:同一个句子中的两个单词不一定有相似的含义,即使它们共享相同的 context
。GPT-2
的成功表明,高的句内相似性并不是 contextualization
所固有的。同一句子中的不同单词可以有高度contextualized
的 representation
,而这些 representation
并不比两个随机的 word representation
更相似。然而,目前还不清楚这些句内相似性的差异是否可以追溯到模型结构的差异,我们把这个问题留给未来的工作。
高度的各向异性是
contextualization
过程所固有的。
Static vs. Contextualized
:
平均来说,一个单词的 contextualized representation
中只有不到 5%
的方差可以被 static embedding
所解释。
从定义可以看出,对于给定模型的给定层,一个单词的最大可解释方差(maximum explainable variance: MEV
)是其 contextualized representation
中可由其第一主成分解释的方差的比例。这为我们提供了一个关于 static embedding
能多好地取代一个单词的 contextualized representation
的上限。 因为 contextualized representation
是各向异性的,所有单词的大部分变化都可以由单个向量来解释。我们对原始 MEV
针对各向异性进行调整:计算均匀随机采样的 word representation
的第一主成分所解释的方差比例,然后从原始 MEV
中减去这一比例。在下图中,我们绘制了均匀随机采样的单词上的平均 anisotropy-adjusted MEV
。
随机采样一个单词,然后计算该单词在指定层上的
MEV
。然后重复这一过程多次,得到平均MEV
。
平均而言,在 ELMo
、BERT
或 GPT-2
中,没有任何一层可以通过 static embedding
来解释超过 5%
的 word contextualized representation
方差。虽然在下图不可见,但许多单词的原始 MEV
实际上低于 anisotropy baseline
:也就是说,与单个单词的所有 representation
的方差相比,所有单词的 representation
的方差有更大的比例可以由单个向量来解释。注意,5%
的阈值代表了最好的情况,而且在理论上不能保证 word vector
会与最大化 MEV
的 static embedding
相似。
单个单词的所有
representation
的方差:一个单词在指定层的MEV
;所有单词的representation
的方差:所有单词在指定层的MEV
。
这表明,contextualizing model
并不是简单地将有限数量的 word-sense representation
中的一个分配给每个单词,否则,被解释的方差的比例会高得多。 ELMo
和 BERT
的所有层的平均原始 MEV
甚至低于 5%
。只有 GPT-2
的原始 MEV
相对较大,由于极高的各向异性,第 2
至 11
层的平均 MEV
约为 30%
。
lower layers
的 contextualized representation
的主成分在许多 benchmark
上优于 GloVe
和 FastText
。
如前所述,我们可以通过在给定层中抽取其 contextualized representation
的第一个主成分(principal component: PC
)来为每个单词创建 static embedding
。在下表中,我们绘制了这些 PC static embedding
在几个 benchmark
任务中的表现。这些任务包括语义相似性semantic similarity
、analogy solving
、concept categorization
:Sim-Lex999
、MEN
、WS353
、RW
、SemEval-2012
、Google analogy solving
、MSR analogy solving
、BLESS
、AP
。我们在下表中不考虑第 3 ~ 10
层,因为它们的性能介于第 2
层和第 11
层之间。
表现最好的 PC static embedding
属于 BERT
的第一层,尽管 BERT
和 ELMo
的其他层的 embedding
在大多数 benchmark
上也优于 GloVe
和 FastText
。
对于所有三个 contextualizing model
,从 lower layer
创建的 PC static embedding
比从 upper layer
创建的更有效。
使用 GPT-2
创建的 static embedding
也明显比来自 ELMo
和 BERT
的 static embedding
表现更差。
GPT-2
创建的 static embedding
甚至要比 GloVe
和 FastText
更差。
鉴于 upper layer
比 lower layer
更加 context-specific
,而且 GPT-2
的 representation
比 ELMo
和 BERT
的更加 context-specific
(见 Figure 2
),这表明高度 context-specific
的 representation
的 PC static embedding
在传统 benchmark
上不那么有效。那些 less context-specific representation
(如,来自 BERT
第一层的 representation
)派生的 PC static embedding
,则要有效得多。
未来工作:
首先,正如本文前面所指出的,《All-but-the-top: Simple and effective postprocessing for word representations》
发现,使 static embedding
更加各向同性(通过从每个 embedding
中减去其均值),导致下游任务的性能有惊人的改善。鉴于各向同性对 static embedding
有好处,它也可能对 contextualized word representation
有好处,尽管后者在高度各向异性的情况下已经取得了明显的改善。因此,在 language modelling objective
中加入各向异性的惩罚可能会产生更好的结果,如鼓励 contextualized representation
更加各向同性。
另一个方向是从 contextualized word representation
中生成 static word representation
。虽然后者提供了卓越的性能,但在生产中部署像 BERT
这样的大型模型,在内存和运行时间方面往往存在挑战。相比之下, static word representation
更容易部署。我们的工作表明,不仅有可能从 contextualizing model
中提取 static representation
,而且与传统的 static embedding
(如 GloVe
和 FastText
)相比,这些 extracted vector
往往在各种任务中表现得更好。
在推断期间:
static embedding
执行的是lookup operation
,因此速度更快;而contextualized embedding
执行的是前向传播,因此速度很慢。
大规模的 pretrained language representation model
(如 BERT, GPT, BART
等),在各种自然语言处理任务中取得了卓越的性能,如文本生成、阅读理解、文本分类等任务。这些模型的架构大多基于 Transformer
,它使用自注意力来捕获 token
之间的长距离依赖关系。Transformer
编码器或解码器通过自监督任务在大规模文本语料库上进行预训练,这些自监督任务包括:预测 masked token
(BERT
),生成 future token
(GPT
),恢复 corrupted token
(BART
)等等。在这些工作中,要预测的 target
大多是在 word level
。因此,sentence level
的全局语义可能没有被充分捕获。
为了解决这个问题,论文 《CERT: Contrastive Self-supervised Learning for Language Understanding》
提出了 CERT:Contrastive self-supervised Encoder Representations from Transformers
,它使用 contrastive self-supervised learning: CSSL
来学习 sentence-level representation
。
最近,CSSL
在以无监督的方式学习 visual representation
方面显示出很好的效果。CSSL
的关键思想是:创建原始样本的 augmentation
,然后通过预测两个augmentation
是否来自同一个原始数据样本来学习 representation
。CERT
使用 back-translation
(《Understanding back-translation at scale》
)创建句子的增强 augmentation
,然后通过预测两个 augmentation
是否来自同一个原始句子来微调 pretrained language representation model
(例如 BERT, BART
)。现有的预训练方法在 token
上定义 prediction task
。相反,CERT
在 sentence
上定义 prediction task
,这可以推测在 sentence level
更好地捕获全局语义。
CERT
使用 back-translation
来对句子执行 augmentation
。给定源语言 source language
CERT
使用 target language
augmentation
。不同目标语言的翻译模型被用来创建同一个源句的不同的 augmentation
。
要求有合适的翻译模型,并且翻译模型的质量会影响
CERT
的效果。
给定 augmented sentences
,Momentum Contrast: MoCo
方法(《Momentum contrastfor unsupervised visual representation learning》
)被用来执行 CSSL
。MoCo
维护一个关于 augmented sentences
(称作 keys
)的队列,该队列使用带有动量更新的 pretrained text-encoder
(例如 BERT
)进行编码。给定一个 augmented sentence
(称为 query
),通过 BERT
(或任何其他pretrained text-encoder
)来计算 query encoding
与队列中每个 key embedding
之间的相似性分数。如果 query
和 key
是同一个原始句子的 augmentation
,则它们被标记为 positive pair
,否则被标记为 negative pair
。这些二元标签和相似性分数被用来计算 contrastive loss
。pretrained text encoder
的权重是通过最小化 contrastive loss
来进一步预训练的。为了在下游任务上应用 pretrained CERT model
,CERT
使用下游任务的输入数据和标签对 CERT
的权重进行微调。
也可以用
in-batch
负样本来代替这里的MoCo
方法。
CERT
是一个灵活的模块,可以与任何 pretrained language representation model
集成,如 BERT, BART, ERNIE 2.0, T5
等。作者在 GLUE benchmark
中的 11
个自然语言理解任务上评估了 CERT
,其中 CERT
在 7
个任务上优于 BERT
,在 2
个任务上达到与BERT
相同的性能,而在 2
个任务上表现比 BERT
差。在 11
项任务的平均得分上,CERT
优于 BERT
。这些结果表明,通过捕获 sentence-level
的语义,针对 language representation
的 contrastive self-supervised learning
的有效性。
论文贡献:
提出了 CERT
,一种基于 contrastive self-supervised learning
的新的 language representation pretraining
方法。CERT
是在 sentence level
定义了 predictive task
,因此预计可以更好地捕获 sentence-level
的语义。
在 GLUE benchmark
的 11
个自然语言理解任务上对 CERT
进行了评估,CERT
在 11
个任务的平均得分上优于 BERT
。
进行了消融研究,以研究 CERT
的性能如何受到 sentence augmentation
方法和预训练语料源的影响。
CERT
是针对sentence embedding
的一系列对比学习方法中的一种。这些对比学习方法的核心在于:如何创建augumentation
、对比学习的负样本。
相关工作:
针对 learning language representation
的 pretraining
:最近,在大规模文本语料库上进行 language representation learning
的预训练已经取得了实质性的成功。
GPT
模型是一个基于 Transformer
的语言模型( language model: LM
)。Transformer
定义了在给定 input sequence
的条件下得到 output sequence
的条件概率。与 Transformer
不同,GPT
定义了在单个 output sequence
上的边际概率。在 GPT
中,给定历史序列的条件下,next token
的条件概率是通过 Transformer decoder
来定义的。权重参数是通过最大化 token
序列的可能性来学习的。
GPT-2
是 GPT
的扩展,它对 GPT
进行了修改,将 layer normalization
作用到每个 sub-block
的输入,并在 final self-attention block
后增加一个 additional layer normalization
。Byte pair encoding: BPE
被用来表示 token
的输入序列。
BERT-GPT
是一个用于 sequence-to-sequence modeling
的模型,其中 pretrained BERT
被用来编码输入文本,pretrained GPT
被用来生成输出文本。在 BERT-GPT
中,BERT encoder
和 GPT decoder
的预训练是单独进行的,这可能导致性能下降。
Auto-Regressive Transformer BART
具有与 BERT-GPT
类似的架构,但对 BERT encoder
和 GPT decoder
进行联合训练。为了预训练 BART
权重,输入文本被随机破坏,如 token masking
、token deletion
、文本填充等,然后学习网络以重建原始文本。
ALBERT
使用parameter-reduction
方法来减少内存消耗并提高 BERT
的训练速度。它还引入了自监督损失用于建模句子间的一致性 inter-sentence coherence
。
RoBERTa
是一项关于 BERT
预训练的复现研究。它表明,通过仔细调优训练过程,BERT
的性能可以得到显著的改善,如:用更多的数据、更大的 batch size
、更长的训练时间;移除 next sentence prediction objective
;在更长的序列上训练。等等。
XLNet
通过对 factorization order
的所有排列的 expected likelihood
的最大化,从而来学习 bi-directional context
,并使用广义自回归预训练机制 generalized autoregressive pretraining mechanism
来克服 BERT
的 pretrain-finetune discrepancy
。
T5
比较了各种语言理解任务的预训练目标、架构、未标记数据集、transfer
方法,并提出了一个统一的框架,将这些任务转换为一个 text-to-text
的任务。统一的模型在一个大型的 Colossal Clean Crawled Corpus: C4
上进行训练,然后被迁移到各种各样的下游任务中。
ERNIE 2.0
提出了一个 continual pretraining framework
,该框架通过持续的多任务学习来建立和学习 incrementally pretraining task
,以捕获训练语料中的词法信息、句法信息、以及语义信息。
Contrastive Self-supervised learning
:Contrastive self-supervised learning
最近引起了很多研究兴趣。
《Data-efficient image recognition with contrastive predictive coding》
研究了基于 contrastive predictive coding
的 data-efficient
的图像识别,它通过使用强大的自回归模型在潜在空间中预测未来。
《Curl: Contrastive unsupervised representations for reinforcement learning》
提出了为强化学习来学习 contrastive unsupervised representation
。
《Supervised contrastive learning》
研究了 supervised contrastive learning
,其中属于同一类别的数据点的 cluster
在 embedding
空间中被拉到一起,而来自不同类别的数据点的 cluster
被推开。
《Contrastive self-supervised learning for commonsense reasoning》
提出了一种用于常识推理的 contrastive self-supervised learning
的方法。
《Sample-effcient deep learning for covid-19 diagnosis based on ct scans》
提出了一种 Self-Trans
方法,该方法在通过 transfer learning
从而在 pretrained network
之上应用 contrastive self-supervised learning
。
针对 pretraining language representation
模型的最近的工作中,大多数工作都是基于 Transformer
架构。例如,BERT
预训练 Transformer encoder
、GPT
预训练 Transformer decoder
、BART
联合预训练 Transformer encoder
和 Transformer decoder
。
Transformer
:Transformer
是一个用于序列到序列(sequence-to-sequence: seq2seq
)建模的 encode-decoder
架构。
基于递归神经网络的 seq2seq
模型(如 LSTM
、GRU
)通过递归方式对 token
序列进行建模,因此计算效率低。Transformer
不同,它摒弃了递归计算,转而使用自注意力,这不仅可以捕获到 token
之间的依赖性,而且还能高效地并行计算。自注意力计算每一对token
之间的相关性,并通过对 token embedding
进行加权求和从而使用这些相关性得分来创建 "attentive" representation
。
BERT
:BERT
的目的是学习一个用于表示文本的 Transformer encoder
。BERT
的模型架构是一个多层双向 Transformer encoder
。在 BERT
中,Transformer
使用双向的自注意力。为了训练编码器,BERT
随机掩码了一定比例的 input token
,然后预测这些 masked token
。
为了将 pretrained BERT
应用于下游任务,如句子分类,可以在BERT
架构的基础上增加一个附加层,并使用目标任务中的标记数据训练这个newly-added layer
。
Contrastive Self-supervised Learning
:自监督学习(Self-supervised learning: SSL
)是一种学习范式,旨在不使用人类提供的标签来捕获输入数据的内在模式和固有属性。自监督学习的基本思想是完全基于输入数据本身构建一些辅助任务(而不使用人类标注的标签),并迫使网络通过很好地执行辅助任务来学习有意义的 representation
,如旋转预测rotation prediction
、图像绘画 image inpainting
、自动着色automatic colorization
、上下文预测context prediction
等等。
自监督学习中的辅助任务可以使用许多不同的机制来构建。最近,一种对比性机制获得了越来越多的关注,并在一些研究中展示了有希望的结果。对比性自监督学习的基本思想是:生成原始数据样本的augmented
样本,创建一个预测任务,目标是预测两个 augmented
样本是否来自同一个原始数据样本,并通过解决这个任务来学习 representation network
。
人们已经提出了不同的方法来实现对比性自监督学习。在为图像数据设计的 SimCLR
中,给定输入图像,对这些图像应用随机数据增强。如果两张augmented
图像是由相同的原始图像创建的,它们就被标记为相似;否则,它们就被标记为不相似。然后 SimCLR
学习一个网络来拟合这些相似/不相似的二元标签。该网络由两个模块组成:
一个是特征提取模块 latent representation
另一个是多层感知机 latent representation
给定一对相似的图像 contrastive loss
可以被定义为:
其中:cosine
相似度;
SimCLR
通过最小化这种损失来学习网络权重。训练结束后,特征提取模块
这里要求
非常简单,从而迫使 学到有意义的特征。
虽然 SimCLR
很容易实现,但它需要一个大的 mini-batch size
来产生良好的效果,这在计算上是难以实现的。MoCo
通过使用一个独立于 mini-batch size
的队列来解决这个问题。这个队列包含一个动态的、augmented
样本集合(称为 keys
)。在每次迭代中,最新的 mini-batch
样本被添加到队列中;同时,最旧的 mini-batch
样本被从队列中删除。通过这种方式,队列与 mini-batch size
是解耦的。如下图所示。
keys
是用 momentum encoder
编码的。给出当前 mini-batch
中的一个 augmented
样本(称为 query
)、以及队列中的一个 key
,如果它们来自同一图像,则被认为是 positive pair
,否则就是 negative pair
。MoCo
计算 query encoding
和每个key encoding
之间的相似性得分。contrastive loss
是在相似度的得分和二元标签上定义的。
CERT
:CERT
采用 pretrained language representation model
(如 BERT
),并在目标任务的输入数据上使用 contrastive self-supervised learning
对其进行微调。下图展示了 CERT
的工作流程。为了便于演示,我们使用 BERT
作为 pretrained language representation model
。
给定来自源任务的大规模输入文本(没有标签),首先在这些文本上预训练一个 BERT
模型。
注意,源任务的大规模输入文本没有使用对比学习,而是用
BERT
的原始优化目标来训练。
然后,我们使用 contrastive self-supervised learning
在目标任务的输入文本(无标签)上继续训练这个 pretrained BERT model
。我们把这个模型称为pretrained CERT model
。
只有目标任务的输入文本才使用对比学习。
然后,我们使用目标任务中的输入文本及其标签对 CERT
模型进行微调,得到执行目标任务的最终模型。
目标任务的输入文本被使用两次:一次是无监督的对比学习、一次是有监督的目标任务。
在contrastive self-supervised learning
训练中,CERT
使用 back-translation
对目标任务中的原始句子进行增强:如果两个 augmented sentences
是由同一个原始句子创建的,则被认为是 positive pair
,否则就是 negative pair
。augmented sentences
用 BERT
编码,并计算一对句子在 BERT encoding
上的相似性得分。contrastive loss
是根据二元标签和相似性得分来确定的。然后,通过最小化 contrastive loss
来进一步微调 pretrained BERT encoder
。
我们使用 MoCo
来实现contrastive self-supervised learning
,以避免使用大型的 mini-batch
(大型的 mini-batch
导致计算量太大)。
数据增强:下图展示了基于 back-translation
的数据增强的工作流程。对于目标任务中的每个输入句子 back-translation
对其进行增强。在不失一般性的情况下,我们假设目标任务中的语言是英语。
我们使用 English-to-German
机器翻译模型将 German-to-English
机器翻译模型将 augmented sentence
。
同样地,我们使用一个 English-to-Chinese
机器翻译模型和一个 Chinese-to-English
机器翻译模型来获得另一个 augmented sentence
我们使用 《Massive exploration of neural machine translation architectures》
中开发的机器翻译模型用于 back-translation
。
仅对目标任务的输入文本进行数据增强。
CSSL Pretraining
:我们使用 MoCo
来实现 CSSL
。给定两个 augmented sentences
,如果它们源自同一个原始句子,它们就被标记为 positive pair
;如果它们来自不同的句子,它们就被标记为 negative pair
。我们使用一个队列来维护一个 augmented sentence
集合 keys
。给定当前 mini-batch
中的一个 augmented sentence
query
),我们将它与队列中的每个 key
进行比较。
query
用 pretrained BERT model
key
用 pretrained BERT model
key
模型
query
模型的权重 通过随机梯度下降来更新。之所以二者更新方式不同,是因为需要确 key
队列的变化比较缓慢。
在不失一般性的情况下,我们假设队列中有单个 key
positive pair
。contrastive loss
定义为:
其中:
query BERT encoder
的权重是通过最小化该损失来进行微调的。请注意,在这个步骤中,只使用目标任务的输入句子,而不需要这些句子的标签。为了将 pretrained CERT model
应用于下游任务,我们进一步在目标任务中的输入句子及其标签上微调模型权重。
未来工作:我们计划研究更具挑战性的自监督学习的损失函数。我们有兴趣研究一种 ranking-based loss,
,即每个句子都被增强了 ranked list
的句子,这些augmented
句子与原句的差异越来越小。辅助任务是预测给定的 augmented
句子的排序。预测排序可能比 CSSL
中的二分类更具挑战性,并可能有助于学到更好的 representation
。
另外,是否考虑对源任务的输入文本也执行对比学习?
评估任务:General Language Understanding Evaluation: GLUE
基准,包含 11
个任务。我们通过向 GLUE
评估服务器提交推理结果来获得测试集的性能。数据集如下表所示。
实验配置:
在MoCo
中,队列的大小被设置为 96606
。 MoCo
更新 key encoder
的动量系数为 m = 0.999
。
contrastive loss
中的温度超参数为
使用 multi-layer perceptron head
。
对于 MoCo training
,使用带动量的随机梯度下降优化器。mini-batch size = 16
。初始学习率为 4e-5
,并使用余弦调度器。epoch
数量为 100
。权重衰减系数为 1e-5
。
对于 GLUE
任务上的微调,最大序列长度被设置为 128
,mini-batch size = 16
。
学习率设置:CoLA, MNLI, STS-B
为 3e-5
、 RTE, QNLI, MRPC, SST-2, WNLI
为 2e-5
、QQP
为 1e-5
。
训练 epoch
数量:CoLA
为 20
、RTE, WNLI, QQP
为 5
、QNLI, MNLI
为 3
、MRPC
为 15
、SST-2
为 4
、STS-B
为 10
。
验证集上的评估结果:GLUE
任务中,验证集效果如下表所示。遵从 ALBERT
,我们对微调进行了 5
次随机重启,并报告了这 5
次运行中的中位数和最佳性能。由于 5
次重启的随机性,我们的中位数性能与 ALBERT
报告的不一致。但一般来说,它们是接近的。可以看到:
就中位数性能而言,我们提出的 CERT
在 5
个任务上优于 BERT
,包括 CoLA, RTE, QNLI, SST-2, QQP
;在其他 5
个任务中,CERT
与 BERT
持平。这证明了 CERT
在通过 contrastive self-supervised learning
来学习更好的 language representation
方面的有效性。
其次,就最佳性能而言,CERT
在 7
个任务上的表现优于 BERT
,包括CoLA, RTE, QNLI, STS-B, MNLI-m, MNLI-mm, QQP
。CERT
在 MRPC
和 WNLI
上与 BERT
持平。CERT
在 SST-2
上的表现不如 BERT
好。这些结果进一步证明了 CERT
的有效性。
第三,在训练数据较少的任务(如 CoLA
和 RTE
)上,CERT
比BERT
的改进更为显著。一个可能的原因是,小规模的训练数据更容易过拟合,这使得 CSSL
预训练的必要性更加突出。
第四,在 CoLA
和 RTE
这样的小规模数据集上,CERT
获得了更大的提升。这表明,在解决训练数据量有限的低资源 NLP
任务方面,CERT
很有前途。
为了方便读者,我们还展示了 SOTA
的预训练方法的结果,包括XLNet, RoBERTa, ERNIE 2.0, ALBERT
。CERT
在 CoLA
上取得了接近 XLNet
的性能,对计算资源的消耗要低得多,而且文本语料库也小得多。XLNet, RoBERTa, ERNIE 2.0, ALBERT
是在数百到数千台 GPU
机器上训练数天的,而 CERT
是使用单个 GPU
训练十几个小时的。此外,这些模型是在几十或几百 GB
的文本上训练的,而 CERT
只在大约 400KB
的文本上训练。CERT
也可以建立在这些 pretrained model
之上,这将留待将来研究。
测试集上的评估结果:GLUE
任务中,测试集效果如下表所示。可以看到:
在 11
个任务中,CERT
在 7
个任务上的表现优于 BERT
,包括 RTE, QNLI, STS-B, MRPC, MNLI-m, MNLI-mm, QQP
。CERT
在 WNLI
和 AX
上实现了与 BERT
相同的性能,在 CoLA
和 SST-2
上表现比 BERT
更差。CERT
取得了 80.7
的平均分,比BERT
好。总的来说,CERT
的表现比BERT
好,这进一步证明了 contrastive self-supervised learning
是一种学习更好的language representation
的有效方法。
虽然 CERT
在 CoLA
的验证集上取得了比 BERT
好得多的性能,但在 CoLA
的测试集上比BERT
更差。这可能是因为 CoLA
的测试集和验证集有很大的 domain difference
。
下表还列出了其他 SOTA
方法的性能。下一步,我们计划用 XLNet, ERNIE2, T5, RoBERTa, ALBERT
取代 CERT
中基于 BERT
的 sentence encoder
,看看 CSSL
预训练是否能提高这些编码器的性能。
CERT
在预训练、微调之外,还增加了一个对比学习任务,这使得CERT
比BERT
训练了更多的数据。这其实是一种不太公平的比较。应该让BERT
在目标任务的输入文本(不包含标签)上继续预训练,使得BERT
和CERT
训练的数据量相同。
Data Augmentation
的消融研究:CERT
的一个关键要素是创建 augmented sentence
。默认情况下,我们使用 back-translation
来进行数据增强。研究其他的数据增强方法也是很有趣的。我们将 back-translation
与最近提出的文本增强方法 Easy Data Augmentation: EDA
(《Eda: Easy data augmentation techniques for boosting performance on text classification tasks》
)进行比较。给定训练集中的一个句子,EDA
随机选择并执行以下操作之一:同义词替换、随机插入、随机互换、随机删除。
下表显示了 CERT
在 CoLA
和 RTE
任务上分别使用 back-translation
和 EDA
进行增强的结果。可以看到:总的来说, back-translation
取得了比 EDA
更好的结果,只是 back-translation
在 STS-B
上的中位数性能比 EDA
低0.1%
。
back-translation
效果更好的原因可能是:
back-translation
在 sentence level
上进行全局地增强(整个句子被来回地翻译),而 EDA
在 word/phrase level
上进行局部地增强。因此, back-translation
可以更好地捕获句子的全局语义,而 EDA
则是捕获局部语义。
另一个原因可能是:通过 back-translation
增强的句子与原始句子有更大的差异。相比之下,由 EDA
增强的句子与原始句子很接近,因为 EDA
对原始句子进行了局部编辑,并保持了句子的大部分内容不受影响。因此,预测两个通过 back-translation
增强的句子是否来自同一个原句,要比预测那些通过 EDA
增强的句子更难。解决一个更具挑战性的 CSSL
任务通常会带来更好的 representation
。
CSSL Pretraining Corpora
的消融研究:另一个有趣的研究点是应该使用什么语料来训练 CSSL
。在 CERT
中,默认情况下,我们使用目标任务的训练数据(不包括标签)用于 CSSL
。我们与以下设置进行比较:我们从 BERT
的训练语料库中随机抽取
下表显示了在 CoLA
和 STS-B
上的表现,CSSL
在不同的语料库上进行了预训练。
在 CoLA
任务中,当使用 CoLA
的训练数据时,可以获得更好的性能。
在 STS-B
任务中,当使用 BERT
预训练语料库时,取得了更好的性能。
从这项研究中,我们并没有得出哪种方法更好的明确结论。在实践中,尝试这两种方法并找出哪种方法更有效,可能是有用的。