当前位置:   article > 正文

大模型T5_t5模型论文

t5模型论文

近年来,在大规模预训练语言模型上,各大公司的军备竞赛卷得十分激烈!

本文我们介绍Google推出的大一统模型——T5,同样是数据和实验多得让你瞠目结舌的论文,没错,就是在炫富,你有钱你也可以烧啊!(不过相比后来出现的GPT-3还是小巫见大巫)

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

1. 简介

T5 由谷歌的 Raffel 等人于 2020年7月提出,相关论文为“Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer”。

迁移学习技术在NLP领域的兴起,带来了一系列方法、模型和实践的创新。作者们提出了一种将所有的机遇文本的语言任务建模为文本到文本(text-to-text)的统一框架。作者系统研究了预训练目标、模型架构、未标注的数据集、迁移学习方法和其他因素在语言理解任务上的对比效果。通过一系列提升(规模和语料),T5在一系列摘要生成、问答、文本分类等任务中取得了SOTA的效果。

论文:https://arxiv.org/abs/1910.10683

代码:https://github.com/google-research/text-to-text-transfer-transformer

2. 概述

预训练可以让模型学习到可以被迁移到下游任务重的通用能力和知识。NLP中迁移学习通常通过未标注数据和非监督学习的方式实现,网络上每日数以TB级别的文本数据正好适用于训练更大的神经网络模型,达到更好的模型效果,因此近期涌现了很多种不同的NLP迁移学习方法,这些方法使用不同的预训练目标、不同的数据集、不同的benckmark和不同的fine-tuning方法。层出不穷的新模型、新方法,使得难以剖析新的贡献的效果,并了解现有转移学习方法的提升空间。为了更严格地分析,作者提出使用一种统一的迁移学习框架,从而能够系统地分析不同策略的效果和提升方向。

新框架的基本思想是把每一个文本相关的问题都建模为“文本到文本”问题。这样做的好处在于可以使用同一个模型、目标函数、训练和解码过程来对待每一个NLP任务,灵活性非常高;并且可以对比不同的迁移学习目标、标注数据和其他因素的影响,同时通过放大模型和数据的规模来探索NLP迁移学习的极限。

作者提出,他们并非想要提出一种新的方法,而是提出一种处理NLP任务的综合视角。因此,文章重点在综述现有方法和实证对比分析,为此将模型放大道极限(11B参数),为此他们构造了一个新的数据集(Colossal Clean Crawled Corpus, 简称C4),该数据集包含几百GB的从网上采集的干净的英文文本。

3. 模型架构

目前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

T5与原生的Transformer结构非常类似,区别在于:

  1. 作者采用了一种简化版的Layer Normalization,去除了Layer Norm 的bias;将Layer Norm放在残差连接外面。
  2. 位置编码:T5使用了一种简化版的相对位置编码,即每个位置编码都是一个标量,被加到 logits 上用于计算注意力权重。各层共享位置编码,但是在同一层内,不同的注意力头的位置编码都是独立学习的。一定数量的位置Embedding,每一个对应一个可能的 key-query 位置差。作者学习了32个Embedding,至多适用于长度为128的位置差,超过位置差的位置编码都使用相同的Embedding。

T5(Text-to-Text Transfer Transformer)模型结构仍然是一个由Transformer层堆叠而成的Encoder-Decoder结构。Decoder 与Encoder很相似,但是Decoder中在自注意力层后还有一个标准的注意力层,这个标准的注意力层会将Encoder的输出参与到注意力的计算当中。Decoder的自注意力机制采用了自回归的通用注意力,即每个元素在计算注意力时只能考虑其前面位置的输出。Decoder 的最后一层,通过 Softmax 分类器输出每个元素属于每个词的概率,Softmax 分类器的权重与模型最前面的 Token Embedding 矩阵共享权重。

数据集C4

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

作者基于Common Crawl ,通过删除 html 文件中的 markup 标和非文本内容,构造了大量文本数据。这些文本中包含大量的无效文本(非自然语言,例如菜单栏、错误信息、重复文本;无用文本,例如侮辱性语言、占位符文本、源代码等),作者利用以下启发式规则来清洗采集后的文本数据:

  1. 只保留以结束标点符号结束的行(即句号、感叹号、问号或末尾的引号)。
  2. 删除了少于5个句子的页面,只保留了至少包含3个单词的行。
  3. 删除了含有 "肮脏、顽皮、淫秽或其他不良词语清单"中的任何词语的页面。
  4. 删除了带有Javascript字样的行。
  5. 删除了带有 "lorem ipsum "的页面。
  6. 删除了任何包含大括号"{"的页面,由于大括号"{"出现在许多编程语言中,而不是在自然文本中。
  7. 为了消除数据集的重复性,以3个句子作为一个span单元,对于数据集中至少出现了一次的这样的片段,仅保留一份,删除其余的。
  8. 采用 langdetect 语种识别,过滤掉非英文且概率不低于0.99 的页面。

作者收集了2019年4月以来的网络文本数据,并按上述规则清洗,生产了包括750GB的干净的英文语料。

输入输出格式

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

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

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

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

一些特殊数据的处理:

  • 评分任务(1-5分)被重分类为21类,每隔0.2分为一类。
  • 指代消解(生成式):待判定的词左右两侧都加上*符号,模型需要输出这个词代表什么。
  • 指代消解(判断是否匹配):将训练集中标记为True的样本构造数据集,False的不考虑,因为False的具体指代何物我们也不清楚。
  • WNLI数据集不参与训练和评估。

4. 实验

4.1 baseline

模型架构:

经典的Encoder-Decoder结构,模型配置与BERT-base相当,编解码器各由12个Transformer Block构成,隐层维度为768,12个注意力头,参数量约为220M(BERT-base的2倍)。Dropout比例为0.1。

训练方式:

预训练:

  • AdaFactor优化器,解码时采用贪心解码。
  • 在C4上预训练524k(2的19次方)步,序列最长为512,batch size为128,训练时模型总共处理了约34B个token,这比BERT和RoBERTa少了很多。
  • 学习率策略采用均方根的倒数: , 
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/1019684
推荐阅读
相关标签