一段时间以来,NLP
中的迁移学习仅限于 pretrained word embedding
。最近的工作表明,使用 pretrained sentence embedding
有很强的 transfer task
性能。这些固定长度的向量(通常被称为 "universal" sentence embedding
),通常在大型语料库中学习,然后迁移到各种下游任务中,如聚类(如主题建模)和检索(如语义搜索)。事实上,sentence embedding
已经成为一个重点领域,许多有监督的、半监督的、无监督的方法已经被提出。然而,性能最高的解决方案需要标记数据,限制了它们的实用性。因此,缩小无unsupervised universal sentence embedding
和 supervised universal sentence embedding
方法之间的性能差距是一个重要目标。
transformer-based
语言模型的预训练已经成为从未标记语料中学习 textual representation
的主要方法。这一成功主要是由masked language modelling: MLM
推动的。这种自监督的 token-level objective
要求模型从输入序列中预测一些 randomly masked token
。
除了 MLM
之外,其中一些模型还有机制用于通过自监督来学习 sentence-level embedding
。
在 BERT
中,一个 special classification token
被前置到每个输入序列中,其 representation
被用于二分类任务,以预测一个textual segment
是否在训练语料库中跟随另一个textual segment
。该任务被称作 Next Sentence Prediction: NSP
。然而,最近的工作对 NSP
的有效性提出了质疑。在 RoBERTa
中,作者证明了在预训练期间去除NSP
会导致下游 sentence-level task
(包括语义文本相似性和自然语言推理)的性能不变甚至略有提高。
在 ALBERT
中,作者假设 NSP
混淆了主题预测 topic prediction
和连贯性预测 coherence prediction
,而提出了一个Sentence-Order Prediction: SOP objective
,表明它能更好地建模句子间的连贯性。
在初步评估中,论文 《DeCLUTR: Deep Contrastive Learning for Unsupervised Textual Representations》
发现这两个 objective
都不能产生良好的universal sentence embedding
。因此,作者提出了一个简单而有效的自监督的 sentence-level objective
,其灵感来自于 metric learning
的最新进展。
metric learning
是一种 representation learning
,旨在学习一个 embedding space
,其中相似数据的 vector representation
被映射在一起,反之亦然。在计算机视觉中,deep metric learning: DML
已被广泛用于学习 visual representation
。一般来说,DML
的方法如下:
一个 "pretext"
任务(通常是自监督的)被精心设计,并用于训练深度神经网络以产生有用的 feature representation
。这里,"有用的" 是指在训练时未知的、容易适应其他下游任务的 representation
。
然后,下游任务(如 object recognition
)被用来评估所学到的特征的质量(独立于产生这些特征的模型),通常是通过使用这些特征作为输入,在下游任务上训练一个线性分类器。
迄今为止,最成功的方法是:设计一个pretext
任务,用一个 pair-based contrastive loss
来学习。对于一个给定的 anchor data point
,contrastive loss
试图使锚点和一些 positive data point
(那些相似的)之间的距离,小于锚点和一些negative data point
(那些不相似的)之间的距离。表现最好的方法是通过随机增强同一图像(例如使用裁剪、翻转、颜色扭曲)来产生 anchor-positive pair
;而 anchor-negative pair
是随机选择的不同图像的 augmented view
。事实上, 《A mutual information maximization perspective of language representation learning》
证明 MLM objective
和 NSP objective
也是对比学习的实例。
受这种方法的启发,论文 《DeCLUTR: Deep Contrastive Learning for Unsupervised Textual Representations》
提出了一个自监督的 contrastive objective
,可用于预训练 sentence encoder
。这个 objective
通过训练一个编码器来学习 universal sentence embedding
,以最小化从同一文档中的相近位置处的、随机采样的 textual segment
的 emebdding
之间的距离。作者通过使用该 objective
来扩展 transformer-based language model
的预训练来证明该 objective
的有效性,并在 SentEval
上获得 SOTA
的结果。
这也是对比学习的思路。
论文贡献:
提出了一个自监督的 sentence-level objective
,可以与 MLM
一起用于预训练 transformer-based language model
,在没有任何标记数据的情况下为 sentence-length
和 paragraph-length
的文本生成 generalized embedding
。
进行了广泛的消融实验,从而确定哪些因素对学习高质量的 embedding
是重要的。
证明了学到的 embedding
的质量与模型规模和数据规模有关。因此,仅仅通过收集更多的未标记文本或使用更大的编码器,就可以提高性能。
开源了解决方案,并提供了在新数据上训练 unseen
文本的详细说明。
相关工作:以前关于 universal sentence embedding
的工作可以大致按照它们是否在预训练步骤中使用标记数据来分组,我们将其分别简称为:监督的、半监督的、以及无监督的。
监督的和半监督的:性能最高的 universal sentence encoder
是在人类标记的自然语言推理(natural language inference : NLI
)数据集 Stanford NLI: SNLI
和 MultiNLI
上预训练的。NLI
的任务是将一对句子(记做"hypothesis"
和 "premise"
)分类为三种关系之一:entailment
、contradiction
、neutral
。
监督方法 InferSent
证明了 NLI
对于训练 universal sentence encoder
的有效性。
Universal Sentence Encoder: USE
是半监督的,用 SNLI
语料库上的监督训练来增强一个无监督的、类似 Skip-Thoughts
的任务。
最近发表的 SBERT
方法使用标记的 NLI
数据集对预训练的、transformer-based language model
(如 BERT
)进行微调。
注意,这里的“监督”信号不是来自于
target task
,而是来自于公开可用的数据集。
无监督的:
Skip-Thoughts
和 FastSent
是流行的无监督技术,通过使用一个句子的 encoding
来预测邻近句子中的单词来学习 sentence embedding
。然而,除了计算成本高之外,这种 generative objective
迫使模型重构句子的表面形式,这可能会捕获到与句子意义无关的信息。
QuickThoughts
用一个简单的 discriminative objective
来解决这些缺点:给定一个句子及其context
(相邻的句子),它通过训练一个分类器来学习 sentence representation
,以区分context sentence
和 non-context sentence
。
无监督方法的统一主题是它们利用了 "distributional hypothesis"
,即一个单词(以及延伸到一个句子)的意义是由它出现的单词的上下文来描述的。
我们的整体方法与 SBERT
最为相似:我们扩展了transformer-based language model
的预训练,以产生有用的sentence embedding
。但是,我们提出的 objective
是自监督的。移除对标记数据的依赖,使我们能够利用网络上大量的未标记文本,而不局限于标记数据丰富的语言或领域。
我们的 objective
与 QuickThoughts
最相似,但是一些区别包括:
我们将采样放宽到 paragraph length
的文本片段(而不是自然句子)。
我们对每个 anchor
采样一个或多个 positive segment
(而不是严格意义上的一个 positive segment
)。
并且我们允许这些 positive segment
相邻、重叠或包含(而不是严格意义上的相邻)。
自监督对比损失:我们的方法通过最大化来自相同文档中相近位置采样的 textual segments
之间的一致性,从而基于 contrastive loss
来学习 textual representation
。如下图所示,我们的方法包括以下组件:
一个 data loading step
:从每个文档中随机采样 paired anchor-positive spans
。 令 batch size
为 anchor spans
,每个 anchor span
采样了 positive spans
。令 anchor span
的编号。第 anchor span
记做 positive span
记做 anchor-positive pair
的机会。
一个编码器 input span
中的每个 token
映射为一个 embedding
。我们的方法对编码器的选择没有限制,但我们选择 transformer-based language model
,因为这代表了文本编码器的 SOTA
。
一个池化函数 encoded span
embedding
mean positive embedding
:
类似于 SBERT
,我们发现均值池化作为 anchor embedding
与多个 positive embeddings
的平均值配对。这一策略是由 《A theoretical analysis of contrastive unsupervised representation learning》
提出的,他们证明了:与为每个 anchor
使用单个的 positive example
相比,该策略从理论上和经验上都得到改善。
contrastive loss function
:用于 contrastive prediction
任务。给定一组 embedded span
positive pair
contrastive prediction
的目标是从
其中:1
否则取值为零;
在训练过程中,我们从训练集中随机采样大小为 mini-batch
,并从这 anchor-positive pair
contrastive prediction
任务,得到 《Improved deep metric learning with multi-class n-pair loss objective》
所建议的,我们将 mini-batch
中的其他
这是以前工作中使用的 InfoNCE loss
,在 《A simple framework for contrastive learning of visual representations》
中表示为 normalized temperature-scale crossentropy loss: NT-Xent
。
为了用训练好的模型来嵌入文本,我们只需将 batch
的 tokenized text
通过模型,而不需要采样 span
。因此,我们的方法在测试时的计算成本是编码器
Span Sampling
:我们首先选择一个 minimum span length
和一个 maximum span length
。这里我们选择 tokenize
文档 token
序列 anchor span
然后我们采样 positive span
,其中第 positive span
为:
注意,
positive span
是在anchor span
附近采样到的,因为。
其中:
anchor sampling
向更长的 span
倾斜。
positive sampling
向更短的 span
倾斜(如 Figure 1(c)
所示)。
在实践中,我们限制对同一文件的 anchor span
的采样,使其至少相隔 token
。
我们注意到在设计我们的采样程序时有几个经过仔细考虑的决定:
从 span length
,鼓励该模型对从 sentence-length
到 paragraph-length
的文本产生良好的 embedding
。
我们发现, anchor span
的长度比 positive span
的长度更长,可以提高下游任务的性能(我们没有发现性能对具体的
首先,它使模型能够学习 global-to-local view prediction
。
anchor
更长,对应于global
;positive
更短,对应于local
。
其次,当 positive span
之间的多样性。
如果
positive
更长,则positive
重复的概率越大。
在 anchor
附近采样 positives
,可以利用分布假设,增加采样到有效的 anchor-positive pair
(即语义相似)的机会。
通过对每份文档采样多个 anchor
,每个 anchor-positive pair
都与很多负样本进行对比:easy negatives
(来自 mini-batch
中的其它文档中采样的anchors
和 positives
)、hard negatives
(来自同一文件中采样的anchors
和 positives
)。
总之,采样程序产生了三种类型的positives
:与anchor
部分重叠的 positives
、与anchor
相邻的positives
、被 anchor
覆盖的positives
(Figure 1 (b)
);以及两种类型的 negatives
:从与anchor
不同的文档中采样的easy negatives
、从与anchor
相同的文档中采样的hard negatives
。因此,我们随机生成的训练集和 contrastive loss
隐式地定义了一族 predictive tasks
,可以用来训练一个模型,并且与任何特定的编码器架构无关。
下表展示了由我们的采样程序产生的 anchor-positive
和 anchor-negative
的例子。我们展示了三种 positive
:positives adjacent to
、 overlapping with
、 subsumed by the anchor
。对于每个 anchor-positive pair
,我们展示了 hard negative
(来自同一文档)和easy negative
(来自另一文档)的例子。回顾一下,一个 mini-batch
是由随机文档组成的,每个anchor-positive pair
对都会与mini-batch
中的所有其他 anchor-positive pair
进行对比。因此,我们在这里所描述的hard negative
,只有在对每个文档采样多个 anchor
(
这是
next sentence prediction
任务的扩展:预测是否是附近位置的句子。
Continued MLM pretraining
:我们使用我们的 objective
来扩展 transformer-based language model
的预训练:
这与现有的预训练策略类似,其中 MLM loss
与 NSP
或 SOP
等 sentence-level loss
相加。
为了降低计算成本,我们不从头开始训练,而是继续训练一个已经用 MLM objective
预训练好的模型。具体来说,我们在实验中同时使用 RoBERTa-base
和 DistilRoBERTa
( RoBERTa-base
的蒸馏后的版本)。在本文的其余部分,我们将我们的方法称为DeCLUTR-small
(当扩展 DistilRoBERTa pretraining
时)和 DeCLUTR-base
(当扩展 RoBERTa-base pretraining
时)。
数据集:OpenWebText
,这是 WebText
语料库的一个子集。我们从中收集所有的最小 token
长度为 2048
的文档,总共得到 497868
个文档。
实现:我们在 PyTorch
中使用 AllenNLP
实现我们的模型。我们使用了 PyTorch Metric Learning library
实现的 NT-Xent loss function
、以及 Transformers library
中 pretrained transformer
的架构和权重。所有模型都是在最多四个 NVIDIA Tesla V100 16GB/32GB GPU
上训练的。
训练:
除非另有说明,我们使用 AdamW
优化器对 497868
个文档训练 1
到 3
个 epoch
,minibatch size = 16
,温度 0.1
。
对于 minibatch
中的每个文档,我们采样两个 anchor span
(anchor
采样两个 positive span
(
我们使用斜三角学习率 scheduler
,训练步骤的数量等于训练实例的数量,cut
比例为 0.1
。
底层 pretrained transformer
(即 DistilRoBERTa
或 RoBERTa-base
)的其余超参数保持默认。
在反向传播之前,所有梯度都被缩放为长度为 1.0
的范数(即,单位向量)。
超参数是在 SentEval
验证集上调优的。
评估方式:我们在 SentEval benchmark
上评估了所有的方法,这是一个广泛使用的toolkit
,用于评估通用的 fixed-length sentence representation
。SentEval
分为 18
个下游任务(如情感分析、自然语言推理、转述检测 paraphrase
、image-caption
检索)和 10
个 probing
任务(旨在评估 sentence representation
中编码了哪些语言学属性)。
我们报告了我们的模型和相关 baseline
在默认参数下使用 SentEval toolkit
在下游任务和 probing
任务上获得的分数。请注意,我们所比较的所有监督方法都是在 SNLI
语料库上训练的,而 SNLI
语料库是作为 SentEval
的下游任务包括的。为了避免 train-test
的污染,我们在 Table 2
中比较这些方法时,在计算平均下游分数时不考虑 SNLI
。
baseline
:InferSent
、USE
、Sentence-Transformer
(即,SBERT
) 。
USE
在结构和参数数量上与 DeCLUTR-base
最相似。Sentence-Transformer
与 DeCLUTR-base
一样,使用 RoBERTa_base
架构和预训练好的权重,唯一区别在于不同的预训练策略。
我们将 GloVe
词向量均值、fastText
词向量均值的性能作为弱基线。
我们尽了最大努力,但我们无法针对完整的 SentEval benchmark
评估 pretrained QuickThought
模型,因此我们直接引用了论文中的分数。
我们评估了 pretrained transformer
模型在采用我们的 contrastive objective
训练之前的表现,用 "Transformer-*"
来表示。我们在 pretrained transformers token-level output
上使用均值池化来产生 sentence embedding
。
下表中列出了可训练的模型参数规模和 sentence embedding
维度。
下游任务的性能:
与底层的 pretrained model
DistilRoBERTa
和 RoBERTa-base
相比,DeCLUTR-small
和 DeCLUTR-base
在下游性能方面获得了很大的提升,分别平均提升 +4%
和 +6%
。
DeCLUTR-base
在除 SST5
以外的所有下游任务中都提高了性能,DeCLUTR-small
在除 SST2, SST5, TREC
以外的所有下游任务中都提高了性能。
与现有的方法相比,DeCLUTR-base
在不使用任何人工标记的训练数据的情况下与监督/半监督性能相匹配,甚至超过了监督/半监督性能。
令人惊讶的是,我们还发现,DeCLUTR-small
在使用 34%
的可训练参数的情况下,表现优于 Sentence Transformer
。
Probing
任务性能:
除了 InferSent
之外,现有的方法在 SentEval
的 probing
任务上表现很差。
Sentence Transformer
相比它底层的 pretrained transformer model
,在 probing
任务上的得分低大约 10%
。
相比之下,DeCLUTR-small
和 DeCLUTR-base
在平均性能方面的表现与底层的 pretrained model
相当。
这些结果表明,在NLI
数据集上微调 transformer-based language model
可能会丢弃一些由 pretrained model
的权重捕获的语言信息。我们怀疑在我们的 training objective
中包含 MLM
是 DeCLUTR
在 probing
任务上相对较高的表现的原因。
监督的和无监督的下游任务:SentEval
的下游评估包括有监督的任务和无监督的任务。
在无监督的任务中,要评估的方法的 embedding
不需要任何进一步的训练。有趣的是,我们发现 USE
在 SentEval
的无监督评估(Table 2
中带 *
号的任务)中表现特别好。鉴于 USE
的架构与 Sentence Transformers
和 DeCLUTR
的相似性,以及 USE
的 supervised NLI training objective
与 InferSent
和 Sentence Transformer
的相似性,我们怀疑最可能的原因是其一个或多个额外的 training objective
。这些目标包括一个 conversational response prediction
任务、和一个类似 Skip-Thoughts
的任务。
采样程序的消融研究:我们评估了每个文档采样的 anchor
数量 anchor
采样的 positives
数量 positives
的策略对于模型效果的影响。我们注意到,当 span
和两倍的数据量(mini-batch
中的文档数量)上进行训练。为了控制这一点,所有 epoch
( epoch
)、两倍的 mini-batch size
(span
和相同的 effective batch size
(anchor
的数量(
时,数据量也增加了,是否也需要训练更多的 epoch
?论文并未说明。
对每个文档采样多个 anchor
对 learned embedding
的质量有很大的积极影响。我们假设这是因为当 contrastive objective
的难度增加。
回顾一下,mini-batch
由随机文档组成,从一个文档中采样的每个 anchor-positive pair
都要与 mini-batch
中的所有其他 anchor-positive pair
进行对比。当 anchor-positive pair
将与同一文档中的其他 anchor-positive pair
进行对比,增加 contrastive objective
的难度,从而导致更好的 representation
。
大于 2
时,效果如何?论文并未说明。
允许与 anchor
相邻、或者被 anchor
包含的 positive sampling
策略,要优于仅支持 anchor
相邻,也优于仅支持被 anchor
包含的采样策略。这表明这两个视图(即,anchor
相邻、被 anchor
包含)所捕获的信息是互补的。
对每个 anchor
采样多个 positives
( 《A theoretical analysis of contrastive unsupervised representation learning》
)相反,他们发现当多个 positives
被均值池化,并与一个给定的 anchor
配对时,理论上和经验上都有改进。
其它消融研究:为了确定训练目标、训练集大小、 模型容量的重要性,我们用训练集的10% ~ 100%
(一个完整的 epoch
)来训练两种规模的模型。
同时用 MLM objective
和 contrastive objective
对模型进行预训练,比单独用任何一个 objective
预训练提高了性能。
对于 MLM objective + contrastive objective
,随着训练集大小的增加,模型性能单调地改善。
我们假设引入 MLM loss
作为一种正则化的形式,防止 pretrained model
的权重(该模型本身是用 MLM loss
训练的)偏离太大(这种现象被称为 "灾难性遗忘 catastrophic forgetting
")。
这些结果表明,通过我们的方法所学到的 embedding
的质量可以根据模型的容量和训练集的大小而 scale
。因为训练方法是完全自监督的,扩大训练集只需要收集更多的未标记文本。
这个数据并未说明模型容量的重要性。在前面的实验中,
DeCLUTR_base
的效果优于DeCLUTR_small
,说明了模型容量的重要性。
学习一个更好的 sentence representation model
一直是自然语言处理的一个基本问题。以 word embedding
的平均值作为 sentence representation
(也称为均值池化)是早期常见的 baseline
。后来,预训练模型(如 BERT
)提出在预训练中插入一个 special token
(即 [CLS] token
),并将其embedding
作为 sentence representation
。由于 BERT
带来的巨大改进,人们似乎同意 CLS-token embedding
比 averaging word embeddings
更好。然而,最近的一篇论文 SBERT
观察到,所有 output word vectors
的平均,要比 CLS-token embedding
的效果要好一点。SBERT
的结果表明,像 BERT
这样的模型在 token level
学习了更好的 representation
。一个自然的问题是如何更好地学习 sentence representation
。
受计算机视觉中对比学习的成功启发,论文 《CLEAR: Contrastive Learning for Sentence Representation》
有兴趣探索它是否也能帮助语言模型产生更好的 sentence representation
。对比学习的关键方法是在训练过程中对正样本进行增强。然而,文本的数据增强并不像图像的数据增强那样丰富。图像可以通过旋转、cropping
、调整大小、cutouting
等方式轻松增强。在 NLP
中,文献中研究的数据增强方式很少。主要原因是,句子中的每个单词都可能在表达整个意思时起到至关重要的作用。此外,单词的顺序也很重要。
大多数现有的预训练语言模型都是在文本中加入不同类型的噪音,并试图在 word-level
上还原它们。sentence-level objective
很少被研究。
BERT
将 word-level loss
(masked language modeling: MLM
)与sentence-level loss
(next sentence prediction: NSP
)相结合,并观察到 MLM+NSP
对一些下游任务是必不可少的。
RoBERTa
在预训练中放弃了 NSP
目标,但在各种下游任务中取得了更好的表现。
ALBERT
提出了一个用于 Sentence-Order Prediction: SOP
的自监督损失,用于建模句子之间的连贯性 inter-sentence coherence
。他们的工作表明,coherence prediction
是比主题预测topic prediction
( NSP
使用的方式)更好的选择。
DeCLUTR
是第一个将对比学习(Contrastive Learning: CL
)与 MLM
结合起来进行预训练的工作。然而,它需要一个极长的输入文件,即 2048
个 token
,这限制了模型在有限的数据上进行预训练。此外,DeCLUTR
从 existing pre-trained model
中进行训练,所以当它从头开始训练时,是否也能达到同样的性能仍是未知数。
借鉴最近在pretrained language model
和对比学习方面的进展, 《CLEAR: Contrastive Learning for Sentence Representation》
提出了一个新的框架 CLEAR
,将 word-level MLM objective
和 sentence-level CL objective
结合起来对语言模型进行预训练:
MLM objective
使模型能够捕获 word-level hidden features
。
而 CL objective
则通过训练编码器以最小化同一句子的不同augmentation
的 embedding
之间的距离,确保模型具有识别相似含义句子的能力。
在 CLEAR
中,作者提出了一种新的 augmentation
设计,可用于在 sentence-level
预训练语言模型。
论文贡献:
提出并测试了四种基本的句子增强方法:random-words-deletion
、spans-deletion
、synonym-substitution
、reordering
,这填补了 NLP
中关于什么样的 augmentation
可以用于对比学习的巨大空白。
在 GLUE
和 SentEval
基准上,CLEAR
超过了几个强大的 baseline
(包括 RoBERTa
和 BERT
)。例如,与 RoBERTa
模型相比,CLEAR
在 8
个 GLUE
任务上显示了+2.2%
的绝对改进,在 7
个 SentEval
语义文本相似性任务上显示了 +5.7%
的绝对改进。
相关工作:
Sentence Representation
:
将各种池化策略应用于 word embeddings
作为 sentence representation
是一个常见的 baseline
。
Skip-Thoughts
训练了一个 encoder-decoder
模型,该模型试图重建周围的句子。
Quick-Thoughts
训练一个仅有编码器的模型,能够从其他 contrastive sentences
中选择句子的正确上下文。
后来,许多 pre-trained language models
,如 BERT
提出使用人工插入的 token
( [CLS] token
)作为整个句子的representation
,并成为各种下游任务中的新的SOTA
。
最近的一篇论文 SBERT
将 average BERT embeddings
与 CLS-token embedding
进行了比较,并令人惊讶地发现,在BERT
的最后一层计算所有输出向量的平均值要比 CLS-token embedding
的性能略好。
Large-scale Pre-trained Language Representation Model
:深度 pre-trained language model
已经证明了它们在捕获隐式的语言特征方面的能力,即使是不同的模型架构、不同的预训练任务、以及不同的损失函数。其中两个早期工作是 GPT
和BERT
。GPT
使用了一个从左到右的 Transformer
,而 BERT
设计了一个双向的Transformer
。两者都在很多下游任务中创造了一个令人难以置信的新的 SOTA
。
最近,人们在 pre-trained language model
领域发表了大量的研究工作。一些人将以前的模型扩展到序列到序列的结构,这加强了模型在语言生成上的能力。另一些人探索不同的预训练目标,以提高模型的性能或加速预训练。
Contrastive Learning
:对比学习已经成为一个正在崛起的领域,因为它在各种计算机视觉任务和数据集中取得了巨大的成功。一些研究人员提出使图像的不同 augmentation
的 representation
相互一致,并显示出积极的结果。这些工作的主要区别在于他们对图像增强的不同定义。
NLP
领域的研究人员也开始致力于为文本寻找合适的增强。CERT
应用 back-translation
来创建原始句子的增强,而DeCLUTR
认为一个文档内的不同 span
相互之间是相似的。
我们的模型与 CERT
的不同之处在于,我们采用了 encoder-only
的结构,这减少了 decoder
带来的噪音。
DeCLUTR
只测试一种 augmentation
,并且从 existing pre-trained model
中训练模型。与 DeCLUTR不
同的是,我们从头开始预训练所有的模型,这提供了一个与 existing pre-trained model
的直接比较。
对比学习框架:借用 SimCLR
,我们提出了一个新的对比学习框架来学习 sentence representation
,命名为 CLEAR
。CLEAR
有四个主要组件,如下图所示。
augmentation component
augmentation
。对于每个原始句子 augmentation
augmentation
的效果,我们采用相同的 augmentation
来生成 mixing augmentation
的模型需要更多的计算资源,我们计划将其留给未来的工作。augmentation
集合
transformer-based encoder
input augmented sentence
的 representation
sentence representation
的编码器都可以在这里。我们选择目前的 SOTA
(即 transformer
)来学习 sentence representation
,并使用 manually-inserted token
(即 [CLS]
,如 BERT
和RoBERTa
中使用的) 的 representation
作为句子的向量。
nonlinear neural network projection head
encoded augmentation
SimCLR
的观察,添加一个非线性的 projection head
可以大大改善图像的 representation quality
。
contrastive learning loss function
:为 contrastive prediction
定义的,即试图预测集合 positive augmentation pair
mini-batch
(假设 mini-batch
是一个大小为 positive pair
,而来自同一 mini-batch
的所有其他实例被视为它们的负样本。positive pair
的损失函数定义为:
其中: 1
,否则取值为零;
总的 contrastive learning loss
定义为 mini-batch
中所有 positive pairs
的损失之和:
其中:positive pair
时返回 1
,否则返回 0
。
对比学习的
sentence embedding
方法都遵从这样的损失函数,不同的方法的区别在于:如何构建augumented sentence
。
Combined Loss
:类似 DeCLUTR
,为了同时捕获 token-level
特征和 sentence-level
特征,我们联合使用 MLM objective
和 CL objective
来得到总体损失:
其中:random-masked token
来计算的,如 BERT
和 RoBERTa
所述。
我们的预训练目标是最小化
是否可以用超参数
来平衡这两种损失?如, 。
Sentence Augmentation
的设计原理:数据增强对于学习图像的representation
至关重要。然而,在语言建模中,数据(句子)增强是否有利于representation learning
、以及什么样的数据增强可以适用于文本,仍然是一个未知数。为了回答这些问题,我们在实验中探索并测试了四种基本的 augmentation
(如下图所示)及其组合。我们确实相信存在更多潜在的 augmentation
,我们计划将其留待将来探索。
deletion
:这种数据增强基于这样的假设:在一个句子中删除一些内容不会对原来的语义产生太大影响。在某些情况下,删除一些单词导致句子的不同含义(例如,删除 not
这个词)。然而,我们相信包括适当的噪音可以使模型更加鲁棒。我们考虑两种不同的删除方式,即 word deletion
和 span deletion
。
word deletion
:随机选择句子中的 token
,并用一个 special token [DEL]
替换它们,如下图 (a)
所示。这与 BERT
中的 token [MASK]
类似。
span deletion
:在 span-level
上挑选和替换 deletion objective
,如下图 (b)
所示。。一般来说,span-deletion
是 word-deletion
的一个特例,它更注重删除连续的单词。
对于相同位置上出现的 word deletion
和 span deletion
,默认很容易区分这两种 augmentation
(根据是否存在连续的 token [DEL]
)。为了避免模型容易地区分这两种 augmentation
,我们把连续的 token [DEL]
消除成一个 token [DEL]
。
reordering
:BART
已经探索了从随机重排的句子中恢复原始句子。在我们的实现中,我们随机抽出几个 span pair
,并将它们 pairwise
地交换,以实现 reordering augmentation
,如下图 (c)
所示。。
substitution
:《Certified robustness toadversarial word substitutions 》
已证明 substitution
能有效提高模型的鲁棒性。遵从他们的工作中,我们对一些词进行采样,并用同义词替换它们来构建一个 augmentation
。同义词列表来自他们使用的 vocabulary
。在我们的预训练语料库中,大约有 40%
的 token
在列表中至少有一个 similar-meaning token
。
模型配置:
编码器:Transformer
(12
层、12 head
、768 hidden size
)。
预训练 500K
个 step
,batch size = 8192
,最大序列长度为 512
个 token
。
优化器:Adam
,L2
权重衰减 0.01
。
学习率:开始的 23k
步中,学习率被预热到 6e-4
的峰值,然后在剩下的时间里线性递减。
线性递减的速度是多少?论文并未说明。
在所有层和所有注意力中使用 dropout = 0.1
。
所有的模型都在 256
个 NVIDIA Tesla V100 32GB GPU
上进行了预训练。
预训练数据:BookCorpus + English Wikipedia
的联合数据集(也是用于预训练 BERT
的数据集)。关于数据集的更多统计数据和处理细节,可以参考 BERT
的原始论文。
MLM
的超参数:
为了计算 MLM loss
,我们随机掩码了输入文本 15%
的 token
,并使用周围的 token
来预测它们。
为了弥补 fine-tuning
和 pre-training
之间的 gap
,对于 masked tokens
,我们还采用了 BERT
中的 10%-random-replacement
和 10%-keep-unchanged
设置。
CL
的超参数:
Word Deletion (del-word)
删除了 70%
的 token
,Span Deletion (del-span)
删除了 5
个 span
(每个 span
的长度为输入文本的 5%
)。
Reordering (reorder)
:随机挑选 5
对 span
(每个 span
的长度为输入文本的 5%
),并 pairwise
地交换 span
。
上述一些超参数在 WiKiText-103
数据集上稍作调优(训练了 100
个 epochs
,在 GLUE dev
基准上进行评估)。 例如,我们发现70%
的 deletion model
在 {30%, 40%, 50%, 60%, 70%, 80%, 90%}
的 deletion model
中表现最好。
对于使用 mixed augmentation
的模型,如 MLM+2-CL-objective
,它们使用与单个模型相同的优化超参数。注意,符号MLM+subs+delspan
代表了一个结合了 MLM loss
和 CL loss
的模型:
对于 MLM
,它掩码了 15%
的 token
。
对于 CL
,它首先替换了 30%
的 token
,然后删除了 5
个 span
来生成 augmented sentence
。
请注意,我们使用的超参数可能不是最优化的参数。然而,1-CL objective model
上的最优超参数在 2-CL objective model
上的表现是否一致还不得而知。此外,目前还不清楚 WiKiText-103
的最优超参数是否仍然是 BookCorpus
和 English Wikipedia
数据集上的最优参数。然而,由于预训练需要大量的计算资源,很难对每一个可能的超参数进行调优。我们将把这些问题留待将来探索。
General Language Understanding Evaluation: GLUE Result
:GLUE
是一个包含几种不同类型的 NLP
任务的基准:自然语言推理任务(MNLI, QNLI, RTE
)、相似性任务(QQP, MRPC, STS
)、情感分析任务(SST
)、和语言接受性 linguistic acceptability
任务(CoLA
)。它为 pretrained language model
提供了一个全面的评价。
为了适应不同的下游任务的要求,我们遵循 RoBERTa
的超参数,为各种任务微调我们的模型。具体来说,我们增加了一个额外的全连接层,然后在不同的训练集上微调整个模型。
我们包括的主要 baseline
是 BERT_base
和 RoBERTa_base
。BERT_base
的结果来自 huggingface
的重新实现。一个更公平的比较来自RoBERTa_base
,因为我们为 MLM Loss
使用了具有相同超参数的 RoBERTa_base
。注意,我们的模型都是结合了两个损失的,将 MLM-only model
与 MLM+CL model
进行比较仍然是不公平的。为了回答这个问题,我们在消融实验中设置了另外两个 baseline
以进行更严格的比较:一个 baseline
结合了两个 MLM loss
,另一个 baseline
采用了 double batch size
。
实验结果如下表所示,可以看到:
我们提出的几个模型在 GLUE
上的表现超过了 baseline
。注意,不同的任务采用不同的评价矩阵,我们的两个最好的模型MLM+del-word
和 MLM+del-span+reorder
都将最佳基线 RoBERTa_base
的平均得分提高了 2.2%
。
此外,一个更重要的观察是,每个任务的最佳性能都来自我们提出的模型。在 CoLA
和 RTE
上,我们的最佳模型分别比 baseline
高出 7.0%
和 8.0%
。
此外,我们还发现,不同的下游任务从不同的 augmentation
中受益。我们将在后续实验中进行更具体的分析。
一个值得注意的是,我们没有在下表中显示 MLM+subs, MLM+reorder, MLM+subs+reorder
的结果。我们观察到,这三个模型的预训练要么迅速收敛,要么存在梯度爆炸问题,这说明这三个 augmentation
太容易区分了。
用于语义文本相似性任务的 SentEval Results
:SentEval
是一个流行的 benchmark
,用于评估通用的 sentence representation
。这个benchmark
的特点是,它不像 GLUE
那样进行微调。我们评估了我们提出的方法在 SentEval
上常见的语义文本相似性(Semantic Textual Similarity: STS
)任务的性能。注意,之前 SentEval
排行榜上的一些模型(例如 SBERT
)在特定的数据集上进行训练,例如 Stanford NLI
和 MultiNLI
,这使得我们很难直接比较。为了更容易直接比较,我们与 RoBERTa-base
进行比较。根据 SBERT
,在最后一层使用所有输出向量的平均值比使用 CLS-token output
更有效。我们为每个模型测试这两种池化策略(即,均值池化、CLS
池化)。
结果如下表所示。可以看到:
均值池化策略并没有显示出太大的优势。在许多情况下,对于我们提出的模型,CLS-pooling
比均值池化要好。其根本原因是,对比学习直接更新了 [CLS] token
的 representation
。
此外,我们发现加入 CL loss
使模型在 STS
任务中表现特别好,以很大的幅度( +5.7%
)击败了最佳 baseline
。我们认为这是因为对比学习的预训练是为了找到相似的 sentence pair
,这与 STS
任务相一致。这可以解释为什么我们提出的模型在 STS
上有如此大的改进。
消融研究:我们提出的 CL-based model
优于MLM-based model
,剩下的一个问题是,我们提出的模型从哪里受益?它是来自于 CL loss
,还是来自于更大的batch size
(因为要计算 CL loss
,我们需要在每个batch
中存储额外的信息)?为了回答这个问题,我们设置了两个额外的baseline
:
Double MLM RoBERTa-base
采用 MLM+MLM loss
,每个 MLM
都是针对同一个原始句子在不同mask
上进行的。
Double-batch RoBERTa-base
具有double-size batch
的单个 MLM loss
。
由于计算资源的限制,我们在一个较小的预训练语料,即 WiKiText-103
数据集上进行消融研究。下表中列出的所有模型都在 64
个 NVIDIA Tesla V100 32GB GPU
上预训练了 500
个epoch
。表中报告了我们提出的三个模型。可以看到:
与原始的 RoBERTa-base
相比,变体的总体性能并没有显示出太大的差异,在 Double-batch RoBERTa-base
上的平均得分增加了 +0.4%
,这证实了以前的工作所提出的更大的 batch
有利于 representation training
的想法(参考 RoBERTa
原始论文)。
然而,表现最好的 baseline
仍然没有我们提出的最佳模型好。这告诉我们,我们所提出的模型并不仅仅受益于较大的batch
,CL loss
也有帮助。
MLM+MLM loss
的效果反而下降了,论文并未解释这一现象的原因。读者猜测是因为过拟合。MLM+MLM loss
相当于BERT
预训练的更新次数翻倍,使得模型过拟合。
不同的 augmentation
学习不同的 feature
:在下表中,我们发现一个有趣的现象:所提出的不同的模型在不同的任务中表现良好。
其中一个例子是 MLM+subs+del-span
帮助该模型在处理相似性任务和转述任务时表现良好。在 QQP
和 STS
上,它取得了最高分;在 MRPC
上,它排名第二。我们推断,MLM+subs+del-span
在这类任务中表现出色,是因为同义词替换有助于将原始句子翻译成意义相近的句子,而删除不同的span
则可以看到更多种类的 similar sentences
。将它们结合起来可以增强模型处理许多 unseen sentence pair
的能力。
我们还注意到,MLM+del-span
在推理任务(MNLI, QNLI, RTE
)上取得了良好的表现。其根本原因是,通过 span
删除,模型已经被预训练得很好从而能够推断出其他类似的句子。识别 similar sentence pair
的能力有助于识别 contradiction
。因此,预训练任务和这个下游任务之间的差距缩小了。
总的来说,我们观察到,不同的augmentation
学习了不同的 feature
。一些specific augmentation
在某些特定的下游任务中特别出色。设计 task-specific augmentation
或探索 meta-learning
以适应性地选择不同的 CL objective
是一个有前途的未来方向。
最近,基于BERT
的pre-trained language model
在许多带监督信息的下游任务上取得了很高的性能。 然而,从 BERT
派生的 native sentence representation
被证明是低质量的(《SBERT: Sentence embeddings using siamese bert networks》
、《On the sentence embeddings from pre-trained language models》
)。如下图 (a)
所示,当直接采用 BERT-based sentence representation
进行语义文本相似性(semantic textual similarity: STS
)任务时,几乎所有的 sentence pair
都达到了 0.6
到 1.0
之间的相似性分数,即使有些 sentence pair
被人类标注员视为完全不相关。换句话说,BERT
派生的native sentence representation
在某种程度上是坍塌collapsed
的(《Exploring simple siamese representation learning》
),这意味着几乎所有的句子都被映射到一个小区域,因此产生高的相似度。
这样的现象也在之前的一些工作中观察到(《Representation degeneration problem in training natural language generation models》
、《Improving neural language generation with spectrum control》
、《On the sentence embeddings from pre-trained language models》
)。他们发现 BERT
的 word representation space
是各向异性的,高频词聚集在一起并靠近原点,而低频词则稀疏地分散开。当averaging token embeddings
时,那些高频词在 sentence representation
中占主导地位,诱发了对其真实语义的 bias
。因此,直接将 BERT
的 native sentence representation
用于语义匹配或文本检索是不合适的。传统的方法通常通过额外的监督信息来微调 BERT
。然而,人类标注的成本很高,而且在现实世界的场景中人类标注往往不可用。
为了缓解 BERT
的坍塌问题,以及减少对标记数据的要求,论文 《ConSERT: A Contrastive Framework for Self-Supervised Sentence Representation Transfer》
提出了一个基于对比学习的新颖的 sentence-level training objective
。通过鼓励来自同一句子的两个 augmented views
更接近、同时保持来自其他句子的views
远离,论文重塑了BERT-derived sentence representation space
,并成功地解决了 collapse
问题(如 Figure 1(b)
所示)。此外,作者提出了多种用于对比学习的数据增强策略,包括对抗性攻击adversarial attack
、token shuffling
、cutoff
、以及 dropout
,有效地将sentence representation
迁移到下游任务中。作者将他们的方法命名为 ConSERT
,即 Contrastive Framework for SEntence Representation Transfer
。
与以前的方法相比,ConSERT
有几个优点:
首先,它在推理过程中没有引入额外的结构或specialized implementation
。ConSERT
的参数大小与 BERT
保持一致,使其易于使用。
其次,与预训练方法相比,ConSERT
的效率更高。只需从target distribution
中抽取 1,000
个未标记的文本(这在现实世界的应用中很容易收集),ConSERT
就能比 BERT
获得 35%
的相对性能增益,而且训练阶段在单个 V100 GPU
上只需要几分钟(1-2k
步)。
最后,ConSERT
包括几个有效的、方便的数据增强方法,对语义影响最小。它们的效果在消融研究中得到了验证和分析。
论文贡献:
论文提出了一个简单而有效的基于对比学习的 sentence-level training objective
。它缓解了 BERT-derived representation
的 collapse
,并将 BERT-derived representation
迁移到下游任务中。
论文探索了各种有效的文本增强策略,以产生用于对比学习的视图,并分析了这些增强策略对无监督的sentence representation transfer
的影响。
只需在无监督的目标数据集上进行微调,论文的方法就能在 STS
任务上取得重大改进。当进一步与 NLI
监督相结合时,论文的方法取得了新的SOTA
的性能。论文还展示了论文的方法在数据稀疏情况下的鲁棒性,以及对 transferred representation
的直观分析。
论文价值不大,没什么新颖性。
相关工作:
Sentence Representation Learning
:
监督方法:一些工作使用监督数据集进行 sentence representation learning
。
InferSent
发现有监督的自然语言推理(Natural Language Inference: NLI
)任务对训练 good sentence representation
很有用。他们使用一个基于 BiLSTM
的编码器,并在两个 NLG
数据集上进行训练,即 Stanford NLI: SNLI
、Multi-Genre NLI: MNLI
。
Universal Sentence Encoder
采用了基于 Transformer
的架构,并使用 SNLI
数据集来增强无监督训练。
SBERT
(《SBERT: Sentence embeddings using siamese bert networks》
)提出了一个带有共享的 BERT encoder
的 siamese
架构,也在 SNLI
和 MNLI
数据集上进行训练。
用于预训练的自监督目标:
BERT
提出了一个 bidirectional Transformer encoder
用于语言模型预训练。它包括一个sentence-level training objective
,即 next sentence prediction: NSP
,这个训练目标预测两个句子是否相邻。然而,NSP
被证明是很弱的,对最终性能的贡献很小(《Roberta: A robustly optimized bert pretraining approach》
)。
之后,人们提出了各种自监督的目标来预训练 BERT-like sentence encoder
:
Cross-Thought
(《Cross-thought for sentence encoder pre-training》
) 和 CMLM
(《Universal sentence representation learning with conditional masked language model》
)是两个类似的目标,它们在给定 contextual sentence
的 representation
的条件下,恢复一个句子中的 masked tokens
。
SLM
提出了一个目标,即给定 shuffled sentence
为输入,重建正确的句子排序。
然而,所有这些目标都需要 document-level
的语料,因此不适用于只有短文的下游任务。
无监督方法:
BERT-flow
提出了一种 flow-based
的方法,将 BERT embedding
映射到标准的 Gaussian latent space
,其中 embedding
更适合进行比较。然而,这种方法引入了额外的模型结构,需要 specialized implementation
,这可能会限制它的应用。
对比学习:
用于 Visual Representation Learning
的对比学习:最近,对比学习已经成为无监督 visual representation learning
中非常流行的一种技术,其性能非常 solid
。对比学习的方法认为,good representation
应该能够识别同一 object
,同时将其与其他object
区分开来。基于这种直觉,对比学习的方法应用图像变换(如 cropping
、旋转、cutout
等),为每张图像随机生成两个增强的版本,并使它们在 representation space
中接近。这种方法可以被视为对输入样本的不变性建模 invariance modeling
。
《A simple frameworkfor contrastive learning of visual representations 》
提出了 SimCLR
,一个简单的对比学习框架。他们使用 normalized temperature-scaled cross-entropy loss: NT-Xent
作为训练损失,这在以前的文献中也被称为 InfoNCE
(《Learning deep representations by mutual information estimation and maximization》
)。
用于 Textual Representation Learning
的对比学习:最近,对比学习被广泛地应用于 NLP
任务中。许多工作将其用于语言模型的预训练。
IS-BERT
(《An unsupervised sentence embedding method by mutual information maximization》
)提出在 BERT
的基础上增加 1-D CNN
层,并通过最大化 global sentence embedding
和其相应的 local contexts embedding
之间的互信息(mutual information: MI
)来训练 CNN
。
CERT
(《Cert: Contrastive self-supervised learning for language understanding》
)采用了与 MoCo
类似的结构,并使用 back-translation
进行数据增强。然而,momentum encoder
需要额外的内存,而且 back-translation
可能会产生 false positives
。
BERT-CT
(《Semantic re-tuning with contrastive tension》
)使用两个单独的编码器进行对比学习,这也需要额外的内存。此外,他们只采样 7
个负样本,导致训练效率低。
De-CLUTR
采用了 SimCLR
的架构,用 contrastive objective
和 masked language model objective
共同训练模型。然而,他们针对对比学习仅使用 span
,在语义上是 fragmented
的。
CLEAR
(《Clear: Contrastive learning for sentence representation》
)使用与 DeCLUTR
相同的架构和目标。它们都是用来预训练语言模型的,这需要大量的语料库,以及大量的资源。
给定一个 BERT-like pretrained language model
target distribution
中提取的无监督数据集 sentence representation
与任务更相关,并适用于下游任务。
ConSERT
不是从头开始训练的。
通用框架:我们的方法主要受到 SimCLR
的启发。如下图所示,我们的框架有三个主要部分:
一个数据增强模块,在 token embedding layer
为输入样本生成不同的视图。
一个共享的 BERT encoder
,为每个输入文本计算 sentence representation
。在训练过程中,我们使用最后一层的 token embeddings
的均值池化来获得 sentence representations
。
在 BERT encoder
的顶部有一个 contrastive loss layer
。它最大限度地提高一个 representation
和其相应的版本(从同一个句子中增强而来)之间的一致性、同时保持与相同 batch
中其他 sentence representations
的距离。
对于每个输入文本 data augmentation module
,该模块应用两个变换 token embeddings
:embedding
维度。之后,BERT
中的 multi-layer transformer block
来编码,并通过均值池化产生 sentence representations
遵从 《A simple framework for contrastive learning of visual representations》
的做法,我们采用 normalized temperature-scaled cross-entropy loss: NTXent
作为 contrastive objective
。在每个 training step
中,我们从 mini-batch
,从而得到 representation
。每个 data point
被训练从而在 in-batch
负样本中找出其对应的正样本:
其中:sim()
表示余弦相似度函数,1
,否则取值为零)。
最后,我们对所有 in-batch classification losse
进行平均,得到最终的对比损失
数据增强策略:我们探索了四种不同的数据增强策略来为对比学习生成视图,包括:对抗攻击 adversarial attack
、token shuffling
、cutoff
、dropout
,如下图所示。
Adversarial Attack
:对抗性训练一般用于提高模型的鲁棒性。我们通过向输入样本添加 worst-case
扰动来产生对抗性样本。我们用 Fast Gradient Value: FGV
(《Adversarial diversity and hard positive generation》
)实现这一策略,它直接使用梯度来计算扰动,因此比 two-step
方法更快。注意,这种策略只适用于与监督学习联合训练的情况,因为它依赖于监督损失来计算对抗性扰动。
这个方法在实验部分完全没有用上,因此也不知道有没有效,不知道作者为什么要列在这里。
Token Shuffling
:在这个策略中,我们旨在随机混洗输入序列中的 tokens
。由于 transformer
架构中的 bag-of-words
性质,position encoding
是关于序列信息的唯一因素。因此,与 《Slm: Learning a discourse language representation with sentence un-shuffling》
类似,我们通过将混洗后的 position ids
传递给 embedding layer
,同时保持 token ids
的顺序不变从而实现这一策略。
Cutoff
:《A simple but tough-to-beat data augmentation approach for natural language understanding and generation》
提出了一个简单而有效的数据增强策略,称为cutoff
。他们在 token
(用于token cutoff
)、特征维度(用于 feature cutoff
)或 token span
(用于 span cutoff
)。在我们的实验中,我们只使用 token cutoff
和 feature cutoff
,并应用它们到 token embeddings
上从而生成视图。
Dropout
:Dropout
是一种广泛使用的正则化方法,可以避免过拟合。然而,在我们的实验中,我们也展示了它作为对比学习的增强策略的有效性。在这种情况下,我们以特定的概率随机地丢弃 token embedding layer
中的元素,并将它们的值置零。请注意,这种策略与 Cutoff
不同,因为这里的每个元素都是单独考虑的。
SimCSE
仅仅使用Dropout
来生成augmented view
,就取得了很好的效果。
融合监督信号:除了无监督的 transfer
,我们的方法也可以与监督学习相结合。我们以 NLI
监督为例。这是一个 sentence pair
分类任务,模型被训练用来区分两个句子之间关系:矛盾contradiction
、蕴含 entailment
、中性 neutral
。classification objective
可以表示为:
其中:sentence representation
;
我们提出了三种纳入额外的监督信号的方法:
联合训练(joint
) :我们在 NLI
数据集上联合训练具有supervised objective
和 unsupervised objective
的模型:
其中 objective
的超参数。
注意,这里的无监督训练也是在
NLI
数据集上。
先监督训练然后无监督 transfer
(sup-unsup
):首先在 NLI
数据集上用 target
数据集上进行微调。
先联合训练然后无监督 transfer
(joint-unsup
):首先在 NLI
数据集上用 target
数据集上对其进行微调。
为了验证我们提出的方法的有效性,我们在无监督 setting
和有监督 setting
下对 Semantic Textual Similarity: STS
任务进行了实验。
数据集: 遵从以前的工作,我们在多个 STS
数据集上评估我们的方法,包括 STS tasks 2012 - 2016 (STS12 - STS16)
、STS benchmark (STSb)
、SICKRelatedness (SICK-R)
。这些数据集中的每个样本都包含一对句子、以及 0~5
之间的 ground-truth score
,以表示它们之间的语义相似度。
在我们的无监督实验中,我们混合了这些数据集的未标记文本,以微调我们的模型。我们通过 SentEval
工具包获得所有 7
个数据集。统计数据如下表所示。
对于监督实验,我们使用 SNLI
( 570k
样本)和 MNLI
(430k
样本)的组合来训练我们的模型。在联合训练的 setting
中,NLI
文本也被用于 contrastive objective
。
baseline
:
无监督 baseline
:BERT-flow
、GloVe embeddings average
、BERT-derived native embeddings average
、CLEAR
(在BookCorpus
和 English Wikipedia
语料库上训练)、ISBERT
(NLI
数据集的未标记文本上训练)、BERT-CT
(在 English Wikipedia
语料库上训练)。
监督 baseline
:InferSent
、Universal Sentence Encoder
、SBERT
、BERT-CT
。它们都是在 NLI
监督下训练的。
评估方法:在评估训练好的模型时,我们首先通过平均最后两层的 token embeddings
来获得 sentence representation
(如 BERT-flow
所示,最后两层的平均要比最后一层的平均,效果更好),然后我们报告 sentence representation
的余弦相似度分数和人类标注的ground-truth
分数之间的 spearman
相关系数。在计算spearman
相关系数时,我们将所有的句子合并在一起(即使有些 STS
数据集有多个 splits
),只计算一次 spearman
相关系数。
实现细节:
我们的实现是基于 SBERT
。我们在实验中同时使用 BERT-base
和 BERT-large
。最大序列长度被设置为 64
。
考虑到我们框架中使用的 cutoff
和 dropout
数据增强策略,我们删除了 BERT
架构中的默认 dropout layer
。根据 《A simple but tough-to-beat data augmentation approach for natural language understanding and generation》
的建议,token cutoff
和 feature cutoff
的比例分别设置为 0.15
和 0.2
。dropout rate
设为 0.2
。
NT-Xent loss
的温度 0.1
,joint training setting
的 0.15
。
我们采用 Adam
优化器,将学习率设置为 5e-7
。我们在总的 10%
训练步数中使用线性的 learning rate warm-up
。
在我们的大部分实验中,batch size
被设置为 96
。
我们使用STSb
的验证集来调优超参数(包括增强策略),并在训练期间每 200
步评估一次模型。STSb
的验证集上的 best checkpoint
被保存下来用于测试。
我们在随后的章节中进一步讨论 batch size
和温度的影响。
无监督学习的结果:对于无监督的评估,我们加载 pretrained BERT
来初始化我们框架中的 BERT encoder
。然后,我们随机混合7
个 STS
数据集的未标记文本,用它们来微调我们的模型。 结果如下表所示,可以看到:
BERT-flow
和 ConSERT
都可以改善 representation space
,并优于 GloVe
和 BERT
基线。
然而,ConSERT_large
在 6
个 STS
数据集中取得了最好的性能,大大超过了 BERT_large-flow
,平均有 8%
的相对性能增益(从 70.76
到 76.45
)。
此外,值得注意的是,ConSERT_large
甚至超过了几个监督的基线(如 Table 3
所示),如 InferSent (65.01)
和Universal Sentence Encoder (71.72)
,并保持与强大的监督方法 SBERT_large-NLI (76.55)
相当的性能。
对于BERT_base
架构,我们的方法 ConSERT_base
也超过了 BERT_base-flow
,绝对数值提高了 3.17
(从 69.57
到 72.74
)。
这里是不公平的比较,这些模型的预训练语料库都不相同,因此很难判断是算法的优势、还是语料库的优势。
监督学习的结果:对于监督评估,我们考虑 joint, sup-unsup, joint-unsup
三种设置。 请注意,在 joint
设置中,只有 NLI
文本被用于对比学习,使其与 SBERT-NLI
可比。我们使用在 joint
设置下训练的模型作为 joint-unsup
设置中的 initial checkpoint
。我们还重新实现了 SBERT-NLI
,并将其作为 sup-unsup
设置中的初始 initial checkpoint
。 结果如下表所示,可以看到:
对于用 NLI
监督训练的模型,我们发现 ConSERT joint
的表现一直比 SBERT
好,揭示了我们提出的 contrastive objective
以及数据增强策略的有效性。平均而言,ConSERT_base joint
比重新实现的 SBERT_base-NLI
达到了 2.88
的性能增益,而ConSERT_large joint
达到了 2.70
的性能增益。
当进一步用 STS
未标记的文本进行 representation transfer
时,我们的方法取得了更好的性能。平均而言,ConSERT_large joint-unsup
以 1.84
的性能增益优于 initial checkpoint ConSERT_large
,并以 2.92
的性能增益优于之前SOTA
的BERT_large-flow
。
这些结果表明,即使是在监督信息下训练的模型,无监督的 representation transfer
仍有巨大的改进潜力。
这里也是不公平的比较,因为
ConSERT
用了好的初始化点。
BERT Embedding Space
分析:我们进行了实验从而证明假设:collapse
问题主要是由于各向异性空间,该空间对 token
频率敏感。我们在应用均值池化计算 sentence representation
时,移除了几个 most frequent tokens
的 embedding
。下图显示了被移除的 top-k frequent tokens
的数量与平均 spearman
相关系数之间的关系。可以看到:
对于 BERT
,当删除几个最高频的 tokens
时,BERT
在 STS
任务上的性能会有很大的改善。当删除 34
个最高频的 tokens
时,BERT
取得了最好的性能(61.66
),比原来的性能(53.86
)提升了 7.8
。
对于ConSERT
,我们发现去除几个最高频的 tokens
只带来了不到 0.3
的小改进。结果表明,我们的方法重塑了BERT
的原始embedding space
,减少了 common tokens
对 sentence representation
的影响。
数据增强策略的影响:这里我们研究了数据增强策略对 contrastive learning
的影响。我们为每个 transformation
考虑了 5
个选项,包括:None
(即什么都不做)、Shuffle
、Token Cutoff
、Feature Cutoff
、Dropout
,结果是 5 x 5
的组合。注意,这里没有考虑 Adversarial Attack
策略,因为它需要额外的监督信息来产生对抗性样本。所有这些实验都遵循无监督的设置,并使用BERT_base
架构。 实验结果如下图所示,可以看到:
首先,Shuffle
和 Token Cutoff
是两个最有效的策略(其中Shuffle
略好于 Token Cutoff
),显著优于 Feature Cutoff
和 Dropout
。这可能是因为 Shuffle
和 Token Cutoff
与下游的 STS
任务更相关,因为它们直接在 token-level
上进行操作,并改变了句子的结构以产生 hard examples
。
其次,与 None-None
基线相比,Feature Cutoff
和 Dropout
也提高了大约4
分的性能。
此外,我们发现它们作为一种补充策略时,效果很好。例如,与另一种策略如 Shuffle
相结合,可能会进一步提高性能。当把Shuffle
和 Feature Cutoff
结合起来时,我们取得了最好的结果。我们认为 Feature Cutoff
和 Dropout
有助于为 sentence encoder
建模内部噪声的不变性invariance
,从而提高模型的鲁棒性。
最后,我们还观察到,即使没有任何数据增强(None-None
组合),我们的对比框架也能提高BERT
在STS
任务中的表现(从53.86
到63.84
)。这种None-None
组合对最大化视图之间的 agreement
没有影响,因为augmented views
的 representations
是完全相同的。相反,它通过将每个 representation
从其他 representation
中推开,从而调优了 representation space
。我们认为,这种改进主要是由于 BERT
的native representation space
的 collapse
现象。在某种程度上,这也解释了为什么我们的方法是有效的。
Few-shot Setting
的性能:为了验证 ConSERT
在数据稀疏情况下的可靠性和鲁棒性,我们进行了 few-shot
实验。我们将未标记文本的数量分别限制为 1/10/100/1000/10000
,并将其性能与完整的数据集进行比较。结果如下图所示,可以看到:
在无监督和有监督的情况下,我们的方法只需要 100
个样本就可以比 baseline
有很大的改善。
当训练样本增加到 1000
个时,我们的方法基本上可以达到与完整数据集上训练的模型相当的结果。
这些结果揭示了我们的方法在数据稀疏的情况下的鲁棒性和有效性,这在现实中是很常见的。只需从target
数据分布中提取少量的未标记文本,我们的方法也可以调优 representation space
,并有利于下游任务。
温度的影响:NT-Xent loss
中的温度 softmax
操作归一化的分布的平滑度,从而影响反向传播时的梯度。大的温度使分布更加平滑,而小的温度则使分布更加尖锐。在我们的实验中,我们探索了温度 0.08
到 0.12
之间)。
这一现象再次证明了 BERT embedding
的 collapse
问题,因为大多数句子是相互接近的,大的温度可能会使这一任务太难学习。我们在大多数实验中选择
Batch Size
的影响:在以前的一些 contrastive learning
的工作中,据报道,大 batch size
有利于最终的性能,并加速模型的收敛,因为它为对比学习提供了更多的in-batch
负样本(《A simple framework for contrastive learning of visual representations》
)。这些 in-batch
负样本提高了训练效率。我们分析了 batch size
对无监督的 sentence representation transfer
的影响,结果如下表所示。我们同时显示了 spearman
相关系数、以及相应的 training steps
。可以看到:
较大的 batch size
确实能实现更好的性能。然而,这种改善并不显著。
同时,较大的 batch size
确实加快了训练过程,但它同时也需要更多的 GPU
内存。
句子嵌入entence embedding
提供了紧凑的有意义的 representation
,对各种语言处理任务有广泛的帮助,包括分类 classification
、问答 question-answering
、语义检索 semantic retrieval
、bitext mining
和语义相似性 semantic similarity
等任务。 最近的工作表明,扩大模型参数、以及利用预训练模型是提高性能的两种有效方法。
论文 《Sentence-T5: Scalable Sentence Encoders from Pre-trained Text-to-Text Models》
从一个预训练的Text-to-Text Transfer Transformer: T5
模型中探索 sentence embedding
。encoder-only model
仅使用 transformer encoder
来预测随机掩码的 token
,而 T5
使用 encoder-decoder
架构和 generative span corruption pre-training task
。 T5
模型可以扩展到数千亿个参数,并在广泛的 NLP
任务上取得了 SOTA
的性能,包括 GLUE
和 Super-GLUE
。然而,很难将 T5
有效地应用于某些任务,如检索或聚类。为了给 retrieval candidate
打分,T5
需要对每个 query-candidate pair
进行带 cross-attention
的 full inference
。相比之下,sentence embedding
可以实现高效的检索和聚类。
如下图所示,论文探索了将 pre-trained T5 encoder-decoder model
变成 sentence embedding model
的三种方式:
使用编码器的 first token representation
。
将编码器的 all token representations
取平均。
使用解码器的 first token representation
。
论文在 sentence transfer
任务上(使用 SentEval
)、以及语义文本相似性 semantic textual similarity: STS
任务上评估所得的 sentence embedding
的质量。论文将来自 pre-trained T5 model
的原始 representation
与通过微调的 representation
进行对比(在 natural language inference: NLI
和 Retrieval Question-Answering: ReQA
上使用双编码器和对比学习进行微调)。论文介绍了一个多阶段的对比学习方法:首先在 ReQA
上进行微调,然后在 NLI
上进行微调。最后,论文研究了将 T5 sentence embedding model
扩展到 11B
参数。如下图所示,transfer
任务和 STS
任务都随着模型容量的增加而提高。论文将所提出的模型命名为 Sentence T5: ST5
。
据作者所知,该论文是第一个研究使用大规模 pre-trained text-to-text model
进行 sentence representation learning
,并将 sentence embedding model
扩展到 11B
个参数。
论文贡献如下:
即使没有微调,仅有编码器的 ST5
模型在 sentence transfer
任务上表现良好,超过了 SOTA
的微调模型,如 SimCSE-BERT
和SimCSE-RoBERTa
。
encoder-decoder sentence embedding model
在 STS
上取得了强大的性能,建立了 sentence embedding based STS
的新的 SOTA
。
对比学习 contrastive learning
对于从 T5-style pre-trained model
中微调句子编码器是有效的,特别是使用论文提出的两阶段对比学习方法。
使用对比损失 contrastive loss
训练 ST5
更长的时间和更多的数据,导致在 sentence transfer
和 STS
任务上的一致改进。
创建一个新的 sentence representation transfer benchmark
,即 "SentGLUE"
,它将 sentence evaluation toolkit
扩展到 GLUE benchmark
的九个任务,并在 SentGLUE
上评估 ST5
和其他的 SOTA
模型,从而比较它们在这些挑战性任务上的 transfer
性能。
T5
:Text-to-Text transfer transformers: T5
如 Figure 2(a)
所示,由一个 encoder-decoder transformer model
组成,在一个无监督的 span corruption task
上进行预训练。虽然 T5
已经成功应用于众多 NLP
任务,但如何从 T5
中提取高质量的 text representation
仍未被探索。
ST5
的模型架构:我们探索了三种策略从 T5
中抽取 sentence representation
,如 Figure 2
的 (b)
到 (d)
所示:
Encoder-only first (ST5-Enc first)
:将第一个 token
在 encoder
上的输出作为 sentence embedding
。
Encoder-only mean (ST5-Enc mean)
:将所有 token
在 encoder
上的输出的平均值作为 sentence embedding
。
Encoder-Decoder first (ST5-EncDec first)
:decoder output
的第一个位置作为 sentence embedding
。为了获得 decoder output
,将 input text
馈入编码器,并将标准的 "start" symbol
作为 first decoder input
。
前两个是广泛用于encoder-only pre-trained model
(如 BERT
)中的池化策略。与 BERT
模型不同,T5
模型在每个句子的开头没有 CLS token
。对于 T5 encoder-decoder model
,我们假设解码器在生成它的first token prediction
时知道整个 input sentence
的语义。如果是这样,first decoder output embedding
(即 softmax layer
的 input
)可能会自然地捕获到句子语义。
对于 sentence encoder
的训练,我们采用双编码器 dual encoder
架构。如下图所示,该架构由两个共享权重的 transformer
模块(用于对输入进行编码)组成。transformer
模块可以是一个encoder-only
架构、或 encoder-decoder
架构。在我们的实验中,我们从 pre-trained T5 model
中初始化 transformer
模块。
在每个模块为其 input sentence,
计算出一个固定维度的 representation
后,我们应用投影层projection layer
和 L2 normalization
来作用到所得到的 embedding
之上。投影层将 output
转换为指定维度(即 sentence embedding size
)。来自paired encoding tower
的 embeddings
可以使用内积为相似性任务打分,或者作为输入提供给额外的层从而用于 pairwise classification
任务(如 NLI
)。
注:这里是双编码器架构,但是实际上也可以包含解码器,即
ST5 Encoder-Decoder
。
对比学习 Contrastive Learning
:将对比学习应用于 sentence embedding
,可以提高 embeddings space
的均匀性 uniformity
,从而在下游任务(如 STS
)中获得更好的表现(《SimCSE: Simple contrastive learning of sentence embeddings》
)。我们应用对比学习来微调 T5 sentence representation
。
注:在初步实验中,我们还探索了用 InferSent
和 SBERT
中使用的 classification loss
进行微调。然而,我们发现在NLI
数据集上针对分类任务的微调不如对比学习,如 SimCSE
所报告的那样。
Contrastive Loss
:使用对比损失来训练一个 sentence encoder
需要 paired examples
batch
中的所有其他样本认为是负样本。模型应该学会将正样本拉到 input example
附近,同时将负样本推开。我们使用 in-batch sampled softmax
来计算我们的对比损失:
其中:sim()
是相似度评分函数,mini-batch
的样本,softmax
温度。
当为 input example
两阶段训练:为了研究额外的训练数据的效果,我们探索了两阶段的训练:
首先在 Community QA
网站挖掘的问答数据上进行微调。
这个阶段的对比学习不包含额外的负样本。
然后,在带有人类标注的NLI
标签的 sentence pair
上对模型进行微调。
这个阶段的对比学习包含额外的负样本。注意,虽然
NLI
有类别标签,但是这里并不是用分类任务进行微调,而是用对比学习进行微调。
训练数据:我们使用两个数据集从而用于两阶段的训练:
第一个阶段使用 community QA
网站收集到的 2B
个 question-answers pair
。在训练期间,相关的答案被认为是每个输入问题的正样本。
community QA
的数据量有二十亿,远远超过了NLI
数据集。
第二个阶段使用 NLI
数据集的 contrastive
版本(遵从 SimCSE
),其中包含 275K
个样本,正样本是 entailment hypothesis and premise pair
、负样本是 contradict hypothesis and premise pair
。
评估:我们使用 SentEval
进行评估,其中包括 7
个 transfer
任务和 7
个 STS
任务:
transfer
任务:通过将sentence embedding
作为特征,从而考察线性分类模型的表现来评估 sentence embedding model
的效果。
STS
任务:通过sentence embedding
的余弦相似性,与人类标注的相似性分数之间的相关性来评估 sentence embedding model
的效果。
配置:
我们的模型是用 JAX
实现的,并在 Cloud TPU-v8
上训练。我们从 public T5 checkpoint
初始化双编码器模块。
在训练期间,我们使用 Adafactor
优化器,并将学习率设置为 0.001
。在训练总步数的 10%
之后对学习率应用线性衰减,使得在训练结束时将学习率降至 0
。
在 NLI
的微调时,我们使用 batch size = 512
;在 Community QA
数据集上微调时,我们使用 batch size = 2048
。
我们使用 softmax
温度
实验旨在回答以下问题:
Q1
:从T5
中提取 sentence representation
的最佳方式是什么?
Q2
:raw T5 sentence embedding
在下游任务中的表现如何?
Q3
:contrastive sentence embedding
任务(如NLI
、QA
)对 T5 sentence embedding
的改善程度如何?
Q4
:我们能否从扩大模型容量以获得更好的sentence representation
中获益?
带着这些目标,我们使用各种模型和训练配置研究 T5 sentence embedding
在 transfer
任务和 STS
任务上的性能,将 ST5
与 SOTA
方法进行比较,包括 SBERT/SRoBERTa
和 SimCSE
。
我们首先评估没有微调的 T5 sentence embedding
。我们评估了所有三种策略:Encoder-only first token
、Encoder-only mean
、Encoder-decoder start token
。在所有的实验中,我们直接使用 T5 transformer
的 encoder output
或 decoder output
,而不做任何投影。这使我们能够充分利用 pre-trained model
的 embedding
能力。
transfer
任务:在 transfer
任务中使用raw embedding
的 ST5
模型的结果显示在下表的第 3-5
行。
与 BERT
不同,T5
的 first token
(无论是编码器还是解码器)并不是一个特殊的占位符(即 CLS
),也没有特定的预训练任务使用第一个token
的 embedding
。因此,如果不进行额外的微调,first token
的 representation
不太可能捕获到整个句子的语义。
事实上,我们的实验表明,在所有的 SentEval
任务中,来自编码器或解码器的first token
的 representation
,与encoder-only model
的均值池化相比要差很多。
当在 T5 encoder output
上应用均值池化时(下表中的第四行),它大大超过了 BERT
的 average embeddings
。值得注意的是,即使没有微调,T5
的encoder-only outputs
的 average embeddings
也优于 SimCSE-RoBERTa
,后者在 NLI
数据集上进行了微调。
这可能是由于 T5
是在更多的数据上训练的。原始的 T5
模型在预训练时还包括下游任务(如 GLUE
、SuperGLUE
),这种多任务设置可能会提高 transfer
性能。然而我们注意到,GLUE
中只包含了两个 SentEval
任务(SST
和MRPC
),而我们本次评估中的剩余五个任务则没有包含在 GLUE
中。如下表所示,我们观察到,未包括在GLUE
中的其它五个任务都有明显的改进。
STS
任务:相比之下,我们观察到使用 raw T5 sentence embedding
的 STS
任务的结果很弱,如下表的第 3-5
行所示。T5 embedding
的均值池化实现了 55.97
的平均 STS
得分,略好于 BERT
的均值池化,但仍然比在监督任务上进行微调的模型差得多。这类似于其他 pre-trained language models
(如 BERT
、RoBERTa
) 关于 contextual embedding
的各向异性现象的发现结果(《SimCSE: Simple contrastive learning of sentence embeddings》
)。embedding collapse
阻止了该模型在与距离有关的指标上的良好表现。
接下来,我们从 pre-trained T5 model
开始,用我们在 NLI
任务上采用对比损失来微调的 ST5
模型进行评估。鉴于 encoder only mean pooling
的表现比 first token
的表现好得多,我们选择在微调 ST5
模型时放弃 first token
的版本。
Table 2
的最后四行显示,微调之后,不同的embedding
生成策略中,ST5
模型的 transfer
性能非常一致。最好的 fine-tuned model
比最好的 raw T5 sentence embedding
要好 0.57
。
在 Table 3
的最后四行中,我们看到在 NLI
数据集上微调的 ST5
与没有微调的 ST5
相比,显著提高了STS
任务的性能。这支持了对比学习能有效缓解 T5-style model
的 embedding collapse
的说法。
为了研究额外的训练数据对contrastive learning
的影响,我们先用 ST5
模型在 Community QA
上训练,然后在 NLI
上进行微调。如 Table 2
和 Table 3
所示,在额外的数据集上进行微调后,transfer
和 STS
任务的性能都有很大的提升。这表明,对于 continued contrastive learning
,我们可能能够通过挖掘额外的半结构化数据来进一步提高 sentence embedding
的质量。
为了排除下游任务的 mixing
的影响,我们还基于 T5 1.1
模型(T5 1.1
仅在 C4
数据集上进行了预训练)训练了一个 ST5
变体。如Table 2
和 Table 3
的最后一行所示,它取得了与原始 T5
模型相当的性能,在大多数任务上表现出色,但在 STS
上表现不佳。
这里我们比较了两种架构的性能:encoder-only
、encoder-decoder
。
T5
的编码器有更好的泛化性:在Table 2
中,我们看到 encoder-only Base model
在 transfer
任务上的表现与 encoder-decoder model
相当。当我们将 ST5
模型从 Base model
扩展到 Large model
、3B model
和 11B model
时,如下表所示,encoder-only model
在 transfer
任务上的表现始终优于 encoder-decoder model
。这表明,在T5
的编码器之上构建ST5
,可以获得强大的 transfer
性能。
最近,《Rethinking embedding coupling in pre-trained language models》
表明,更大的 output embedding
(即更大的嵌 embedding size
)有效地防止了编码器对预训练任务的over-specializing
,从而使编码器的representation
更通用、更 transferable
。我们假设,encoder-decoder
架构中的 decoder
可以以类似的方式提高encoder
的 representation
的通用性,因为decoder
专注于为特定任务进行优化。
encoder-decoder model
在这里表现不佳的主要原因是:这里仅仅用到decoder
的first output
。
解码器的有效性:在Table 3
的最后两行,我们观察到 encoder-decoder
架构在所有STS
任务中的表现都优于 encoder-only model
。随着我们扩大 ST5
模型的规模,我们也观察到 STS
任务上的改进。如 Table 5
所示,ST5 encoder-decoder Large model
优于 SOTA
的模型 SimCSE-RoBERTa_Large
,将 Spearman
相关系数分从 83.76
提高到 84.11
。
一种解释是,来自解码器的额外参数有助于改善文本相似性任务。
另一种可能是,解码器结构本身有助于提高 sentence embedding
质量。如 Figure 2(d)
所示,解码器可以被看作是encoder outputs
之上的一个额外的attention pooling layer
。 由于解码器的权重是从 pretrained T5 model
中提取的,解码器可能会学习一种更好的方法,在encoder outputs
上增加attention pooling
,而不是mean pooling
。
此时需要监督信息来训练这个
attention pooling layer
(即,解码器),这就是CommQA + NLI
微调的作用。
我们利用 large T5 model
的现有checkpoint
来研究 scaling sentence encoder
的效果。T5
模型的参数规模如下表所示。注意,ST5-EncDec
并没有完全利用模型的参数:解码器学到的 self-attention
实际上被忽略了,因为只有 start token
被馈入解码器。
直接使用 T5 Embedding
的效果:如Table 5
所示:
随着 T5
规模的扩大,直接使用 T5 embedding
的 transfer
任务的性能持续提高。这印证了 large pre-trained model
可以提高 sentence embedding
的 transfer
性能。
另一方面,仅仅增加模型容量并不足以缓解 embedding collapse
的情况。即使是来自T5 11B
模型的 embedding
,在 STS
任务上的表现仍然比fine-tuned model
更差。
一个原因是,T5
的 pre-training span corruption task
并不要求模型避免各向异性(例如,通过使用 contrastive loss
或正则化)。这突出了选择与similarity/retrieval
性能目标一致的微调任务的重要性。
改善 ST5 Fine-tuning
:如Table 5
所示:
我们发现,扩大模型容量会使所有下游任务的性能持续提高。
对于ST5 11B
模型,encoder-only model
在 transfer
任务上取得了 91.08
分的平均分,优于 ST5 Large
模型的 90.45
分。
对于ST5 11B
模型,encoder-decoder model
将 STS
得分推高到 84.94
,也超过了 ST5 Large
模型。
这激励我们探索更大的模型规模,以实现更好的 sentence embedding
质量。
对于 STS
任务,我们观察到,从 3B
到 11B
的性能增益,要比从 Large
到3B
的增益更小。这可能是由于在我们的实验中,所有模型的 embedding size
是固定的。一个潜在的探索是为更大的模型增加 sentence embedding size
,以充分利用模型的能力。
我们进一步计算 《Understanding contrastive representation learning through alignment and uniformity on the hypersphere》
中定义的 alignment loss
和 uniformity loss
,以衡量 sentence embedding
的质量:
其中:positive data
的分布 ,positive pairs
的 embedding
之间的期望距离,embedding
分布的均匀程度。
对于这两种损失,数字越小说明性能越好。如下图所示,当模型规模扩大时,encoder model
和 encoder-decoder model
都减少了uniformity loss
,而 alignment loss
只略有增加。
我们试图研究更大的模型规模、更多的训练数据对更好的 sentence embedding
的影响是否是叠加的。如Table 5
最后两行所示,当扩大到Large
和 3B
时,ST5
通过在 NNLI
之外的 Community QA
数据集上训练,进一步改善了下游任务。
不同大小的模型的推断速度如下图所示:
这里我们介绍了一个新的sentence representation transfer benchmark
,即 SentGLUE
,它将 sentence evaluation toolkit
扩展到 GLUE benchmark
中的九个挑战任务,包括:CoLA, SST-2, MRPC, STS-B, QQP, MNLI-m, MNLI-mm, QNLI, RTE
。GLUE benchmark
已被广泛用于测量语言理解模型。GLUE
任务是单个句子或 sentence pair
的classification
任务(如 NLI
)或相似性任务(如 STS
)。
GLUE
排行榜上最好的模型是微调的 cross-attention model
,如 BERT
或 T5
。这类模型在微调过程中会改变底层模型的所有参数。对于 pairwise
任务,这类模型允许早期融合来自被比较的两个句子的 input feature
。对于 SentGLUE
,我们引入了一个约束条件,即每个 input
都需要独立地编码为一个固定尺寸的 embedding space representation
,然后可以被馈入到其他层,以便进行预测。我们认为这最能适应原始 SentEval benchmark
的 sentence embedding
的精神,也能适应 GLUE benchmark
任务。
结果如下表所示:
除了 CoLA
和 MNLI
任务,ST5-Enc Base
在所有的 SentGLUE
任务中都优于 SBERT-RoBERTa Base
和 SimCSE-RoBERTa Base
。
值得注意的是,随着模型规模的扩大,使用 sentence embedding
的总体性能接近 T5 base
。考虑到 T5 base
利用了 sentence pair
之间的 full cross-attention
,并在微调过程中调整了模型中的所有参数,这一点非常了不起。
虽然深度学习模型在许多 NLP
任务上达到了 SOTA
,但这些模型都是从头开始训练的,需要大量的数据集,而且需要几天的时间来收敛。NLP
的研究主要集中在 transductive transfer
上。对于 transductive transfer
,微调 pretrained word embedding
(一种简单的迁移技术,只针对模型的第一层)在实践中产生了很大的影响,并被用于大多数 SOTA
的模型。最近的方法是将来自其他任务的 embedding
与不同层的 input
相拼接,仍然从头开始训练 main task model
,并将 pretrained embedding
视为固定参数,限制了其有用性。
即,这些方法仅仅迁移了
word embedding
。
鉴于预训练的好处,我们应该能够比随机初始化模型的其余参数(即,embedding
之外的参数)做得更好。然而,通过微调的 inductive transfer
对于 NLP
来说是不成功的。《Semisupervised Sequence Learning》
首次提出对语言模型 language model: LM
进行微调,但需要数百万的 in-domain
文档来实现良好的性能,这严重限制了其适用性。
论文 《Universal Language Model Fine-tuning for Text Classification》
表明,不是语言模型微调的思想,而是缺少如何有效训练语言模型的知识,从而阻碍了语言模型微调的更广泛的采用。语言模型对小数据集过拟合,并且在用分类器进行微调时遭遇灾难性遗忘 catastrophic forgetting
。与 CV
模型相比,NLP
模型通常更浅,因此需要不同的微调方法。
因此,论文 《Universal Language Model Fine-tuning for Text Classification》
提出了一种新的方法,即 Universal Language Model Fine-tuning: ULMFiT
,它可以解决这些问题,并为任何 NLP
任务实现强大的 inductive transfer learning
,类似于微调 ImageNet
模型:同样的 3
层 LSTM
架构,具有相同的超参数,除了调优 dropout
超参数之外没有其他改变,在6
个广泛研究的文本分类任务中胜过高度特征工程的模型、以及迁移学习方法。
论文贡献:
作者提出了 Universal Language Model Fine-tuning: ULMFiT
,这种方法可以用来实现任何 NLP
任务的类似 CV
的迁移学习。
作者提出了 discriminative fine-tuning
、斜三角学习率、逐渐解冻 gradual unfreezing
等新技术,以保留以前的知识并避免微调过程中的灾难性遗忘。
作者在六个有代表性的文本分类数据集上的表现明显优于 SOTA
的方法,在大多数数据集上的误差降低了 18%-24%
。
作者表明,ULMFiT
能够实现极其 sample-efficient
的迁移学习,并进行了广泛的消融分析。
作者提供了预训练好的模型和代码,以便能够更广泛地采用。
相关工作:
CV
中的迁移学习:在 CV
中,深度神经网络的特征已经被观察到,从第一层到最后一层对应于通用任务过渡到特定任务。由于这个原因,CV
中的大多数工作都集中在模型的第一层的迁移上。近年来,这种方法已经被微调 pretrained model
最后一层或最后几层并让其余层冻结所取代。
Hypercolumns
:在 NLP
中,最近才提出了超越 transferring word embedding
的方法。流行的方法是预训练 embedding
,通过其他任务捕获额外的上下文。 然后将不同 level
的 embedding
作为特征,与 word embedding
或中间层的input
相拼接。这种方法在 CV
中被称为 hypercolumns
,并在 NLP
中被一些工作所使用,这些工作分别使用语言建模、转述paraphrasing
、蕴含 entailment
和机器翻译等任务进行预训练。在 CV
中,hypercolumns
已经几乎完全被端到端的微调所取代。
多任务学习:一个相关的方向是多任务学习 multi-task learning: MTL
。MTL
要求每次都要从头开始训练任务,这使得它的效率很低,而且经常需要对特定任务的目标函数进行仔细加权。
微调:微调已经成功地用于相似任务之间的迁移,但已被证明在不相关的任务之间失败(《How Transferable are Neural Networks in NLP Applications? 》
)。《Semi-supervised Sequence Learning》
也对语言模型进行了微调,但对 10k
个标记样本上过拟合,并且需要数百万的 in-domain
文档才能有好的表现。相比之下,ULMFiT
利用通用领域的预训练、以及新的微调技术来防止过拟合,即使只有 100
个标记样本,也能在小数据集上取得 SOTA
的结果。
我们对 NLP
的最通用的 inductive transfer learning
的 setting
感兴趣:给定一个源任务 language modeling
可以被看作是理想的源任务,也是 NLP
的 ImageNet
的对应物:
首先,它捕获了(与下游任务相关的)语言的许多方面,如长期依赖关系、层级关系 hierarchical relation
、情感 sentiment
。
其次,与机器翻译和 entailment
等任务相比,语言建模为大多数领域和语言提供的数据数量近乎无限。
此外,预训练的语言模型可以很容易地适配目标任务的特有性质,我们表明这可以大大改善性能。
最后,语言建模已经是现有任务的一个关键组成部分,如机器翻译和对话建模 dialogue modeling
。
正式地,语言建模引入了一个假设空间 hypothesis space
NLP
任务有用。
我们提出了 Universal Language Model Finetuning: ULMFiT
,它在大型通用领域语料库上预训练语言模型,并使用新技术在目标任务上进行微调。该方法具有普遍性,因为它符合这些实践准则:
它可以在不同的文档 size
、数量、标签类型的任务中工作。
它使用单个架构、单一的训练过程。
它不需要定制化的特征工程或预处理。
它不需要额外的 in-domain
文档或标签。
在我们的实验中,我们使用 SOTA
的语言模型 AWD-LSTM
,这是一个普通的 LSTM
(没有注意力、没有 short-cut connection
、也没有其它额外的复杂组件),具有各种调优好的 dropout rate
超参数。与 CV
类似,我们希望未来可以通过使用更高性能的语言模型来提高下游的性能。
因为这篇论文是
2018
年提出的,因此还没有使用transformer-based
语言模型。
ULMFiT
包含如下步骤,如下图所示:
(a)
:通用领域的语言模型预训练。
(b)
:目标任务的语言模型微调。
(c)
:目标任务的分类器微调。
注意,这里是三个阶段的训练。能否合并为 “通用领域 + 目标任务”的语言模型、目标任务的分类模型两阶段? 或者通用领域的语言模型、目标任务的”语言模型 + 分类模型“ 两阶段?然而,论文对目标任务的语言模型、目标任务的分类模型采用了不同的学习率调度和微调策略,因此需要分开。
General-domain LM pretraining
:类似于 ImageNet
的语言模型语料库应该是大型的,并能捕获到语言的通用属性。我们在Wikitext-103
上预训练语言模型,该模型由 28595
篇预处理的维基百科文章和 103M
个单词组成。
预训练对具有小数据集的任务最有利,即使有100
个标记的样本,也能进行泛化。我们把探索更多样化的预训练语料库留给未来的工作,但预计它们会提高性能。虽然这个阶段是最昂贵的,但它只需要执行一次,并能提高下游模型的性能和收敛速度。
Target task LM fine-tuning
:无论用于预训练的 general-domain
数据有多么多样化,目标任务的数据都可能来自不同的分布。因此,我们在目标任务的数据上对语言模型进行微调。给定预训练好的 general-domain LM
,这个阶段收敛得更快,因为它只需要适配目标数据的特殊属性,而且它允许我们训练一个鲁棒的语言模型,即使是针对小数据集。 我们提出了用于微调语言模型的 discriminative fine-tuning
和斜三角学习率:
discriminative fine-tuning
:由于不同的层捕获不同类型的信息,它们应该被微调到不同的程度。为此,我们提出了一种新的微调方法,即 discriminative fine-tuning
。
discriminative fine-tuning
不是对模型的所有层使用相同的学习率,而是允许我们用不同的学习率对每一层进行微调。 针对模型参数
其中:
对于 discriminative fine-tuning
,我们将 discriminative fine-tuning
的 SGD
更新为:
实验中我们发现,首先选择
因为
target task LM
任务的数据集很小且收敛很快,因此这里多次微调的代价较小。
斜三角学习率:为了使模型参数适配 task-specific features
,我们希望模型在训练开始时能迅速收敛到参数空间的一个合适区域,然后再 refine
模型参数。在整个训练过程中使用相同的学习率、或使用退火的学习率,并不是实现这种行为的最佳方式。相反,我们提出了斜三角学习率 slanted triangular learning rate: STLR
,它首先线性增加学习率,然后根据以下 update schedule
来线性衰减,如下图所示:
其中:
cutfrac
是增加学习率的迭代步数的占比。
cut
是从增加学习率切换到减少学习率的迭代步数的切换点。
ratio
指定最小的学习率比最大的学习率小多少。
我们通常选择 cutfrac = 0.1
,ratio = 32
,STLR
修改了三角学习率,其中学习率具有较短的上升期、较长的衰减期,我们发现这是良好性能的关键。在实验部分,我们与余弦退火 cosine annealing
进行了比较。
Target task classifier fine-tuning
:最后,为了对分类器进行微调,我们用两个额外的 linear block
来增强 pretrained language model
。遵从 CV classifier
的标准做法,每个 block
使用了 batch normalization
和 dropout
,中间层使用 ReLU
激活函数、最后一层使用 softmax
激活函数从而输出关于 target classes
的概率分布。注意,这些 task-specific classifier layers
的参数是唯一从头开始学习的。第一个线性层将最后一个隐藏层的池化后的状态作为输入。
Concat pooling
:文本分类任务中的信号往往包含在几个单词中,这些单词可能出现在文档的任何地方。由于输入文档可能由数百个单词组成,如果我们只考虑模型的最后一个隐状态,信息可能会丢失。出于这个原因,我们将文档最后一个 time step
的隐状态 time steps
的隐状态 GPU
内存的限制)的 max-pooled representation
和 mean-pooled representation
相拼接:
其中
Gradual unfreezing
:微调 target classifier
是迁移学习方法中最关键的部分:
过于激进的微调会导致灾难性的遗忘,消除了通过语言建模捕获的信息的好处。
过于谨慎的微调会导致缓慢的收敛(以及由此产生的过拟合)。
除了 discriminative finetuning
和斜三角学习率,我们还提出了针对 fine-tuning the classifier
的渐进式解冻。我们建议从最后一层开始逐步解冻模型,而不是一下子对所有层进行微调,因为这样做有灾难性遗忘的风险:
我们首先解冻最后一层,并微调所有未被冻结的层一个 epoch
。
此时,未被解冻的层包括:最后一层、以及
target classifier
。
然后我们解冻下一个较低的 frozen layer
并微调一个 epoch
。
此时解冻的层有两层了。
我们不停地重复这种解冻操作,直到我们对所有层进行微调。
这类似于 "chain-thaw"
,只是我们每次在 "解冻"层的集合中增加一个层,而不是每次只训练一个层。
discriminative fine-tuning
、斜三角学习率、渐进式解冻本身都是有益的,但我们在实验部分表明,它们相互补充,使我们的方法在不同的数据集上表现良好。
BPTT for Text Classification
:语言模型是通过 back-propagation through time: BPTT
来训练的,以实现大输入序列的梯度传播。为了使大型文件的分类器的微调可行,我们提出了 BPTT for Text Classification: BPT3C
:
我们将文件分为 batch size = b
的 batch
。
在每个 batch
的开始,模型用前一个 batch
的 final state
进行初始化。
我们跟踪 hidden states
从而用于计算 mean-pooling
和 max-pooling
。
梯度被反向传播到其隐状态对 final prediction
有贡献的 batch
。
在实践中,我们使用可变长度的反向传播序列。
双向语言模型:我们不限于微调单向语言模型。在我们所有的实验中,我们同时预训练一个 forward LM
和一个 backward LM
。我们使用 BPT3C
为每个 LM
独立微调一个分类器,并对分类器的预测进行平均。
这些训练方式过于古老,在
transformer-based
模型中已经不被使用。
数据集:我们在六个被广泛研究的数据集上评估我们的方法,这些数据集具有不同的文档数量和不同的文档长度,对应于三种常见的文本分类任务:情感分析、问题分类、主题分类:
Sentiment Analysis
:对于情感分析,我们在二元电影评论 IMDb
数据集、二分类版本和五分类版本的 Yelp
评论数据集上评估我们的方法。
Question Classification
:我们使用六分类版本的小型 TREC
数据集,该数据集由开放领域的、基于事实的问题组成,被划分到一组语义类别 semantic category
。
Topic Classification
:对于主题分类,我们对大规模 AG
新闻数据集和 DBpedia
本体数据集进行评估。
数据集和任务的统计信息如下表所示。
预处理:我们使用与早期工作相同的预处理方法(《Deep pyramid convolutional neural networks for text categorization》
、《Learned in Translation: Contextualized Word Vectors》
)。此外,为了让语言模型能够捕获到可能与分类相关的方面,我们为大写字母的单词、elongation
和 repetition
添加了 special tokens
。
超参数:我们感兴趣的是一个在各种任务中表现鲁棒的模型。为此, 默认情况下,我们在不同的任务中使用相同的超参数集合,我们在 IMDb
验证集上进行调优。
我们使用 AWD-LSTM
语言模型, emebdding size = 400
,3
层,每层 1150
个隐藏单元,BPTT
的 batch size = 70
。默认情况下我们对所有的层采用 dropout rate = 0.4
,但是对 RNN
层采用 dropout rate = 0.3
、embedding layer
采用 dropout rate = 0.05
、对 RNN hidden-to-hidden matrix
采用 dropout rate = 0.5
。
classifier
有一个大小为 50
的隐层。我们使用 Adam
,而不是默认的 batch size = 64
,用于微调语言模型、分类器的 base learning rate
分别为 0.004
和 0.01
,并在每个任务的验证集上微调 epoch
的数量。除此之外,我们还使用了 《Regularizing and Optimizing LSTM Language Models》
中使用的相同做法。
baseline
:
对于 IMDb
数据集和 TREC-6
数据集,我们与 CoVe
进行比较,这是一种用于 NLP
的最新的迁移学习方法。
对于 AG
数据集、Yelp
数据集和 DBpedia
数据集,我们与 《Deep pyramid convolutional neural networks for text categorization》
的 SOTA
的文本分类方法进行比较。
为了保持一致性,我们以错误率的形式报告所有结果(越低越好),结果如下表所示。可以看到,我们的方法在所有数据集上都超越了 baseline
。这很有前景,因为现有的 SOTA
需要复杂的架构、多种形式的注意力、和复杂的 embedding
方案,而我们的方法采用了普通的 LSTM
与 dropout
。
消融研究:我们在 IMDb
、TREC-6
和AG
这三个代表不同任务、类型和规模的语料库上进行了实验。在所有的实验中,我们从训练集中分离出 10%
作为验证集,并在这个验证集上报告单向语言模型的错误率。我们对分类器微调了 50
个 epoch
,并对除了 ULMFiT
外的所有方法进行了带 early stopping
的训练。
Low-shot learning
:迁移学习的主要好处之一是能够用少量的标签为任务训练一个模型。我们在两种情况下对 ULMFiT
进行了评估:只有标记样本被用于 LM
的微调("supervised"
),所有的任务数据都可以用来微调 LM
("semi-supervised"
)。我们将 ULMFiT
与从头开始训练("from scratch"
)进行比较。我们保持固定的验证集,并使用与之前实验相同的超参数。实验结果如下表所示。可以看到:
在 IMDb
和 AG
上,仅仅具有 100
个标记样本的 supervised ULMFiT
,就匹敌了具有 10
倍和 20
倍数据的从头开始训练的性能。这清楚地表明了通用领域的语言模型预训练的好处。
如果我们允许 ULMFiT
也利用未标记的样本,那么具有 100
个标记样本的 supervised ULMFiT
,能够匹敌了具有 50
倍和 100
倍数据的从头开始训练的性能。
在 TREC-6
上,ULMFiT
明显改善了从头开始的训练。由于样本内容更短、数量更少,supervised ULMFiT
和 semi-supervised ULMFiT
取得了相似的结果。
预训练的影响:我们在下表中比较了不使用预训练、以及使用预训练的效果(预训练在 WikiText-103
上进行)。预训练对中小规模的数据集最有用,这在商业应用中是最常见的。然而,即使对于大型数据集,预训练也能提高性能。
LM
质量的影响:为了衡量选择一个合适的语言模型的重要性,我们在下表中比较了具有相同超参数、没有任何 dropout
的常规 LM
,以及具有调优的 dropout
参数的 AWD-LSTM LM
。使用我们的微调技术,即使是常规的语言模型在较大的数据集上也能达到令人惊讶的良好性能。在较小的 TREC-6
数据集上,没有 dropout
的常规语言模型有过拟合的风险,从而降低了性能。
LM fine-tuning
的影响:我们比较了几种微调方法:没有微调/微调整个模型("Full"
,即最常用的微调方法)、具有/没有 discriminative fine-tuning
("Discr"
)、斜三角学习率( "Stlr"
)。微调语言模型对较大的数据集最为有利。"Discr"
和 "Stlr"
提高了所有三个数据集的性能,并且在较小的 TREC-6
上是必要的(在 TREC-6
数据集上,常规微调是没有好处的)。
classifier fine-tuning
的影响:我们比较了几种微调方法:头开始训练、微调完整模型("Full"
)、只微调最后一层("Last"
)、"Chain-thaw"
、渐进式解冻('Freez'
)。我们进一步评估 discriminative fine-tuning
('Discr'
)和斜三角学习率('Stlr'
)的重要性。我们将后者与另一种激进的余弦退火调度器('Cos'
)进行比较。我们对 'Discr'
使用的是学习率 'Chain-thaw'
使用的是最后一层的学习率 0.001
而其他层的学习率为 0.0001
,其它方法使用 0.001
的学习率。结果如下表所示。
微调分类器比从头开始训练有明显的改善,特别是在小型的 TREC-6
上。
CV
中的标准微调方法,即 "Last"
,在这里效果严重不佳,而且永远无法将训练误差降低到 0
。
"Chain-thaw"
在较小的数据集上效果较好,但是在大型的 AG
数据集上效果较差。
"Freez"
提供了与 "Full"
类似的性能。
余弦退火方法在大数据集上与斜三角学习率有竞争力,但在小数据集上表现不佳。
最后,完整的 ULMFiT
分类器微调(最下面一行)在 IMDB
和 TREC-6
上实现了最好的性能,在 AG
上也有竞争力。重要的是,ULMFiT
是唯一在各方面都表现出优异性能的方法,因此是唯一的通用方法。
分类器微调行为:虽然我们的结果表明,如何微调分类器会有很大的不同,但目前在 NLP
中对 inductive transfer
的微调的探索不足,因为它大多被认为是无益的。为了更好地理解我们模型的微调行为,我们在下图中比较了训练期间用 ULMFiT
微调的分类器、以及用'Full'
微调的分类器的验证误差。
在所有的数据集上,在训练的早期,例如在 IMDb
上的第一个 epoch
之后,对 Full
模型的微调导致了最低的误差。然后,随着模型开始过拟合,并且丢失了通过预训练获得的知识,误差会增加。
相比之下,ULMFiT
更稳定,没有这种灾难性的遗忘;性能保持相似或改善,直到最后的 epoch
,这显示了学习率调度的积极作用。
双向性的影响:以训练第二个模型为代价,将 forward LM-classifier
和 backward LM-classifier
的预测 ensemble
在一起,带来了大约 0.5-0.7
的性能提升。在 IMDb
上,我们将测试误差从单个模型的 5.30
降低到双向模型的 4.58