tags:
- 蛋白质语言模型
- 蛋白质
datasets:
- Uniref100
ProtBert模型
该模型基于蛋白质序列使用掩码语言建模(MLM)目标进行预训练。相关论文发表于此处,模型首次发布于此代码库。本模型仅针对大写氨基酸字母训练,使用时需确保输入为大写形式。
模型描述
ProtBert基于Bert架构,通过自监督方式在大量蛋白质序列语料库上进行预训练。这意味着模型仅使用原始蛋白质序列数据(无需人工标注),通过自动生成输入和标签的方式进行训练。
与原始Bert模型的关键区别在于:我们将每条蛋白质序列视为独立文档处理,因此不采用下一句预测任务。掩码策略遵循原始Bert设置——随机遮蔽15%的氨基酸输入。
最终特征提取表明,仅通过蛋白质序列的无监督学习获得的语言模型嵌入,能够捕捉决定蛋白质空间构象的重要生物物理特性,这意味着模型学习了生命语言在蛋白质序列中体现的部分语法规则。
应用场景与限制
本模型可用于蛋白质特征提取或下游任务微调。某些任务中,微调模型可能比直接用作特征提取器获得更高准确率。
使用方法
可直接使用pipeline进行掩码预测:
>>> from transformers import BertForMaskedLM, BertTokenizer, pipeline
>>> tokenizer = BertTokenizer.from_pretrained("Rostlab/prot_bert", do_lower_case=False )
>>> model = BertForMaskedLM.from_pretrained("Rostlab/prot_bert")
>>> 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')
[{'score': 0.11088453233242035,
'sequence': '[CLS] D L I P T S S K L V V L D T S L Q V K K A F F A L V T [SEP]',
'token': 5,
'token_str': 'L'},
...(其余预测结果)]
PyTorch中获取蛋白质序列特征的示例:
from transformers import BertModel, BertTokenizer
import re
tokenizer = BertTokenizer.from_pretrained("Rostlab/prot_bert", do_lower_case=False )
model = BertModel.from_pretrained("Rostlab/prot_bert")
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在Uniref100数据集上预训练,包含2.17亿条蛋白质序列。
训练流程
数据预处理
蛋白质序列统一转为大写,使用21个词汇量的空格分词。稀有氨基酸"U,Z,O,B"映射为"X"。输入格式如下:
[CLS] 蛋白质序列A [SEP] 蛋白质序列B [SEP]
每条序列视为独立文档。预处理分两次执行:组合长度(2条序列)小于512氨基酸,以及小于2048氨基酸的情况。
掩码策略遵循原始Bert:
- 遮蔽15%氨基酸
- 80%概率替换为[MASK]
- 10%概率替换为随机氨基酸
- 10%概率保持原状
预训练
使用TPU Pod V3-512进行40万步训练:
- 前30万步:序列长度512(批次15k)
- 后10万步:序列长度2048(批次2.5k)
采用Lamb优化器(学习率0.002,权重衰减0.01),4万步学习率预热后线性衰减。
评估结果
下游任务微调表现:
任务/数据集 |
二级结构(3态) |
二级结构(8态) |
亚细胞定位 |
膜蛋白检测 |
CASP12 |
75 |
63 |
- |
- |
TS115 |
83 |
72 |
- |
- |
CB513 |
81 |
66 |
- |
- |
DeepLoc |
- |
- |
79 |
91 |
引用信息
@article {Elnaggar2020.07.12.199554,
author = {Elnaggar, Ahmed and Heinzinger, Michael and Dallago, Christian and Rehawi, Ghalia and Wang, Yu and Jones, Llion and Gibbs, Tom and Feher, Tamas and Angerer, Christoph and Steinegger, Martin and BHOWMIK, DEBSINDHU and Rost, Burkhard},
title = {ProtTrans: Towards Cracking the Language of Life{\textquoteright}s Code Through Self-Supervised Deep Learning and High Performance Computing},
elocation-id = {2020.07.12.199554},
year = {2020},
doi = {10.1101/2020.07.12.199554},
publisher = {Cold Spring Harbor Laboratory},
abstract = {(论文摘要内容)},
URL = {https://www.biorxiv.org/content/early/2020/07/21/2020.07.12.199554},
eprint = {https://www.biorxiv.org/content/early/2020/07/21/2020.07.12.199554.full.pdf},
journal = {bioRxiv}
}
由Ahmed Elnaggar/@Elnaggar_AI创建 | LinkedIn