文章目录

  • 0. 背景
    • 0.1 摘要
  • 1. 介绍
  • 2. 模型
    • 2.1 输入和输出格式
  • 3. 实验
    • 3.1 baseline
    • 3.2 对比的框架
    • 3.3 无监督目标函数
    • 3.4 预训练数据集
    • 3.5 训练策略
      • 3.5.1 微调策略
      • 3.5.2 多任务学习
    • 3.6 规模的影响
  • 4. 总结和展望
    • 展望

0. 背景

机构:谷歌
作者: Colin Raffel
发布地方:arxiv
面向任务:自然语言理解
论文地址:https://arxiv.org/abs/1910.10683
论文代码:https://github.com/google-research/text-to-text-transfer-transformer

本文框架(T5)在GLUE上暂时(2019年11月7号)是冠军:

在SuperGLUE上也是冠军:

0.1 摘要

迁移学习已经在NLP领域大显神威,其有效性源于多元化的方法、方法论和实践。本文引入一个统一的自然语言处理迁移框架,该框架将所有的自然言语处理任务统一为text-to-text形式。本文系统研究比较了 预训练目标、系统架构、未标记数据集和迁移方法等其他因素对数十个自然语言理解任务的影响。本文其实并没有引入新的模型或者新的方法,而是将现有的方法和技术做一次集大成,进行统一。此外,本文还引入一个新的数据集:Colossal Clean Crawled Corpus,名为C4。该数据集引入的初衷是为了探索尺度规模(包括模型规模和数据规模)在NLP中的影响。本文最终在文本摘要、问答、文本分类等多个基准任务上取得SOTA结果。

1. 介绍

训练一个能够处理NLP下游任务的机器学习模型,可以简单视为在模型上发展出通用知识,使其能够"理解" 文本。这种通用知识既有如拼写、词意等低级别知识,也有如"that a tuba is too large to fit in most backpacks"(大号太大了,大多数背包装不下)的高级知识。在现代机器学习实践中,很少明确地提供这些知识。相反,这些知识经常作为辅助任务的一部分被“学习”。例如,词向量。

近年的趋势是在丰富的数据集上预训练整个模型。理想情况下,这种预训练会使模型发展出通用的能力和知识,然后可以"迁移"到下游的任务中。NLP中的预训练一般是无监督的,其魅力在于海量的无标注数据可以再互联网上获取到。听过Common Crawl project吗?这货每个月从网页上抽取出20TB的文本数据。当下深度学习的一条金科玉律就是:更大的模型,更多的数据,就可以获取更好的结果。

基于这种指导思想下,发展出了大批的NLP迁移学习方法。主要包括以下几个方面:预训练目标、无标注数据取、基准benchmark和微调方法等。在这个新兴领域中,技术发展又快又多,使得比较不同的算法、梳理新方法的效果和理解现有的迁移学习方法变得困难。出于对更严谨理解的需要,本文提出一个统一的方法来进行迁移学习,这使我们能够系统地研究不同的方法,并推动该领域的发展。

本文工作的基础设想是每一个NLP问题当作一个“text-to-text”的问题。虽然已有类似的方法: [McCann et al., 2018]和[Radford et al., 2019],本文的关键点在于对每个NLP任务使用text-to-text框架能够直接使用相同模型、目标函数、训练流程和解码步骤。这就极大地方便了使用和对比,特别适合单因素变量对照。本文通过评估各种基于英语的NLP任务的性能来说明这种灵活性。这些英语类的NLP任务包括问答、文本摘要、情感分类等。使用text-to-text这个统一框架,我们可以比较不同迁移学习目标未标记数据集和其他因素的有效性,同时通过扩展模型和数据集探索迁移学习的边界。最终本文在诸多任务中获得了最先进的结果。

这里需要再次强调下,本文的目标并不是提出新的方法,而是提供一个全面的视野。(PS:所以,我觉得这篇文章作为一个集大成者,更像是一篇综述。)。本文贡献:
(1)对现有技术的调查、探索和经验比较
(2)把每一个问题都当作一个text-to-text的任务。

这个统一的框架不同于当前的实践,其优点在于简单性和强大的性能

最后,本文还进一步探索了模型规模和数据规模的影响。
在模型规模上,尝试更大模型(11 billion参数);在数据规模上,引入了新的数据集C4(750GB,爬取于网络的纯净英文语料)。由于迁移学习的主要使用场景是在缺乏数据的情况下利用预训练模型,所以,本文也提供了代码、数据集和预训练模型。(是不是可以说,没有提供可以复现的代码、模型、数据的 论文 不值得,论文不值得,不值得。。)

后续论文主要介绍模型的及其实施细节,包括如何将NLP任务都视为text-to-text问题。在第3章中,主要是大量的实验。在3.7章节中结合我们的系统研究的见解,在各种基准上获得最先进的结果。

以下主要介绍模型,实验部分由于过于庞大,略~

2. 模型

本文模型 :Text-to-Text Transfer Transformer (T5)
本文T5中的encoder-decoder Transformer与 Transformer 原始论文类似。
(1)输入序列 tokens 被映射为一序列的嵌入表示
(2)将嵌入表示输入到 encoder。encoder由一堆 blocks组成,每个block由自注意力层和前馈神经网络层组成。每个block中的子层都加了Layer normalization和残差连接。decoder 与 encoder很类似,所不同的是decoder在每个自注意力层后面紧接一层标准的注意力层。这层标准注意力层将encoder的输出注入到decoder中。decoder中的自注意力使用的是自回归方式或者因果自注意力。这意味着,在decoder中模型只能看到历史过往的输出信息,不可窥探未来。
(3)最后decoder block中的输出输入到一个全连接层(最简单的线性变换),再接一个softmax。

由于自注意力是无序的,所以需要在 Transformer 中显式地提供位置信息。原始的 Transformer 直接给出一个正弦函数形式的位置嵌入方式。但是,本文这里采用的是相对位置嵌入。相对位置嵌入不再对每个位置使用固定的嵌入,而是根据自注意机制中被比较的“key”和“query”之间的偏移量产生不同的学习嵌入。本文这里使用一种简化的位置嵌入形式,每个“嵌入”只是一个标量,它被添加到相应的logit中,用于计算注意力权重。为了提高效率,在模型中共享所有层的位置嵌入参数,尽管在给定的层中,每个注意力头部使用不同的学习位置嵌入。通常,需要学习固定数量的嵌入,每个嵌入对应key-query 可能的偏移量范围。具体到本文这里,所有模型一共使用32个嵌入,范围增量步长以对数方式,直到偏移量
超过128,对于超出128的则将所有的相对位置赋予相同的嵌入。主要特别注意,给定层对128个标记之外的相对位置是不敏感的!但是,后续的层可以通过结合前一层的局部信息来建立对较大偏移量的敏感性。

text-to-text 框架流程图:

2.1 输入和输出格式

既然要在多个任务上一统模型,那么需要在多个任务上的输入和输出格式上进行统一。为指定模型所处理的具体任务类别,需要在原始的输入序列上增加task-specific (text) 前缀。具体示例可以参考Figure 1。 其中较为特殊的是STS-B任务,该任务是一个回归任务,其输出结果是介于0~5之间的值。我们发现这些分数中的大多数都是以0.2为增量进行标注的,因此我们只需将任何分数四舍五入到最接近0.2的增量,并将结果转换为数字的字符串形式。例如,浮点数2.57,则将其映射为字符串"2.6"。换句话说,将该回归问题转为一个21类的分类问题。

3. 实验

本文的实验真是很庞大,详细对比分析了各种相关因素:预训练目标、模型框架、无标注数据等。在梳理完各种因素的对结果性能的贡献之后,在多个NLP任务上刷新纪录也就水到渠成。

3.1 baseline

包括baseline的模型、训练方式、字典构建、无监督目标函数。
本文选用的baseline模型与BERT_base 很接近,模型大概220 million 参数。由于baseline模型采用了双层的stacks,而非一个,所以参数量是BERT_base的2倍。
无监督训练目标如下:

baseline的性能表现如下:

3.2 对比的框架

Attention masks:
从mask的角度来看,有三种:全视野mask(fully-visible mask)、因果mask(causal mask) 和 带前缀的因果mask(causal masking with a prefix)。具体如Figure 3 所示,其中 暗黑色表示能够看到,浅灰色表示看不到。

从网络架构上来看,有三种:Encoder-decoder、Language model 和 Prefix LM 。
每种架构都可以选用特定的mask方式。比如encoder-decoder 架构中,encoder就选用全视野mask,Transformer 的 decoder中的自注意力就使用因果mask。鉴于此,Transformer 中的decoder也可以视为一个Language model。本文的text-to-text框架中是涉及到前缀信息的,比如英文-德文翻译,前缀信息就是整个英文句子。此时因果mask就有了局限性。因此才有了带前缀的LM(Prefix LM)。Prefix LM中前缀信息内部是全视野mask,注意:前缀信息的关注点仅仅在自身内部,并不跨越到结果部分(可以将前缀信息视为因,而形如输出的翻译句子视为果)。Prefix LM在预测输出的时候,既可以查看全部的前缀信息,也可以查看已生成的结果信息。
这三种网络架构可以参见Figure 4。

不同模型的对比结果如 Table 2所示:

3.3 无监督目标函数

本文对比的无监督目标函数有:prefix language modeling、masked language modeling (MLM)和deshuffling objective 这三种。
这三种目标函数的示例如 Table 3 中前3行所示:

实验结果发现BERT风格的MLM最腻害:

所以,进一步分析BERT风格的MLM。
BERT风格的目标函数有以下几种变体:
(1)MASS-style
(2)对每个被遮蔽掉的连续token以一个特定唯一的mask token表示,如 Table 3 第5行。则此时的目标是串联出被遮蔽掉的token 片段。
(3)简单丢弃被mask掉的token,目标是按次序重建出被丢弃的tokens。如 Table 3 中第 6行示例。
这三种变体与BERT的对比如下:

其实从实验结果来看,这些变体差不多。由于replace corrupted spans 和 drop corrupted spans都无需完整重建整个原始句子,这使得目标输出更短,训练所需时间也更短。后续的研究采用的replace corrupted spans方案(与baseline一致)。

进一步研究了corruption rate,结果如下:

所以,15%的比例最佳。

另外,本文还再再进一步探索了span 长度的影响:

对比性能结果,最终模型选用的是长度为3,因为长度短,训练速度越快。

无监督目标的整个探索流程如下图 Figure 5 所示:

3.4 预训练数据集

3.5 训练策略

3.5.1 微调策略

(1)adapter layers。在Transformer每个block中的前馈神经网络后添加dense-ReLU-dense blocks。新的前馈网络使得输出可以与输入维度匹配。微调阶段,只有adapter layer和layer normalization的参数被更新。这种方法的超参数是内部前馈网络的维度ddd。
(2)gradual unfreezing。这种方式是更新模型参数的范围随着随着时间扩大。初始微调时,只有最后一层的参数被更新,训练一段时间后,倒数第2层及其之后层的参数被更新,直至整个网络的参数都被更新。应用到本文的框架,这种方式是有所改动的。

这两种策略对比:

3.5.2 多任务学习

所谓多任务学习是同时在多个任务上训练一个模型,其目的是训练一个能同时处理多个任务的模型,即该模型中的绝大数参数在多个任务之间是共享的。本文对此目标稍稍宽松,转而研究对多个任务同时进行训练的方法,以便最终生成对每个单独任务都表现良好的独立参数。所以,本文这里是简化版的多任务学习,并不热衷于多任务之间的参数共享,而是更关注于用同一个时间训练多个任务。例如,我们或许可以在多个任务上训练一个模型,但是应用到具体任务时候,可以针对不同的任务选用不同的checkpoint。这就放宽了多任务学习框架,与当下我们所考虑的 预训练-微调 的方法 相比, 它的基础才显得牢固。还注意到,在本文统一的text-to-text框架中,“多任务学习”简单地对应于将数据集混合在一起。相比之下,此前NLP中的多任务学习大多数都是为每个任务添加特定的分类网络或使用不同的损失函数。

那么多任务中,一个非常重要的问题来了,每个任务需要用多少数据进行训练?本文探索了三种方案:Examples-proportional mixing、Temperature-scaled mixing 和 Equal mixing。

实验发现,多任务训练一般是无法于预训练-微调方法相媲美的。

后续还进一步研究了如何缩小多任务训练和 预训练-微调 的差距。研究了以下三种方案:
(1)examples-proportional mixture 数据的预训练,再下游任务微调。这有助于我们衡量,在训练前将监督任务与非监督目标放在一起,是否会让模型更早地接触到下游任务。
(2)相同 examples-proportional mixture 数据上预训练模型,但是在预训练混合的下游任务中丢弃一个。
(3)对于全部的有监督任务的数据以examples-proportional
mixture 进行预训练。

上述几种方案的对比结果见于 Table 12:

从中可以看出,多任务预训练+微调 的方式可以取得于baseline近似的结果。这表明多任务学习之后,再进行微调确实有助于缓解不同混合比例之间的一些权衡。另外,抛弃一个任务(“leave-one-out”)的训练结果仅仅轻微下降,说明模型在多个任务上训练确实可以应用于新的任务上。多任务预训练可能不会导致剧烈的任务干扰。

3.6 规模的影响

这里说的规模,涉及 模型的规模、训练的时长规模 和 batch size。
这里的对比的一个前提是,假如有4倍的算力,怎么来分配?可以有以下方案:
(1)训练得久些,原来的4倍
(2)每个batch size 扩大为原来4倍
(3)模型扩大2倍,训练时长扩大2倍
(4)模型扩大4倍

具体结果如 Table 13 所示:

在做了上述对比和分析后,综合一起设计出最优模型,即可刷榜。具体细节参考论文。

4. 总结和展望

本文提出的text-to-text 框架将NLP进行统一,并详尽地分析了架构、无监督目标函数、数据集、训练方法和规模等因素的影响。

展望

大模型的难处
我们也知道大模型表现好,终究不是长久之计,distillation、parameter sharing和conditional computation 或许是一条新出路。

更高效地抽取知识:
我们需要一个更有效的方法来学到通用的知识,强烈怀疑BERT-style loss的效率。

形式化任务之间的相似性:
需要一个衡量pre-training和下游任务相似性的方法。

与语言无关的模型:
English-only pre-training没能在翻译任务上达到SOTA的表现,说明单一语言还是有局限性。不受语言限制的模型可能是未来的一个研究方向。

文献阅读笔记:Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer(T5)相关推荐

  1. 文献阅读笔记 | Reconstructing commuters network using machine learning and urban indicators

    原文:Spadon, G., de Carvalho, A. C., Rodrigues-Jr, J. F., & Alves, L. G. (2019). Reconstructing co ...

  2. 【文献阅读笔记】KAM Theory Meets Statistical Learning Theory: Hamiltonian Neural Networks with Non-Zero Trai

    文章发表于[2022]AAAI Technical Track on Machine Learning I 文章目录 文章目的 一.主要内容: 1.用统计学习理论证明哈密顿神经网络的训练模型是原系统的 ...

  3. 【知识图谱】本周文献阅读笔记(3)——周二 2023.1.10:英文)知识图谱补全研究综述 + 网络安全知识图谱研究综述 + 知识图谱嵌入模型中的损失函数 + 图神经网络应用于知识图谱推理的研究综述

    声明:仅学习使用~ 对于各文献,目前仅是泛读形式,摘出我认为重要的点,并非按照原目录进行简单罗列! 另:鉴于阅读paper数目稍多,对paper内提到的多数模型暂未细致思考分析.目的是总结整理关于KG ...

  4. 文献阅读笔记-CSC-数据集-A Hybrid Approach to Automatic Corpus Generation for Chinese Spelling Check

    A Hybrid Approach to Automatic Corpus Generation for Chinese Spelling Check 文献阅读笔记 论文相关信息: EMNLP-201 ...

  5. 文献阅读笔记:Smart Homes that Monitor Breathing and Heart Rate

    文献阅读笔记:Smart Homes that Monitor Breathing and Heart Rate Fadel Adib Hongzi Mao Zachary Kabelac Dina ...

  6. 《基于区块链技术的虚假新闻检测方法》文献阅读笔记+总结

    <基于区块链技术的虚假新闻检测方法>文献阅读笔记+总结 关键词:区块链.智能合约.虚假新闻.新闻网站.博弈论 来源 题目 时间 作者 中国学术期刊网络版 <基于区块链技术的虚假新闻检 ...

  7. 研究生如何做文献阅读笔记

    ** 研究生如何做文献阅读笔记 ** 研究生如何做文献阅读笔记? 说实在的,我自己也不是很会读书.读书的速度也不快,只是喜欢读书罢了.阅读文献,对于开题期间的研究生和写论文期间的研究生是很重要的功课, ...

  8. POI推荐文献阅读笔记3:Predicting Human Mobility via Graph Convolutional Dual-attentive Networks

    POI推荐文献阅读笔记3: Predicting Human Mobility via Graph Convolutional Dual-attentive Networks 1.摘要 2.贡献 3. ...

  9. 文档资源推荐 研究生如何做文献阅读笔记(强力推荐!!!)

    转自:http://www.soudoc.com/bbs/viewthread.php?tid=9056542&extra=&page=1 研究生如何做文献阅读笔记? 说实在的,我自己 ...

最新文章

  1. 解析IBM TSM6.0版本特色功能与技术优势
  2. 如何调试程序的后台作业
  3. Spring Validation验证框架参数验证 @Validated 和 @Valid 的区别
  4. oracle join详解,inner join和left join之间的区别详解
  5. 老男孩python全栈开发视频教程_老男孩Python全栈开发(92天全)视频教程 自学笔记08...
  6. Unity3D 装备系统学习Inventory Pro 2.1.2 基础篇
  7. linux删除权限命令,管理使用者和设立权限的命令
  8. wamp下更改mysql密码
  9. 实现对顺序表的入栈出栈操作、利用栈将十进制转化成二进制输出【数据结构实验报告】
  10. 武新博士:新型MPP数据库将支撑起大数据时代
  11. 数据库errno: 1045的解决办法
  12. 【linux】具体芯片MACHINE_START处理
  13. r语言上机文本分析与词云绘制_R语言jiebaR包文本中文分词及词云上机练习,小白能做到...
  14. 太牛了,2万字用Python深度探索金庸小说世界!
  15. libcrypto.so.1.0.0缺失问题
  16. 线性回归最小二乘法公式推导
  17. 转--《失控》与无中生有
  18. MyBatis框架学习笔记01:初入MyBatis(一)
  19. python随机排列图片_更改图片中的随机像素,python
  20. Redis五大数据类型常用命令

热门文章

  1. zk——你知道的zk是这样的吗
  2. 推荐几本计算机的入门书
  3. 5年18家私有化 这些港股公司主动退市为哪般?
  4. IDEA java版本降级编译,解决JDK版本导致Unsupported major.minor version 52.0 error
  5. 网络安全与管理知识点总结
  6. android怎样调用@hide和internal API
  7. 用js实现添加和删除元素的功能
  8. 计算机辅助英语口语考,计算机辅助英语口语测试形式评析
  9. css 样式手形,css 添加手状样式
  10. 死侍在新片中,扮演了一个 AI 驱动的 NPC