论文题目:Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer(用统一的文本到文本转换器探索迁移学习的局限性)

期刊:Journal of Machine Learning Research (SCI4区-CCFA) 2020年

摘要:迁移学习是指先在数据丰富的任务上对模型进行预训练,然后再对下游任务进行微调。迁移学习已经成为自然语言处理(NLP)中的一项强大技术。迁移学习的有效性产生了多种方法、方法论和实践。在本文中,我们通过引入一个将所有基于文本的语言问题转换为文本到文本格式的统一框架,探索了NLP迁移学习技术的前景。我们的系统研究比较了几十种语言理解任务的预训练目标、架构、未标记数据集、迁移方法和其他因素。通过将我们探索的见解与规模和我们新的“Colossal Clean crawl Corpus”相结合,我们在许多基准上取得了最先进的结果,包括摘要、问题回答、文本分类等。为了促进NLP迁移学习的未来工作,我们发布了我们的数据集、预训练模型和代码。

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


深度解读 T5:用统一的 Text-to-Text 框架探索迁移学习的极限

一、引言:为什么需要这篇论文?

2018-2019 年,NLP 迁移学习领域经历了一场爆发式增长。从 ELMo、GPT 到 BERT、XLNet、RoBERTa,各种新方法不断涌现。然而,这种高速发展也带来了一个核心问题:各种新方法在预训练目标、模型架构、数据集、微调策略等维度上同时做出了改变,我们很难理清究竟是哪个因素真正起了作用。

Raffel 等人正是出于对"更严谨理解"的追求,设计了一套统一的实验框架,在控制其他变量的前提下逐一消融各个因素,系统地回答了以下问题:

  • 什么样的模型架构最有效?
  • 什么样的预训练目标最好?
  • 预训练数据集的质量和规模有多重要?
  • 怎样的训练策略(微调 vs. 多任务学习)效果最佳?
  • 规模化(更大的模型 vs. 更多的训练步数 vs. 集成)各自的收益如何?

这篇论文的贡献不在于提出全新的方法,而在于提供了一幅NLP迁移学习领域最全面的实验地图


二、核心创新:Text-to-Text 统一框架

2.1 所有任务,一个格式

T5(Text-to-Text Transfer Transformer)的核心思想非常简洁:将所有NLP任务都转化为"文本输入→文本输出"的统一格式。 无论是翻译、分类、摘要还是回归任务,模型都接收一段文本作为输入,输出一段文本作为结果。

具体来说,通过在输入前添加任务前缀来指定任务类型:

  • 翻译"translate English to German: That is good.""Das ist gut."
  • 语法判断(CoLA)"cola sentence: The course is jumping well.""not acceptable"
  • 摘要生成"summarize: state authorities dispatched...""six people hospitalized..."
  • 语义相似度(STS-B)"stsb sentence1: ... sentence2: ...""3.8"

这种设计的优势在于:可以对所有任务使用相同的模型结构、损失函数、超参数和解码过程,为公平对比不同方法提供了标准化的实验平台。

2.2 模型架构

T5 采用了 Vaswani 等人(2017)提出的原始 Encoder-Decoder Transformer 架构,并做了三个小改动:

  1. 去除了 Layer Norm 的偏置项(bias)
  2. 将 Layer Normalization 放在残差路径之外(pre-norm)
  3. 使用相对位置编码代替绝对位置编码(32 个 embedding,范围对数递增至偏移量 128)

基线模型(Baseline)的 encoder 和 decoder 各有 12 层,与 BERT_BASE 规模相当,总参数量约 2.2 亿

2.3 C4 数据集:Colossal Clean Crawled Corpus

为了获得高质量的大规模预训练数据,作者基于 Common Crawl 的 2019 年 4 月数据,通过一系列启发式过滤规则创建了 C4 数据集(约 750 GB)

  • 仅保留以终结标点结尾的句子
  • 丢弃少于 5 句话的页面,仅保留至少含 3 个词的行
  • 移除含有不良词汇的页面
  • 移除含有 JavaScript、"lorem ipsum"、花括号 { 的页面
  • 三句话级别的去重
  • 使用 langdetect 过滤非英文内容(概率阈值 0.99)

C4 的规模比此前大多数预训练数据集大出一个数量级,且内容相当干净自然。

2.4 下游评测任务

论文评测了覆盖极广的下游任务:

类别 数据集
文本分类 GLUE(8 个子任务)、SuperGLUE(8 个子任务)
问答 SQuAD
摘要 CNN/Daily Mail
翻译 WMT 英→德、英→法、英→罗马尼亚

三、系统性实验:逐因素消融

这是本文最有价值的部分。作者采用"坐标上升"的方式,以基线模型为起点,每次只改变一个因素,观察其对性能的影响。

3.1 基线设置

基线模型在 C4 上预训练 2^19 ≈ 524,288 步,batch size 128,序列长度 512,总计约 340 亿 token。随后在各下游任务上微调 2^18 = 262,144 步。

关键发现:预训练带来了巨大的性能提升。例如,SQuAD 的 Exact Match 从无预训练的 50.31 提升到 80.88,GLUE 从 66.22 提升到 83.28。唯一的例外是 WMT 英→法翻译,因其训练数据量已足够大。

3.2 架构对比

作者对比了三种 Transformer 架构变体:

  1. Encoder-Decoder(标准架构):encoder 使用全可见注意力,decoder 使用因果注意力
  2. Language Model(纯 decoder):整个模型使用因果注意力
  3. Prefix LM(前缀语言模型):输入部分使用全可见注意力,输出部分使用因果注意力

【 Figure 3】 — 三种注意力掩码的可视化:全可见(Fully-visible)、因果(Causal)、带前缀的因果(Causal with prefix)。

【 Figure 4】 — 三种架构的示意图:Encoder-Decoder、Language Model、Prefix LM。

为了公平对比,作者还考虑了参数共享和层数减半的变体:

【Table 2】 — 不同架构变体在各任务上的性能对比。

核心结论

  • Encoder-Decoder + 去噪目标表现最好,尽管其参数量(2P)是语言模型(P)的两倍,但计算量相当
  • 参数共享的 Encoder-Decoder 性能几乎不受影响,可作为降低参数量的有效手段
  • 去噪目标始终优于语言建模目标,无论在哪种架构上

3.3 无监督预训练目标

这是论文最详尽的消融实验之一,按层次逐步探索。

【Figure 5】 — 无监督目标探索的流程图,从高层方法选择到具体参数调优。

第一层:三种高层方法对比

方法 描述
前缀语言建模 将文本分为前缀和目标,encoder 处理前缀,decoder 预测目标
BERT 风格 随机损坏 15% 的 token(90% 替换为 [MASK],10% 替换为随机 token),重建原文
去混洗 打乱 token 顺序,模型需恢复原始顺序

结果:BERT 风格的去噪目标表现最优,去混洗(Deshuffling)表现显著更差(GLUE 73.17 vs. 82.96)。

第二层:简化 BERT 目标

作者对比了四种变体:

变体 GLUE SQuAD SGLUE
BERT 风格(重建原文) 82.96 80.65 69.85
MASS 风格(仅 mask,重建原文) 82.32 80.10 69.28
替换损坏 span(基线) 83.28 80.88 71.36
丢弃损坏 token 84.44 80.52 68.67

【Figure 2】 — 基线去噪目标的示例,展示如何用 sentinel token 替换损坏的 span。

关键发现:只预测被损坏的 token(而非重建整个原文)可以显著缩短目标序列长度,加快训练速度,同时性能不减。

第三层:损坏率

对比了 10%、15%、25%、50% 的损坏率,发现 15% 是一个稳健的选择。50% 的损坏率导致 GLUE 和 SQuAD 显著下降(GLUE: 81.27 vs. 83.28)。

第四层:Span 损坏

与 i.i.d. 独立损坏每个 token 不同,span 损坏有意损坏连续的 token 段。对比了平均 span 长度 2、3、5、10:

Span 长度 GLUE SQuAD SGLUE
i.i.d. 基线 83.28 80.88 71.36
3 83.49 81.84 72.53
10 82.85 81.84 70.44

平均 span 长度 3 略优于 i.i.d. 基线,且因目标序列更短而训练更快。这一设置被 T5 最终版本采用。

3.4 预训练数据集

作者对比了六种预训练数据集。

核心发现

  1. C4 的过滤非常重要:未过滤版本(6.1TB)在所有任务上均不如过滤后的 C4(745GB)
  2. 领域匹配的数据可以带来额外提升:例如 Wikipedia + TBC 在 SuperGLUE 上表现更好,因为 MultiRC 任务的数据来源是小说(与 TBC 领域匹配)
  3. 但领域特定数据集通常更小,在大规模预训练中可能成为瓶颈
预训练数据量的影响

作者将 C4 截断为不同大小(2^29 到 2^23 token),测试数据重复对性能的影响,Figure 6 的训练损失曲线清晰地显示:数据集越小,训练损失下降越快,表明模型正在记忆预训练数据。不过,重复 64 次时性能下降有限,说明适度的重复是可以接受的。

3.5 训练策略

微调方法

对比了三种微调策略:

方法 GLUE CNNDM SQuAD EnDe
全参数微调 83.28 19.24 80.88 26.98
Adapter Layers (d=512) 81.54 17.78 79.18 23.45
逐层解冻 82.50 18.95 79.17 26.71

全参数微调仍然是最优选择。Adapter layers 在低资源任务上有潜力,但需要根据任务规模调整维度 d。逐层解冻(gradual unfreezing)带来了轻微的性能下降。

多任务学习

在 text-to-text 框架下,多任务学习只需混合不同任务的数据集。作者探索了多种混合策略:

  • 等比例混合:效果最差(低资源任务过拟合,高资源任务欠拟合)
  • 按样本量比例混合(examples-proportional):需要设定人工上限 K
  • 温度缩放:T=2 时效果最佳

核心结论:在多数任务上,多任务训练不如"预训练+微调"的标准流程。

多任务预训练 + 微调

一个有趣的折中方案是:先在多任务混合数据上预训练,再在各任务上单独微调。

策略 GLUE SQuAD SGLUE
无监督预训练 + 微调 83.28 80.88 71.36
多任务训练(无微调) 81.42 79.78 67.30
多任务预训练 + 微调 83.11 80.26 71.03
留一法多任务训练 81.98 79.97 71.68

多任务预训练+微调的性能与标准流程相当,且还有一个实际优势:可以在整个训练过程中监控下游任务的性能。

3.6 规模化策略

面对"给你 4 倍计算资源,你该怎么用?"这个问题,作者对比了多种策略

核心发现

  1. 增大模型 + 增加训练时间的组合效果最好(2×模型+2×训练)
  2. 集成在某些任务上提供了正交的提升(如 CNN/DM 和翻译任务),但在 SuperGLUE 上提升不大
  3. 增大模型比单纯增加训练步数更有效

四、最终模型 T5:整合所有洞见

【Table 14】 — T5 各规模变体在所有任务上的最终性能。

基于上述实验,T5 的最终配置整合了以下最佳实践:

因素 选择
架构 Encoder-Decoder Transformer
预训练目标 Span 损坏,平均 span 长度 3,损坏率 15%
预训练数据 C4(750GB 清洗后英文网页文本)
训练策略 多任务预训练 + 单任务微调
训练量 100 万步,batch size 2^11,总计约 1 万亿 token
解码 翻译和摘要任务使用 beam search(宽度 4)

作者训练了五种规模的模型:

模型 参数量
T5-Small 6000 万
T5-Base 2.2 亿
T5-Large 7.7 亿
T5-3B 28 亿
T5-11B 110 亿

主要结果

GLUE(测试集):T5-11B 达到平均分 90.3,创下当时 SOTA。在 MNLI、RTE、WNLI 等自然语言推理任务上大幅超越前作。特别是 WNLI 从此前最佳的 91.8 提升到 94.5。

SuperGLUE(测试集):从此前 SOTA 的 84.6 大幅提升至 88.9,几乎追平人类水平的 89.8。在阅读理解任务 MultiRC 和 ReCoRD 上甚至超越了人类。但在 COPA 和 WSC 上仍与人类的 100% 有差距。

SQuAD(验证集):Exact Match 达到 91.26(此前 SOTA 90.1),F1 达到 96.22(此前 95.5)。

CNN/Daily Mail(测试集):ROUGE-2-F 达到 21.55,超越此前 SOTA 的 20.30。

WMT 翻译:未能超越 SOTA,主要原因包括:仅使用英文数据预训练、未采用回翻译(backtranslation)等数据增强技术。

非规模化因素的贡献

为了区分"规模化"和"方法优化"各自的贡献,作者做了一组精巧的对比实验:

模型 GLUE SQuAD SGLUE
基线(34B token) 83.28 80.88 71.36
基线-1T(1T token) 84.80 83.01 73.90
T5-Base(1T token + 方法优化) 85.97 85.44 75.64

T5-Base 显著优于仅增加预训练量的基线-1T,证明系统性实验中获得的洞见(span 损坏目标、多任务预训练、单任务微调等)确实独立于规模化贡献了性能提升。


五、关键 Takeaways 总结

  1. Text-to-Text 框架简洁有效:用一个统一格式处理所有任务,配合规模化可达到 SOTA
  2. Encoder-Decoder 架构最优:参数量虽是纯 decoder 的两倍,但计算量相当,性能更好
  3. 去噪目标 > 语言建模:各种去噪变体性能相近,建议选择目标序列更短的版本以提高效率
  4. 数据质量至关重要:C4 的启发式过滤在所有任务上都优于未过滤版本
  5. 领域匹配有益但有代价:领域特定数据可提升相关任务性能,但数据集往往更小
  6. 全参数微调仍是最优:Adapter layers 和逐层解冻有其应用场景,但整体不如全参数微调
  7. 增大模型通常优于增加训练时间:在有限计算预算下,优先考虑增大模型
  8. 数据重复会带来记忆化:预训练数据集越大越好

六、展望与局限

作者坦率地指出了几个未来方向:

  • 大模型的不便:11B 参数的模型在低资源场景下难以部署,需要蒸馏、参数共享、条件计算等技术
  • 更高效的知识提取:当前的去噪预训练可能不是最高效的知识学习方式(后续的 ELECTRA 等工作正朝这个方向努力)
  • 任务相似性的形式化:如何更科学地衡量预训练数据与下游任务的"相似性"
  • 语言无关模型:仅用英文数据预训练在翻译任务上未达到 SOTA,多语言预训练值得探索

七、个人思考

T5 论文的价值不仅在于最终模型的强大性能,更在于它为整个社区提供了一份"NLP 迁移学习导航图"。通过超过 60 页的实验记录和 10+ 张对比表格,它回答了许多实践者在日常工作中会遇到的问题:该用什么架构?该怎么设置预训练目标?数据量不够怎么办?

从后续影响来看,T5 的 text-to-text 框架直接影响了后来的 GPT-3(将所有任务转化为生成)、FLAN(指令微调)、甚至当代的大语言模型的设计理念。C4 数据集至今仍是许多研究的标准预训练数据源之一。

如果你正在从事 NLP 相关工作,这篇论文值得反复阅读——不仅是为了理解 T5 本身,更是为了学习如何系统地做消融实验和对比研究

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐