创建一个统一的语言建模框架

迁移学习范式由两个主要阶段组成。首先,我们在一堆数据上预训练一个深度神经网络。然后,我们对一个更具体的下游数据集进行微调(即,再训练一段时间)。这些阶段的具体实现可能采取多种不同的形式。例如,在计算机视觉中,我们经常使用监督学习目标在 ImageNet 数据集上预训练模型。然后,这些模型对下游数据集(即我们实际要解决的任务)进行有监督的微调。或者,对于自然语言处理(NLP),我们经常在未标记的文本语料库上执行自我监督的预训练。
将大型、深度神经网络与大规模的(预)训练数据集相结合,通常会产生令人印象深刻的结果。这一发现尤其在 NLP 领域得到证实。鉴于原始文本数据在互联网上是免费提供的,我们可以简单地下载大量的文本语料库,在这些数据上预训练一个大型神经网络,然后在各种下游任务上对模型进行微调(或者只使用零/少样本学习技术)。这种大规模的迁移学习方法最初是由 BERT [2] 探索的,它使用屏蔽目标在未标记的数据上预训练了一个变压器编码器,然后在下游语言任务上进行了微调。
BERT [2] 的成功不言而喻(即在几乎所有语言基准测试中都有新的最先进表现)。因此,NLP 社区开始密切研究迁移学习的主题,提出了许多新的扩展和改进。由于这个领域的快速发展,对比不同的替代方案变得困难。文本到文本转换器(T5)模型 [1] 提出了一个统一的框架,用于研究 NLP 中的迁移学习方法,使我们能够分析不同的设置并推导出一组最佳实践。这组最佳实践包括 T5,一个用于语言理解任务的最先进的模型和训练框架。
![T5 文本到文本的转换器(第一部分) 机器学习 第2张-四海吧 (from [1])](https://miro.medium.com/v2/resize:fit:640/format:webp/0*35oRo7jb3y7B8Fhw.png)
相关历史和背景
T5 将现有的迁移学习技术重新制定成统一格式,进行比较,并确定最佳实践,以获得高性能的结果。但是这意味着什么?什么是迁移学习,为什么我们应该关注它?为了回答这些问题,我们将首先概述一些重要的思想,包括迁移学习和变压器架构的不同变体,这些思想将对理解 [1] 中的分析至关重要。从这里开始,我们将通过解释 BERT [2] 架构来提供一些历史背景,这为自然语言处理(NLP)任务的迁移学习普及奠定了基础。
什么是迁移学习?

如果我们想要训练一个神经网络来解决某个任务,我们有两个基本选择。
- 从头开始训练: 随机初始化你的神经网络,并在你的目标任务上进行(监督式)训练。
- 迁移学习: 在一个单独的数据集上预训练网络,然后在目标任务上进行微调(即,更多地训练它)。
通常,预训练是在比下游目标数据集大得多的数据集上进行的。一般来说,预训练大大提高了数据效率。模型在微调过程中学习更快,甚至可能表现更好。迁移学习过程可以采取许多不同的形式。例如,在计算机视觉中,我们可能会在 ImageNet 上预训练模型(使用监督学习),然后在较小的数据集(如 CIFAR-10/100)上进行微调。对于自然语言处理(NLP)任务,情况略有不同。通常,我们使用自我监督的预训练目标(例如,掩码语言建模或因果语言建模)和未标记的文本。
不同的Transformer架构
![T5 文本到文本的转换器(第一部分) 机器学习 第4张-四海吧 (来自[6])](https://miro.medium.com/v2/resize:fit:640/format:webp/0*dm-rGt0qMdxeytOK.png)
Transformer最初是在[1]中提出的,使用了编码器-解码器架构,如上图所示。有关此架构的更深入的概述,请查看此链接。然而,编码器-解码器Transformer架构并不是我们唯一的选择!BERT使用了一个仅编码器的架构,而大多数现代大型语言模型(LLMs)都是基于仅解码器的Transformer。让我们花一分钟了解一下这些架构变体之间的区别。

自我关注简介。自我关注操作将一系列令牌向量作为输入,并产生一个新的与输出具有相同长度的转换令牌向量序列;如上所示。此新序列的每个条目都是输入序列中向量的加权平均值。具体而言,我们按以下方式计算输出序列中的每个令牌向量,其中y_i和x_j分别是输出和输入序列的元素。

上面的权重w_{i,j}是一个注意力分数,它作为x_i和x_j的函数产生。简单地说,该分数捕获当前令牌在计算其新表示时应“关注”的另一个序列令牌的程度。
![T5 文本到文本的转换器(第一部分) 机器学习 第7张-四海吧 (来自[6])](https://miro.medium.com/v2/resize:fit:640/format:webp/0*OD0iqN8ZiopLVa-S.png)
单栈或双栈?原始的Transformer架构使用了两个transformer层“栈”,如上图所示。第一个栈(编码器模块)由多个块组成,每个块都包含双向自我注意力和前馈神经网络。第二个栈(解码器模块)非常相似,但它使用掩码自我关注,并具有添加的“交叉注意力”机制,该机制在执行自我关注时考虑了相应编码器层内的激活。 Transformer最初用于序列到序列任务(例如,语言翻译)。对于其他任务,单栈Transformer模型已变得流行:
- 语言模型使用仅解码器的架构
- BERT风格的模型使用仅编码器的架构
![T5 文本到文本的转换器(第一部分) 机器学习 第8张-四海吧 (来自[1])](https://miro.medium.com/v2/resize:fit:640/format:webp/0*2dL9oU4rDV9IMZ_v.png)
注意力掩码。 Transformer架构的变体有一个主要区别:它们的注意层使用的掩码类型。在这里,当我们说“掩码”时,我们是指在计算自我注意力期间对某些令牌进行掩码(或忽略)。简单地说,某些令牌可能只查看完整输入序列中的某个部分。上面的图显示了自我注意力的不同掩码选项。
仅编码器模型利用双向(或全可见)自我注意力,它在自我注意力期间考虑整个序列中的所有令牌。自我关注中的每个令牌表示是由序列中所有其他令牌的加权平均值计算的。相比之下,仅解码器模型使用因果自我注意力,其中每个令牌仅考虑在其之前的令牌。
![T5 文本到文本的转换器(第一部分) 机器学习 第9张-四海吧 (来自[1])](https://miro.medium.com/v2/resize:fit:640/format:webp/0*8hM0xviv2hk-fwa8.png)
我们还可以采用混合方法,通过定义“前缀”来实现。更具体地说,我们可以对序列开头的一组标记(即前缀)执行双向自注意力,然后对序列中其余标记执行因果自注意力;参见上文。完全可见(或双向)自注意力对于关注前缀或执行分类任务非常有用。然而,某些应用(例如语言建模)在训练期间需要因果自注意力,以防止变压器“向未来看”(即在生成输出时仅复制正确的标记)。
T5使用什么?尽管[1]中的分析考虑了许多变压器架构,但T5主要使用的模型是标准的编码器-解码器架构。除了一些小修改外,该模型与最初提出的变压器非常相似[6]。[1]中未探索仅编码器架构,因为它们设计用于标记或序列级分类,而不是像翻译或摘要这样的生成任务。T5旨在找到一种基于迁移学习的统一方法来解决许多语言理解任务。
BERT:NLP的迁移学习
在早期,NLP中的迁移学习通常使用预先训练的循环神经网络,并采用因果语言建模目标[2]。然而,一切都随着BERT [2]的提出而改变,BERT是一种基于变压器的模型[6],使用自监督目标进行预训练。BERT可以在大量未标记的文本上进行预训练,然后进行微调,以用极高的准确性分类句子(甚至是句子中的单个标记)。在其提出时,BERT在几乎所有被考虑的NLP任务上设定了一个新的最佳水平,巩固了迁移学习作为NLP中的主要方法。

为了使其更加具体,BERT依赖于一种“去噪”目标,称为掩码语言建模(MLM),在预训练期间使用;参见上文。虽然这听起来有点复杂,但想法很简单,我们只需:
- 通过使用特殊的
[MASK]标记替换输入序列中的一些标记 - 处理已损坏/修改的序列与BERT
- 训练BERT以准确预测掩码标记
确切的实现有点更复杂。我们随机选择15%的标记,然后用 [MASK] 标记(90%的概率)或随机标记(10%的概率)替换它们。通过在足够大的预训练语料库上使用此目标,BERT可以学习大量的一般语言知识,使其成为转移学习的高度有效模型。
T5与BERT有什么关系? BERT的提出表明,迁移学习是解决NLP问题的一种有用方法。许多人很快开始使用BERT,尝试新技术并提出改进。因此,该领域被不同的选项所压倒,用于执行类似BERT的模型的迁移学习。 T5 [1]继续在这个研究线路上进行研究,但尝试使用一个统一的框架来分析所有这些不同的建议,从而为我们提供了更清晰的迁移学习最佳实践的图片。最终的T5模型使用所有这些最佳实践进行训练,以达到最新的性能。
T5与LLM有什么关系?目前,我们正在看到生成AI领域的巨大革命,其中LLM(基于仅解码器变压器架构)通过语言模型预训练后的零/少次学习来解决语言任务。 LLM非常好,但T5存在于工具和研究的相对独特领域。换句话说,T5主要关注明确在编码器中处理输入,然后使用单独的解码器生成输出的模型。此外,T5采用迁移学习方法(即在每个目标任务上进行预训练后微调),而不是零/少次学习。
其他有用的链接
- 变压器架构[链接]
- 自我关注[链接]
- BERT模型[链接]
- 语言模型的基础知识[链接]
T5:统一的文本到文本转换器
T5的贡献并非新颖的架构或训练方法,而是基于已有技术的研究。T5考虑了NLP中的所有转移学习流水线方面,例如不同(未标记的)数据集、预训练目标、基准和微调方法。然而,所有这些方面都是通过统一的文本到文本格式进行研究的。T5的目标是分析转移学习设置并确定最有效的方法。
文本到文本框架
T5将所有文本处理问题转换成“文本到文本”格式(即,将文本作为输入并生成文本作为输出)。这种通用结构,也被LLMs用于零/少次训练,使我们能够使用共享方法建模和解决各种不同的任务。我们可以将相同的模型、目标、训练过程和解码过程应用到我们考虑的每个任务中!我们只需采用提示方法,并要求我们的语言模型以文本格式生成答案。
![T5 文本到文本的转换器(第一部分) 机器学习 第11张-四海吧 (来自[1])](https://miro.medium.com/v2/resize:fit:640/format:webp/0*YmbQ5UMlUzGu3eVE.png)
为了使这更具体化,T5解决的所有任务都可以按以下方式转换为文本到文本格式:
- 在原始输入序列中添加特定于任务的前缀
- 将此序列馈送到变压器中
- 将模型的目标制定为文本序列
使用此格式,我们可以轻松执行摘要或翻译之类的任务(即,目标自然是一个序列)。此外,我们可以通过仅训练模型生成与正确类别相关联的文本来执行分类。对于回归等问题,此过程会变得有些复杂(即,我们必须将实值输出舍入到最近的小数并将其视为分类问题),但对于大多数语言任务来说效果都很好。如上图所示。
“如果我们的模型在文本分类任务中输出的文本与任何可能的标签都不相对应,那么就会出现问题…在这种情况下,我们总是将模型的输出视为错误,尽管我们从未观察到我们训练的任何模型表现出这种行为。”——来自[1]
T5在解决每个任务时进行微调。这与LLMs使用少量展示学习和NLP十项全能赛[3]使用多任务学习同时解决多个任务不同。
T5如何研究?
[1]中进行的所有分析都使用上述统一的文本到文本框架,因为它允许将许多不同的语言理解任务转换为共享格式。此外,T5的分析使用相同的底层Transformer架构和预训练数据集。
![T5 文本到文本的转换器(第一部分) 机器学习 第12张-四海吧 (来自[6])](https://miro.medium.com/v2/resize:fit:640/format:webp/0*s8IHAOz3BOOx6p4p.png)
模型。如前所述,变压器架构最初是包含编码器和解码器模块的。最近对语言建模的研究探索了仅编码器或解码器的架构变体;例如,BERT仅使用编码器[2],而大多数(大型)语言模型仅使用解码器。T5使用紧密类似于原始变压器的编码器-解码器架构。区别在于:
- 在每个注意力和前馈变换之前立即应用LayerNorm(即,在残差路径之外)
- LayerNorm没有使用加性偏差(即,参见此处;我们仅使用比例并消除加性偏差)
- 使用简单的位置嵌入方案,将一个标量添加到用于计算注意力权重的相应对数中
- 在整个网络中应用Dropout(例如,注意力权重、前馈网络、跳跃连接等)
这些修改在上图中说明。使用此模型(以及其他几种模型),T5可以测试许多不同的转移学习设置,以得出一组最佳实践。
预训练数据集。 T5是在Colossal Clean Crawled Corpus(C4)上进行预训练的,C4是一个750GB的“相对清洁”的英文文本语料库,是在[1]中创建的。虽然在先前的工作中提出了各种预训练数据集,但是[1]中的作者选择构建自己的数据集,原因是先前的数据集不可公开获取,使用了有限的过滤规则,只涵盖了有限的范围(例如,仅来自Creative Commons),或者仅关注用于机器翻译的平行数据(即,不同语言中相同句子的版本)。
![T5 文本到文本的转换器(第一部分) 机器学习 第13张-四海吧 (来自[4])](https://miro.medium.com/v2/resize:fit:640/format:webp/0*YMNBqqph9KCpLCUF.png)
值得注意的是,C4后来被用作用于预训练Gopher和Chinchilla[4,5]的MassiveText数据集的子集。请参见上面的表格,了解此数据集的大小指标,这有助于更好地理解C4相对于用于训练现代LLM的预训练数据集的大小。对于LLM,我们已经看到,仅在足够大的数据集上预训练仅解码器模型对其成功至关重要。对于具有不同体系结构(例如T5)的transformers,情况也是如此。对大型未标记数据集的广泛预训练有助于提高下游性能。
实验设置。 T5是在C4上进行预训练,然后进行微调以解决各种下游任务。但是,在此框架中使用的确切设置是可变的。换句话说,我们可以更改:
- Transformer架构
- 预训练设置(即任务或数据量)
- 微调设置
- 模型的大小/规模
通过一次修改每个设置并评估结果,我们可以开发一组用于NLP中的迁移学习的最佳实践,从而将BERT之后的许多提议浓缩为单个有效的管线,用于创建有效的语言理解模型。
主要观点
本文介绍了T5模型相关的所有预备知识,包括重要的背景信息和基本的实验框架。在下一篇文章中,我们将介绍[1]中进行的广泛分析的详细信息,该分析揭示了NLP中的迁移学习的最佳实践。目前,与T5相关的主要观点概述如下。
迁移学习具有强大的功能。迁移学习是指在某个单独的数据集上对深度学习模型进行预训练,然后在下游目标数据集(即我们实际要解决的任务)上进行微调(或进一步训练)的过程。如果在足够大且对齐(即类似于下游任务)的数据集上执行预训练,则预训练非常有效。模型可以在微调过程中学得更快,甚至可以达到更高的准确度。尽管在领域之间(例如计算机视觉和NLP)都非常有效,但是用于预训练或微调的确切方法可能会有所不同。
“虽然我们在本文中没有明确衡量数据效率的提高,但我们强调,这是迁移学习范式的主要优点之一。”—来自[1]
BERT之后的发展。 BERT的提出[2]是一次重大突破,它推广了用于NLP任务的迁移学习的使用。事实上,BERT在几乎每个它考虑的任务上都取得了新的最先进性能。由于其成功,研究社区采用并迭代了BERT的方法。T5试图统一BERT提出之后的所有后续工作和分析,提供了更清晰的有效迁移学习方法的视图。
通用任务表述。为了创建一个统一的框架,可以根据该框架研究许多不同的迁移学习方法,T5提出了通用的文本到文本框架。与用于LLM的提示和少样本学习技术类似,这种文本到文本框架可以将任何语言任务重构为文本输入和输出。具体而言,这是通过在文本输入中附加任务特定前缀来完成的(即,T5知道它正在尝试解决什么任务),并使用T5的解码器模块生成相应的目标文本(例如,标签、回归值或文本序列)。
结束语
非常感谢阅读本文。我是Rebuy的AI总监Cameron R. Wolfe。我研究深度学习的经验和理论基础。您还可以在小猪AI上查看我的其他作品!如果您喜欢它,请在Twitter上关注我或订阅我的Deep(Learning)Focus通讯,我在其中通过流行论文的可理解概述帮助读者建立对AI研究主题的更深入的理解。
参考文献
[1] Raffel, Colin等。“使用统一的文本到文本转换器探索转移学习的极限。” 机器学习研究杂志21.1(2020):5485-5551。
[2] Devlin,Jacob等。“Bert:用于语言理解的深度双向变压器的预训练。” arXiv预印本arXiv:1810.04805(2018)。
[3] McCann,Bryan等。“自然语言十项全能:多任务学习作为问答。” arXiv预印本arXiv:1806.08730(2018)。
[4] Rae,Jack W.等。“扩展语言模型:来自训练gopher的方法,分析和见解。” arXiv预印本arXiv:2112.11446(2021)。
[5] Hoffmann,Jordan等。“训练计算最优的大型语言模型。” arXiv预印本arXiv:2203.15556(2022)。
[6] Vaswani,Ashish等。“注意力就是你所需要的。”神经信息处理系统的进展30(2017)。