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

2019 年 10 月 25 日 机器之心

机器之心报道

机器之心编辑部

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/



机器之心「SOTA模型」22大领域、127个任务,机器学习 SOTA 研究一网打尽。


www.jiqizhixin.com/sota

登录查看更多
0+

相关内容

预训练模型是深度学习架构,已经过训练以执行大量数据上的特定任务(例如,识别图片中的分类问题)。这种训练不容易执行,并且通常需要大量资源,超出许多可用于深度学习模型的人可用的资源。

ICLR 2020 Oral论文《Reformer: The Efficient Transformer》提出了一种能利用16GB内存在百万级大小上下文上执行注意力机制的Transformer,它的性能优化是由哈希和可逆残差来实现的。

理解序列数据——如语言、音乐或视频——是一项具有挑战性的任务,特别在当它依赖于大量的上下文的情况下。例如,如果一个人或一个物体在视频中消失,很久以后又重新出现,许多模型就会忘记它的样子。在语言领域,长短时记忆(LSTM)神经网络覆盖了足够的上下文来逐句翻译。在这种情况下,上下文窗口(翻译时考虑的数据跨度)覆盖了几十到上百个词。近期的Transformer模型不仅改进了逐句翻译的性能,还可以通过多文档摘要生成整个Wikipedia文章。这样可行的原因是Transformer的上下文窗口可以覆盖上千个词。用这样的大上下文窗口,Transformer可以被应用于文本以外的数据,如像素、音符等,这样它可以被用来生成音乐、图像等。

然而,更大的上下文窗口会对Transformer造成限制。Transformer的强大来自于注意力机制,在这个过程中,它考虑上下文窗口中所有可能的单词对,以理解它们之间的联系。因此,对于包含10万个单词的文本,它每次需要评估10万 x 10万个(即100亿个)单词对,这是不切实际的。另外,每层输出的存储也是个问题。对于使用大型上下文窗口的应用,存储多个模型层的输出的内存需求很快会变得非常大(几层需要GB级内存,上千层的模型需要TB级内存)。这意味着,使用一些层的Transformer模型,只能被用于少数几段文本或生成简短的音乐片段。

本文介绍Reformer,一个可用于应对百万级大小上下文窗口的Transformer,它可以在单一的加速器上运行且仅依赖16GB的内存。它结合了两种关键技术来解决注意力和内存分配问题,这些问题限制了Transformer不能被应用于长上下文窗口。Reformer使用局部敏感哈希(LSH)来降低长序列中注意力的复杂程度,并使用可逆残差层来更高效地利用内存。

注意力机制

将Transformer模型应用于非常大的文本序列时,第一个挑战是如何处理注意力层。LSH通过计算一个哈希函数来实现这一点,该哈希函数将类似的向量匹配在一起,而不是搜索所有可能的向量对。例如,在翻译任务中,网络第一层的每个向量表示一个单词(后续层中可能表示更大的上下文),不同语言中相同单词对应的向量可能得到相同的哈希。下图中,不同的颜色描绘了不同的哈希,相似的单词有相同的颜色。当哈希值被分配时,序列会被重组,将具有相同哈希值的元素放在一起,并被分成片段(或块),以支持并行处理。之后,注意力机制被应用于这些更短的块中(以及相邻块,以覆盖溢出),从而大幅度减少了计算负载。

内存问题

虽然LSH解决了注意力的问题,但仍然存在一个内存问题。单个网络层通常需要几GB的内存,并且通常适用于一个GPU,所以即使是一个处理长序列的模型的单层网络也是可以接受的。但当用梯度下降训练一个多层模型时,为了反向传播,模型需要存储每层的激活值。典型的Transformer一般有几十或更多层,如果缓存每层的值,内存会很快被消耗完。

Reformer中实现的第二个新方法是在反向传播期间按需重新计算每个层的输入,而不是将其存储在内存中。这是通过使用可逆层来实现的,其中网络最后一层的激活值被用来恢复来自任何中间层的激活值,这相当于反向运行网络。在典型的残差网络中,栈中的每一层都不断地向传播信息中添加向量。每个可逆层有两组激活值,一个遵循刚才描述的标准过程逐层更新,但另一个只捕获变化。因此,要反向运行网络,只需在每层激活值间做简单的减法。

Reformer的应用

Reformer中这两种方法的引用使得它非常高效,以至于它可以在单个16GB的加速器上处理包含100万词的长文本序列。由于Reformer非常高效,它可以直接应用于上下文窗口远大于当前最先进文本领域数据集的上下文窗口的数据。也许Reformer能够处理如此大数据集的能力将刺激社区创建它们。

图像生成任务中不缺乏长上下文数据。下面链接的colab代码中展现了Reformer如何被用于补全残缺图片。它可以基于第一行残缺的图片来像素级地生成第二行中完整的图片。colab地址为:

目前论文《Reformer: The Efficient Transformer》已经被ICLR 2020接收为Oral论文。更多细节可以参考原始论文。

成为VIP会员查看完整内容
18+
0+

摘要:我们提出了一种将训练于一种(资源丰富的)语言的神经网络应用于其它(资源贫乏的)语言的方法。我们通过将预先训练好的跨语言单词嵌入映射到训练在资源丰富的语言上的神经网络的嵌入层来实现这一点。为了执行元素间的交叉任务嵌入映射,我们发明了局部线性映射,它假定并保持映射前后语义空间的局部拓扑。在主题分类任务和情绪分析任务上的实验结果表明,我们的方法得到的完全特定于任务的多语言模型比已有的嵌入层固定为预先训练的跨语言词嵌入的多语言模型有更好的表现。

成为VIP会员查看完整内容
5+
0+
小贴士
Top