DeCLUTR
无监督文本表示的深度对比学习
Deep Contrastive Learning for Unsupervised Textual Representations
摘要
句嵌入是许多自然语言处理系统的重要组成部分。与词嵌入一样,句嵌入通常是在大型文本语料库上学习的,然后转移到各种下游任务,如聚类和检索。与单词嵌入不同,学习句子嵌入的最高性能解决方案需要标记数据,这将它们的有用性限制在标记数据丰富的语言和领域。在本文中,我们提出了DeCLUTR:无监督文本表示的深度对比学习。受深度度量学习(DML)最新进展的启发,我们精心设计了一个不需要标记训练数据的学习通用句子嵌入的自监督目标。当用于扩展基于transformer的语言模型的预训练时,我们的方法缩小了通用句子编码器的无监督和有监督预训练之间的性能差距。重要的是,我们的实验表明,学习嵌入的质量与可训练参数的数量和未标记的训练数据的数量有关。我们的代码和预先训练的模型是公开可用的,可以很容易地适应新的领域或用于嵌入看不见的文本(训练集以外的数据)。
1. 介绍
由于许多自然语言处理(NLP)任务可用的标记训练数据数量有限,迁移学习已变得普遍(Ruder等人,2019)。一段时间以来,NLP中的迁移学习仅限于预训练的词嵌入(Mikolov et al., 2013;Pennington et al., 2014)。最近的研究表明,使用预训练的句子嵌入有很强的迁移任务表现。这些固定长度的向量,通常被称为“通用”句子嵌入,通常在大型语料库中学习,然后转移到各种下游任务,如聚类(如主题建模)和检索(如语义搜索)。
事实上,句子嵌已经成为一个焦点领域,许多方法是有监督的(Conneau等人,2017年)、半监督的(Subramanian等人,2018;Pang等人,2018;Cer等人,2018;Reimers和Gurevych等人,2019年)和无监督的(Le和Mikolov,2014;Jernite等人,2017;Kiros等人,2015;Hill等人,2016;Logeswaran和Lee,2018)。然而,性能最高的解决方案需要带标签的数据,这限制了它们对带标签数据丰富的语言和领域的有用性。因此,缩小无监督和有监督通用语句嵌入方法之间的性能差距是一个重要的目标。
基于Transformer的预训练语言模型已成为从未标记语料库中学习文本表示的主要方法(Radford等人,2018年;Devlin等人,2019年;Dai等人,2019年;Yang等人,2019年;Liu等人,2019年;Clark等人,2020年)。这一成功主要是由屏蔽语言建模(MLM)推动的。这种自我监督的token级目标要求模型从输入序列中预测一些随机屏蔽的token的身份。除了MLM,这些模型中的一些有通过自监督学习句子级嵌入的机制。在BERT (Devlin等人,2019)中,一个特殊的分类标记被预先添加到每个输入序列中,并且它的表示被用于二进制分类任务中,以预测在训练语料库中一个文本片段是否跟随另一个文本片段,表示为下一句预测(NSP)。然而,最近的工作对NSP的有效性提出了质疑(Conneau和Lample,2019;Y ou等人,1904年;Joshi等人,2020年)。在Roberta(Liu等人,2019年)中,作者证明了在预训练期间移除NSP会导致下游句子水平任务(包括语义文本相似性和自然语言推理)的表现不变,甚至略有提高。
在 ALBERT (Lan et al., 2020) 中,作者假设 NSP 将主题预测和连贯性预测混为一谈,并提出了一个句子顺序预测目标 (SOP),表明它可以更好地模拟句间连贯性。在初步评估中,我们发现这两个目标都没有产生良好的通用句子嵌入(参见附录 A)。因此,我们提出了一个简单但有效的自我监督的句子级目标,其灵感来自度量学习的最新进展。
度量学习是一种表示学习,旨在学习一个嵌入空间,其中相似数据的向量表示被紧密映射在一起,反之亦然(Lowe,1995;Mika 等,1999;Xing 等,2002)。在计算机视觉 (CV) 中,深度度量学习 (DML) 已广泛用于学习视觉表征(Wohlhart 和 Lepetit,2015;Wen 等,2016;Zhang 和 Saligrama,2016;Bucher 等,2016;Leal- Taix´ 等,2016;Tao 等,2016;Yuan 等,2020;He 等,2018;Grabner 等,2018;Yelamarthi 等,2018;Y u 等, 2018)。
一般来说,DML的处理方法如下:精心设计一个“借口”任务(通常是自我监督的,例如着色或修复),并用于训练深层神经网络以生成有用的特征表示。
这里,“有用”指的是一种易于适应其他下游任务的表示,这些任务在训练时是未知的。下游任务(例如对象识别)然后被用于评估所学习特征的质量(独立于产生它们的模型),通常通过使用这些特征作为输入在任务上训练线性分类器。到目前为止,最成功的方法是设计一个借口任务,使用基于配对的对比损失函数进行学习。****对于给定的锚数据点,对比损失试图使锚和一些正数据点(相似的)之间的距离小于锚和一些负数据点(不相似的数据点)之间的距离(Hadsell等人,2006年)。
性能最好的方法通过随机增强相同的图像(例如,使用裁剪、翻转和颜色扭曲)来生成锚正向对;锚负向对是随机选择的、不同图像的增强视图(Bachman等人,2019年;Tian等人,2020年;He等人,2020年;Chen等人,2020年)。事实上,Kong 等人,2020 年证明 MLM 和 NSP 目标也是对比学习的实例。受这种方法的启发,我们提出了一个自监督的对比目标,可用于预训练句子编码器。我们的目标是通过训练一个编码器来学习通用句子的嵌入,使同一文档中随机抽取的文本片段的嵌入距离最小。通过使用SentEval (Conneau and Kiela, 2018)来扩展基于转换器的语言模型的前训练,并获得最先进的结果,我们证明了我们的目标的有效性。SentEval是一个由28个任务组成的基准任务,旨在评估通用句子嵌入。
我们的主要贡献是:
- 我们提出了一个自我监督的句子级目标,可以与传销一起用于预训练基于Transformer的语言模型,在没有任何标记数据的句子和段落的文本中引入通用嵌入(第5.1小节)。
- 我们进行广泛的消融实验以确定哪些因素对学习高质量的嵌入是重要的(第5.2小节)。
- 我们证明,学习嵌入的质量与模型和数据大小有关。因此,性能很可能通过收集更多的无标签文本或使用更大的编码器(分段5.3)来提高。
- 我们开放我们的解决方案,并提供详细的指导,以训练它的新数据或嵌入看不见的文本。
2. 相关工作
以前关于通用句子嵌入的工作可以根据他们在预训练步骤中是否使用标记数据来大致分组,我们简单地将其分别称为监督或半监督和非监督。
监督或半监督
性能最高的通用句子编码器在人类标记的自然语言推理(NLI)数据集Stanford NLI(SNLI)(Bowman等人,2015年)和MultiNLI(Williams等人,2018年)上进行了预训练。
自然语言推理的任务是将一对句子(表示“假设”和“前提”)归入三种关系中的一种:蕴涵、矛盾或中性。NLI在训练通用句子编码器方面的有效性通过有监督的InferSent方法得到了证明(Conneau等人,2017年)。通用句子编码器(USE)(Cer等人,2018年)是半监督的,增加了一个无监督的、类似跳过思想的任务(Kiros等人。2015年,见第2节),在SNLI语料库上进行监督训练。最近出版的句子转换器(Reimers和Gurevych,2019年)方法使用标记的NLI数据集对预先训练的、基于转换器的语言模型进行微调,比如Bert(Devlin等人,2019年)。
Unsupervised
Skip-Think(Kiros等人,2015)和FastSent(Hill等人,2016)是流行的无监督技术,它们通过使用句子的编码来预测相邻句子中的单词来学习句子嵌入。然而,除了计算成本高之外,这种生成性目标迫使模型重构句子的表面形式,这可能捕获与句子含义无关的信息。quickthings(Logeswaran和Lee,2018)用简单的区别性目标解决了这些缺点;给定一个句子及其上下文(相邻句子),它通过训练一个分类器来区分上下文句子和非上下文句子来学习句子表示。
无监督方法的统一主题是,它们利用了“分布假设”,即一个词(以及引申为一个句子)的意义由它出现的词的上下文来表征。
我们的整体方法与句子Transformer最相似——我们扩展了基于Transformer的语言模型的预处理,以产生有用的句子嵌入——但我们提出的目标是自监督的。消除对标签数据的依赖使我们能够利用网络上大量的未标签文本,而不局限于标签数据丰富的语言或领域(例如英语维基百科)。
我们的目标与 QuickThoughts 最为相似; 一些区别包括:我们将采样放宽到最大段落长度(而不是自然句子)的文本段,我们对每个锚点(而不是严格的一个)采样一个或多个正段,并且我们允许这些段相邻、重叠或 包含(而不是严格相邻;参见图 1,B)。
图1:自监督对比目标概述。
(A)对于$minibatch=N$的$d$的文档,我们为每个文档采样$A$个
anchor
。简单起见,我们举例说明$A=P=1$的情况,并表示anchor-positive
为$\boldsymbol { s } _ { i } , \boldsymbol { s } _ { j }$。每个span
都通过相同的编码器$f(\cdot)$和池化器$g(\cdot)$来产生对应的嵌入$\boldsymbol{e}_i=g(f(\boldsymbol{s_i})),\boldsymbol{e}_j=g(f(\boldsymbol{s_j}))$。编码器和pooler经过训练,通过对比预测任务最小化嵌入之间的距离,其中minibatch中的其他嵌入被视为负数(为了简单起见,这里省略了)。(B)正样本可以和
Anchor
重叠,相邻或包含(C)锚的长度和正数是从beta分布中随机抽样的,分别向较长的和较短的跨度倾斜。
3. 模型
3.1 Self-supervised对比损失
我们的方法通过对比损失来学习文本表示,通过最大化从同一文档中附近采样的文本片段(在论文的其余部分称为“跨度”)之间的一致性来学习文本表示。如图1所示,该方法包括以下组件:
数据加载步骤从大小为$N$的小批次的每个文档中随机抽样成对的
anchor-positive
span。设 $A$是每个文档采样的anchor span
个数。 我们表示一个anchor span
和它对应的 $p\in {1…P}$positive span
作为$\boldsymbol{s}i$和$\boldsymbol{s}{i+pAN}$。此程序旨在最大限度地抽样语义相似的anchor-positive
对(参见第3.2节)。编码器 $f(\cdot )$将输入跨度中的每个token映射到嵌入。虽然我们的方法对编码器的选择没有限制,但我们选择$f( \cdot )$为基于Transformer的语言模型,因为这代表了文本编码器的最高水平。
池化器$g( \cdot )$将编码
span
,$f(\boldsymbol{s}i)$和 $f(\boldsymbol{s}{i+pAN})$映射到固定长度嵌入$\boldsymbol{e}_i=g(f(\boldsymbol{s}_i))$及其对应的平均positive
嵌入:
$$
\boldsymbol { e } _ { i + A N } = \frac { 1 } { P } \sum _ { p = 1 } ^ { P } g \left( f \left( \boldsymbol { s } _ { i + p A N } \right) \right)
$$与Reimers和Gurevych 2019类似,我们发现选择$g(·)$作为token级嵌入的平均值(在论文的其余部分称为“mean pooling”)表现良好(见附录,表4)。我们将每个锚点嵌入与多个正嵌入的平均值配对。这一策略是由Saunshi等人在2019年提出的,他们证明了与使用每个锚的单一积极例子相比,理论和经验上的改进。
为对比预测任务定义的对比损失函数。给定一组嵌入区间${\boldsymbol{e_k}}$,其中包含正样本$\boldsymbol{e}i$和$\boldsymbol{e}{i+AN}$,对比预测任务的目标是识别给定$\boldsymbol{e}i$的$\boldsymbol{e}{i+AN}$ :
$$
\ell ( i , j ) = - \log \frac { \exp \left( \operatorname { sim } \left( \boldsymbol { e } _ { i } , \boldsymbol { e } _ { j } \right) / \tau \right) } { \sum _ { k = 1 } ^ { 2 A N } \mathbb { 1 } _ { [ i \neq k ] } \cdot \exp \left( \operatorname { sim } \left( \boldsymbol { e } _ { i } , \boldsymbol { e } _ { k } \right) / \tau \right) }
$$
其中,$\operatorname { sim } ( \boldsymbol { u } , \boldsymbol { v } ) = \boldsymbol { u } ^ { T } \boldsymbol { v } / | \boldsymbol { u } | _ { 2 } | \boldsymbol { v } | _ { 2 }$代表向量u和v余弦相似度,$\mathbb { 1 } _ { [ i \neq k ] } \in { 0,1 }$表示一个指示函数,如果$ i \neq k$则为1,$\tau > 0$ 表示温度超参数。
在训练期间,我们从训练集中随机抽取$ N $个文档的小批量样本,并在来自 $ N $ 个文档的锚正对$\boldsymbol{e}i,\boldsymbol{e}{i+AN}$上定义预测任务,从而产生$2AN$数据点。
正如 (Sohn, 2016) 中提出的,我们将minibatch中的其他$2(AN-1)$个实例视为反例。损失函数采用以下形式:
$$
\mathcal { L } _ { \text {contrastive } } = \sum _ { i = 1 } ^ { A N } \ell ( i , i + A N ) + \ell ( i + A N , i )
$$
这是之前作品中使用的InfoNCE损失(Sohn, 2016;Wu et al., 2018;Oord et al., 2018),并在(Chen et al., 2020)中表示归一化温度尺度交叉熵损失或“NT-Xent”。
要通过一个训练好的模型来embed文本,我们只需要在模型中传递一批token化的文本。因此,我们的方法在测试时的计算成本是编码器$f( \cdot )$和池化器 $g(\cdot )$的成本,当在使用平均池化时可以忽略不计。
3.2 Span采样
我们从选择最小和最大的span长度开始;在本文中,$\ell _ { \min } = 32$,$\ell _ { \max } = 512$,这是许多预训练的Transformer的最大输入尺寸。接下来,文档$d$被标记化以产生$n$个token $\boldsymbol { x } ^ { d } =(x_1,x_2,\dots,x_n)$。为了从$\boldsymbol{x}^d$中随机抽样anchor span
$\boldsymbol{s}i$,我们首先从$\beta$分布中抽样其长度$\ell{anchor}$,然后随机抽样其起始位置$s_i^{start}$。
$$
\begin{aligned} \ell _ { \text {anchor } } & = \left\lfloor p _ { \text {anchor } } \times \left( \ell _ { \max } - \ell _ { \min } \right) + \ell _ { \min } \right\rfloor \ s _ { i } ^ { \text {start } } & \sim \left{ 0 , \ldots , n - \ell _ { \text {anchor } } \right} \ s _ { i } ^ { \text {end } } & = s _ { i } ^ { \text {start } } + \ell _ { \text {anchor } } \ \quad s _ { i } & = \boldsymbol { x } _ { s _ { i } ^ { d \text { start } } : s _ { i } ^ { \text {end } } } \end{aligned}
$$
然后,我们对$p \in { 1 \ldots P }$按照类似的过程采样对应的positive spans
$\boldsymbol { s } _ { i + p A N }$:
$$
\begin{aligned} \ell _ { \text {positive } } & = \left\lfloor p _ { \text {positive } } \times \left( \ell _ { \max } - \ell _ { \min } \right) + \ell _ { \min } \right\rfloor \ s _ { i + p A N } ^ { \text {start } } & \sim \left{ s _ { i } ^ { \text {start } } - \ell _ { \text {positive } } , \ldots , s _ { i } ^ { \text {end } } \right} \ s _ { i + p A N } ^ { \text {end } } & = s _ { i + p A N } ^ { \text {start } } + \ell _ { \text {positive } } \ \boldsymbol { s } _ { i + p A N } & = \boldsymbol { x } _ { s _ { i + p A N } ^ { s \text { start } } } { : s _ { i + p A N } ^ { \text {end } } } \end{aligned}
$$
其中$p _ { \text {anchor } } \sim \operatorname { Beta } ( \alpha = 4 , \beta = 2 )$,这使得锚定采样向更大跨度倾斜,以及
$p _ { \text {positive } } \sim \operatorname { Beta } ( \alpha = 2 , \beta = 4 )$这使得正样本偏向较短的跨度(图1.c)。在实际中,我们限定来自同一文档的anchor span
的采样,以便它们至少相隔$2* \ell_{max}$个token。在附录B中,我们展示了通过我们的方法抽样的文本的示例。我们在设计抽样程序时注意到几个经过深思熟虑的决定:
- 从 $\ell_{min}=32$和$\ell_{max}=512$分布处裁剪的采样宽度长度鼓励模型为 句子级到段落级长度的文本产生良好的嵌入。在测试时,我们希望我们的模型能够嵌入最长到段落长度的文本
- 我们发现,
anchor span
的采样长度比positive span
更长,可以提供下游任务的性能(我们没有发现性能对特定的α和β选择敏感)。这样做的理由有两个。首先,它使该模型能够学习全局到局部视图预测(Hjelm等人,2019年;Bachman等人,2019年;Chen等人,2020年)(在图1,B中称为“包含视图”)。第二,当$P>1$时,它通过减少重复语篇的数量来鼓励positive span
的多样性。 - 对
anchor
附件的positive
采样利用了分布式假设,并增加了采样的有效(既语义相似性)anchor-positive
对的机会。 - 通过对每个文档中的多个
anchor
进行采样,每个anchor-positive
将与简单负样本(从Minibatch中其他文档采样的anchor
和positives
)和hard负样本(从同一文档中采用的anchor
和positive
)。
总之,采样程序产生三种类型的正样本:
- 与
anchor
部分重叠的正样本 - 与
anchor
相邻的正样本 - 被
anchor
包含的正样本(图1,B)
以及两种类型的负样本:
- easy:从与
anchor
不同的文档中采样 - hard:从与
ancho
相同的文档中采样
因此,我们随机生成的训练集和对比损失隐含地定义了一系列预测任务,可用于训练模型,独立于任何特定的编码器架构。
3.3 继续mlm预训练
我们使用我们的目标函数来扩展基于Transformer语言模型的预训练模型,因为这代表NLP中最先进的编码器。我们按照(Devlin et al., 2019)中所述在minibatch中的每个anchor span
上采用MLM目标函数,并在反向传播之前对来自$MLM$和对比损失函数的损失求和。
$$
\mathcal { L } = \mathcal { L } _ { \text {contrastive } } + \mathcal { L } _ { \mathrm { MLM } }
$$
这类似于现有的预训练策略,其中 MLM 损失与句子级损失配对,例如 NSP(Devlin 等人,2019)或 SOP(Lan 等人,2020 年)。为了使计算要求可行,我们不会从头开始训练,而是继续训练一个已经用 MLM 目标进行预训练的模型。
具体来说,我们在实验中同时使用 RoBERTa-base (Liu et al., 2019) 和 DistilRoBERTa (Sanh et al., 2019)(RoBERTa-base 的蒸馏版本)。在本文的其余部分,我们将我们的方法称为 DeCLUTR-small(扩展 DistilRoBERTa 预训练时)和 DeCLUTR-base(扩展 RoBERTa-base 预训练时)。
5. 结果
在 5.1 小节中,我们将模型的性能与相关基线进行了比较。在剩下的部分中,我们探索哪些组件有助于学习嵌入的质量。
5.1 与基线的比较
下游任务的性能
加粗的是最好性能。
5.2 采样程序的消融实验
我们消除了采样过程的几个组成部分,包括每个文档 $A$ 采样的锚点数量、每个锚点 $P$ 采样的正样本数量以及这些正样本的采样策略(图 2)。
每个文档采样的锚跨度数 (a)、每个锚点采样的正跨度数 (b) 和采样策略 (c) 的影响。从 SentEval 的验证集中报告平均下游任务分数。表格通过超参数网格进行计算,并绘制为分布图。
网格由
anchor
的数量$A={1,2}$,正样本的数量$P={1,2,4}$,温度超参数:$\tau = \left{ 5 \times 10 ^ { - 3 } , 1 \times 10 ^ { - 2 } , 5 \times 10 ^ { - 2 } \right}$和学习率$\alpha = \left{ 5 \times 10 ^ { - 5 } , 1 \times 10 ^ { - 4 } \right}$的数量来排列。P = 4被省略,因为这些实验不适合图形处理器内存。
我们注意到当$A=2$时,与$A=1$相比,模型在两倍的span数和两部的有效批量($2AN$,其中$N$是小批次中的文档数)上训练。为了控制这一点,所有$A=1$的实验都针对两个epoch($A=2$时epochs的两倍)和两倍的小批量(2N)进行训练。(数据量保持一样)因此,两组实验都在相同跨度数和相同的有效批次大小($4N$)上进行训练,唯一的区别就是每个文档的anchor
样本数量($A$)。
我们发现,对每个文档的多个锚点进行采样对学习嵌入的质量有很大的积极影响。我们假设这是因为当A > 1时,对比目标的难度增加了。回想一下,minibatch是由随机文档组成的,从文档中取样的每个锚-正对与minibatch中的所有其他锚-正对进行对比。当$A>1$时,anchor-positive
对将与来自同一文档的其他anchor-positive
进行对比,增加了对比难度,从而导致更好的表征。
我们还发现,一个正样本采样策略,允许positive
邻接和被包含,优于允许只采用二者之一的策略,这表明视图获取的信息是互补的。最后,我们注意到每个anchor
(P > 1)取样多个positive
对性能的影响很小。
这与(Sanshi等人,2019年)相反,他发现当给定的anchor
具有多个positive
平均时,理论和经验上都有所改善。
5.3 训练目标,训练集大小和模型容量
为了确定培训目标、训练集大小和模型容量的重要性,我们训练了两个大小的模型,训练集的10%到100%(1个完整的epoch)(图3)。
用MLM目标和对比目标对模型进行预处理,比单独用任何一个目标进行训练都提高了性能。随着训练集规模的增加,将MLM纳入对比目标会带来单调的改善。我们假设,包括MLM损失作为一种正则化形式,防止预训练模型(其本身是用MLM损失训练的)的权重偏离太大,这种现象被称为“灾难性遗忘”(McCloskey和Cohen,1989;拉特克利夫,1990年)。
这些结果表明,通过我们的方法学习到的嵌入质量根据模型容量和训练集大小来衡量;因为训练方法是完全自我监督的,所以缩放训练集只需要收集更多未标记的文本。
6. 讨论和总结
本文提出了一个学习通用句子嵌入的自监督目标。我们的目标不需要标记的训练数据,适用于任何文本编码器。我们通过评估SentEval基准上的学习嵌入来证明我们目标的有效性,该基准包含总共28个任务,旨在评估句子表示的可迁移性和语言属性。当用于扩展基于Transformer的语言模型的预处理时,我们的自我监督目标缩小了与现有方法的性能差距,现有方法需要人工标记的训练数据。实验表明,通过增加模型和训练集的大小,可以进一步提高学习嵌入的质量。总之,这些结果证明了用精心设计的学习通用句子嵌入的自我监督目标代替手工标记数据的有效性和可行性。我们公开发布我们的模型和代码,希望它能扩展到新的领域和非英语语言。