赞
踩
近年来,在大规模预训练语言模型上,各大公司的军备竞赛卷得十分激烈!
本文我们介绍Google推出的大一统模型——T5,同样是数据和实验多得让你瞠目结舌的论文,没错,就是在炫富,你有钱你也可以烧啊!(不过相比后来出现的GPT-3还是小巫见大巫)
T5论文:Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer
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
预训练可以让模型学习到可以被迁移到下游任务重的通用能力和知识。NLP中迁移学习通常通过未标注数据和非监督学习的方式实现,网络上每日数以TB级别的文本数据正好适用于训练更大的神经网络模型,达到更好的模型效果,因此近期涌现了很多种不同的NLP迁移学习方法,这些方法使用不同的预训练目标、不同的数据集、不同的benckmark和不同的fine-tuning方法。层出不穷的新模型、新方法,使得难以剖析新的贡献的效果,并了解现有转移学习方法的提升空间。为了更严格地分析,作者提出使用一种统一的迁移学习框架,从而能够系统地分析不同策略的效果和提升方向。
新框架的基本思想是把每一个文本相关的问题都建模为“文本到文本”问题。这样做的好处在于可以使用同一个模型、目标函数、训练和解码过程来对待每一个NLP任务,灵活性非常高;并且可以对比不同的迁移学习目标、标注数据和其他因素的影响,同时通过放大模型和数据的规模来探索NLP迁移学习的极限。
作者提出,他们并非想要提出一种新的方法,而是提出一种处理NLP任务的综合视角。因此,文章重点在综述现有方法和实证对比分析,为此将模型放大道极限(11B参数),为此他们构造了一个新的数据集(Colossal Clean Crawled Corpus, 简称C4),该数据集包含几百GB的从网上采集的干净的英文文本。
目前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结构基本一致,除了做了如下几点改动:
T5与原生的Transformer结构非常类似,区别在于:
- 作者采用了一种简化版的Layer Normalization,去除了Layer Norm 的bias;将Layer Norm放在残差连接外面。
- 位置编码: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 标和非文本内容,构造了大量文本数据。这些文本中包含大量的无效文本(非自然语言,例如菜单栏、错误信息、重复文本;无用文本,例如侮辱性语言、占位符文本、源代码等),作者利用以下启发式规则来清洗采集后的文本数据:
作者收集了2019年4月以来的网络文本数据,并按上述规则清洗,生产了包括750GB的干净的英文语料。
输入输出格式
我们来看如何将各种下游NLP任务都统一转化成Text-to-Text格式。
在下游任务上fine-tune模型时,为了告诉模型当前要做何种任务,我们会给每条输入样本加一个与具体任务相关的前缀。
等等。注意这里每个任务前缀的选择可以认为是一种超参,即人为设计前缀样式。作者发现不同的前缀对模型的影响有限,因此没有做大量实验比较选择不同前缀的结果。
一些特殊数据的处理:
模型架构:
经典的Encoder-Decoder结构,模型配置与BERT-base相当,编解码器各由12个Transformer Block构成,隐层维度为768,12个注意力头,参数量约为220M(BERT-base的2倍)。Dropout比例为0.1。
训练方式:
预训练:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。