机器之心编辑部报道

谷歌T5预训练模型刷新GLUE榜单,110亿参数量,17项NLP任务新SOTA

2018 年,谷歌发布基于双向 Transformer 的大规模预训练语言模型 BERT,为 NLP 领域带来了极大的惊喜。而后一系列基于 BERT 的研究工作如春笋般涌现,用于解决多类 NLP 任务。预训练模型也成为了业内解决 NLP 问题的标配。今日,谷歌又为大家带来了新的惊喜,新模型在 17 个 NLP 任务中都达到了 SOTA 性能。

在最新发布的论文《Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer》中,谷歌提出预训练模型 T5,参数量达到了 110 亿,再次刷新 Glue 榜单,成为全新的 NLP SOTA 预训练模型。

在 GLUE 基准排行榜上,T5 超越 ALBERT,位列榜首。

榜单地址:https://gluebenchmark.com/leaderboard

此外,在难度更大的 Glue 升级版基准 SuperGlue 上,T5 也超越了 Facebook 的 RoBERTa,成为仅次于人类基准的 SOTA 模型。

在 SuperGLUE 基准排行榜上,T5 得分 88.9,超越 Facebook 的 RoBERTa,成为新的 SOTA 模型。

榜单地址:https://super.gluebenchmark.com/leaderboard

这篇 53 页的 T5 论文发布之后,引起了 NLP 社区极大的关注与讨论。论文从实际验证出发,包含了大量的实验报告。而除了提出的 T5 模型之外,作者还开源了 750GB 的数据集 C4,内含从网上爬取的数百个千兆字节干净英文文本。

相关模型代码,作者也已开放到在 Github 上了。

  • 论文链接:https://arxiv.org/abs/1910.10683

  • Github 链接:https://github.com/google-research/text-to-text-transfer-transformer

核心亮点

谷歌的这项研究在摘要生成、问答、文本分类等诸多基准测试中都取得了 SOTA 性能。他们的基本思想是将每个 NLP 问题视为文本到文本问题,即以文本作为输入并产生新的文本作为输出。至关重要的是,谷歌提出的文本到文本框架可以将同一模型、目标、训练流程和解码过程直接应用于他们实验中的每一项任务。基于这个统一框架,研究者既可以比较不同迁移学习目标、未标注数据集和其他因素的有效性,也可以通过扩展模型和数据集来发现 NLP 领域迁移学习的局限。

另外,谷歌强调这项研究的主要目的不是提出一种新的方法,而是从全面的视角来概述当前 NLP 领域迁移学习的发展现状。所以研究的大部分内容是对现有技术的调查研究和实证比较。本研究的另外一项重要贡献是,研究者将每个语言问题都作为文本到文本任务来解决。这个统一的框架与当前的方法不同,在简单的同时还拥有强大的性能。

最后,研究者还通过训练比以前更大的模型(最多 110 亿个参数)来推动该领域的发展。为了进行如此大规模的实验,他们引入了「Colossal Clean Crawled Corpus」(即 C4 语料库),该数据集从 Common Crawl 网站上抓取数百个千兆字节干净的英文文本。最后,他们意识到迁移学习的最要作用是在数据缺乏的环境中可以利用预训练模型,因而开源了相关代码、数据集和预训练模型。

T5 模型

谷歌提出的 T5 模型具体是何构造呢?

他们的编码器-解码器 Transformer 实现大致遵循 Vaswani 等人提出的原版 Transformer 架构。首先,token 的一个输入序列被映射到嵌入序列,然后又传递至解码器。解码器包含一堆「块」,每个「块」又包含两个子部件:自注意力层和小的前馈网络。

层正则化(layer normalization)用于每个子部件的输入,并且一个残差跳跃连接(residual skip connection)将每个子部件的输入添加至它的输出中。此外,前馈网络中、跳跃连接和注意力权重上以及整个堆栈的输入和输出中都应用到了 dropout。解码器在结构上与编码器类似,但解码器在每个自注意力层(注意的是编码器的输出)之后包含一个标准的注意力机制。解码器中的自注意力机制也利用了一种自回归或因果自注意力,这导致该模型只注意过去的输出。最终解码器块的输出被馈入一个具有 softmax 输出的密集层,该密集层的权重与输入嵌入矩阵共享。Transformer 中所有的注意力机制被分解为独立的「头」(head),这些头的输出在得到进一步处理之前被连接了起来。

由于自注意力不受顺序的影响,所以通常的做法是将明确的位置信号提供给 Transformer。尽管最初的 Transformer 利用正弦位置信号或学习到的位置嵌入,但近来更普遍的做法是使用相对位置嵌入。相对位置嵌入并没有使用各个位置的固定嵌入,而是根据自注意力机制中进行比较的「key」和「query」之间的偏置生成一个不同的学习到的嵌入。

研究者还使用了一种简化的位置嵌入,其中每个「嵌入」仅是添加到用于计算注意力权重的相应 logit 的一个标量。为了提升效率,他们在 T5 模型的所有层上都分享了位置嵌入参数,尽管在给定的层中,每个注意力头使用了一个不同的学习到的位置嵌入。通常来说,模型学习到了固定数量的嵌入,并且每个嵌入对应一系列可能的 key-query 偏置。

在本文中,所有的模型都使用了 32 个嵌入,其中范围的大小可以对数方式最高增加到 128 偏置,如果超出,则将所有的相对位置指定给同一嵌入。值得注意的是,如果超出 128 token,给定的层对相对位置不敏感,但后续层可以通过结合之前层的本地信息来建立对更大偏置的敏感性。

C4 语料库

以前 NLP 领域的许多迁移学习研究工作利用大量的未标注数据集来进行无监督学习。在本文中,研究者对测量这种未标注数据的质量效应、特性和大小更感兴趣。为了使得生成的数据集满足研究需求,他们在 Common Crawl 网站上爬取源文本。

作为公开可用的网络归档库,Common Crawl 网站可以去除所爬取 HTML 文档的标签和其他非文本内容,每个月可以爬取 20TB 大小的文本数据。但是,爬取到的大部分文本不是自然语言,而是包含大量菜单栏、错误信息或复制文本等无用数据或格式化文本。此外,爬取到的很多文本包含有对任何任务都没有帮助的内容(攻击性的语言、占位符文本以及源代码等)。为了解决这些问题,研究者利用以下启发式方法来清洗从 Common Crawl 网站上爬取到的文本:

  • 仅保留以终端标点符号(即句号、感叹号、问号或结束引号)结尾的文本行;

  • 删除任何包含「污秽、下流或其他脏话字眼」的页面;

  • 由于爬取到的很多页面包含「应启用 Javascript」的警告信息,所以删除含有 Javascript 一词的所有文本行;

  • 有些页面包含占位符「乱数假文」(lorem ipsum),所以删除出现「乱数假文」短语的所有页面;

  • 有些页面会无意中含有代码。由于花括号「{」出现在很多编程语言中(如网上广泛使用的 Javascript),但不会出现在自然文本中,所以删除所有含有花括号的页面;

  • 为了删除数据集中的重复数据,删除数据集中多次出现的任何三个句子中的两个。

此外,由于大多数下游任务都集中在英文文本上,因此研究者使用 langdetect 来过滤掉所有未归类为英文的页面(概率至少为 0.99)。为了汇编基础数据集,他们下载了自 2019 年 4 月开始网络爬取的文本并进行了过滤。这样产生的文本集合不仅比用于预训练的大多数数据集大几个数量级(大约 750GB),而且还包含非常干净自然的英文文本。研究者将此数据集称为「Colossal Clean Crawled Corpus」(或简称 C4 语料库),并将其作为 TensorFlow 数据集的一部分发布。

输入 & 输出格式

为了训练一个在不同任务中都能表现良好的模型,我们需要在所有任务中都使用统一的输入和输出格式。McCann、Radford 等人在之前的研究中提到,可以用「文本到文本」的格式来表示大多数 NLP 任务,即在模型中输入一些语境文本,然后要求模型的输出也是文本。这一框架可以为预训练和微调提供一个统一的训练目标。具体来说,无论任务是什么,我们都用一个最大似然目标来训练模型(利用「teacher forcing」)。若要指定模型需要执行的任务,我们只需在原始输入馈入模型之前为其添加一个特定于某个任务的(文本)前缀。比如说,如果需要模型将「That is good」从英语翻译到德语,则输入为「translate English to German: That is good.」输出则为「Das ist gut.」

该框架及其输入、输出示例如下图 1 所示:

图 1:谷歌提出的文本到文本框架图解。研究者考虑的每个任务(包括翻译、问答、分类)都被转换为输入模型的文本,然后训练模型生成目标文本。这样就能保证在不同的任务中使用相同的模型、损失函数、超参数等。

按照该框架提供的方法,模型就能在每个任务中应用文本到文本的格式(STS-B 任务除外,因为这是一个回归任务,目标是预测一个 1-5 的相似度得分)。在论文中,研究者通过一些变通方法将 STS-B 问题转换为了 21-class 分类问题。

此外,研究者还将 Winograd 任务转化为了一个更简单的格式,使其更加适合文本到文本的框架。

实验

在论文的「实验」部分,谷歌的研究者进行了一系列实验来测试 T5 模型的迁移学习性能。结果如下表 14 所示:

表 14:T5 模型众多变体在各个任务上的性能。Small、Base、Large、3B 和 11B 表示模型参数量分别为 6000 万、2.2 亿、7.7 亿、30 亿和 110 亿。每个表的第一行列出了该任务之前的 SOTA 得分。

总体而言,在实验的 24 项任务中,T5 模型在其中的 17 个任务上都取得了 SOTA 性能。它在 GLUE 基准中的平均得分为 89.7;在 SuperGLUE 上的平均得分为 88.9,远高于之前的 SOTA 得分 84.6。

不出所料,参数量为 110 亿的最大 T5 模型在所有任务中性能最佳。30 亿参数量的 T5 模型也在几项任务中击败了之前的 SOTA 模型,但将模型增大至 110 亿参数量才是实现 SOTA 性能最重要的因素。

但遗憾的是,T5 模型在翻译等语言任务中表现不尽如人意,谷歌将此归咎于特定任务数据的相对缺乏和训练规模的不足。因此,他们提倡对利用较小模型实现更强性能的方法展开研究,以便将迁移学习应用到其发挥最大影响的地方。

论文中写道:「我们的研究得出了一个虽不足为奇但非常重要的结论,即越大的模型往往表现越好。运行这些模型的硬件成本越来越低,功能越来越强大,这一事实表明,扩大规模可能仍然是实现更好性能的有前途方法。但是,在某些应用和场景下,总是存在使用较小或成本较低模型反而更有帮助的情况,例如在执行客户端推理或联邦学习时。」

参考链接:https://venturebeat.com/2019/10/24/google-achieves-state-of-the-art-nlp-performance-with-an-enormous-language-model-and-data-set/

理论预训练语言模型谷歌
3
暂无评论
暂无评论~