三十八、DeCLUTR[2020]

  1. 一段时间以来,NLP 中的迁移学习仅限于 pretrained word embedding 。最近的工作表明,使用 pretrained sentence embedding 有很强的 transfer task 性能。这些固定长度的向量(通常被称为 "universal" sentence embedding),通常在大型语料库中学习,然后迁移到各种下游任务中,如聚类(如主题建模)和检索(如语义搜索)。事实上,sentence embedding 已经成为一个重点领域,许多有监督的、半监督的、无监督的方法已经被提出。然而,性能最高的解决方案需要标记数据,限制了它们的实用性。因此,缩小无unsupervised universal sentence embeddingsupervised 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 pointcontrastive 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 objectiveNSP objective 也是对比学习的实例。

    受这种方法的启发,论文 《DeCLUTR: Deep Contrastive Learning for Unsupervised Textual Representations》 提出了一个自监督的 contrastive objective ,可用于预训练 sentence encoder 。这个 objective 通过训练一个编码器来学习 universal sentence embedding ,以最小化从同一文档中的相近位置处的、随机采样的 textual segmentemebdding 之间的距离。作者通过使用该 objective 来扩展 transformer-based language model 的预训练来证明该 objective 的有效性,并在 SentEval 上获得 SOTA 的结果。

    这也是对比学习的思路。

    论文贡献:

    • 提出了一个自监督的 sentence-level objective ,可以与 MLM 一起用于预训练 transformer-based language model ,在没有任何标记数据的情况下为 sentence-lengthparagraph-length 的文本生成 generalized embedding

    • 进行了广泛的消融实验,从而确定哪些因素对学习高质量的 embedding 是重要的。

    • 证明了学到的 embedding 的质量与模型规模和数据规模有关。因此,仅仅通过收集更多的未标记文本或使用更大的编码器,就可以提高性能。

    • 开源了解决方案,并提供了在新数据上训练 unseen 文本的详细说明。

  2. 相关工作:以前关于 universal sentence embedding 的工作可以大致按照它们是否在预训练步骤中使用标记数据来分组,我们将其分别简称为:监督的、半监督的、以及无监督的。

    • 监督的和半监督的:性能最高的 universal sentence encoder 是在人类标记的自然语言推理(natural language inference : NLI )数据集 Stanford NLI: SNLIMultiNLI上预训练的。NLI 的任务是将一对句子(记做"hypothesis""premise" )分类为三种关系之一:entailmentcontradictionneutral

      • 监督方法 InferSent 证明了 NLI 对于训练 universal sentence encoder 的有效性。

      • Universal Sentence Encoder: USE是半监督的,用 SNLI 语料库上的监督训练来增强一个无监督的、类似 Skip-Thoughts 的任务。

      • 最近发表的 SBERT 方法使用标记的 NLI 数据集对预训练的、transformer-based language model (如 BERT )进行微调。

      注意,这里的“监督”信号不是来自于 target task,而是来自于公开可用的数据集。

    • 无监督的:

      • Skip-ThoughtsFastSent 是流行的无监督技术,通过使用一个句子的 encoding 来预测邻近句子中的单词来学习 sentence embedding 。然而,除了计算成本高之外,这种 generative objective 迫使模型重构句子的表面形式,这可能会捕获到与句子意义无关的信息。

      • QuickThoughts 用一个简单的 discriminative objective 来解决这些缺点:给定一个句子及其context (相邻的句子),它通过训练一个分类器来学习 sentence representation ,以区分context sentencenon-context sentence

      无监督方法的统一主题是它们利用了 "distributional hypothesis" ,即一个单词(以及延伸到一个句子)的意义是由它出现的单词的上下文来描述的。

    我们的整体方法与 SBERT 最为相似:我们扩展了transformer-based language model 的预训练,以产生有用的sentence embedding 。但是,我们提出的 objective 是自监督的。移除对标记数据的依赖,使我们能够利用网络上大量的未标记文本,而不局限于标记数据丰富的语言或领域。

    我们的 objectiveQuickThoughts 最相似,但是一些区别包括:

    • 我们将采样放宽到 paragraph length 的文本片段(而不是自然句子)。

    • 我们对每个 anchor 采样一个或多个 positive segment (而不是严格意义上的一个 positive segment )。

    • 并且我们允许这些 positive segment 相邻、重叠或包含(而不是严格意义上的相邻)。

38.1 模型

  1. 自监督对比损失:我们的方法通过最大化来自相同文档中相近位置采样的 textual segments 之间的一致性,从而基于 contrastive loss 来学习 textual representation 。如下图所示,我们的方法包括以下组件:

    • 一个 data loading step :从每个文档中随机采样 paired anchor-positive spans。 令 batch sizeN (包含 N 篇文档),每个文档采样了 Aanchor spans ,每个 anchor span 采样了 Ppositive spans 。令 i{1,,AN}anchor span 的编号。第 ianchor span 记做 si,它的第 ppositive span 记做 si+pAN 。这个程序的设计是为了最大化采样语义相似的 anchor-positive pair 的机会。

    • 一个编码器 f():将 input span 中的每个 token 映射为一个 embedding 。我们的方法对编码器的选择没有限制,但我们选择 f() 是一个 transformer-based language model ,因为这代表了文本编码器的 SOTA

    • 一个池化函数 g():将 encoded span f(si){f(si+pAN)}p=1P 分别映射为固定尺寸的 embedding ei=g(f(si)) 、及其相应的 mean positive embedding

      (1)ei+AN=1Pp=1Pg(f(si+pAN))

      类似于 SBERT ,我们发现均值池化作为 g() 时,表现良好。我们将每个 anchor embedding 与多个 positive embeddings 的平均值配对。这一策略是由 《A theoretical analysis of contrastive unsupervised representation learning》 提出的,他们证明了:与为每个 anchor 使用单个的 positive example 相比,该策略从理论上和经验上都得到改善。

    • contrastive loss function:用于 contrastive prediction 任务。给定一组 embedded span {ek},包含一对 positive pair (ei,ei+AN) ,那么给定 eicontrastive prediction 的目标是从 {ek}ki 中识别出 ei+AN

      (2)l(i,j)=logexp(sim(ei,ej)/τ)k=12NI[ki]exp(sim(ei,ek)/τ)

      其中:sim(u,v) 为余弦相似度;Iik 为示性函数,当 ik 时取值为 1 否则取值为零;τ>0 为温度超参数;j=i+AN

    在训练过程中,我们从训练集中随机采样大小为 N 个文档的 mini-batch ,并从这 N 个文档在 anchor-positive pair (ei,ei+AN) 上定义 contrastive prediction 任务,得到 2AN 个数据点。正如 《Improved deep metric learning with multi-class n-pair loss objective》 所建议的,我们将 mini-batch 中的其他 2(AN1) 个实例视为负样本。成本函数的形式为:

    (3)Lcontrastive=i=1ANl(i,i+AN)+l(i+AN,i)

    这是以前工作中使用的 InfoNCE loss ,在 《A simple framework for contrastive learning of visual representations》 中表示为 normalized temperature-scale crossentropy loss: NT-Xent

    为了用训练好的模型来嵌入文本,我们只需将 batchtokenized text 通过模型,而不需要采样 span 。因此,我们的方法在测试时的计算成本是编码器 f()的成本,加上池化器 g() 的成本(在使用均值池化时,池化器的成本是可以忽略的)。

  2. Span Sampling:我们首先选择一个 minimum span length 和一个 maximum span length 。这里我们选择 lmin=32,lmax=512。然后我们tokenize 文档 d ,产生一个长度为 ntoken 序列 xd=(x1,,xn) 。为了从 xd 中采样一个 anchor span si,我们首先从贝塔分布中采样其长度 lanchor,然后均匀随机地采样其起始位置 sistart

    (4)lanchor=panchor×(lmaxlmin)+lminsistart{0,,nlanchor},siend=sistart+lanchorsi=xsistart:siendd

    然后我们采样 P 个对应的 positive span ,其中第 ppositive span 为:

    (5)lpositive=ppositive×(lmaxlmin)+lminsi+pANstart{sistartlpositive,,siend},si+pANend=si+pANstart+lpositivesi+pAN=xsi+pANstart:si+pANendd

    注意,positive span 是在 anchor span 附近采样到的,因为 si+pANstart{sistartlpositive,,siend}

    其中:

    • panchor=Beta(α=4,β=2) ,它使 anchor sampling 向更长的 span 倾斜。

    • ppositiveBeta(α=2,β=4) ,它使 positive sampling 向更短的 span 倾斜(如 Figure 1(c) 所示)。

    在实践中,我们限制对同一文件的 anchor span 的采样,使其至少相隔 2×lmaxtoken

    我们注意到在设计我们的采样程序时有几个经过仔细考虑的决定:

    • lmin=32lmax=512 所截断的分布中采样 span length ,鼓励该模型对从 sentence-lengthparagraph-length的文本产生良好的 embedding

    • 我们发现, anchor span 的长度比 positive span 的长度更长,可以提高下游任务的性能(我们没有发现性能对具体的 αβ 的选择是敏感的)。有两个理由:

      • 首先,它使模型能够学习 global-to-local view prediction

        anchor 更长,对应于 globalpositive 更短,对应于 local

      • 其次,当 P>1 时,它通过降低重复文本的数量来鼓励 positive span 之间的多样性。

        如果 positive 更长,则 positive 重复的概率越大。

    • anchor 附近采样 positives ,可以利用分布假设,增加采样到有效的 anchor-positive pair (即语义相似)的机会。

    • 通过对每份文档采样多个 anchor,每个 anchor-positive pair 都与很多负样本进行对比:easy negatives (来自 mini-batch 中的其它文档中采样的anchorspositives )、hard negatives (来自同一文件中采样的anchorspositives )。

    总之,采样程序产生了三种类型的positives :与anchor 部分重叠的 positives 、与anchor 相邻的positives 、被 anchor 覆盖的positivesFigure 1 (b));以及两种类型的 negatives :从与anchor不同的文档中采样的easy negatives 、从与anchor 相同的文档中采样的hard negatives 。因此,我们随机生成的训练集和 contrastive loss 隐式地定义了一族 predictive tasks ,可以用来训练一个模型,并且与任何特定的编码器架构无关。

    下表展示了由我们的采样程序产生的 anchor-positiveanchor-negative 的例子。我们展示了三种 positivepositives adjacent tooverlapping withsubsumed by the anchor 。对于每个 anchor-positive pair ,我们展示了 hard negative (来自同一文档)和easy negative (来自另一文档)的例子。回顾一下,一个 mini-batch 是由随机文档组成的,每个anchor-positive pair 对都会与mini-batch 中的所有其他 anchor-positive pair 进行对比。因此,我们在这里所描述的hard negative ,只有在对每个文档采样多个 anchorA>1)时才会产生。

    这是 next sentence prediction 任务的扩展:预测是否是附近位置的句子。

  3. Continued MLM pretraining:我们使用我们的 objective 来扩展 transformer-based language model 的预训练:

    (6)L=Lcontrastive+LMLM

    这与现有的预训练策略类似,其中 MLM lossNSPSOPsentence-level loss 相加。

    为了降低计算成本,我们不从头开始训练,而是继续训练一个已经用 MLM objective 预训练好的模型。具体来说,我们在实验中同时使用 RoBERTa-baseDistilRoBERTaRoBERTa-base 的蒸馏后的版本)。在本文的其余部分,我们将我们的方法称为DeCLUTR-small (当扩展 DistilRoBERTa pretraining 时)和 DeCLUTR-base (当扩展 RoBERTa-base pretraining 时)。

38.2 实验

  1. 数据集:OpenWebText ,这是 WebText 语料库的一个子集。我们从中收集所有的最小 token 长度为 2048 的文档,总共得到 497868 个文档。

  2. 实现:我们在 PyTorch 中使用 AllenNLP 实现我们的模型。我们使用了 PyTorch Metric Learning library 实现的 NT-Xent loss function 、以及 Transformers librarypretrained transformer 的架构和权重。所有模型都是在最多四个 NVIDIA Tesla V100 16GB/32GB GPU 上训练的。

  3. 训练:

    • 除非另有说明,我们使用 AdamW 优化器对 497868 个文档训练 13epochminibatch size = 16,温度 τ=5×102,学习率为 5×105 ,权重衰减为 0.1

    • 对于 minibatch 中的每个文档,我们采样两个 anchor spanA=2)、每个anchor 采样两个 positive spanP=2)。

    • 我们使用斜三角学习率 scheduler ,训练步骤的数量等于训练实例的数量,cut 比例为 0.1

    • 底层 pretrained transformer (即 DistilRoBERTaRoBERTa-base )的其余超参数保持默认。

    • 在反向传播之前,所有梯度都被缩放为长度为 1.0 的范数(即,单位向量)。

    • 超参数是在 SentEval 验证集上调优的。

  4. 评估方式:我们在 SentEval benchmark 上评估了所有的方法,这是一个广泛使用的toolkit ,用于评估通用的 fixed-length sentence representationSentEval 分为 18 个下游任务(如情感分析、自然语言推理、转述检测 paraphraseimage-caption 检索)和 10probing 任务(旨在评估 sentence representation 中编码了哪些语言学属性)。

    我们报告了我们的模型和相关 baseline 在默认参数下使用 SentEval toolkit 在下游任务和 probing 任务上获得的分数。请注意,我们所比较的所有监督方法都是在 SNLI 语料库上训练的,而 SNLI 语料库是作为 SentEval 的下游任务包括的。为了避免 train-test 的污染,我们在 Table 2 中比较这些方法时,在计算平均下游分数时不考虑 SNLI

  5. baselineInferSentUSESentence-Transformer(即,SBERT) 。

    • USE 在结构和参数数量上与 DeCLUTR-base 最相似。Sentence-TransformerDeCLUTR-base 一样,使用 RoBERTa_base 架构和预训练好的权重,唯一区别在于不同的预训练策略。

    • 我们将 GloVe 词向量均值、fastText 词向量均值的性能作为弱基线。

    • 我们尽了最大努力,但我们无法针对完整的 SentEval benchmark 评估 pretrained QuickThought 模型,因此我们直接引用了论文中的分数。

    • 我们评估了 pretrained transformer 模型在采用我们的 contrastive objective 训练之前的表现,用 "Transformer-*" 来表示。我们在 pretrained transformers token-level output 上使用均值池化来产生 sentence embedding

    下表中列出了可训练的模型参数规模和 sentence embedding 维度。

  6. 下游任务的性能:

    • 与底层的 pretrained model DistilRoBERTaRoBERTa-base 相比,DeCLUTR-smallDeCLUTR-base 在下游性能方面获得了很大的提升,分别平均提升 +4%+6%

    • DeCLUTR-base 在除 SST5 以外的所有下游任务中都提高了性能,DeCLUTR-small 在除 SST2, SST5, TREC 以外的所有下游任务中都提高了性能。

    • 与现有的方法相比,DeCLUTR-base 在不使用任何人工标记的训练数据的情况下与监督/半监督性能相匹配,甚至超过了监督/半监督性能。

    • 令人惊讶的是,我们还发现,DeCLUTR-small 在使用 34% 的可训练参数的情况下,表现优于 Sentence Transformer

  7. Probing 任务性能:

    • 除了 InferSent 之外,现有的方法在 SentEvalprobing 任务上表现很差。

    • Sentence Transformer 相比它底层的 pretrained transformer model ,在 probing 任务上的得分低大约 10%

    • 相比之下,DeCLUTR-smallDeCLUTR-base 在平均性能方面的表现与底层的 pretrained model 相当。

    这些结果表明,在NLI 数据集上微调 transformer-based language model 可能会丢弃一些由 pretrained model 的权重捕获的语言信息。我们怀疑在我们的 training objective 中包含 MLMDeCLUTRprobing 任务上相对较高的表现的原因。

  8. 监督的和无监督的下游任务:SentEval 的下游评估包括有监督的任务和无监督的任务。

    在无监督的任务中,要评估的方法的 embedding 不需要任何进一步的训练。有趣的是,我们发现 USESentEval 的无监督评估(Table 2 中带 * 号的任务)中表现特别好。鉴于 USE 的架构与 Sentence TransformersDeCLUTR 的相似性,以及 USEsupervised NLI training objectiveInferSentSentence Transformer 的相似性,我们怀疑最可能的原因是其一个或多个额外的 training objective 。这些目标包括一个 conversational response prediction 任务、和一个类似 Skip-Thoughts 的任务。

  9. 采样程序的消融研究:我们评估了每个文档采样的 anchor 数量 A 、每个 anchor 采样的 positives 数量 P 、以及采样 positives 的策略对于模型效果的影响。我们注意到,当 A=2 时,与 A=1 相比,模型是在两倍的 span 和两倍的数据量(2AN,其中 Nmini-batch 中的文档数量)上进行训练。为了控制这一点,所有 A=1 的实验都被训练了两个epochA=2 时仅训练一个 epoch )、两倍的 mini-batch size2N)。因此,这两组实验都是在相同数量的 span 和相同的 effective batch size4N)上训练的,唯一的区别是每个文档采样的anchor 的数量(A)。

    P>1 时,数据量也增加了,是否也需要训练更多的 epoch?论文并未说明。

    • 对每个文档采样多个 anchorlearned embedding 的质量有很大的积极影响。我们假设这是因为当 A>1 时, contrastive objective 的难度增加。

      回顾一下,mini-batch 由随机文档组成,从一个文档中采样的每个 anchor-positive pair 都要与 mini-batch 中的所有其他 anchor-positive pair 进行对比。当 A>1 时,anchor-positive pair 将与同一文档中的其他 anchor-positive pair 进行对比,增加 contrastive objective 的难度,从而导致更好的 representation

      A 大于 2 时,效果如何?论文并未说明。

    • 允许与 anchor 相邻、或者被 anchor 包含的 positive sampling 策略,要优于仅支持 anchor 相邻,也优于仅支持被 anchor 包含的采样策略。这表明这两个视图(即,anchor 相邻、被 anchor 包含)所捕获的信息是互补的。

    • 对每个 anchor 采样多个 positivesP>1 )对性能的影响很小。这与(《A theoretical analysis of contrastive unsupervised representation learning》)相反,他们发现当多个 positives 被均值池化,并与一个给定的 anchor 配对时,理论上和经验上都有改进。

  10. 其它消融研究:为了确定训练目标、训练集大小、 模型容量的重要性,我们用训练集的10% ~ 100% (一个完整的 epoch )来训练两种规模的模型。

    • 同时用 MLM objectivecontrastive objective 对模型进行预训练,比单独用任何一个 objective 预训练提高了性能。

    • 对于 MLM objective + contrastive objective ,随着训练集大小的增加,模型性能单调地改善。

      我们假设引入 MLM loss 作为一种正则化的形式,防止 pretrained model 的权重(该模型本身是用 MLM loss 训练的)偏离太大(这种现象被称为 "灾难性遗忘 catastrophic forgetting ")。

    这些结果表明,通过我们的方法所学到的 embedding 的质量可以根据模型的容量和训练集的大小而 scale 。因为训练方法是完全自监督的,扩大训练集只需要收集更多的未标记文本。

    这个数据并未说明模型容量的重要性。在前面的实验中,DeCLUTR_base 的效果优于 DeCLUTR_small,说明了模型容量的重要性。

三十九、CLEAR[2020]

  1. 学习一个更好的 sentence representation model 一直是自然语言处理的一个基本问题。以 word embedding 的平均值作为 sentence representation (也称为均值池化)是早期常见的 baseline 。后来,预训练模型(如 BERT)提出在预训练中插入一个 special token (即 [CLS] token ),并将其embedding 作为 sentence representation 。由于 BERT 带来的巨大改进,人们似乎同意 CLS-token embeddingaveraging 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 很少被研究。

    • BERTword-level lossmasked language modeling: MLM )与sentence-level lossnext sentence prediction: NSP )相结合,并观察到 MLM+NSP 对一些下游任务是必不可少的。

    • RoBERTa 在预训练中放弃了 NSP 目标,但在各种下游任务中取得了更好的表现。

    • ALBERT 提出了一个用于 Sentence-Order Prediction: SOP 的自监督损失,用于建模句子之间的连贯性 inter-sentence coherence 。他们的工作表明,coherence prediction 是比主题预测topic predictionNSP 使用的方式)更好的选择。

    • DeCLUTR 是第一个将对比学习(Contrastive Learning: CL )与 MLM 结合起来进行预训练的工作。然而,它需要一个极长的输入文件,即 2048token ,这限制了模型在有限的数据上进行预训练。此外,DeCLUTRexisting pre-trained model 中进行训练,所以当它从头开始训练时,是否也能达到同样的性能仍是未知数。

    借鉴最近在pretrained language model 和对比学习方面的进展, 《CLEAR: Contrastive Learning for Sentence Representation》 提出了一个新的框架 CLEAR ,将 word-level MLM objectivesentence-level CL objective 结合起来对语言模型进行预训练:

    • MLM objective 使模型能够捕获 word-level hidden features

    • CL objective 则通过训练编码器以最小化同一句子的不同augmentationembedding 之间的距离,确保模型具有识别相似含义句子的能力。

    CLEAR 中,作者提出了一种新的 augmentation 设计,可用于在 sentence-level 预训练语言模型。

    论文贡献:

    • 提出并测试了四种基本的句子增强方法:random-words-deletionspans-deletionsynonym-substitutionreordering ,这填补了 NLP 中关于什么样的 augmentation 可以用于对比学习的巨大空白。

    • GLUESentEval 基准上,CLEAR 超过了几个强大的 baseline (包括 RoBERTaBERT )。例如,与 RoBERTa 模型相比,CLEAR8GLUE 任务上显示了+2.2% 的绝对改进,在 7SentEval 语义文本相似性任务上显示了 +5.7% 的绝对改进。

  2. 相关工作:

    • 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

      • 最近的一篇论文 SBERTaverage BERT embeddingsCLS-token embedding 进行了比较,并令人惊讶地发现,在BERT的最后一层计算所有输出向量的平均值要比 CLS-token embedding 的性能略好。

    • Large-scale Pre-trained Language Representation Model:深度 pre-trained language model 已经证明了它们在捕获隐式的语言特征方面的能力,即使是不同的模型架构、不同的预训练任务、以及不同的损失函数。其中两个早期工作是 GPTBERTGPT 使用了一个从左到右的 Transformer ,而 BERT 设计了一个双向的Transformer 。两者都在很多下游任务中创造了一个令人难以置信的新的 SOTA

      最近,人们在 pre-trained language model 领域发表了大量的研究工作。一些人将以前的模型扩展到序列到序列的结构,这加强了模型在语言生成上的能力。另一些人探索不同的预训练目标,以提高模型的性能或加速预训练。

    • Contrastive Learning:对比学习已经成为一个正在崛起的领域,因为它在各种计算机视觉任务和数据集中取得了巨大的成功。一些研究人员提出使图像的不同 augmentationrepresentation相互一致,并显示出积极的结果。这些工作的主要区别在于他们对图像增强的不同定义。

      NLP 领域的研究人员也开始致力于为文本寻找合适的增强。CERT 应用 back-translation 来创建原始句子的增强,而DeCLUTR 认为一个文档内的不同 span 相互之间是相似的。

      • 我们的模型与 CERT 的不同之处在于,我们采用了 encoder-only 的结构,这减少了 decoder 带来的噪音。

      • DeCLUTR 只测试一种 augmentation ,并且从 existing pre-trained model 中训练模型。与 DeCLUTR不 同的是,我们从头开始预训练所有的模型,这提供了一个与 existing pre-trained model 的直接比较。

39.1 模型

  1. 对比学习框架:借用 SimCLR ,我们提出了一个新的对比学习框架来学习 sentence representation ,命名为 CLEARCLEAR 有四个主要组件,如下图所示。

    • augmentation component AUC() :在原始句子上应用随机的augmentation 。对于每个原始句子 s ,我们产生两个随机的 augmentation s~1=AUC(s,seed1)s~2=AUC(s,seed2),其中 seed1seed2 是两个随机数种子。注意,为了单独测试每种 augmentation 的效果,我们采用相同的 augmentation 来生成 s~1s~2 。测试mixing augmentation 的模型需要更多的计算资源,我们计划将其留给未来的工作。augmentation 集合 A 将在后面内容介绍。

    • transformer-based encoder f():学习input augmented sentencerepresentation H1=f(s~1)H2=f(s~2) 。任何能够学习 sentence representation 的编码器都可以在这里。我们选择目前的 SOTA (即 transformer )来学习 sentence representation ,并使用 manually-inserted token (即 [CLS] ,如 BERTRoBERTa 中使用的) 的 representation 作为句子的向量。

    • nonlinear neural network projection head g():将 encoded augmentation H1H2 投影到新空间中的向量 z1=g(H1),z2=g(H2) 。根据 SimCLR 的观察,添加一个非线性的 projection head 可以大大改善图像的 representation quality

    • contrastive learning loss function:为 contrastive prediction 定义的,即试图预测集合 {s~} 中的 positive augmentation pair (s~1,s~2) 。我们通过对 mini-batch (假设 mini-batch 是一个大小为 N 的集合 {s} )中的所有句子随机增强两次来构建集合 {s~} ,其大小为 2N 。来自同一原始句子的两个变体构成 positive pair ,而来自同一 mini-batch 的所有其他实例被视为它们的负样本。positive pair 的损失函数定义为:

      (7)l(i,j)=logexp(sim(zi,zj)/τ)k=12NI[ki]exp(sim(zi,zk)/τ)

      其中: Iki 为示性函数,仅当 ki 时取值为 1,否则取值为零;τ 为温度参数;sim(u,v) 为两个向量 uv 的余弦相似度。

      总的 contrastive learning loss 定义为 mini-batch 中所有 positive pairs 的损失之和:

      (8)LCL=i=12Nj=12Nm(i,j)×l(i,j)

      其中:m(i,j) 为一个函数,当且仅当 (i,j) 构成 positive pair 时返回 1 ,否则返回 0

      对比学习的 sentence embedding 方法都遵从这样的损失函数,不同的方法的区别在于:如何构建 augumented sentence

  2. Combined Loss:类似 DeCLUTR,为了同时捕获 token-level 特征和 sentence-level 特征,我们联合使用 MLM objectiveCL objective 来得到总体损失:

    (9)Ltotal=LMLM+LCL

    其中:LMLM 是通过预测集合 {s} 中的 random-masked token 来计算的,如 BERTRoBERTa 所述。

    我们的预训练目标是最小化 Ltotal

    是否可以用超参数 α 来平衡这两种损失?如,Ltotal=LMLM+αLCL

  3. Sentence Augmentation 的设计原理:数据增强对于学习图像的representation 至关重要。然而,在语言建模中,数据(句子)增强是否有利于representation learning 、以及什么样的数据增强可以适用于文本,仍然是一个未知数。为了回答这些问题,我们在实验中探索并测试了四种基本的 augmentation (如下图所示)及其组合。我们确实相信存在更多潜在的 augmentation ,我们计划将其留待将来探索。

    • deletion:这种数据增强基于这样的假设:在一个句子中删除一些内容不会对原来的语义产生太大影响。在某些情况下,删除一些单词导致句子的不同含义(例如,删除 not 这个词)。然而,我们相信包括适当的噪音可以使模型更加鲁棒。我们考虑两种不同的删除方式,即 word deletionspan deletion

      • word deletion :随机选择句子中的 token ,并用一个 special token [DEL] 替换它们,如下图 (a) 所示。这与 BERT 中的 token [MASK] 类似。

      • span deletion :在 span-level 上挑选和替换 deletion objective ,如下图 (b) 所示。。一般来说,span-deletionword-deletion 的一个特例,它更注重删除连续的单词。

      对于相同位置上出现的 word deletionspan deletion,默认很容易区分这两种 augmentation (根据是否存在连续的 token [DEL] )。为了避免模型容易地区分这两种 augmentation ,我们把连续的 token [DEL] 消除成一个 token [DEL]

    • reorderingBART 已经探索了从随机重排的句子中恢复原始句子。在我们的实现中,我们随机抽出几个 span pair ,并将它们 pairwise 地交换,以实现 reordering augmentation ,如下图 (c) 所示。。

    • substitution《Certified robustness toadversarial word substitutions 》 已证明 substitution 能有效提高模型的鲁棒性。遵从他们的工作中,我们对一些词进行采样,并用同义词替换它们来构建一个 augmentation 。同义词列表来自他们使用的 vocabulary 。在我们的预训练语料库中,大约有 40%token 在列表中至少有一个 similar-meaning token

39.2 实验

  1. 模型配置:

    • 编码器:Transformer12 层、12 head768 hidden size )。

    • 预训练 500Kstepbatch size = 8192,最大序列长度为 512token

    • 优化器:Adamβ1=0.9,β2=0.98,ϵ=106L2 权重衰减 0.01

    • 学习率:开始的 23k 步中,学习率被预热到 6e-4 的峰值,然后在剩下的时间里线性递减。

      线性递减的速度是多少?论文并未说明。

    • 在所有层和所有注意力中使用 dropout = 0.1

    • 所有的模型都在 256NVIDIA Tesla V100 32GB GPU 上进行了预训练。

  2. 预训练数据:BookCorpus + English Wikipedia 的联合数据集(也是用于预训练 BERT 的数据集)。关于数据集的更多统计数据和处理细节,可以参考 BERT 的原始论文。

  3. MLM 的超参数:

    • 为了计算 MLM loss ,我们随机掩码了输入文本 s15%token ,并使用周围的 token 来预测它们。

    • 为了弥补 fine-tuningpre-training 之间的 gap ,对于 masked tokens ,我们还采用了 BERT 中的 10%-random-replacement10%-keep-unchanged 设置。

  4. CL 的超参数:

    • Word Deletion (del-word) 删除了 70%tokenSpan Deletion (del-span) 删除了 5span(每个 span 的长度为输入文本的 5% )。

    • Reordering (reorder):随机挑选 5span (每个 span 的长度为输入文本的 5% ),并 pairwise 地交换 span

    上述一些超参数在 WiKiText-103 数据集上稍作调优(训练了 100epochs ,在 GLUE dev 基准上进行评估)。 例如,我们发现70%deletion model{30%, 40%, 50%, 60%, 70%, 80%, 90%}deletion model 中表现最好。

    对于使用 mixed augmentation 的模型,如 MLM+2-CL-objective ,它们使用与单个模型相同的优化超参数。注意,符号MLM+subs+delspan 代表了一个结合了 MLM lossCL loss 的模型:

    • 对于 MLM ,它掩码了 15%token

    • 对于 CL ,它首先替换了 30%token ,然后删除了 5span 来生成 augmented sentence

    请注意,我们使用的超参数可能不是最优化的参数。然而,1-CL objective model 上的最优超参数在 2-CL objective model 上的表现是否一致还不得而知。此外,目前还不清楚 WiKiText-103 的最优超参数是否仍然是 BookCorpusEnglish Wikipedia 数据集上的最优参数。然而,由于预训练需要大量的计算资源,很难对每一个可能的超参数进行调优。我们将把这些问题留待将来探索。

  5. General Language Understanding Evaluation: GLUE ResultGLUE 是一个包含几种不同类型的 NLP 任务的基准:自然语言推理任务(MNLI, QNLI, RTE )、相似性任务(QQP, MRPC, STS )、情感分析任务(SST)、和语言接受性 linguistic acceptability 任务(CoLA)。它为 pretrained language model 提供了一个全面的评价。

    为了适应不同的下游任务的要求,我们遵循 RoBERTa 的超参数,为各种任务微调我们的模型。具体来说,我们增加了一个额外的全连接层,然后在不同的训练集上微调整个模型。

    我们包括的主要 baselineBERT_baseRoBERTa_baseBERT_base 的结果来自 huggingface 的重新实现。一个更公平的比较来自RoBERTa_base,因为我们为 MLM Loss 使用了具有相同超参数的 RoBERTa_base 。注意,我们的模型都是结合了两个损失的,将 MLM-only modelMLM+CL model 进行比较仍然是不公平的。为了回答这个问题,我们在消融实验中设置了另外两个 baseline 以进行更严格的比较:一个 baseline 结合了两个 MLM loss ,另一个 baseline 采用了 double batch size

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

    • 我们提出的几个模型在 GLUE 上的表现超过了 baseline 。注意,不同的任务采用不同的评价矩阵,我们的两个最好的模型MLM+del-wordMLM+del-span+reorder 都将最佳基线 RoBERTa_base 的平均得分提高了 2.2%

    • 此外,一个更重要的观察是,每个任务的最佳性能都来自我们提出的模型。在 CoLARTE 上,我们的最佳模型分别比 baseline 高出 7.0%8.0%

    • 此外,我们还发现,不同的下游任务从不同的 augmentation 中受益。我们将在后续实验中进行更具体的分析。

    • 一个值得注意的是,我们没有在下表中显示 MLM+subs, MLM+reorder, MLM+subs+reorder 的结果。我们观察到,这三个模型的预训练要么迅速收敛,要么存在梯度爆炸问题,这说明这三个 augmentation 太容易区分了。

  6. 用于语义文本相似性任务的 SentEval ResultsSentEval 是一个流行的 benchmark ,用于评估通用的 sentence representation 。这个benchmark 的特点是,它不像 GLUE 那样进行微调。我们评估了我们提出的方法在 SentEval 上常见的语义文本相似性(Semantic Textual Similarity: STS )任务的性能。注意,之前 SentEval 排行榜上的一些模型(例如 SBERT )在特定的数据集上进行训练,例如 Stanford NLIMultiNLI,这使得我们很难直接比较。为了更容易直接比较,我们与 RoBERTa-base 进行比较。根据 SBERT ,在最后一层使用所有输出向量的平均值比使用 CLS-token output 更有效。我们为每个模型测试这两种池化策略(即,均值池化、CLS 池化)。

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

    • 均值池化策略并没有显示出太大的优势。在许多情况下,对于我们提出的模型,CLS-pooling 比均值池化要好。其根本原因是,对比学习直接更新了 [CLS] tokenrepresentation

    • 此外,我们发现加入 CL loss 使模型在 STS 任务中表现特别好,以很大的幅度( +5.7% )击败了最佳 baseline。我们认为这是因为对比学习的预训练是为了找到相似的 sentence pair ,这与 STS 任务相一致。这可以解释为什么我们提出的模型在 STS 上有如此大的改进。

  7. 消融研究:我们提出的 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 数据集上进行消融研究。下表中列出的所有模型都在 64NVIDIA Tesla V100 32GB GPU 上预训练了 500epoch 。表中报告了我们提出的三个模型。可以看到:

    • 与原始的 RoBERTa-base 相比,变体的总体性能并没有显示出太大的差异,在 Double-batch RoBERTa-base 上的平均得分增加了 +0.4% ,这证实了以前的工作所提出的更大的 batch 有利于 representation training 的想法(参考 RoBERTa 原始论文)。

    • 然而,表现最好的 baseline 仍然没有我们提出的最佳模型好。这告诉我们,我们所提出的模型并不仅仅受益于较大的batchCL loss 也有帮助。

    MLM+MLM loss 的效果反而下降了,论文并未解释这一现象的原因。读者猜测是因为过拟合。MLM+MLM loss 相当于 BERT 预训练的更新次数翻倍,使得模型过拟合。

  8. 不同的 augmentation 学习不同的 feature:在下表中,我们发现一个有趣的现象:所提出的不同的模型在不同的任务中表现良好。

    • 其中一个例子是 MLM+subs+del-span 帮助该模型在处理相似性任务和转述任务时表现良好。在 QQPSTS 上,它取得了最高分;在 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 是一个有前途的未来方向。

四十、ConSERT [2021]

  1. 最近,基于BERTpre-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.61.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》)。他们发现 BERTword representation space 是各向异性的,高频词聚集在一起并靠近原点,而低频词则稀疏地分散开。当averaging token embeddings 时,那些高频词在 sentence representation 中占主导地位,诱发了对其真实语义的 bias 。因此,直接将 BERTnative 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 attacktoken shufflingcutoff 、以及 dropout ,有效地将sentence representation 迁移到下游任务中。作者将他们的方法命名为 ConSERT ,即 Contrastive Framework for SEntence Representation Transfer

    与以前的方法相比,ConSERT 有几个优点:

    • 首先,它在推理过程中没有引入额外的结构或specialized implementationConSERT 的参数大小与 BERT 保持一致,使其易于使用。

    • 其次,与预训练方法相比,ConSERT 的效率更高。只需从target distribution 中抽取 1,000 个未标记的文本(这在现实世界的应用中很容易收集),ConSERT 就能比 BERT 获得 35% 的相对性能增益,而且训练阶段在单个 V100 GPU 上只需要几分钟(1-2k 步)。

    • 最后,ConSERT包括几个有效的、方便的数据增强方法,对语义影响最小。它们的效果在消融研究中得到了验证和分析。

    论文贡献:

    • 论文提出了一个简单而有效的基于对比学习的 sentence-level training objective 。它缓解了 BERT-derived representationcollapse ,并将 BERT-derived representation 迁移到下游任务中。

    • 论文探索了各种有效的文本增强策略,以产生用于对比学习的视图,并分析了这些增强策略对无监督的sentence representation transfer 的影响。

    • 只需在无监督的目标数据集上进行微调,论文的方法就能在 STS 任务上取得重大改进。当进一步与 NLI 监督相结合时,论文的方法取得了新的SOTA 的性能。论文还展示了论文的方法在数据稀疏情况下的鲁棒性,以及对 transferred representation 的直观分析。

    论文价值不大,没什么新颖性。

  2. 相关工作:

    • Sentence Representation Learning

      • 监督方法:一些工作使用监督数据集进行 sentence representation learning

        • InferSent 发现有监督的自然语言推理(Natural Language Inference: NLI )任务对训练 good sentence representation 很有用。他们使用一个基于 BiLSTM 的编码器,并在两个 NLG 数据集上进行训练,即 Stanford NLI: SNLIMulti-Genre NLI: MNLI

        • Universal Sentence Encoder 采用了基于 Transformer 的架构,并使用 SNLI 数据集来增强无监督训练。

        • SBERT《SBERT: Sentence embeddings using siamese bert networks》)提出了一个带有共享的 BERT encodersiamese 架构,也在 SNLIMNLI 数据集上进行训练。

      • 用于预训练的自监督目标:

        • 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 sentencerepresentation 的条件下,恢复一个句子中的 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 objectivemasked language model objective 共同训练模型。然而,他们针对对比学习仅使用 span ,在语义上是 fragmented 的。

        • CLEAR《Clear: Contrastive learning for sentence representation》)使用与 DeCLUTR 相同的架构和目标。它们都是用来预训练语言模型的,这需要大量的语料库,以及大量的资源。

40.1 模型

  1. 给定一个 BERT-like pretrained language model M 和一个从 target distribution 中提取的无监督数据集 D ,我们的目标是在 D 上对 M 进行微调,使 sentence representation 与任务更相关,并适用于下游任务。

    ConSERT 不是从头开始训练的。

  2. 通用框架:我们的方法主要受到 SimCLR 的启发。如下图所示,我们的框架有三个主要部分:

    • 一个数据增强模块,在 token embedding layer 为输入样本生成不同的视图。

    • 一个共享的 BERT encoder ,为每个输入文本计算 sentence representation 。在训练过程中,我们使用最后一层的 token embeddings 的均值池化来获得 sentence representations

    • BERT encoder 的顶部有一个 contrastive loss layer 。它最大限度地提高一个 representation 和其相应的版本(从同一个句子中增强而来)之间的一致性、同时保持与相同 batch 中其他 sentence representations 的距离。

    对于每个输入文本 x ,我们首先将其传递给数据增强模块data augmentation module ,该模块应用两个变换 T1T2 来生成两个版本的 token embeddingsei=T1(x),ej=T2(x),其中 ei,ejRL×dL 是序列长度、dembedding 维度。之后,eiej 都将由 BERT 中的 multi-layer transformer block 来编码,并通过均值池化产生 sentence representations rirj

    遵从 《A simple framework for contrastive learning of visual representations》 的做法,我们采用 normalized temperature-scaled cross-entropy loss: NTXent 作为 contrastive objective 。在每个 training step 中,我们从 D 中随机采样 N 个文本来构建一个 mini-batch ,从而得到 2Nrepresentation 。每个 data point 被训练从而在 in-batch 负样本中找出其对应的正样本:

    (10)Li,j=logexp(sim(ri,rj)/τ)k=12NIkiexp(sim(ri,rk)/τ)

    其中:sim() 表示余弦相似度函数,τ 为温度超参数,I 为示性函数(当 ki 时取值为 1,否则取值为零)。

    最后,我们对所有 2Nin-batch classification losse 进行平均,得到最终的对比损失 Lcon

  3. 数据增强策略:我们探索了四种不同的数据增强策略来为对比学习生成视图,包括:对抗攻击 adversarial attacktoken shufflingcutoffdropout,如下图所示。

    • 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 。他们在 L×d 的特征矩阵中随机擦除一些token (用于token cutoff )、特征维度(用于 feature cutoff )或 token span (用于 span cutoff )。在我们的实验中,我们只使用 token cutofffeature cutoff ,并应用它们到 token embeddings 上从而生成视图。

    • DropoutDropout 是一种广泛使用的正则化方法,可以避免过拟合。然而,在我们的实验中,我们也展示了它作为对比学习的增强策略的有效性。在这种情况下,我们以特定的概率随机地丢弃 token embedding layer 中的元素,并将它们的值置零。请注意,这种策略与 Cutoff 不同,因为这里的每个元素都是单独考虑的。

      SimCSE 仅仅使用 Dropout 来生成 augmented view ,就取得了很好的效果。

  4. 融合监督信号:除了无监督的 transfer ,我们的方法也可以与监督学习相结合。我们以 NLI 监督为例。这是一个 sentence pair 分类任务,模型被训练用来区分两个句子之间关系:矛盾contradiction 、蕴含 entailment 、中性 neutralclassification objective 可以表示为:

    (11)f=concat(r1,r2,|r1r2|)Lce=CrossEntropy(Wf+b,y)

    其中:r1r2 为两个 sentence representationW,b 为待学习的参数。

    我们提出了三种纳入额外的监督信号的方法:

    • 联合训练(joint ) :我们在 NLI 数据集上联合训练具有supervised objectiveunsupervised objective 的模型:

      (12)Ljoint=Lce+αLcon

      其中 α 是一个平衡两个 objective 的超参数。

      注意,这里的无监督训练也是在 NLI 数据集上。

    • 先监督训练然后无监督 transfersup-unsup):首先在 NLI 数据集上用 Lce 训练模型,然后用 Lcontarget 数据集上进行微调。

    • 先联合训练然后无监督 transferjoint-unsup):首先在 NLI 数据集上用 Ljoint 训练模型,然后用 Lcontarget 数据集上对其进行微调。

40.2 实验

  1. 为了验证我们提出的方法的有效性,我们在无监督 setting 和有监督 setting 下对 Semantic Textual Similarity: STS 任务进行了实验。

  2. 数据集: 遵从以前的工作,我们在多个 STS 数据集上评估我们的方法,包括 STS tasks 2012 - 2016 (STS12 - STS16)STS benchmark (STSb)SICKRelatedness (SICK-R) 。这些数据集中的每个样本都包含一对句子、以及 0~5 之间的 ground-truth score ,以表示它们之间的语义相似度。

    • 在我们的无监督实验中,我们混合了这些数据集的未标记文本,以微调我们的模型。我们通过 SentEval 工具包获得所有 7 个数据集。统计数据如下表所示。

    • 对于监督实验,我们使用 SNLI570k 样本)和 MNLI430k 样本)的组合来训练我们的模型。在联合训练的 setting 中,NLI 文本也被用于 contrastive objective

  3. baseline

    • 无监督 baselineBERT-flowGloVe embeddings averageBERT-derived native embeddings averageCLEAR(在BookCorpusEnglish Wikipedia 语料库上训练)、ISBERTNLI 数据集的未标记文本上训练)、BERT-CT (在 English Wikipedia 语料库上训练)。

    • 监督 baselineInferSentUniversal Sentence EncoderSBERTBERT-CT。它们都是在 NLI 监督下训练的。

  4. 评估方法:在评估训练好的模型时,我们首先通过平均最后两层的 token embeddings 来获得 sentence representation (如 BERT-flow 所示,最后两层的平均要比最后一层的平均,效果更好),然后我们报告 sentence representation 的余弦相似度分数和人类标注的ground-truth 分数之间的 spearman 相关系数。在计算spearman 相关系数时,我们将所有的句子合并在一起(即使有些 STS 数据集有多个 splits ),只计算一次 spearman 相关系数。

  5. 实现细节:

    • 我们的实现是基于 SBERT 。我们在实验中同时使用 BERT-baseBERT-large 。最大序列长度被设置为 64

    • 考虑到我们框架中使用的 cutoffdropout 数据增强策略,我们删除了 BERT 架构中的默认 dropout layer 。根据 《A simple but tough-to-beat data augmentation approach for natural language understanding and generation》的建议,token cutofffeature cutoff 的比例分别设置为 0.150.2dropout rate 设为 0.2

    • NT-Xent loss 的温度 τ 设为 0.1joint training settingα 设为 0.15

    • 我们采用 Adam 优化器,将学习率设置为 5e-7 。我们在总的 10% 训练步数中使用线性的 learning rate warm-up

    • 在我们的大部分实验中,batch size 被设置为 96

    • 我们使用STSb 的验证集来调优超参数(包括增强策略),并在训练期间每 200 步评估一次模型。STSb 的验证集上的 best checkpoint 被保存下来用于测试。

    我们在随后的章节中进一步讨论 batch size 和温度的影响。

  6. 无监督学习的结果:对于无监督的评估,我们加载 pretrained BERT 来初始化我们框架中的 BERT encoder 。然后,我们随机混合7STS 数据集的未标记文本,用它们来微调我们的模型。 结果如下表所示,可以看到:

    • BERT-flowConSERT 都可以改善 representation space ,并优于 GloVeBERT 基线。

    • 然而,ConSERT_large6STS 数据集中取得了最好的性能,大大超过了 BERT_large-flow ,平均有 8% 的相对性能增益(从 70.7676.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.5772.74 )。

    这里是不公平的比较,这些模型的预训练语料库都不相同,因此很难判断是算法的优势、还是语料库的优势。

  7. 监督学习的结果:对于监督评估,我们考虑 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-unsup1.84 的性能增益优于 initial checkpoint ConSERT_large ,并以 2.92 的性能增益优于之前SOTABERT_large-flow

      这些结果表明,即使是在监督信息下训练的模型,无监督的 representation transfer 仍有巨大的改进潜力。

    这里也是不公平的比较,因为 ConSERT 用了好的初始化点。

  8. BERT Embedding Space 分析:我们进行了实验从而证明假设:collapse 问题主要是由于各向异性空间,该空间对 token 频率敏感。我们在应用均值池化计算 sentence representation 时,移除了几个 most frequent tokensembedding 。下图显示了被移除的 top-k frequent tokens 的数量与平均 spearman 相关系数之间的关系。可以看到:

    • 对于 BERT ,当删除几个最高频的 tokens 时,BERTSTS 任务上的性能会有很大的改善。当删除 34 个最高频的 tokens 时,BERT 取得了最好的性能(61.66 ),比原来的性能(53.86 )提升了 7.8

    • 对于ConSERT ,我们发现去除几个最高频的 tokens 只带来了不到 0.3 的小改进。结果表明,我们的方法重塑了BERT 的原始embedding space,减少了 common tokenssentence representation 的影响。

  9. 数据增强策略的影响:这里我们研究了数据增强策略对 contrastive learning 的影响。我们为每个 transformation 考虑了 5 个选项,包括:None(即什么都不做)、ShuffleToken CutoffFeature CutoffDropout ,结果是 5 x 5 的组合。注意,这里没有考虑 Adversarial Attack 策略,因为它需要额外的监督信息来产生对抗性样本。所有这些实验都遵循无监督的设置,并使用BERT_base 架构。 实验结果如下图所示,可以看到:

    • 首先,ShuffleToken Cutoff 是两个最有效的策略(其中Shuffle略好于 Token Cutoff ),显著优于 Feature CutoffDropout 。这可能是因为 ShuffleToken Cutoff 与下游的 STS 任务更相关,因为它们直接在 token-level 上进行操作,并改变了句子的结构以产生 hard examples

    • 其次,与 None-None 基线相比,Feature CutoffDropout 也提高了大约4 分的性能。

      此外,我们发现它们作为一种补充策略时,效果很好。例如,与另一种策略如 Shuffle 相结合,可能会进一步提高性能。当把ShuffleFeature Cutoff结合起来时,我们取得了最好的结果。我们认为 Feature CutoffDropout 有助于为 sentence encoder 建模内部噪声的不变性invariance ,从而提高模型的鲁棒性。

    • 最后,我们还观察到,即使没有任何数据增强(None-None 组合),我们的对比框架也能提高BERTSTS任务中的表现(从53.8663.84 )。这种None-None 组合对最大化视图之间的 agreement 没有影响,因为augmented viewsrepresentations 是完全相同的。相反,它通过将每个 representation 从其他 representation 中推开,从而调优了 representation space 。我们认为,这种改进主要是由于 BERTnative representation spacecollapse 现象。在某种程度上,这也解释了为什么我们的方法是有效的。

  10. Few-shot Setting 的性能:为了验证 ConSERT 在数据稀疏情况下的可靠性和鲁棒性,我们进行了 few-shot 实验。我们将未标记文本的数量分别限制为 1/10/100/1000/10000 ,并将其性能与完整的数据集进行比较。结果如下图所示,可以看到:

    • 在无监督和有监督的情况下,我们的方法只需要 100 个样本就可以比 baseline 有很大的改善。

    • 当训练样本增加到 1000 个时,我们的方法基本上可以达到与完整数据集上训练的模型相当的结果。

    这些结果揭示了我们的方法在数据稀疏的情况下的鲁棒性和有效性,这在现实中是很常见的。只需从target 数据分布中提取少量的未标记文本,我们的方法也可以调优 representation space ,并有利于下游任务。

  11. 温度的影响:NT-Xent loss 中的温度 τ 用于控制由softmax 操作归一化的分布的平滑度,从而影响反向传播时的梯度。大的温度使分布更加平滑,而小的温度则使分布更加尖锐。在我们的实验中,我们探索了温度 τ 的影响,如下图所示。可以看到,性能对温度极为敏感:过小或过大的温度都会使我们的模型表现不佳。而最佳温度是在一个很小的范围内得到的(大约从 0.080.12 之间)。

    这一现象再次证明了 BERT embeddingcollapse 问题,因为大多数句子是相互接近的,大的温度可能会使这一任务太难学习。我们在大多数实验中选择 τ=0.1

  12. 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 内存。

四十一、Sentence-T5[2021]

  1. 句子嵌入entence embedding 提供了紧凑的有意义的 representation ,对各种语言处理任务有广泛的帮助,包括分类 classification 、问答 question-answering 、语义检索 semantic retrievalbitext mining 和语义相似性 semantic similarity 等任务。 最近的工作表明,扩大模型参数、以及利用预训练模型是提高性能的两种有效方法。

    论文 《Sentence-T5: Scalable Sentence Encoders from Pre-trained Text-to-Text Models》 从一个预训练的Text-to-Text Transfer Transformer: T5 模型中探索 sentence embeddingencoder-only model 仅使用 transformer encoder 来预测随机掩码的 token,而 T5 使用 encoder-decoder 架构和 generative span corruption pre-training taskT5 模型可以扩展到数千亿个参数,并在广泛的 NLP 任务上取得了 SOTA 的性能,包括 GLUESuper-GLUE 。然而,很难将 T5 有效地应用于某些任务,如检索或聚类。为了给 retrieval candidate 打分,T5 需要对每个 query-candidate pair 进行带 cross-attentionfull 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: NLIRetrieval 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-BERTSimCSE-RoBERTa

    • encoder-decoder sentence embedding modelSTS 上取得了强大的性能,建立了 sentence embedding based STS 的新的 SOTA

    • 对比学习 contrastive learning 对于从 T5-style pre-trained model 中微调句子编码器是有效的,特别是使用论文提出的两阶段对比学习方法。

    • 使用对比损失 contrastive loss 训练 ST5 更长的时间和更多的数据,导致在 sentence transferSTS 任务上的一致改进。

    • 创建一个新的 sentence representation transfer benchmark ,即 "SentGLUE" ,它将 sentence evaluation toolkit 扩展到 GLUE benchmark的九个任务,并在 SentGLUE 上评估 ST5 和其他的 SOTA 模型,从而比较它们在这些挑战性任务上的 transfer 性能。

41.1 模型

  1. T5Text-to-Text transfer transformers: T5Figure 2(a) 所示,由一个 encoder-decoder transformer model 组成,在一个无监督的 span corruption task 上进行预训练。虽然 T5 已经成功应用于众多 NLP 任务,但如何从 T5 中提取高质量的 text representation 仍未被探索。

  2. ST5 的模型架构:我们探索了三种策略从 T5 中抽取 sentence representation ,如 Figure 2(b)(d) 所示:

    • Encoder-only first (ST5-Enc first):将第一个 tokenencoder 上的输出作为 sentence embedding

    • Encoder-only mean (ST5-Enc mean):将所有 tokenencoder 上的输出的平均值作为 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 layerinput )可能会自然地捕获到句子语义。

    对于 sentence encoder 的训练,我们采用双编码器 dual encoder 架构。如下图所示,该架构由两个共享权重的 transformer 模块(用于对输入进行编码)组成。transformer 模块可以是一个encoder-only 架构、或 encoder-decoder 架构。在我们的实验中,我们从 pre-trained T5 model 中初始化 transformer 模块。

    在每个模块为其 input sentence, 计算出一个固定维度的 representation 后,我们应用投影层projection layerL2 normalization 来作用到所得到的 embedding 之上。投影层将 output 转换为指定维度(即 sentence embedding size )。来自paired encoding towerembeddings 可以使用内积为相似性任务打分,或者作为输入提供给额外的层从而用于 pairwise classification 任务(如 NLI )。

    注:这里是双编码器架构,但是实际上也可以包含解码器,即 ST5 Encoder-Decoder

  3. 对比学习 Contrastive Learning :将对比学习应用于 sentence embedding ,可以提高 embeddings space 的均匀性 uniformity ,从而在下游任务(如 STS )中获得更好的表现(《SimCSE: Simple contrastive learning of sentence embeddings》)。我们应用对比学习来微调 T5 sentence representation

    注:在初步实验中,我们还探索了用 InferSentSBERT 中使用的 classification loss 进行微调。然而,我们发现在NLI 数据集上针对分类任务的微调不如对比学习,如 SimCSE 所报告的那样。

    • Contrastive Loss:使用对比损失来训练一个 sentence encoder 需要 paired examples D={vi,vi+} 作为训练集,其中 vi 是一个输入句子,vi+ 是一个相关的句子(例如,在语义上接近)。在训练过程中,vi+ 被认为是vi 的正样本,batch 中的所有其他样本认为是负样本。模型应该学会将正样本拉到 input example 附近,同时将负样本推开。我们使用 in-batch sampled softmax 来计算我们的对比损失:

      (13)L=exp(sim(vi,vi+)/τ)jBexp(sim(vi,vj+)/τ)

      其中:sim() 是相似度评分函数,B 是一个 mini-batch 的样本,τsoftmax 温度。

      当为 input example v 提供了额外的负样本 vj 时,损失函数可以修改为:

      (14)L=exp(sim(vi,vi+)/τ)jBexp(sim(vi,vj+)/τ)+exp(sim(vi,vj)/τ)
    • 两阶段训练:为了研究额外的训练数据的效果,我们探索了两阶段的训练:

      • 首先在 Community QA 网站挖掘的问答数据上进行微调。

        这个阶段的对比学习不包含额外的负样本。

      • 然后,在带有人类标注的NLI 标签的 sentence pair 上对模型进行微调。

        这个阶段的对比学习包含额外的负样本。注意,虽然 NLI 有类别标签,但是这里并不是用分类任务进行微调,而是用对比学习进行微调。

41.2 实验

  1. 训练数据:我们使用两个数据集从而用于两阶段的训练:

    • 第一个阶段使用 community QA 网站收集到的 2Bquestion-answers pair 。在训练期间,相关的答案被认为是每个输入问题的正样本。

      community QA 的数据量有二十亿,远远超过了 NLI 数据集。

    • 第二个阶段使用 NLI 数据集的 contrastive 版本(遵从 SimCSE ),其中包含 275K 个样本,正样本是 entailment hypothesis and premise pair 、负样本是 contradict hypothesis and premise pair

  2. 评估:我们使用 SentEval 进行评估,其中包括 7transfer 任务和 7STS 任务:

    • transfer 任务:通过将sentence embedding 作为特征,从而考察线性分类模型的表现来评估 sentence embedding model 的效果。

    • STS 任务:通过sentence embedding 的余弦相似性,与人类标注的相似性分数之间的相关性来评估 sentence embedding model 的效果。

  3. 配置:

    • 我们的模型是用 JAX 实现的,并在 Cloud TPU-v8 上训练。我们从 public T5 checkpoint 初始化双编码器模块。

    • 在训练期间,我们使用 Adafactor 优化器,并将学习率设置为 0.001 。在训练总步数的 10% 之后对学习率应用线性衰减,使得在训练结束时将学习率降至 0

    • NLI 的微调时,我们使用 batch size = 512;在 Community QA 数据集上微调时,我们使用 batch size = 2048

    • 我们使用 softmax 温度 τ=0.01

  4. 实验旨在回答以下问题:

    • Q1:从T5 中提取 sentence representation 的最佳方式是什么?

    • Q2raw T5 sentence embedding 在下游任务中的表现如何?

    • Q3contrastive sentence embedding 任务(如NLIQA)对 T5 sentence embedding 的改善程度如何?

    • Q4:我们能否从扩大模型容量以获得更好的sentence representation 中获益?

    带着这些目标,我们使用各种模型和训练配置研究 T5 sentence embeddingtransfer 任务和 STS 任务上的性能,将 ST5SOTA 方法进行比较,包括 SBERT/SRoBERTaSimCSE

41.2.1 Raw T5 Sentence Embeddings

  1. 我们首先评估没有微调的 T5 sentence embedding 。我们评估了所有三种策略:Encoder-only first tokenEncoder-only meanEncoder-decoder start token 。在所有的实验中,我们直接使用 T5 transformerencoder outputdecoder output ,而不做任何投影。这使我们能够充分利用 pre-trained modelembedding 能力。

  2. transfer 任务:在 transfer 任务中使用raw embeddingST5 模型的结果显示在下表的第 3-5行。

    • BERT 不同,T5first token (无论是编码器还是解码器)并不是一个特殊的占位符(即 CLS ),也没有特定的预训练任务使用第一个tokenembedding 。因此,如果不进行额外的微调,first tokenrepresentation 不太可能捕获到整个句子的语义。

      事实上,我们的实验表明,在所有的 SentEval 任务中,来自编码器或解码器的first tokenrepresentation ,与encoder-only model 的均值池化相比要差很多。

    • 当在 T5 encoder output 上应用均值池化时(下表中的第四行),它大大超过了 BERTaverage embeddings 。值得注意的是,即使没有微调,T5encoder-only outputsaverage embeddings 也优于 SimCSE-RoBERTa ,后者在 NLI 数据集上进行了微调。

      这可能是由于 T5 是在更多的数据上训练的。原始的 T5 模型在预训练时还包括下游任务(如 GLUESuperGLUE),这种多任务设置可能会提高 transfer 性能。然而我们注意到,GLUE 中只包含了两个 SentEval 任务(SSTMRPC),而我们本次评估中的剩余五个任务则没有包含在 GLUE 中。如下表所示,我们观察到,未包括在GLUE 中的其它五个任务都有明显的改进。

  3. STS 任务:相比之下,我们观察到使用 raw T5 sentence embeddingSTS 任务的结果很弱,如下表的第 3-5 行所示。T5 embedding 的均值池化实现了 55.97 的平均 STS 得分,略好于 BERT 的均值池化,但仍然比在监督任务上进行微调的模型差得多。这类似于其他 pre-trained language models (如 BERTRoBERTa) 关于 contextual embedding 的各向异性现象的发现结果(《SimCSE: Simple contrastive learning of sentence embeddings》)。embedding collapse 阻止了该模型在与距离有关的指标上的良好表现。

41.2.2 Fine-Tuning T5 Sentence Embeddings

  1. 接下来,我们从 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 modelembedding collapse 的说法。

    • 为了研究额外的训练数据对contrastive learning 的影响,我们先用 ST5 模型在 Community QA 上训练,然后在 NLI 上进行微调。如 Table 2Table 3 所示,在额外的数据集上进行微调后,transferSTS 任务的性能都有很大的提升。这表明,对于 continued contrastive learning ,我们可能能够通过挖掘额外的半结构化数据来进一步提高 sentence embedding 的质量。

    • 为了排除下游任务的 mixing 的影响,我们还基于 T5 1.1 模型(T5 1.1 仅在 C4 数据集上进行了预训练)训练了一个 ST5 变体。如Table 2Table 3 的最后一行所示,它取得了与原始 T5 模型相当的性能,在大多数任务上表现出色,但在 STS 上表现不佳。

41.2.3 Encoder-only vs. Encoder-decoder

  1. 这里我们比较了两种架构的性能:encoder-onlyencoder-decoder

  2. T5的编码器有更好的泛化性:在Table 2 中,我们看到 encoder-only Base modeltransfer 任务上的表现与 encoder-decoder model 相当。当我们将 ST5 模型从 Base model 扩展到 Large model3B model11B model 时,如下表所示,encoder-only modeltransfer 任务上的表现始终优于 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 可以以类似的方式提高encoderrepresentation 的通用性,因为decoder 专注于为特定任务进行优化。

    encoder-decoder model 在这里表现不佳的主要原因是:这里仅仅用到 decoderfirst output

  3. 解码器的有效性:在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 微调的作用。

41.2.4 Scaling up Sentence T5

  1. 我们利用 large T5 model 的现有checkpoint 来研究 scaling sentence encoder 的效果。T5 模型的参数规模如下表所示。注意,ST5-EncDec 并没有完全利用模型的参数:解码器学到的 self-attention 实际上被忽略了,因为只有 start token 被馈入解码器。

  2. 直接使用 T5 Embedding 的效果:如Table 5 所示:

    • 随着 T5 规模的扩大,直接使用 T5 embeddingtransfer 任务的性能持续提高。这印证了 large pre-trained model 可以提高 sentence embeddingtransfer 性能。

    • 另一方面,仅仅增加模型容量并不足以缓解 embedding collapse 的情况。即使是来自T5 11B 模型的 embedding,在 STS 任务上的表现仍然比fine-tuned model 更差。

      一个原因是,T5pre-training span corruption task 并不要求模型避免各向异性(例如,通过使用 contrastive loss 或正则化)。这突出了选择与similarity/retrieval 性能目标一致的微调任务的重要性。

  3. 改善 ST5 Fine-tuning:如Table 5 所示:

    • 我们发现,扩大模型容量会使所有下游任务的性能持续提高。

      • 对于ST5 11B 模型,encoder-only modeltransfer 任务上取得了 91.08 分的平均分,优于 ST5 Large 模型的 90.45 分。

      • 对于ST5 11B 模型,encoder-decoder modelSTS 得分推高到 84.94 ,也超过了 ST5 Large 模型。

      这激励我们探索更大的模型规模,以实现更好的 sentence embedding 质量。

    • 对于 STS 任务,我们观察到,从 3B11B 的性能增益,要比从 Large3B 的增益更小。这可能是由于在我们的实验中,所有模型的 embedding size 是固定的。一个潜在的探索是为更大的模型增加 sentence embedding size ,以充分利用模型的能力。

    • 我们进一步计算 《Understanding contrastive representation learning through alignment and uniformity on the hypersphere》 中定义的 alignment lossuniformity loss ,以衡量 sentence embedding 的质量:

      (15)Lalign=Ev,v+pposf(v)f(v+)Luniform=logEv,wi.i.d.pdatae2f(v)f(w)

      其中:ppos 是所有 positive data 的分布 ,pdata 是所有数据的分布,Lalign 表示 positive pairsembedding 之间的期望距离,Luniform 表示 embedding 分布的均匀程度。

      对于这两种损失,数字越小说明性能越好。如下图所示,当模型规模扩大时,encoder modelencoder-decoder model 都减少了uniformity loss ,而 alignment loss 只略有增加。

    • 我们试图研究更大的模型规模、更多的训练数据对更好的 sentence embedding 的影响是否是叠加的。如Table 5 最后两行所示,当扩大到Large3B 时,ST5 通过在 NNLI 之外的 Community QA 数据集上训练,进一步改善了下游任务。

  4. 不同大小的模型的推断速度如下图所示:

41.2.5 SentGLUE Evaluation

  1. 这里我们介绍了一个新的sentence representation transfer benchmark ,即 SentGLUE ,它将 sentence evaluation toolkit 扩展到 GLUE benchmark 中的九个挑战任务,包括:CoLA, SST-2, MRPC, STS-B, QQP, MNLI-m, MNLI-mm, QNLI, RTEGLUE benchmark 已被广泛用于测量语言理解模型。GLUE 任务是单个句子或 sentence pairclassification 任务(如 NLI )或相似性任务(如 STS )。

    GLUE 排行榜上最好的模型是微调的 cross-attention model ,如 BERTT5 。这类模型在微调过程中会改变底层模型的所有参数。对于 pairwise 任务,这类模型允许早期融合来自被比较的两个句子的 input feature 。对于 SentGLUE ,我们引入了一个约束条件,即每个 input 都需要独立地编码为一个固定尺寸的 embedding space representation ,然后可以被馈入到其他层,以便进行预测。我们认为这最能适应原始 SentEval benchmarksentence embedding 的精神,也能适应 GLUE benchmark 任务。

    结果如下表所示:

    • 除了 CoLAMNLI 任务,ST5-Enc Base 在所有的 SentGLUE 任务中都优于 SBERT-RoBERTa BaseSimCSE-RoBERTa Base

    • 值得注意的是,随着模型规模的扩大,使用 sentence embedding 的总体性能接近 T5 base 。考虑到 T5 base 利用了 sentence pair 之间的 full cross-attention ,并在微调过程中调整了模型中的所有参数,这一点非常了不起。

四十二、ULMFiT[2018]

  1. 虽然深度学习模型在许多 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 模型:同样的 3LSTM 架构,具有相同的超参数,除了调优 dropout 超参数之外没有其他改变,在6 个广泛研究的文本分类任务中胜过高度特征工程的模型、以及迁移学习方法。

    论文贡献:

    • 作者提出了 Universal Language Model Fine-tuning: ULMFiT ,这种方法可以用来实现任何 NLP 任务的类似 CV 的迁移学习。

    • 作者提出了 discriminative fine-tuning 、斜三角学习率、逐渐解冻 gradual unfreezing 等新技术,以保留以前的知识并避免微调过程中的灾难性遗忘。

    • 作者在六个有代表性的文本分类数据集上的表现明显优于 SOTA 的方法,在大多数数据集上的误差降低了 18%-24%

    • 作者表明,ULMFiT 能够实现极其 sample-efficient 的迁移学习,并进行了广泛的消融分析。

    • 作者提供了预训练好的模型和代码,以便能够更广泛地采用。

  2. 相关工作:

    • CV 中的迁移学习:在 CV 中,深度神经网络的特征已经被观察到,从第一层到最后一层对应于通用任务过渡到特定任务。由于这个原因,CV 中的大多数工作都集中在模型的第一层的迁移上。近年来,这种方法已经被微调 pretrained model 最后一层或最后几层并让其余层冻结所取代。

    • Hypercolumns:在 NLP 中,最近才提出了超越 transferring word embedding 的方法。流行的方法是预训练 embedding ,通过其他任务捕获额外的上下文。 然后将不同 levelembedding 作为特征,与 word embedding 或中间层的input 相拼接。这种方法在 CV 中被称为 hypercolumns,并在 NLP 中被一些工作所使用,这些工作分别使用语言建模、转述paraphrasing 、蕴含 entailment 和机器翻译等任务进行预训练。在 CV 中,hypercolumns 已经几乎完全被端到端的微调所取代。

    • 多任务学习:一个相关的方向是多任务学习 multi-task learning: MTLMTL 要求每次都要从头开始训练任务,这使得它的效率很低,而且经常需要对特定任务的目标函数进行仔细加权。

    • 微调:微调已经成功地用于相似任务之间的迁移,但已被证明在不相关的任务之间失败(《How Transferable are Neural Networks in NLP Applications? 》)。《Semi-supervised Sequence Learning》 也对语言模型进行了微调,但对 10k 个标记样本上过拟合,并且需要数百万的 in-domain 文档才能有好的表现。相比之下,ULMFiT 利用通用领域的预训练、以及新的微调技术来防止过拟合,即使只有 100 个标记样本,也能在小数据集上取得 SOTA 的结果。

42.1 模型

  1. 我们对 NLP 的最通用的 inductive transfer learningsetting 感兴趣:给定一个源任务 TS 和任意目标任务 TT ,其中 TTTS ,我们希望能提高 TT 的性能。语言建模 language modeling 可以被看作是理想的源任务,也是 NLPImageNet 的对应物:

    • 首先,它捕获了(与下游任务相关的)语言的许多方面,如长期依赖关系、层级关系 hierarchical relation 、情感 sentiment

    • 其次,与机器翻译和 entailment 等任务相比,语言建模为大多数领域和语言提供的数据数量近乎无限。

    • 此外,预训练的语言模型可以很容易地适配目标任务的特有性质,我们表明这可以大大改善性能。

    • 最后,语言建模已经是现有任务的一个关键组成部分,如机器翻译和对话建模 dialogue modeling

    正式地,语言建模引入了一个假设空间 hypothesis space H ,它应该对许多其他 NLP 任务有用。

  2. 我们提出了 Universal Language Model Finetuning: ULMFiT,它在大型通用领域语料库上预训练语言模型,并使用新技术在目标任务上进行微调。该方法具有普遍性,因为它符合这些实践准则:

    • 它可以在不同的文档 size 、数量、标签类型的任务中工作。

    • 它使用单个架构、单一的训练过程。

    • 它不需要定制化的特征工程或预处理。

    • 它不需要额外的 in-domain 文档或标签。

    在我们的实验中,我们使用 SOTA 的语言模型 AWD-LSTM ,这是一个普通的 LSTM (没有注意力、没有 short-cut connection 、也没有其它额外的复杂组件),具有各种调优好的 dropout rate 超参数。与 CV 类似,我们希望未来可以通过使用更高性能的语言模型来提高下游的性能。

    因为这篇论文是 2018 年提出的,因此还没有使用 transformer-based 语言模型。

  3. ULMFiT 包含如下步骤,如下图所示:

    • (a):通用领域的语言模型预训练。

    • (b):目标任务的语言模型微调。

    • (c):目标任务的分类器微调。

    注意,这里是三个阶段的训练。能否合并为 “通用领域 + 目标任务”的语言模型、目标任务的分类模型两阶段? 或者通用领域的语言模型、目标任务的”语言模型 + 分类模型“ 两阶段?然而,论文对目标任务的语言模型、目标任务的分类模型采用了不同的学习率调度和微调策略,因此需要分开。

  4. General-domain LM pretraining:类似于 ImageNet 的语言模型语料库应该是大型的,并能捕获到语言的通用属性。我们在Wikitext-103 上预训练语言模型,该模型由 28595 篇预处理的维基百科文章和 103M 个单词组成。

    预训练对具有小数据集的任务最有利,即使有100 个标记的样本,也能进行泛化。我们把探索更多样化的预训练语料库留给未来的工作,但预计它们会提高性能。虽然这个阶段是最昂贵的,但它只需要执行一次,并能提高下游模型的性能和收敛速度。

  5. Target task LM fine-tuning:无论用于预训练的 general-domain 数据有多么多样化,目标任务的数据都可能来自不同的分布。因此,我们在目标任务的数据上对语言模型进行微调。给定预训练好的 general-domain LM ,这个阶段收敛得更快,因为它只需要适配目标数据的特殊属性,而且它允许我们训练一个鲁棒的语言模型,即使是针对小数据集。 我们提出了用于微调语言模型的 discriminative fine-tuning 和斜三角学习率:

    • discriminative fine-tuning:由于不同的层捕获不同类型的信息,它们应该被微调到不同的程度。为此,我们提出了一种新的微调方法,即 discriminative fine-tuning

      discriminative fine-tuning 不是对模型的所有层使用相同的学习率,而是允许我们用不同的学习率对每一层进行微调。 针对模型参数 θ 的常规随机梯度下降,其公式为:

      (16)θt=θt1η×θJ(θ)

      其中:η 为学习率,θJ(θ) 为模型目标函数关于 θ 的梯度。

      对于 discriminative fine-tuning ,我们将 θ 拆分为 {θ1,,θL} ,其中 θl 包含模型第 l 层的参数,L 为模型的层的数量。类似地,学习率为 {η1,,ηL} ,其中 ηl 为模型第 l 层的学习率。则具有 discriminative fine-tuningSGD 更新为:

      (17)θtl=θt1lηl×θlJ(θ)

      实验中我们发现,首先选择 ηL 并且仅仅微调最后一层,然后使用 ηl1=ηl/2.6 来微调剩余的层,这样的效果最佳。

      因为 target task LM 任务的数据集很小且收敛很快,因此这里多次微调的代价较小。

    • 斜三角学习率:为了使模型参数适配 task-specific features ,我们希望模型在训练开始时能迅速收敛到参数空间的一个合适区域,然后再 refine 模型参数。在整个训练过程中使用相同的学习率、或使用退火的学习率,并不是实现这种行为的最佳方式。相反,我们提出了斜三角学习率 slanted triangular learning rate: STLR,它首先线性增加学习率,然后根据以下 update schedule 来线性衰减,如下图所示:

      (18)cut=T×cutfrac,p={t/cut, if t<cut1tcutcut×(1/cutfrac1),otherwiseηt=ηmax×1+p×(ratio1)ratio

      其中:

      • T 是总的训练迭代步数。

      • cutfrac 是增加学习率的迭代步数的占比。

      • cut 是从增加学习率切换到减少学习率的迭代步数的切换点。

      • p 是截止到 t 时刻,学习率增加(或减少)的迭代步数的占比。

      • ratio 指定最小的学习率比最大的学习率小多少。

      • ηt 为截止到 t 时刻的学习率。

      我们通常选择 cutfrac = 0.1ratio = 32ηmax=0.01STLR 修改了三角学习率,其中学习率具有较短的上升期、较长的衰减期,我们发现这是良好性能的关键。在实验部分,我们与余弦退火 cosine annealing 进行了比较。

  6. Target task classifier fine-tuning:最后,为了对分类器进行微调,我们用两个额外的 linear block 来增强 pretrained language model 。遵从 CV classifier 的标准做法,每个 block 使用了 batch normalizationdropout ,中间层使用 ReLU 激活函数、最后一层使用 softmax 激活函数从而输出关于 target classes 的概率分布。注意,这些 task-specific classifier layers 的参数是唯一从头开始学习的。第一个线性层将最后一个隐藏层的池化后的状态作为输入。

    • Concat pooling:文本分类任务中的信号往往包含在几个单词中,这些单词可能出现在文档的任何地方。由于输入文档可能由数百个单词组成,如果我们只考虑模型的最后一个隐状态,信息可能会丢失。出于这个原因,我们将文档最后一个 time step 的隐状态 hT ,与尽可能多的 time steps 的隐状态 H={h1,,hT}(只要能够满足 GPU 内存的限制)的 max-pooled representationmean-pooled representation 相拼接:

      (19)hc=[hT;maxpool(H);meanpool(H)]

      其中 [;] 表示向量拼接。

    • 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 = bbatch

      • 在每个 batch 的开始,模型用前一个 batchfinal state 进行初始化。

      • 我们跟踪 hidden states 从而用于计算 mean-poolingmax-pooling

      • 梯度被反向传播到其隐状态对 final prediction 有贡献的 batch

      在实践中,我们使用可变长度的反向传播序列。

    • 双向语言模型:我们不限于微调单向语言模型。在我们所有的实验中,我们同时预训练一个 forward LM 和一个 backward LM 。我们使用 BPT3C 为每个 LM 独立微调一个分类器,并对分类器的预测进行平均。

    这些训练方式过于古老,在 transformer-based 模型中已经不被使用。

42.2 实验

  1. 数据集:我们在六个被广泛研究的数据集上评估我们的方法,这些数据集具有不同的文档数量和不同的文档长度,对应于三种常见的文本分类任务:情感分析、问题分类、主题分类:

    • Sentiment Analysis:对于情感分析,我们在二元电影评论 IMDb 数据集、二分类版本和五分类版本的 Yelp 评论数据集上评估我们的方法。

    • Question Classification:我们使用六分类版本的小型 TREC 数据集,该数据集由开放领域的、基于事实的问题组成,被划分到一组语义类别 semantic category

    • Topic Classification:对于主题分类,我们对大规模 AG 新闻数据集和 DBpedia 本体数据集进行评估。

    数据集和任务的统计信息如下表所示。

  2. 预处理:我们使用与早期工作相同的预处理方法(《Deep pyramid convolutional neural networks for text categorization》《Learned in Translation: Contextualized Word Vectors》)。此外,为了让语言模型能够捕获到可能与分类相关的方面,我们为大写字母的单词、elongationrepetition 添加了 special tokens

  3. 超参数:我们感兴趣的是一个在各种任务中表现鲁棒的模型。为此, 默认情况下,我们在不同的任务中使用相同的超参数集合,我们在 IMDb 验证集上进行调优。

    我们使用 AWD-LSTM 语言模型, emebdding size = 4003 层,每层 1150 个隐藏单元,BPTTbatch size = 70 。默认情况下我们对所有的层采用 dropout rate = 0.4,但是对 RNN 层采用 dropout rate = 0.3embedding layer 采用 dropout rate = 0.05 、对 RNN hidden-to-hidden matrix 采用 dropout rate = 0.5

    classifier 有一个大小为 50 的隐层。我们使用 β1=0.7Adam ,而不是默认的 β1=0.9β2=0.99 。我们使用 batch size = 64 ,用于微调语言模型、分类器的 base learning rate 分别为 0.0040.01 ,并在每个任务的验证集上微调 epoch 的数量。除此之外,我们还使用了 《Regularizing and Optimizing LSTM Language Models》 中使用的相同做法。

  4. baseline

    • 对于 IMDb 数据集和 TREC-6 数据集,我们与 CoVe 进行比较,这是一种用于 NLP 的最新的迁移学习方法。

    • 对于 AG 数据集、Yelp 数据集和 DBpedia 数据集,我们与 《Deep pyramid convolutional neural networks for text categorization》SOTA 的文本分类方法进行比较。

  5. 为了保持一致性,我们以错误率的形式报告所有结果(越低越好),结果如下表所示。可以看到,我们的方法在所有数据集上都超越了 baseline 。这很有前景,因为现有的 SOTA 需要复杂的架构、多种形式的注意力、和复杂的 embedding 方案,而我们的方法采用了普通的 LSTMdropout

  6. 消融研究:我们在 IMDbTREC-6AG 这三个代表不同任务、类型和规模的语料库上进行了实验。在所有的实验中,我们从训练集中分离出 10% 作为验证集,并在这个验证集上报告单向语言模型的错误率。我们对分类器微调了 50epoch ,并对除了 ULMFiT 外的所有方法进行了带 early stopping 的训练。

    • Low-shot learning:迁移学习的主要好处之一是能够用少量的标签为任务训练一个模型。我们在两种情况下对 ULMFiT 进行了评估:只有标记样本被用于 LM 的微调("supervised" ),所有的任务数据都可以用来微调 LM"semi-supervised" )。我们将 ULMFiT 与从头开始训练("from scratch")进行比较。我们保持固定的验证集,并使用与之前实验相同的超参数。实验结果如下表所示。可以看到:

      • IMDbAG 上,仅仅具有 100 个标记样本的 supervised ULMFiT ,就匹敌了具有 10 倍和 20 倍数据的从头开始训练的性能。这清楚地表明了通用领域的语言模型预训练的好处。

        如果我们允许 ULMFiT 也利用未标记的样本,那么具有 100 个标记样本的 supervised ULMFiT ,能够匹敌了具有 50 倍和 100 倍数据的从头开始训练的性能。

      • TREC-6 上,ULMFiT 明显改善了从头开始的训练。由于样本内容更短、数量更少,supervised ULMFiTsemi-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' 使用的是学习率 ηL=0.01 ,对 'Chain-thaw' 使用的是最后一层的学习率 0.001 而其他层的学习率为 0.0001 ,其它方法使用 0.001 的学习率。结果如下表所示。

      • 微调分类器比从头开始训练有明显的改善,特别是在小型的 TREC-6 上。

      • CV 中的标准微调方法,即 "Last" ,在这里效果严重不佳,而且永远无法将训练误差降低到 0

      • "Chain-thaw" 在较小的数据集上效果较好,但是在大型的 AG 数据集上效果较差。

      • "Freez" 提供了与 "Full" 类似的性能。

      • 余弦退火方法在大数据集上与斜三角学习率有竞争力,但在小数据集上表现不佳。

      • 最后,完整的 ULMFiT 分类器微调(最下面一行)在 IMDBTREC-6 上实现了最好的性能,在 AG 上也有竞争力。重要的是,ULMFiT是唯一在各方面都表现出优异性能的方法,因此是唯一的通用方法。

    • 分类器微调行为:虽然我们的结果表明,如何微调分类器会有很大的不同,但目前在 NLP 中对 inductive transfer 的微调的探索不足,因为它大多被认为是无益的。为了更好地理解我们模型的微调行为,我们在下图中比较了训练期间用 ULMFiT 微调的分类器、以及用'Full' 微调的分类器的验证误差。

      • 在所有的数据集上,在训练的早期,例如在 IMDb 上的第一个 epoch 之后,对 Full 模型的微调导致了最低的误差。然后,随着模型开始过拟合,并且丢失了通过预训练获得的知识,误差会增加。

      • 相比之下,ULMFiT 更稳定,没有这种灾难性的遗忘;性能保持相似或改善,直到最后的 epoch ,这显示了学习率调度的积极作用。

    • 双向性的影响:以训练第二个模型为代价,将 forward LM-classifierbackward LM-classifier 的预测 ensemble 在一起,带来了大约 0.5-0.7 的性能提升。在 IMDb 上,我们将测试误差从单个模型的 5.30 降低到双向模型的 4.58