モデル概要
モデル特徴
モデル能力
使用事例
🚀 ProtBertモデル
タンパク質配列に対してマスク言語モデリング(MLM)の目的で事前学習されたモデルです。このモデルはthis paperで紹介され、最初はthis repositoryで公開されました。このモデルは大文字のアミノ酸で学習されており、大文字のアミノ酸のみで動作します。
✨ 主な機能
ProtBertは、大量のタンパク質配列コーパスを自己教師付き学習で事前学習したBertモデルをベースにしています。これは、人間によるラベル付けなしに生のタンパク質配列のみを使用して事前学習されたことを意味します(このため、大量の公開データを利用できます)。そして、それらのタンパク質配列から自動的に入力とラベルを生成するプロセスがあります。
当社のBertモデルとオリジナルのBertバージョンの重要な違いの1つは、シーケンスを個別のドキュメントとして扱う方法です。つまり、各シーケンスが完全なドキュメントとして扱われるため、次文予測は使用されません。マスキングは、入力のアミノ酸の15%をランダムにマスクするオリジナルのBert学習に従います。
最後に、このモデルから抽出された特徴は、未ラベルデータ(タンパク質配列のみ)からのLM埋め込みが、タンパク質の形状を支配する重要な生体物理的特性を捉えていることを明らかにしました。これは、タンパク質配列に実現された生命の言語の文法の一部を学習したことを意味します。
📦 インストール
このセクションでは、インストールに関する具体的なコマンドが原READMEに記載されていないため、省略されています。
💻 使用例
基本的な使用法
マスク言語モデリングのパイプラインでこのモデルを直接使用することができます。
>>> 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'},
{'score': 0.08402521163225174,
'sequence': '[CLS] D L I P T S S K L V V S D T S L Q V K K A F F A L V T [SEP]',
'token': 10,
'token_str': 'S'},
{'score': 0.07328339666128159,
'sequence': '[CLS] D L I P T S S K L V V V D T S L Q V K K A F F A L V T [SEP]',
'token': 8,
'token_str': 'V'},
{'score': 0.06921856850385666,
'sequence': '[CLS] D L I P T S S K L V V K D T S L Q V K K A F F A L V T [SEP]',
'token': 12,
'token_str': 'K'},
{'score': 0.06382402777671814,
'sequence': '[CLS] D L I P T S S K L V V I D T S L Q V K K A F F A L V T [SEP]',
'token': 11,
'token_str': 'I'}]
高度な使用法
与えられたタンパク質配列の特徴を取得する方法を示します。
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モデルは、2億1700万のタンパク質配列からなるデータセットであるUniref100を使用して事前学習されました。
学習手順
前処理
タンパク質配列は大文字に変換され、単一の空白を使用してトークン化され、語彙サイズは21です。稀なアミノ酸 "U,Z,O,B" は "X" にマッピングされました。モデルの入力は次の形式になります。
[CLS] Protein Sequence A [SEP] Protein Sequence B [SEP]
さらに、各タンパク質配列は個別のドキュメントとして扱われました。前処理ステップは2回実行されました。1回目は、合計長(2つのシーケンス)が512アミノ酸未満の場合、もう1回は合計長(2つのシーケンス)が2048アミノ酸未満の場合です。
各シーケンスのマスキング手順の詳細は、オリジナルのBertモデルに従います。
- アミノ酸の15%がマスクされます。
- 80%の場合、マスクされたアミノ酸は
[MASK]
に置き換えられます。 - 10%の場合、マスクされたアミノ酸は、置き換えるアミノ酸とは異なるランダムなアミノ酸に置き換えられます。
- 残りの10%の場合、マスクされたアミノ酸はそのまま残されます。
事前学習
モデルは、合計40万ステップ、単一のTPU Pod V3 - 512で学習されました。シーケンス長512(バッチサイズ15k)で30万ステップ、シーケンス長2048(バッチサイズ2.5k)で10万ステップです。使用されたオプティマイザはLambで、学習率は0.002、重み減衰は0.01、学習率のウォームアップは4万ステップ、その後は学習率の線形減衰が適用されます。
評価結果
下流タスクで微調整した場合、このモデルは次の結果を達成します。
テスト結果 :
タスク/データセット | 二次構造 (3状態) | 二次構造 (8状態) | 局在化 | 膜 |
---|---|---|---|---|
CASP12 | 75 | 63 | ||
TS115 | 83 | 72 | ||
CB513 | 81 | 66 | ||
DeepLoc | 79 | 91 |
BibTeXエントリと引用情報
@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 = {Computational biology and bioinformatics provide vast data gold-mines from protein sequences, ideal for Language Models (LMs) taken from Natural Language Processing (NLP). These LMs reach for new prediction frontiers at low inference costs. Here, we trained two auto-regressive language models (Transformer-XL, XLNet) and two auto-encoder models (Bert, Albert) on data from UniRef and BFD containing up to 393 billion amino acids (words) from 2.1 billion protein sequences (22- and 112 times the entire English Wikipedia). The LMs were trained on the Summit supercomputer at Oak Ridge National Laboratory (ORNL), using 936 nodes (total 5616 GPUs) and one TPU Pod (V3-512 or V3-1024). We validated the advantage of up-scaling LMs to larger models supported by bigger data by predicting secondary structure (3-states: Q3=76-84, 8 states: Q8=65-73), sub-cellular localization for 10 cellular compartments (Q10=74) and whether a protein is membrane-bound or water-soluble (Q2=89). Dimensionality reduction revealed that the LM-embeddings from unlabeled data (only protein sequences) captured important biophysical properties governing protein shape. This implied learning some of the grammar of the language of life realized in protein sequences. The successful up-scaling of protein LMs through HPC to larger data sets slightly reduced the gap between models trained on evolutionary information and LMs. Availability ProtTrans: \<a href="https://github.com/agemagician/ProtTrans"\>https://github.com/agemagician/ProtTrans\</a\>Competing Interest StatementThe authors have declared no competing interest.},
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}
}
Created by Ahmed Elnaggar/@Elnaggar_AI | LinkedIn











