Press "Enter" to skip to content

T5:文本到文本的转换器(第二部分)

大语言模型的最佳迁移学习

(来自Unsplash上的Patrick Tomasso的照片)

BERT [5] 的提出导致了自然语言处理(NLP)中迁移学习方法的普及。由于互联网上大量未标记的文本的广泛可用性,我们可以轻松地(i)对大量原始文本进行预训练的大型Transformer模型和(ii)对这些模型进行微调,以准确解决下游任务。这种方法非常有效,但它的新晋流行使得许多备选方法和修改被提出。随着所有这些新方法的出现,人们很容易会想:在NLP中的迁移学习的最佳实践是什么?

这个问题通过使用统一的文本到文本Transformer(T5)模型进行的分析得到了答案。T5使用文本到文本格式重构所有任务(在预训练和微调过程中),这意味着模型接收文本输入并产生文本输出。使用这种统一格式,T5可以分析各种不同的迁移学习设置,从而比较许多方法。在之前的一期通讯中,我们了解了T5模型的格式、架构和整体方法。

在本期通讯中,我们将概述T5进行的分析,包括对NLP中迁移学习的不同预训练目标、架构、模型/数据规模和训练方法的实证比较。在[1]中,这些选项逐一进行研究,以确定它们对T5性能的影响。通过研究这个分析,我们得出一套最佳实践,将它们结合在一起,就可以产生具有极高准确性的最先进的T5框架,用于解决语言理解任务。

(来自[1])

初步工作

我们已经介绍了T5架构的动机和基本知识。在这里的链接中可以查看那篇文章。我们也可以在这里快速介绍这些想法。BERT [5] 的提出推广了NLP中的迁移学习范式(即,在某个单独的数据集上预训练模型,然后在目标数据集上进行微调)。然而,BERT的有效性使得许多研究人员关注这个主题并提出各种修改和改进。T5的思想是将所有语言任务转化为统一的文本到文本格式(见下图),并研究NLP中迁移学习的许多不同设置,以推导出最佳的技术。

(来自[1])

语言建模 vs. 去噪

NLP中最初的迁移学习方法利用了因果语言建模目标[6]进行预训练。然而,随后发现去噪(也称为掩码语言建模或MLM)目标的性能更好[5]。给定一组要作为输入传递给某个模型的文本标记,MLM的操作步骤如下:

  1. 随机(均匀地)选择15%的标记
  2. 将所选标记的90%替换为[MASK]标记
  3. 将所选标记的10%替换为随机标记
  4. 训练模型以预测/分类每个[MASK]标记

均匀选择的标记百分比称为“损坏率”。在T5中,我们将看到此去噪目标的一些不同变体,但基本思想保持不变。

“我们的所有目标都会传入一系列与我们未标记的文本数据集中的文本标记化范围相对应的标记ID序列。这个标记序列被处理以产生一个(损坏的)输入序列和一个相应的目标。然后,模型像往常一样通过最大似然训练来预测目标序列。” ——来自[1]

基准和评估

T5试图为NLP中的迁移学习推导出一组最佳实践。然而,要确定哪种技术最有效,T5需要在各种不同的任务和自然语言基准上进行评估。所有这些任务都是使用T5的文本到文本格式解决的。有关这些任务的完整描述,请参见[1]中的第2.3节。以下是简要总结。

  • GLUE和SuperGLUE [7, 8]:这两个基准都包括许多不同的任务,例如句子可接受性判断、情感分析、改写、句子相似度、自然语言推理(NLI)、指代消解、句子补全、词义消歧和问答。SuperGLUE是一个改进且更困难的基准,其结构与GLUE类似。
  • CNN + Daily Mail Abstractive Summarization [9]:将新闻文章与一个简短的摘要文本配对,摘要文本捕捉了文章的主要亮点。
  • SQuAD [10]:这是一个关于维基百科文章的问答数据集,每个问题的答案是相关文章中的一段文本。
  • 多个翻译数据集(例如英文到德文、法文和罗马尼亚文)。

值得注意的是,T5将GLUE和SuperGLUE基准中的所有任务连接在一起,并同时对所有任务进行微调。

其他重要概念

  • 不同类型的Transformer架构[链接]
  • 语言建模基础知识[链接]
  • 自注意力[链接]

我们从T5中学到了什么?

如前所述,T5中的实验旨在发现NLP中的迁移学习最佳实践。为此,首先提出了一个基线方法,然后逐个更改该基线的几个方面(例如模型架构/大小、数据集和预训练目标)来确定最佳设置。这种方法类似于坐标下降策略。我们将首先描述基线技术,然后解释T5在测试各种不同的迁移学习设置后的发现。

T5基线模型

(来自[11])

模型。 T5基线架构使用了一种标准的编码器-解码器Transformer架构;请参见上文。编码器和解码器的结构与BERTBase类似。尽管许多现代NLP方法使用“单栈”Transformer架构(例如BERT的仅编码器架构或大多数语言模型的仅解码器架构),但T5选择避免使用这些架构。有趣的是,[1]中的作者发现编码器-解码器架构在生成任务和分类任务上都取得了令人印象深刻的结果。[1]中不考虑仅编码器模型,因为它们专门用于标记/跨度预测,并且不能很好地解决生成任务。

(来自[1])

与编码器-解码器架构相比,仅解码器模型的功能受到限制,因为它们仅使用因果(或掩码)自注意力;请参见上文。掩码自注意力在计算序列中的任何给定标记的表示时仅考虑前面的标记。然而,在某些情况下,我们希望对文本的初始部分或前缀执行完全可见的注意力,然后根据这个前缀生成输出(例如翻译任务)。仅解码器模型无法处理这种情况,因为它们对整个输入执行因果自注意力。

训练T5。 T5模型在C4语料库中总共预训练了340亿个标记。相比之下,BERT训练了1370亿个标记,而RoBERTa训练了22万亿个标记[5, 12]。受BERT的MLM目标的启发,T5使用了一个稍微修改过的去噪目标进行预训练,该目标:

  1. 随机选择输入序列中的15%的标记
  2. 将所有连续的选定标记替换为一个单独的“哨兵”标记
  3. 为每个哨兵标记分配一个在当前输入序列中唯一的ID
  4. 使用所有选定的标记构造一个目标,由哨兵标记分隔

尽管这个任务看起来有点复杂,但我们可以在下面的一个简短的输入序列示例中看到它是如何工作的。

(源自[1])

通过用单个标记代替掩码标记的整个范围,我们降低了预训练的计算成本,因为我们倾向于在较短的输入和目标序列上操作。

微调。在进行预训练之后,T5会在每个下游任务上进行单独的微调,然后再进行评估。由于T5使用的是文本到文本的格式,因此预训练和微调都使用相同的最大似然目标!换句话说,我们只需将正确答案构成一个文本序列(在预训练和微调过程中),然后训练模型输出正确的文本序列。

基准模型的性能如何?如下表所示,基准T5模型的性能与BERT等之前的模型相似,尽管这些模型不能直接进行比较(即,基准T5模型的计算量仅为BERTBase的25%)。此外,我们可以看到预训练在大多数任务上都有巨大的益处。唯一的例外是翻译任务,在这种情况下,有无预训练的性能相似。

(源自[1])

寻找更好的方法…

在测试基准架构和训练方法之后,[1]中的作者逐个修改这种方法的一个方面,例如底层架构、预训练目标或微调策略。通过测试这些不同的迁移学习变体,我们可以找到一个在不同的语言理解任务中始终表现最好的方法。

(源自[1])

架构。为了研究架构选择对迁移学习结果的影响,我们可以测试变体的transformer架构。[1]中测试的架构包括正常的编码器-解码器架构、仅解码器架构和前缀语言模型架构。前缀语言模型在一个序列中对一个固定前缀进行完全可见的注意力,然后使用因果自注意力生成输出;请参见上述内容。这些架构之间的主要区别是它们的自注意机制中使用的掩码类型。

(源自[1])

当测试了几种不同的架构(使用因果语言建模和去噪目标进行预训练)后,我们发现编码器-解码器transformer架构(使用去噪目标)表现最佳,因此在后续实验中使用了这种架构。相对于其他模型,这种编码器-解码器变体总共有2P个参数,但与具有P个参数的仅解码器模型具有相同的计算成本。为了将总参数数量减少到P,我们可以在编码器和解码器之间共享参数,这被发现表现得非常好。

预训练目标。首先,使用三种不同类型的预训练目标对T5进行训练。第一种是BERT风格的MLM目标。其他目标包括一种洗牌策略[3](即,模型试图将一个被打乱的句子放回正确的顺序)和基于前缀的语言建模目标[2]。在后一种目标中,文本被分成两个部分,其中第一个部分作为输入传递给编码器,第二个部分由解码器预测(即,回想一下我们使用的是编码器-解码器transformer)。下面比较了使用这些目标进行训练的模型的性能,我们可以看到去噪目标明显优于其他策略。

(源自[1])

从这里开始,[1]中的作者对BERT风格的MLM目标[4]进行了几种修改,如下表所示。

(来自[1])

这些变体中的每一个都倾向于表现相似;请参见下面的内容。然而,通过选择替换整个受损标记范围的预训练目标,并仅尝试预测目标内的受损标记,我们可以最小化预训练的计算成本。因此,掩盖连续标记范围的基准策略是有效的,因为它生成了较短的目标序列。

(来自[1])

[1]中的作者测试了不同的损坏率,发现损坏率对结果没有显著影响,并且15%的设置效果良好。还发现,明确选择要损坏的标记范围的替代预训练目标(即,基线方法均匀选择标记而不是作为一个范围,然后将连续标记组合在一起)的性能与基线方法相似。下面提供了[1]中测试的不同预训练目标的示意图。

(来自[1])

研究了许多不同的策略,但主要的要点是:(i)去噪目标效果最好,(ii)去噪目标的变体表现相似,(iii)最小化目标长度的策略在计算上最高效。

数据和模型大小。最后,研究了规模对T5质量的影响。首先,使用几个不同的数据集对T5进行预训练,包括一个未经过滤的数据集,一个特定于新闻的数据集,一个模仿GPT-2的WebText语料库的数据集,以及几个维基百科语料库的变体。下面显示了在每个数据集上进行预训练后的T5性能。

(来自[1])

我们可以看到,(i)不过滤预训练语料库会极大地损害性能,(ii)在某些情况下,对特定领域的语料库进行预训练可以有所帮助。例如,对基于新闻文章的阅读理解数据集ReCoRD进行预训练可以获得最佳性能。

“这些发现背后的主要教训是,在领域内无标签数据上进行预训练可以提高在下游任务上的性能。这是可以预料的,但如果我们的目标是预训练一个可以快速适应任意领域语言任务的模型,这也是不令人满意的。” — 来自[1]

进一步地,使用不同大小的C4语料库的截断版本对T5进行预训练。通过这些实验,我们得知更多的数据(不出所料)更好。在预训练期间多次循环较小版本的数据集会导致过拟合并损害下游性能;请参见下面的内容。

(来自[1])

为了扩大T5模型的规模,作者测试了以下修改:

  1. 4X更多的训练迭代(或4 X更大的批量大小)
  2. 2X更多的训练迭代和2 X更大的模型
  3. 4X更大的模型
  4. 训练4个编码器-解码器变压器的集合

这里,为了简单起见,预训练和微调步骤都增加了。这些实验的结果如下所示。

(来自[1])

这些结果大致符合我们的预期。增加训练时间(或批次大小)可以提高性能。将此与较大的模型结合使用,相对于仅增加训练迭代次数或批次大小,可以进一步改善性能。换句话说,增加预训练数据量和模型大小在改善性能方面是互补的。

“机器学习研究的苦涩教训认为,那些能够利用额外计算的通用方法最终会胜过依赖于人类专业知识的方法” —— 来自[1]

其他内容。 T5还使用不同的多任务训练策略进行了微调。总体而言,这些模型的性能略差于为每个任务单独微调的模型。然而,存在策略可以最小化任务特定微调和多任务学习之间的性能差距。欲了解更多信息,请查看这里的概述。

许多深度神经网络的微调方法仅训练模型的一部分参数(例如,“冻结”早期层,并只微调模型中的最后几层)。[1]中的作者尝试了几种通过这种方式微调T5的技术(例如适配器层或渐进解冻[6]),但这些方法的性能被全模型端到端微调超越;请参见下文。

(来自[1])

T5:将一切综合起来!

现在我们已经全面介绍了[1]中的整个实验分析,对于NLP中的迁移学习有了更清晰的认识,并了解了哪种方法最好!接下来,我们将总结这个分析的主要要点,这些要点构成了T5使用的官方迁移学习框架。与各种替代方案相比,这种方法在性能上表现得非常好。

基准设置。首先,让我们回顾一下T5的基准架构。它是一个使用统一的文本到文本格式进行训练的编码器-解码器Transformer。在进行下游任务评估之前,模型会在每个下游任务上单独进行微调。值得注意的是,在GLUE和SuperGLUE基准测试中,最终的T5模型会针对每个任务进行单独微调,因为将所有任务一起训练会略微降低性能(假设我们采取必要的步骤避免过拟合)。

预训练。最终的T5方法不是均匀选择标记,而是执行跨度损坏(即一次选择整个标记跨度进行损坏),平均长度为三个标记。仍然会选择15%的标记进行损坏。这个目标的性能略好于基准,并且会产生较短的目标序列长度。此外,T5将无监督的预训练更新与多任务的有监督更新混合在一起。无监督和有监督更新之间的比例取决于所使用的模型的大小(即更大的模型需要更多的无监督更新来避免过拟合)。

训练量。额外的预训练对T5的性能有所帮助。具体而言,增加批次大小和训练迭代次数都有利于T5的性能。因此,最终的T5模型总共预训练了1T个标记。这比基准的预训练34B个标记要多得多,但仍远远不及RoBERTa[12],RoBERTa的预训练标记数量超过了2.2T个。预训练是在通用的过滤C4数据集上进行的,因为针对特定任务的预训练在不同任务之间并没有一致的效益。

模型规模。使用更大的模型是有帮助的,但有时较小的模型可能更合适(例如,当推理时可用的计算资源有限时)。因此,T5发布了五种不同规模的模型,参数数量从22亿到110亿不等。因此,T5实际上是一套不同模型!我们可以在这里链接上获得其中任何一个模型。

结束语

非常感谢阅读本文。我是Cameron R. Wolfe,Rebuy的AI总监。我研究深度学习的实证和理论基础。您还可以查看我在VoAGI上的其他文章!如果您喜欢,请在Twitter上关注我或订阅我的Deep(Learning)Focus通讯,我将通过对流行论文的可理解概述帮助读者建立对AI研究主题的更深入理解。

参考文献

[1] Raffel, Colin, et al. “探索统一的文本到文本转换器的迁移学习极限。” 机器学习研究杂志 21.1 (2020): 5485–5551.

[2] Liu, Peter J., et al. “通过总结长序列生成维基百科。” arXiv预印本 arXiv:1801.10198 (2018).

[3] Liu, Peter J., Yu-An Chung, 和 Jie Ren. “Summae: 使用长度无关自编码器进行零样本抽象文本摘要。” arXiv预印本 arXiv:1910.00998 (2019).

[4] Song, Kaitao, et al. “Mass: 用于语言生成的掩码序列到序列预训练。” arXiv预印本 arXiv:1905.02450 (2019).

[5] Devlin, Jacob, et al. “Bert: 用于语言理解的深度双向转换器的预训练。” arXiv预印本 arXiv:1810.04805 (2018).

[6] Howard, Jeremy, 和 Sebastian Ruder. “用于文本分类的通用语言模型微调。” arXiv预印本 arXiv:1801.06146 (2018).

[7] Wang, Alex, et al. “GLUE: 自然语言理解的多任务基准和分析平台。” arXiv预印本 arXiv:1804.07461 (2018).

[8] Wang, Alex, et al. “Superglue: 通用语言理解系统的更具粘性的基准。” 神经信息处理系统进展 32 (2019).

[9] Hermann, Karl Moritz, et al. “教会机器阅读和理解。” 神经信息处理系统进展 28 (2015).

[10] Rajpurkar, Pranav, et al. “Squad: 用于机器理解文本的100,000+问题。” arXiv预印本 arXiv:1606.05250 (2016).

[11] Vaswani, Ashish, et al. “注意力就是一切。” 神经信息处理系统进展 30 (2017).

[12] Liu, Yinhan, et al. “Roberta: 一种经过强化优化的bert预训练方法。” arXiv预印本 arXiv:1907.11692 (2019).

Leave a Reply

Your email address will not be published. Required fields are marked *