T5:把所有 NLP 任务都变成‘文本进、文本出’
// TL;DR
- T5 = Text-to-Text Transfer Transformer:所有任务统一成文本输入→文本输出。
- 配套发布 C4 大规模清洗语料,并系统消融了预训练的各种设计选择。
- ‘统一接口’的思想,为后来用一个模型做一切埋下伏笔。
一个接口统一所有任务
在 T5 之前,不同 NLP 任务的输出形式五花八门:分类输出标签、问答输出片段位置、翻译输出序列……每种都要接不同的输出头。T5 的洞见简单到优雅:全部当成文本生成。翻译就输入‘translate English to German: …’输出德语;情感分类就输入‘sentiment: 这电影太棒了’输出‘positive’;连回归打分都让它输出数字字符串。
输入: "summarize: <长文章>" → 输出: "<摘要>"
输入: "cola sentence: 这句话合法吗" → 输出: "acceptable"
输入: "translate en-zh: hello" → 输出: "你好"
# 同一个模型,同一种 IO 格式,喂不同前缀即可
更有价值的是它的‘系统性’
T5 论文的另一半贡献是工程实证:作者把迁移学习里几乎所有设计选择——预训练目标、模型规模、数据量、训练时长、掩码策略——做了大规模对照实验,给出了一份‘什么有用、什么没用’的经验地图。还顺手发布了清洗过的 C4 语料(从 Common Crawl 提炼出来的几百 GB)。这种‘把直觉变成数据’的工作,价值常被低估。
我的看法
‘所有任务都是文本到文本’这个统一视角,现在看是通向通用模型的关键一步。当任务的接口被统一,‘一个模型干所有事’在工程上就不再是天方夜谭——你不需要为新任务改架构,只需要换个文本提示。这个思想离后来‘用自然语言指令驱动一个大模型’只有一步之遥。范式正在收敛,方向越来越清晰。