T5预训练模型

T5(Text-to-Text Transfer Transformer)是 Google 于 2020 年提出的一种统一架构的预训练语言模型,其核心思想是:将所有 NLP 任务统一建模为文本到文本(Text-to-Text)的问题

一、T5 模型概述

特性内容
提出团队Google Research (Colin Raffel 等)
论文名称Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer
架构基于 Transformer 的 Encoder-Decoder
统一方式输入、输出全部是文本
模型名称T5 = Text-To-Text Transfer Transformer

二、T5 的核心思想:一切皆是文本转换

T5 将不同的 NLP 任务转换为“文本到文本”的格式:

任务类型输入示例输出示例
文本分类sst2: this movie is great!positive
翻译translate English to German: How are you?Wie geht es dir?
文本摘要summarize: The US president ...The president spoke ...
文本生成write a sentence about cats:Cats are playful pets.
QA 问答question: Where is Eiffel Tower? context: ...Paris

这种统一形式使得 T5 可以用 一种架构做所有任务,非常适合多任务学习和迁移学习。

三、模型架构(基于标准 Transformer)

T5 架构类似于标准 Transformer 的 Encoder-Decoder 结构,包括:

  • Encoder:处理输入文本(token 级别)

  • Decoder:自回归地生成输出文本(逐词预测)

它使用了许多改进技巧(如 Pre-LN、相对位置编码、LayerNorm 等)。

四、预训练任务:Span Corruption

T5 使用了自定义的 “填空式预训练任务”,叫做 Span Corruption

  • 随机遮盖输入文本中的连续 span(不是单个词)

  • 用一个占位符 <extra_id_0> 替代该 span

  • 模型学习预测被遮盖的 span 内容

示例:

输入:

The <extra_id_0> walked in the <extra_id_1>.

原始句子:The cat walked in the house.

输出:

<extra_id_0> cat <extra_id_1> house <extra_id_2>

相比 BERT 的 MLM(单 token 预测),T5 预训练方式更适合生成任务。

五、T5 模型版本(参数规模)

模型版本参数量备注
T5-Small60M适合教学和小型任务
T5-Base220M类似 BERT-base
T5-Large770M类似 BERT-large
T5-3B3B更强的表达能力
T5-11B11B非常强大,需大显存支持

六、使用 T5(以 Hugging Face Transformers 为例)

1. 安装依赖

pip install transformers

2. 文本摘要示例

from transformers import T5Tokenizer, T5ForConditionalGeneration

tokenizer = T5Tokenizer.from_pretrained("t5-small")
model = T5ForConditionalGeneration.from_pretrained("t5-small")

text = "summarize: The US president gave a speech about healthcare reform..."
inputs = tokenizer(text, return_tensors="pt", max_length=512, truncation=True)

summary_ids = model.generate(inputs.input_ids, max_length=50)
summary = tokenizer.decode(summary_ids[0], skip_special_tokens=True)

print(summary)

3. 文本分类示例

text = "sst2: this movie is absolutely wonderful!"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(inputs.input_ids)
print(tokenizer.decode(outputs[0]))
# 输出可能为:positive

七、T5 的优缺点

优点

  • 任务统一性强:一句话搞定所有 NLP 任务

  • 适合生成类任务:如摘要、翻译、问答、改写

  • 结构通用性强:Encoder-Decoder 架构适应性广

  • 支持大规模多任务预训练

缺点

  • 推理速度慢(Decoder 是自回归的)

  • 占显存大,不如 Encoder-only 模型(如 BERT)高效

  • 文本分类等简单任务可能效率偏低

八、T5 在实际任务中的应用

应用场景使用方式
多语言翻译通过 translate <src> to <tgt>: ... 构造输入
文本生成使用 generate text: ...
关键词提取使用 extract keywords: ...
法律摘要生成输入法律文本,加上 summarize: 任务标记
情感分析sst2: + 文本,输出 positive / negative

九、改进版本和变种

模型特点
mT5多语言版本,支持100+语言
ByT5字符级 T5,不用 tokenizer
T5.1.1更强正则化、Dropout 调整
FLAN-T5加入指令微调,效果大幅提升

十、总结

项目内容
核心理念所有 NLP 任务皆转为 Text-to-Text
架构Encoder-Decoder Transformer
预训练span masking + text generation
应用分类、生成、翻译、摘要、问答、句子重写等
工具transformers 库支持良好,可直接部署

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

00&00

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值