ProtT5 是 ProtTrans(蛋白质 Transformer 模型族,ProtTrans)中以 文本到文本迁移 Transformer(Text-to-Text Transfer Transformer,T5) 为骨架的蛋白质语言模型(Protein Language Model,PLM):在大规模氨基酸序列上做自监督学习(self-supervised learning),输出逐残基嵌入或经序列到序列(sequence-to-sequence,seq2seq) 头做生成式微调。下文先交代 NLP 中 T5 的通用结构,再对齐 Rostlab 在 Hugging Face(HF,模型与数据集托管平台) 上发布的 ProtT5-XL-UniRef50 的构建细节(以官方模型卡与 config.json 为准)。
段末注释:PLM 指在蛋白序列上预训练的通用表征模型;self-supervised 指用输入本身构造伪标签、无需人工逐条标注;seq2seq 指编码器读入序列、解码器生成另一串符号;
1. 文献与代码入口
| 项目 | 信息 |
|---|---|
| 总论文 | Elnaggar 等,ProtTrans: Toward Understanding the Language of Life Through Self-Supervised Learning(题目以 IEEE Xplore 为准,与 bioRxiv 标题略有差异);预印本 bioRxiv 10.1101/2020.07.12.199554;arXiv 2007.06225;期刊版 IEEE TPAMI,44(10):7112–7127(2022;DOI 10.1109/TPAMI.2021.3095381) |
| 代码与模型族 | GitHub agemagician/ProtTrans |
| 常用权重(XL + UniRef50) | HF Rostlab/prot_t5_xl_uniref50(README 与 config.json 为本文数值细节的主要来源) |
| 原始 T5 | Raffel 等,Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer,JMLR 2020(理解 span corruption 与 text-to-text 的参照) |
段末注释:IEEE TPAMI 为计算机视觉与模式识别领域权威期刊;JMLR 为机器学习期刊;span corruption 指随机挖连续片段再让模型复原,为原版 T5 预训练目标之一。
2. 框架总览:为什么是「编码器—解码器」而不是纯 BERT?
2.1 NLP 中的 T5 在做什么(与 ProtT5 的继承关系)
T5 将任意 NLP 任务都写成「输入文本 → 输出文本」:分类、回归、生成统一成 seq2seq。网络上是共享词表的 Transformer:
- 编码器(encoder):双向上下文,把输入 token 序列映射为隐藏状态序列(每层含多头自注意力(multi-head self-attention) 与前馈网络(feed-forward network,FFN),外加残差连接(residual connection) 与 层归一化(Layer Normalization,LayerNorm))。
- 解码器(decoder):因果掩码自注意力(causal masked self-attention)(只能看到已生成前缀)+ 交叉注意力(cross-attention)(查询来自解码器,键值来自编码器最后输出),再经 FFN;逐步生成输出 token。
相对位置编码(relative positional encoding):T5 用桶化的相对位置偏置(relative_attention_num_buckets)替代部分绝对位置编码,利于外推与长序列(蛋白上截断长度常有限制,见 §4)。
原版 T5 预训练目标常为 span corruption:随机采样并遮盖连续 span,在输出端复原被挖掉的片段(与 BERT 式单 token 掩码语言建模(Masked Language Modeling,MLM) 不同)。
段末注释:BERT 为仅编码器的双向模型,以 MLM 为主目标;cross-attention 使解码器每个位置能** attend** 到编码器全体位置。
2.2 ProtT5 在蛋白序列上的「文本」是什么
- 字母表:标准 20 种氨基酸 + 未知/稀有 合并规则;HF 模型卡说明:输入为大写单字母,稀有/模糊氨基酸(U、Z、O、B) 映射为 X(与常见工程约定一致)。
- 分词(tokenization):在字符间插入空格,使每个氨基酸近似为一个词片段;词表规模在
config.json中记为 128(含特殊符号与 padding 等),与「21 个氨基酸类符号 + 特殊 token」的工程实现对齐,不必与自然语言数万词表混淆。 - 序列长度:公开 ProtT5-XL-UniRef50 训练与位置编码上限为 512 token(
n_positions: 512),长蛋白需截断或分段再聚合(如均值汇聚)。
段末注释:token 指模型输入的最小整数索引单位;padding 为对齐批内长度而补的无效位。
3. ProtT5-XL 网络规格(与 t5-3b 同族)
以下字段摘自 HF 权重 config.json,对应 T5ForConditionalGeneration 架构:
| 配置项 | 数值 | 含义(直觉) |
|---|---|---|
is_encoder_decoder |
true |
标准 encoder–decoder |
num_layers |
24 | 编码器层数 |
num_decoder_layers |
24 | 解码器层数 |
d_model |
1024 | 隐藏维度(隐层宽度) |
d_ff |
16384 | FFN 中间层宽度(通常为 4×d_model 量级,此处与 T5-3B 档位一致) |
num_heads |
32 | 注意力头数 |
d_kv |
128 | 每头键/值维度(常满足 d_model = num_heads × d_kv) |
dropout_rate |
0.1 | 训练时随机失活比例 |
feed_forward_proj |
"relu" |
FFN 内激活为 整流线性单元(Rectified Linear Unit,ReLU) |
relative_attention_num_buckets |
32 | 相对位置偏置桶数 |
n_positions |
512 | 最大序列位置长度 |
vocab_size |
128 | 词表大小(含特殊 token) |
参数量级约 3×10⁹(3B),与 NLP 中 T5-3B 同档;ProtTrans 总论文亦在超算/TPU 集群上训练多架构,ProtT5 是其中编码器—解码器路线的代表。
段末注释:FFN 为逐位置前馈子层;ReLU 为 (\max(0,x));3B 为三十亿参数量级简称。
4. 预训练目标与「和原版 T5 的关键差异」
HF 官方 README 明确写出(引用意译):
- 原版 T5-3B 使用 span denoising(span 去噪) 目标;
- ProtT5-XL-UniRef50 则采用更接近 BART 风格的 MLM 去噪:对输入序列随机遮盖约 15% 的氨基酸位置;其中约 90% 用
[MASK]替换,约 10% 替换为随机氨基酸(与被替换位置不同)。
因此:ProtT5 名字与实现骨架是 T5,但该 checkpoint 的预训练目标与 Raffel 等原文中典型 span 长度采样的设定不一致,读论文时需区分「架构来自 T5」与「该蛋白 checkpoint 的 denoising 配方」。
训练数据(该 checkpoint):UniRef50(约 4500 万条蛋白序列,聚类约 50% 序列一致性水平,见 UniProt 文档)。
初始化与日程(该 checkpoint):以 ProtT5-XL-BFD(在 BFD 等更大语料上训练的同名架构 checkpoint)为初始权重,再在 UniRef50 上继续训练;硬件为 TPU Pod V2-256;总步数约 991.5k;序列长度 512,batch size 约 2k;优化器为 AdaFactor,学习率 逆平方根调度(inverse square root schedule)。
段末注释:BFD 为大规模蛋白序列库(Big Fantastic Database 类资源,以原文与 ProtTrans 仓库说明为准);UniRef50 为 UniProt 下聚类序列集;AdaFactor 为 Google 提出的内存友好优化器;checkpoint 指某次保存的权重快照。
5. 输入输出与下游使用(实践向)
5.1 嵌入从哪里来
- 逐残基嵌入:对 编码器最后一层隐藏状态取
last_hidden_state,形状约为 (序列长度 × d_model),即每残基 1024 维(见模型卡示例代码)。 - 整条蛋白向量:对有效残基位置做 mean pooling(均值汇聚) 或 attention pooling,得到固定长度向量,供 岭回归(Ridge regression)、随机森林(Random Forest)、高斯过程(Gaussian Process,GP) 等浅层头使用(与 EVOLVEpro 用 ESM-2、Taq 工程用 ProtT5 的实践一致)。
官方建议:不少下游任务中,仅使用编码器侧特征往往优于依赖解码器输出;若只做表征、不做生成,编码器嵌入是默认首选。
段末注释:mean pooling 对可变长度序列在残基维上取平均;Ridge 为 L2 正则线性回归。
5.2 与仅编码器 PLM(如 ProtBERT、ESM)的分工直觉
| 维度 | ProtT5(encoder–decoder) | 仅编码器 BERT/ESM 类 |
|---|---|---|
| 预训练接口 | 天然适配 seq2seq(还原被遮盖片段、或微调为序列到标签字符串) | 以 MLM 表征为主,读长上下文 |
| 嵌入用途 | Encoder 隐藏状态用于分类/回归/对齐;解码器多用于生成式微调 | 单层或多层聚合嵌入 |
| 计算 | 推理通常重于同档仅编码器(解码器额外堆叠) | 相对省算力 |
6. 与 ProtTrans 大家庭的关系(避免混淆)
ProtTrans 在同一数据规模下还训练了 Transformer-XL、XLNet(自回归)、BERT、Albert、Electra、T5 等多种架构;ProtT5 特指 T5 这一路。不同 checkpoint(BFD vs UniRef50、base vs XL)在数据与规模上不同,不可混用训练脚本与超参。
段末注释:Electra 为判别式替换的预训练目标,与 MLM 不同;此处仅提示族谱,不展开。
7. 小结
- 结构:ProtT5 = T5 式 24+24 层 encoder–decoder,d_model=1024,32 头,相对位置偏置,最大长度 512(公开 XL-UniRef50 卡)。
- 训练细节(该权重):BART 式 MLM 去噪(非原版 T5 span corruption 的默认配方)、15% 遮盖、90%/10% 掩码与随机替换策略;UniRef50 上自 ProtT5-XL-BFD 热启动;TPU v2-256,991.5k steps,AdaFactor。
- 使用:下游特征优先取 encoder last_hidden_state;长序列注意 512 截断与分段策略。
8. 延伸阅读(检索关键词)
ProtTrans,ProtT5,Rostlab/prot_t5_xl_uniref50,T5 span corruption,BART-like MLM protein,Elnaggar TPAMI 2021,relative attention buckets T5