ProtBert-BFD 项目介绍
项目概述
ProtBert-BFD 是一个预训练的蛋白质序列模型,应用了掩蔽语言模型(MLM)的目标。这一模型首次在此论文中提出,并在这个仓库中发布。该模型专门针对大写氨基酸进行训练,使用时也需要大写的氨基酸字母。
模型描述
ProtBert-BFD 基于 Bert 模型,通过自监督学习在大规模蛋白质序列语料库上进行预训练。这意味着它只在原始蛋白质序列上进行训练,而无需人工标记,这使得模型可以利用大量的公开数据来自动生成输入和标签。
这个模型与原始 Bert 模型的一个重要区别在于它将每个序列视为独立的文档,因此不使用“下一句预测”策略。而在掩蔽方面,模型遵循 Bert 的训练方法,随机掩盖输入中15%的氨基酸。
最终,从这个模型中提取的特征表明,未经标记的数据(仅有蛋白质序列)的语言模型嵌入捕获了蛋白质形状的重要生物物理性质。这意味着模型学到了一些生命语言在蛋白质序列中呈现的语法。
使用意图与限制
ProtBert-BFD 模型可以用于蛋白质特征提取或在下游任务中进行微调。在某些任务中,通过微调模型而不是仅用作特征提取,可以获得更高的准确率。
如何使用
用户可以直接使用此模型与掩蔽语言模型(MLM)管道进行结合:
>>> from transformers import BertForMaskedLM, BertTokenizer, pipeline
>>> tokenizer = BertTokenizer.from_pretrained('Rostlab/prot_bert_bfd', do_lower_case=False)
>>> model = BertForMaskedLM.from_pretrained("Rostlab/prot_bert_bfd")
>>> unmasker = pipeline('fill-mask', model=model, tokenizer=tokenizer)
>>> unmasker('D L I P T S S K L V V [MASK] D T S L Q V K K A F F A L V T')
此外,还可以使用下面的方法获取给定蛋白质序列的特征:
from transformers import BertModel, BertTokenizer
import re
tokenizer = BertTokenizer.from_pretrained('Rostlab/prot_bert_bfd', do_lower_case=False)
model = BertModel.from_pretrained("Rostlab/prot_bert_bfd")
sequence_Example = "A E T C Z A O"
sequence_Example = re.sub(r"[UZOB]", "X", sequence_Example)
encoded_input = tokenizer(sequence_Example, return_tensors='pt')
output = model(**encoded_input)
训练数据
ProtBert-BFD 模型在 BFD 数据集上进行了预训练,这个数据集中包含了 21 亿蛋白质序列。
训练过程
数据预处理
蛋白质序列使用大写处理,按空格分割并使用21个字的词汇表进行标记。模型的输入格式如下:
[CLS] 蛋白质序列 A [SEP] 蛋白质序列 B [SEP]
每个蛋白质序列被视为一个单独文档进行处理。预处理步骤重复进行两次,一次是在两个序列组合长度少于 512 个氨基酸时,另一次是在组合长度少于 2048 个氨基酸时。
掩蔽过程详细地遵循原始 Bert 模型:
- 15% 的氨基酸被掩盖
- 在 80% 的情况下,掩盖的氨基酸替换为
[MASK]
- 在 10% 的情况下,掩盖的氨基酸替换为一个不同的随机氨基酸
- 在剩下的 10% 情况下,掩盖的氨基酸保持不变。
预训练
模型在一个 TPU Pod V3-1024 上经历了一百万步的训练,其中 80 万步使用了序列长度 512(批量大小 32k),和 20 万步使用了序列长度 2048(批量大小 6k)。使用 Lamb 优化器,学习率为 0.002,权重衰减为 0.01,学习率在 140k 步时进行热启,之后呈线性衰减。
评估结果
在对下游任务进行微调时,该模型在以下任务中取得了良好的效果:
任务/数据集 | 二级结构(三状态) | 二级结构(八状态) | 定位 | 膜蛋白 |
---|---|---|---|---|
CASP12 | 76 | 65 | ||
TS115 | 84 | 73 | ||
CB513 | 83 | 70 | ||
DeepLoc | 78 | 91 |
这种表现表明 ProtBert-BFD 具有很强的蛋白质序列特征提取能力,是生物信息学研究中的重要工具。