Google T5 预训练模型

PLM

近年来,在大规模预训练语言模型上,各大公司的军备竞赛卷得十分激烈!前面我们介绍过GPT系列的三兄弟GPT-1,GPT-2,GPT3,本文我们介绍Google推出的大一统模型——T5,同样是数据和实验多得让你瞠目结舌的论文,没错,就是在炫富,你有钱你也可以烧啊!(不过相比后来出现的GPT-3还是小巫见大巫)

T5论文:Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer

目前NLP领域的主流模式是先在大量无标签的数据上预训练一个语言模型,然后再在下游具体任务上进行有监督的fine-tune,以此取得还不错的效果。在这个模式下,各大公司争奇斗艳,各个机构奋起直追,今天A提出了一种预训练目标函数,明天B提出了另一种预训练目标函数,并且收集了更多的训练语料,后天C提出了参数更庞大的模型,采用了不同的优化策略......各家都声称自己是state-of-the-art,很难分析比较这些工作的有效贡献量。

因此,T5希望提出一个统一的模型框架,将各种NLP任务都视为Text-to-Text任务,也就是输入为Text,输出也为Text的任务。由此可以方便地评估在阅读理解、摘要生成、文本分类等一系列NLP任务上,不同的模型结构,预训练目标函数,无标签数据集等的影响。

T5:Text-to-Text Transfer Transformer

如图所示,T5(Text-to-Text Transfer Transformer)模型将翻译、分类、回归、摘要生成等任务都统一转成Text-to-Text任务,从而使得这些任务在训练(pre-train和fine-tune)时能够使用相同的目标函数,在测试时也能使用相同的解码过程。
注意这里回归任务对应的浮点数会被转成字符串看待,从而可以token by token的预测出来。虽然感觉奇怪,but anyway, it works。

T5模型结构

T5模型采用Transformer的encoder-decoder结构,之前介绍过GPT采用的是Transformer的decoder结构。

Transformer

T5模型和原始的Transformer结构基本一致,除了做了如下几点改动:

  • remove the Layer Norm bias
  • place the Layer Normalization outside the residual path
  • use a different position embedding

数据集C4

作者对公开爬取的网页数据集Common Crawl进行了过滤,去掉一些重复的、低质量的,看着像代码的文本等,并且最后只保留英文文本,得到数据集C4: the Colossal Clean Crawled Corpus

输入输出格式

我们来看如何将各种下游NLP任务都统一转化成Text-to-Text格式。

在下游任务上fine-tune模型时,为了告诉模型当前要做何种任务,我们会给每条输入样本加一个与具体任务相关的前缀。

  • 翻译前缀translate English to German:
  • 分类前缀cola sentence:
  • 摘要前缀summarize:

等等。注意这里每个任务前缀的选择可以认为是一种超参,即人为设计前缀样式。作者发现不同的前缀对模型的影响有限,因此没有做大量实验比较选择不同前缀的结果。

实验

作者首先设置了一个baseline模型,然后每次修改模型设置一个方面,采用控制变量法进行对比实验。

Baseline

网络结构
不同于BERT或GPT仅使用Transformer结构的一部分,T5的baseline模型直接采用标准的Transformer encoder-decoder结构,以便在生成任务和分类任务上都能取得不错的效果。
具体来说,baseline模型结构的encoder部分和BERT-base模型(12层)的大小一样,而decoder部分和encoder大小相似,因此baseline模型的参数量基本是BERT-base模型的2倍。

预训练目标
采用denoising objective,也就是类似BERT的masked language modeling目标函数。

objective

如图所示,在输入样本中,用一些唯一的特殊符号<X>, <Y>来表示原始样本中被随机masked的span或token,而目标样本则为被masked的span或token序列,用输入样本中对应位置的特殊符号<X>, <Y>分隔,最后加上一个特殊符号<Z>表示序列结束。

在下游任务上fine-tune

图片来自Standford CS224N 课件

在每个下游任务上单独fine-tune后的评估结果如下:


baseline performance

可以发现pre-train的模型参数确实对下游任务的性能提升大有帮助。

接下来我们就要基于Baseline模型,对模型的某一部分进行修改,进行大量对比实验了。

对比模型结构

Transformer architecture variants

如图所示为Transformer结构的几种变种,主要区别在于模型中self-attention机制的可见范围。

  • fully-visible attention mask:输出序列的每个元素可以看见输入序列的每个元素。
  • causal attention mask:输出序列的每个元素只能看对应位置及之前的输入序列的元素,无法看见未来的元素。
  • causal with prefix attention mask:输入序列的一部分前缀采用fully-visible attention mask,其余部分采用 causal attention mask。

在最左侧的Encoder-Decoder结构中,Encoder部分采用fully-visible attention mask,而Decoder部分采用causal attention mask。

中间的Language model结构中,采用causal attention mask。

最右侧的Prefix LM结构中,采用causal with prefix attention mask。比如在翻译任务中,给定训练样本translate English to German: That is good. target: Das ist gut.,我们对translate English to German: That is good. target:采用fully-visible attention mask,对Das ist gut.采用causal attention mask。

实验结果

从表中可以发现,(1) 采用encoder-decoder结构且使用Denoising目标函数的效果最好; (2) encoder和decoder共享参数(Enc-dec, shared)的结构表现也差不多好; (3) 相同参数量的encoder-decoder结构(Enc-dec, shared)要比Prefix LM结构的效果好,说明添加显式的encoder和decoder之间的attention是有用的; (4) 采用Denoising目标函数的效果要好于采用一般的语言模型目标函数。

对比预训练目标

inputs and targets of different unsupervised objectives

如图所示,给定句子“Thank you for inviting me to your party last week .”,图中展示了针对不同的预训练目标,模型的Input和Target样本的形式。

Performance of three disparate pre-training objectives

实验表明BERT-style预训练目标的效果最好,因此作者又进一步分析了该目标的几种变种形式,如下图:

Comparison of variants of the BERT-style pre-training objective

其中Replace corrupted spans就是上上图中的noise replace spans目标,Drop corrupted tokens就是上上图中的noise, drop tokens目标。结果表明,这几种BERT-style预训练目标的变种效果差不多,但是后两种方法不需要预测整个输入序列,而仅需要预测被污染的部分,因此预测的序列长度更短,训练速度也更快。

对比预训练数据集

1. 对比数据集种类
Performance resulting from pre-training on different datasets
  • C4,unfiltered是没有经过过滤(比如去重、去除代码等)的数据集
  • RealNews-like是从C4中筛选的仅新闻领域的数据
  • WebText-like是从Common Crawl中过滤筛选的Reddit用户评分至少为3的数据,数据质量高
  • Wikipedia是英文百科全书的数据
  • TBC全称是Toronto Books Corpus,数据主要来自于电子书,和百科全书是不同的领域(different domains)。

注意,为了保证训练过程中除了数据集的种类,其他参数设置一样,作者在预训练时只用了2^{35}\approx 34B tokens,也就是各个数据集参与训练的样本数量是一样的。

从实验结构可以看出,(1) C4比unfiltered C4效果好,说明数据清洗的重要性;(2) Wikipedia+TBC在SGLUE上的效果比C4好,主要是因为在SGLUE中的MultiRC任务得分很高,MultiRC是一个阅读理解数据集,其中的数据主要是小说书籍,和TBC属于同一领域数据。由此说明预训练的数据集中包含一定的领域数据对下游该领域任务的性能提升有效;

2. 对比数据集大小
pre-training dataset size

预训练依然只用2^{35}\approx 34B tokens,但是为了对比不同数据集大小的影响,需要对不同大小的数据进行重复,比如对于大小为2^{29}的数据集,则需要对其重复64次以达到最终2^{35}大小的量。

从表中可以看出,随着数据集不断缩小,模型的性能逐渐下降,说明大的模型很可能在小的数据集上发生了过拟合,因此建议预训练模型还是尽可能使用大数据集。

对比迁移方法

图片来自Standford CS224N

从实验结果可以看出,(1) Multi-task pre-training + fine-tuning的效果可以和baseline Unsupervised pre-training + fine-tuning差不多;(2) 去掉无监督任务的Supervised multi-task pre-training的效果很差,说明无监督预训练确实很有用,此外,可以发现在翻译任务EnDe、EnFr、EnRo上的效果没有下降很多,可能是因为只预训练英文语料对翻译任务影响不大。

对比模型规模

假如给了你4倍的算力,你应该把它用在哪?是扩大模型规模还是增长训练时间?

Comparison of different methods of scaling up our baseline model

从表中可以看出,(1) 扩大模型规模和增长训练时间都能提高模型性能;(2) 将模型扩大到2倍规模,同时训练时间也扩大2倍的效果和将模型扩大到4倍规模的效果差不多,说明增加训练时间和扩大模型规模很可能是两种互补的可以提高模型性能的方法;(3) emsemble对提高模型性能确实有效。

大一统

通过对各种对比实验的结果进行分析,作者最终确定了训练T5模型的较优方案,其中以下几点值得注意:

  • 无监督训练目标:采用span-corruption目标,类似SpanBERT的做法。
  • 预训练策略:采用multi-task预训练方式(即无监督任务和有监督任务一起预训练),在对比迁移方法一小节中我们发现Multi-task pretraining + fine-tuning的效果和Unsupervised pre-training + fine-tuning的效果差不多,但是前者在预训练过程还能够监控下游任务的性能,因此作者最后采用Multi-task pre-training

总结

最后先来回顾下T5的特点:
T5 is an encoder-decoder model pre-trained on a multi-task mixture of unsupervised and supervised tasks and for which each task is converted into a text-to-text format. T5 works well on a variety of tasks out-of-the-box by prepending a different prefix to the input corresponding to each task, e.g., for a translation task: translate English to German: xxx...

个人感觉T5论文算是对当前NLP领域pre-train fine-tune主流模式下的各种训练技巧的一个总结和公平对比,分析各种训练技巧对模型性能提升的实际影响,从而采用合适的技巧预训练出一个好的模型。作者也说了,本文的目的不是提出一个新的方法,而是对NLP领域的一些技术支撑点提供一个较为全面的分析视角。

Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer
Standford CS224N

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容