本文解读的是 Google Research 于 2020 年提出的 T5 模型。
其论文题为:
Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer
arXiv:1910.10683
该研究系统性地探讨了预训练-微调范式下多项关键设计选择,并提出了一个统一的文本到文本(Text-to-Text)框架,对后续如 BART、mT5 等模型的发展产生了重要影响。
在此之前,bert和gpt1确立了预训练-微调的范式,他们采用了两条不同的预训练之路:
- BERT:使用Transformer Encoder,预训练任务是MLM(遮码语言模型)
- GPT-1:使用Transformer Decoder,预训练任务是经典的自回归语言模型
然而,在处理下游任务时,它们都需要微调模型,调整训练目标。怎样用更统一的范式进行预训练,处理不同的下游任务? 后续的MQAN,GPT2等方法给出了相应的回答 。在这些工作的基础上,T5作者进行了整合借鉴,并进行了大规模实验。
T5采用了文本到文本框架来统一各类文本任务。这样一个模型即可处理预训练和下游各类任务,无需再针对下游任务调整模型。下图展示了T5如何统一处理各类任务。
文本转化示例:
1. 文本分类(例如情感分类)
原始任务:判断这句话的情感是正面还是负面。
原始输入:This movie was wonderful.
T5输入:sst2 sentence: This movie was wonderful.
T5输出:positive
2. 机器翻译(例如英文翻译成德文)
原始输入:The house is wonderful.
T5输入:translate English to German: The house is wonderful.
T5输出:Das Haus ist wunderbar.
3. 文本摘要
原始输入:一篇长文章
T5输入:summarize: The US president gave a speech today on ...
T5输出:The US president spoke today.
文本到文本框架就是将各类任务的文本转变成了 “任务描述 + 输入文本 → 输出文本”的形式,也是序列到序列学习的一种形式(由于作者称为文本到文本框架,我们按照作者的说法,而不是使用序列到序列等其他相似说法),有了这一统一框架,但还需具体的实现细节,模型架构是什么,训练目标是什么…?作者随后进行了大规模的实验,在若干数据集上了实验不同的架构,训练目标,数据集,训练策略,并给出了详细实验结果。这些实验不仅促成了T5,也在其他方面很有启发性。
在文本到文本框架下,作者逐渐做了7部分实验,内容为:
- 基线实验
- 不同的transformer架构对比
- 不同的预训练目标对比
- 数据集对比
- 训练策略对比——单任务训练vs多任务训练
- 扩展训练规模实验
- 整合前面所有实验结果的综合实验
文本到文本框架基线实验
作者首先做了一个基线实验,以方便后续实验时与之进行对比。
模型
作者采用原始的transformer(包含编码器和解码器)作为基准,模型的参数设置:block数,多头注意力的头数, 维度等参数和BERT-base类似,总体参数量大约是BERT-base的两倍。
训练方式
预训练
作者在自己新构建的C4数据集(后文讨论数据集实验时会再提到)上进行预训练,训练步数为 2 19 2^{19} 219步, batch size 为128,序列最大长度为512,每个batch有 2 16 2^{16} 216 token, 训练token总数为 2 35 2^{35} 235, 大约为34B token,比bert要少一些(大约137B)。
微调
微调步数为 2 18 2^{18} 218步
预训练目标
作者对bert的掩码语言模型进行了一些修改,使其适用于文本到文本框架。作者还是按照按照bert的掩码处理方式,随机遮挡15%的token,但是将这些遮挡的token拼接起来形成一个序列(还需要加上连接token的哨兵单元,,…),这样输入输出都是序列,就适用于文本到文本框架了。下图说明了被遮挡的token怎么拼成一个序列的。
下游任务
在进行下游任务时,作者将各种任务的输入输出按照图1的形式转为文本序列,测试阶段,将模型的预测序列做一定转换以测试效果。
基准实现的实验结果
完成基准实现后,作者给出多个数据集上的测试结果,在GLUE数据集上,这个结果比bert要高。
在表中的第三行,作者还对比了不预训练从头训练的结果,可以看出预训练的提升效果是非常明显的。
不同trasformer架构对比实验
前缀语言模型
经典的语言模型下,每个token只能融合其前面的信息,但在文本到文本框架下却有一定不足,因为在文本到文本框架下,文本被转换成成了“任务描述 + 输入文本 → 输出文本”的形式,建模任务描述前缀时不需要进行任何遮挡。如建模“翻译下文:你好”时,**翻 译 下 文 :**这几个token作为任务描述前缀,它们的表示应该融合所有的token,而不是只融合左边的token,所以作者提出了前缀语言模型,前缀在进行注意力建模时不进行任何遮挡,前缀后面的序列才按经典语言模型遮挡后文建模。前缀语言模型和经典语言模型只有注意力遮挡范围的变化,其他一致,也只是利用了transformer的解码器而不是同时利用编码器和解码器。 下图展示编码器-解码器,语言模型,前缀语言模型架构的不同:
基于上图的三种模型架构,并搭配两种预训练目标函数:
- 图2基线实验中的掩码语言模型变体(作者叫做去噪目标(denoising))
- 经典语言模型目标
作者进行了不同的组合,同时还实验了参数共享(transformer编码器和解码器共享权重),block减半到6层(基线实现是12层)等设置
不同架构实验结果
实验结论
实验结果显示,编码器-解码器架构 + 去噪目标的效果最好。去噪目标在各个数据集的效果总是好于语言模型目标。
不同的预训练目标对比
虽然前面的实验对比了两种预训练目标,但是重点在于比较不同的模型架构。随后,作者实验了不同的预训练目标:
第三个目标的输入是打乱后输入文本,输出是原始文本。第5个目标是基线实验中的预训练目标,第6个是第5个简化。
实验结果
作者给出了这些预训练目标详细的实验结果。
实验表明,基线实验中采用的去噪目标效果最好(带星号的)。
遮挡实验
在此基础上,作者还实验了不同的遮挡比例下去噪目标的效果,结果表明bert采用的15%遮挡率的效果是最好的。
作者还实验对比了不同的遮挡跨度的效果,在基线实验和bert中,每个token都是随机遮挡的,在这里,作者实验对不同的跨度随机遮挡的效果:一次遮挡多个连续token:
实验结果
实验表明,一次遮挡3个连续token的效果较好。
最后作者给出了一张图,来总结训练预目标这部分实验的思路:
不同数据集对比实验
我们首先列出T5论文中列出的的预训练数据集:
- C4(Colossal Clean Crawled Corpus)
- 规模:745GB
- 简介:C4 是 T5 团队特别清洗过的大规模网页文本数据,来源是 Common Crawl,通过去除垃圾内容(如重复、模板化页面、低质量文本)得到。
- 特点:覆盖面广、文本质量高,既有规模又保持了合理的干净度。
- 表现:整体最佳,是 T5 默认使用的数据集。特别在 GLUE、SQuAD、SGLUE 等任务上表现稳定优秀。
- C4, unfiltered
- 规模:6.1TB
- 简介:未经过滤的 Common Crawl 数据,包含大量未清洗的网页文本,杂质较多。
- 特点:体积巨大,但质量参差不齐。
- 表现:比经过清洗的 C4 差,说明数据质量比数据量更重要。
- RealNews-like
- 规模:35GB
- 简介:模拟真实新闻报道风格的数据集,源于新闻文章。
- 特点:内容正式,语言规范,信息密集,适合训练理解和推理能力。
- 表现:在 GLUE、SGLUE 等任务上有接近 C4 的表现,尤其在小数据规模下展现出强劲竞争力。
- WebText-like
- 规模:17GB
- 简介:模仿 OpenAI 的 WebText 数据集,主要来源于 Reddit 链接推荐的网页内容。
- 特点:内容多样、有一定社交媒体色彩,较符合互联网日常文本风格。
- 表现:在 GLUE 上得分最高(84.03),在 SQuAD、SGLUE 上也有很强表现。小规模但高质量多样文本非常有效。
- Wikipedia
- 规模:16GB
- 简介:英文 Wikipedia 文本。
- 特点:语言规范、结构清晰,但领域较单一(百科知识类)。
- 表现:整体成绩中规中矩,不如更大规模或更多样化的数据集。
- Wikipedia + TBC(BooksCorpus)
- 规模:20GB
- 简介:Wikipedia 加上 TBC(BookCorpus,一种故事类文本合集)。
- 特点:结合了百科知识和叙事文本,增加了语言风格的多样性。
- 表现:在 SGLUE 上表现特别好(73.24),其他任务上也略好于单独 Wikipedia。
不同数据集预训练实验结果
固定基线实验的其他设定,作者给出了在这些数据集上预训练的结果:
数据集总结对比
数据集 | 规模 | 主要来源 | 主要特点 | 效果总结 |
---|---|---|---|---|
C4 | 745GB | 清洗后的网页文本 | 大规模,质量高,广覆盖 | 全面最优,适合大模型预训练 |
C4, unfiltered | 6.1TB | 原始网页文本 | 超大但杂乱 | 大小无用,噪声过多反而拉低效果 |
RealNews-like | 35GB | 新闻报道 | 语言规范,信息密集 | 小规模下仍有很强效果 |
WebText-like | 17GB | Reddit 链接网页 | 风格多样,网络语言 | 小而强,特别是 GLUE 上表现最佳 |
Wikipedia | 16GB | 百科文章 | 知识全面但单一 | 表现一般 |
Wikipedia + TBC | 20GB | 百科+小说 | 增加叙事能力 | 提升了泛化能力,尤其是句子推理任务 |
C4子数据集重复训练实验结果
作者还对比了将一个数据集重复训练多次后的结果:
结果表明,将一个数据集重复训练过多次会不利于下游微调任务。
训练策略对比实验——单任务训练 vs 多任务训练
在文本到文本框架下,T5 的一个关键创新是尝试通过统一的训练方式处理多种任务。作者对比了两种训练策略:单任务训练和多任务训练,以探索如何在预训练和微调阶段更好地统一不同任务。
单任务训练
单任务训练是指在预训练或微调阶段,模型针对单一任务进行优化。例如,预训练仅使用去噪目标进行无监督训练。微调阶段单独微调每个下游任务。基线实验就是单任务训练,作者后续会用多任务训练的结果和基线实验结果进行对比。
多任务训练
- 定义:
- 在预训练或微调阶段,模型同时优化多个任务,例如,预训练包括使用去噪目标进行无监督训练,也包括监督训练下游任务(如翻译、分类)。
- 得益于文本到文本框架的通用性,只需在预训练或微调阶段同时混合不同的数据集即可达到多任务学习的效果。
- 特点:
- 统一训练目标,减少任务特化微调的需求。
- 任务混合可能导致任务间干扰(negative transfer),需要精心设计任务比例和数据混合策略。
- 实验设置:
- 在 C4 数据集的基础上,加入下游任务数据(如 GLUE、SQuAD 的训练集),通过参数控制不同数据集的比例,来进行联合训练。
多任务预训练实验结果
作者首先报告了混合多个数据集只进行一次联合训练,不再进行其他训练的测试结果
参数K和T都用于控制混合数据集的比例,K和T越大,下游任务的监督数据集会以更大的比例参与训练。
基线实验结果(单任务训练)基本都好于后面的多任务实验结果。
多任务预训练+多任务微调 实验结果
随后作者也探索了多任务联合训练后再在下游数据集上进行多任务联合训练的结果
实验结论
多任务训练需要精心的控制无监督预训练数据集和下游监督数据集的比例及联合训练策略,作者并没有找到最好的解决方案。基线实验结果(单任务训练)基本都好于后面的多任务实验结果。
扩展训练规模实验
为了探索模型规模和训练数据量对性能的影响,T5 作者进行了扩展训练规模实验,测试了多个4倍于基线模型计算复杂度的方法,采用的方法有:增大训练步数,增大模型参数,增大batch size,集成4个标准模型。
实验结果
表中的实验结果表明,更复杂的模型的效果总是好于基线模型。而且相对于其他实验(结构,目标函数,多任务训练等),提升效果明显。
整合前面所有实验结果的综合实验
在完成上述实验后,T5 作者整合了最佳实践,设计了综合实验,推出最终的 T5 模型系列(多个尺寸,从T5-Small 到 T5-11B)。综合实验的目标是结合最佳架构、预训练目标、数据集和训练策略,优化性能并验证文本到文本框架的通用性。
综合实验设置
-
模型架构:Encoder-Decoder Transformer 基于架构实验的结果(层数,注意力头数,维度大小等根据模型尺寸变化)。
-
预训练目标:去噪目标(15% 掩码,3 token 跨度),基于基线实验的优化结果。
-
训练规模 :基于训练规模实验
训练步数和数据量:
- 基线实验:2^19步(约为BERT训练量的1/4), 总训练量34B token
- 最终版本:100万步(2^20),batch size为2^11 个512长度的序列,总训练量约1万亿个token(1000B,基线实验的32倍)
模型规模:
- Small版本:6千万参数(6层,512维度)
- Base版本:2.2亿参数(基线模型)
- Large版本:7.7亿参数(24层,1024维度)
- 3B版本:28亿参数(24层,1024维度,更大的前馈网络)
- 11B版本:110亿参数(24层,1024维度,最大的前馈网络)
-
数据集:C4 数据集(745GB)+ 下游任务数据。
-
训练策略:多任务预训练(混合C4 数据集(745GB)和 下游任务数据训练) + 单个下游任务微调
-
下游任务:覆盖 GLUE、SuperGLUE、SQuAD、CNN/DailyMail、WMT 翻译等,全面评估理解和生成能力。
综合实验结果
- T5-11B 在 GLUE 和 SuperGLUE 上达到SOTA。
- 在生成任务(如 CNN/DailyMail 摘要)上,T5-11B 达到SOTA。
- 在翻译任务(WMT)上,T5-11B 的 BLEU 分数接近专用翻译模型。
总结
- T5 的文本到文本框架通过统一的“任务描述 + 输入文本 → 输出文本”格式,使单一模型能够高效处理分类、问答、生成和翻译等多种任务。作者通过系统性的实验(架构、预训练目标、数据集、训练策略、规模),优化了 T5 系列模型的性能。
- C4 数据集(745GB)的引入提供了高质量预训练数据,多任务预训练(混合 下游任务)和规模化(T5-11B,1.1T token)显著提升了性能。这些成果不仅推动了 T5 在 2020 年达到多项 SOTA,还为多任务和多语言模型(如 BART、mT5)的发展提供了重要参考