【深度学习: 迁移转换器】使用 T5 探索迁移学习:文本到文本的迁移转换器
在过去的几年里,迁移学习在自然语言处理(NLP)领域带来了新一波最先进的结果。迁移学习的有效性来自于使用自监督任务(例如语言建模或填写缺失的单词)在大量可用的未标记文本数据上预先训练模型。之后,可以在较小的标记数据集上对模型进行微调,通常比单独使用标记数据进行训练时性能要好得多。2018 年,GPT、ULMFiT、ELMo 和 BERT 点燃了迁移学习的最新成功,2019 年开发了多种新方法,如 XLNet、RoBERTa、ALBERT、Reformer 和 MT-DNN。该领域的进展速度使得很难评估哪些改进最有意义,以及它们结合起来的效果如何。
在“使用统一文本到文本转换器探索迁移学习的局限性”中,我们提出了一项大规模的实证调查,以确定哪种迁移学习技术最有效,并大规模应用这些见解来创建一个我们称之为文本到文本转换器(T5)的新模型。我们还引入了一个新的开源预训练数据集,称为 Colossal Clean Crawled Corpus (C4)。在 C4 上预训练的 T5 模型在许多 NLP 基准测试中取得了最先进的结果,同时具有足够的灵活性,可以针对各种重要的下游任务进行微调。为了扩展和重现我们的结果,我们提供了代码和预训练模型,以及易于使用的 Colab Notebook 来帮助入门。
共享的文本转文本框架
在 T5 中,我们建议将所有 NLP 任务重构为统一的文本到文本格式,其中输入和输出始终是文本字符串,这与只能输出类标签或输入范围的 BERT 样式模型形成鲜明对比。我们的文本到文本框架允许我们在任何 NLP 任务上使用相同的模型、损失函数和超参数,包括机器翻译、文档摘要、问答和分类任务(例如,情感分析)。我们甚至可以将 T5 应用于回归任务,方法是训练它来预测数字的字符串表示,而不是数字本身。
文本到文本框架的示意图。我们考虑的每个任务都使用文本作为模型的输入,该模型经过训练以生成一些目标文本。这允许我们在不同的任务集中使用相同的模型、损失函数和超参数,包括翻译(绿色)、语言可接受性(红色)、句子相似性(黄色)和文档摘要(蓝色)。它也为我们的实证调查中包含的方法提供了一个标准的测试平台。
大型预培训数据集 (C4)
迁移学习的一个重要因素是用于预训练的无标记数据集。要准确衡量扩大预训练量的效果,我们需要一个不仅质量高、种类多,而且规模大的数据集。现有的预训练数据集无法同时满足这三个标准,例如,维基百科中的文本质量很高,但风格统一,而且对于我们的目的来说相对较小,而 Common Crawl 网络刮痕数据集则非常庞大,而且种类繁多,但质量相当低。
为了满足这些要求,我们开发了巨型清洁抓取语料库(Colossal Clean Crawled Corpus,C4),它是普通抓取语料库的清洁版,比维基百科大两个数量级。我们的清理过程包括重复数据删除、丢弃不完整的句子以及删除攻击性或嘈杂的内容。这种过滤在下游任务中取得了更好的结果,而额外的规模使得模型的规模在预训练期间不会出现过拟合的情况。C4 可通过 TensorFlow Datasets 获取。
迁移学习方法的系统研究
通过 T5 文本到文本框架和新的预训练数据集 (C4),我们调查了过去几年中引入的 NLP 转移学习的大量想法和方法。调查的全部细节可在我们的论文中找到,包括以下方面的实验:
-
模型架构,我们发现编码器-解码器模型通常优于“仅解码器”语言模型;
-
预训练目标,我们确认填空式去噪目标(模型经过训练以恢复输入中丢失的单词)效果最好,并且最重要的因素是计算成本;
-
未标记的数据集,我们表明对域内数据进行训练可能是有益的,但对较小数据集进行预训练可能会导致有害的过度拟合;
-
训练策略,我们发现多任务学习可以与预训练然后微调的方法相媲美,但需要仔细选择模型在每个任务上训练的频率;
-
和规模,我们比较扩大模型大小、训练时间和集成模型的数量,以确定如何充分利用固定计算能力。
洞察力 + 规模 = 最先进的
为了探索 NLP 迁移学习的当前局限性,我们进行了最后一组实验,结合了系统研究中的所有最佳方法,并使用 Google Cloud TPU 加速器扩展了我们的方法。我们最大的模型拥有 110 亿个参数,并在 GLUE、SuperGLUE、SQuAD 和 CNN/Daily Mail 基准测试中达到了最先进的水平。一个特别令人兴奋的结果是,我们在 SuperGLUE 自然语言理解基准测试中取得了接近人类的分数,该基准测试是专门为机器学习模型困难但对人类简单而设计的。
Extensions 扩展
T5 足够灵活,可以轻松修改以应用于超出我们论文中考虑的许多任务,并且通常会取得巨大成功。下面,我们将 T5 应用于两个新颖的任务:闭卷问答和可变大小的填空文本生成。
闭卷问答
使用文本到文本框架的一种方法是解决阅读理解问题,其中向模型提供一些上下文和问题,并训练模型从上下文中找到问题的答案。例如,可以向模型提供维基百科关于飓风康妮的文章中的文本以及“飓风康妮发生在哪一天?”这一问题。然后,模型将被训练以查找文章中的日期“1955 年 8 月 3 日”。事实上,我们通过这种方法在斯坦福问答数据集 (SQuAD) 上取得了最先进的结果。
在我们的 Colab 演示和后续论文中,我们训练 T5 在更困难的“闭门”环境中回答琐事问题,而无需访问任何外部知识。换句话说,为了回答问题,T5 只能使用存储在其参数中的知识,这些知识是在无监督预训练期间获取的。这可以被认为是开放域问答的一种受限形式。
在预训练期间,T5 学习从 C4 中的文档填充丢失的文本范围(用 表示)。为了将 T5 应用于闭卷问答,我们对其进行了微调,使其可以在不输入任何附加信息或上下文的情况下回答问题。这迫使 T5 根据预训练期间内化的“知识”回答问题。
T5 非常擅长这项任务。在 TriviaQA、WebQuestions 和 Natural Questions 上,完整的 110 亿参数模型分别在 50.1%、37.4% 和 34.5% 的时间内生成答案的精确文本。为了正确看待这些结果,T5 团队在酒吧问答挑战赛中与模型正面交锋,但失败了!单击下面的动画,亲自尝试一下。
填空文本生成
像 GPT-2 这样的大型语言模型擅长生成非常逼真的文本,因为它们经过训练可以预测输入提示后接下来出现的单词。这催生了许多创意应用程序,例如 Talk To Transformer 和基于文本的游戏 AI Dungeon。 T5 使用的预训练目标与填空任务更加一致,在填空任务中,模型预测损坏的文本中丢失的单词。这个目标是延续任务的概括,因为“空白”也可以出现在文本的末尾。
为了利用这个目标,我们创建了一个名为“大小填空”的新下游任务,其中要求模型用指定数量的单词替换空白。例如,如果我们给模型输入“我喜欢吃花生酱和 4 三明治”,我们将训练它用大约 4 个单词填充空白。
我们使用 C4 在此任务上对 T5 进行了微调,发现结果输出非常真实。看到模型如何根据丢失文本的请求大小调整其预测是特别有趣的。例如,输入“我喜欢花生酱和_N_三明治”,输出如下: