LLM在包括蛋白質設計等各種生物技術應用中展現出了潛力。ProGen是一種語言模型,它能夠生成在大型蛋白質家族中具有可預測功能的蛋白質序列,這類似于針對不同主題生成語法和語義正確的自然語言句子。該模型在來自超過19,000個家族的2.8億個蛋白質序列上進行訓練,并通過指定蛋白質屬性的控制標簽進行生成。ProGen可以進一步針對經過篩選的序列和標簽進行微調,以提高可控蛋白質生成性能。針對五個不同溶菌酶家族進行微調的人工蛋白質,其催化效率與天然溶菌酶相似,與天然蛋白質的序列同一性低至31.4%。正如以分支酸變位酶和蘋果酸脫氫酶所展示的那樣,ProGen可以很容易地應用于多種蛋白質家族。
原文請參考:Large language models generate functional protein sequences across diverse families, Nature Biotechnology, 2023
目錄
- 背景概述
- 訓練數據構建
- ProGen:條件語言模型
- ProGen訓練
背景概述
受自然語言模型的啟發,開發了ProGen,這是一種在數百萬條原始蛋白質序列上進行訓練的蛋白質語言模型,它可以生成跨越多個家族且具有多種功能的人工蛋白質。ProGen證明基于深度學習的語言建模可用于從頭生成功能與天然蛋白質相當的人工蛋白質序列。
ProGen通過學習預測在給定原始序列中前面氨基酸的情況下,下一個氨基酸出現的概率來進行迭代優化。ProGen從一個龐大且多樣的蛋白質序列數據庫中以無監督的方式進行訓練。訓練完成后,只需給出提示,ProGen就能從頭為任何蛋白質家族生成全長蛋白質序列,這些序列與天然蛋白質具有不同程度的相似性。在常見的情況下,如果某個蛋白質家族有部分序列數據可用,可以使用預訓練語言模型微調技術,利用家族特異性序列進一步提高ProGen捕捉與該蛋白質家族相對應的局部序列鄰域分布的能力。
ProGen是一個擁有12億參數的神經網絡,它使用包含2.8億個蛋白質序列的公開數據集進行訓練。ProGen的一個關鍵組成部分是條件生成,即輸入提供給語言模型的屬性標簽(例如,蛋白質家族:Pfam ID PF16754,Pesticin)控制序列生成。在自然語言中,這些控制標簽可以是風格、主題、日期和其他實體(圖1a)。對于蛋白質而言,控制標簽是諸如蛋白質家族、生物學過程和分子功能等屬性,這些屬性在公共蛋白質數據庫中的大部分序列中都有記錄(圖1b和補充圖1)。
- 圖1a:條件語言模型是一種深度神經網絡,它能夠生成語義和語法正確,同時新穎多樣的自然語言文本,并且可以通過輸入控制標簽來進行調控,這些標簽可以控制文本的風格、主題及其他要素。
- 圖1b-c:與自然語言模型類似,ProGen是一種條件蛋白質語言模型-圖b,它能夠根據輸入的控制標簽-圖c,跨蛋白質家族生成多樣的人工蛋白質序列。
- 圖1d:ProGen使用包含來自數千個家族的2.8億個自然進化蛋白質的大型通用蛋白質序列數據集進行訓練,在該研究中,對其中五個不同的溶菌酶家族(lysozyme families)進行了實驗。
- 圖1e:ProGen是一個擁有12億參數的神經網絡,基于Transformer架構,該架構使用自注意力機制對殘基間的相互作用(residue–residue interactions)進行建模。ProGen通過最小化通用蛋白質序列數據集(universal protein sequence dataset)中下一個氨基酸(amino acid)預測問題的損失來訓練。
- 補充圖1:在訓練和微調過程中,為模型訓練提供帶有相關控制標簽的樣本序列。將氨基酸序列( a 1 a_1 a1?, a 2 a_2 a2?,…… )與所需的控制標簽( < c 1 > <c_1> <c1?>, < c 2 > <c_2> <c2?>,…… )前置組合,構成tokens,讓ProGen以自回歸方式計算下一個token出現的概率。構建控制標簽是為了提供有關分子功能、生物學過程、細胞組成或特定蛋白質家族的信息。
訓練數據構建
為了訓練ProGen,作者從UniParc、UniprotKB、Pfam和NCBI中收集了一個通用蛋白質序列數據集(圖1d和補充表1)。
- 補充表1:用于訓練和微調ProGen的公開可用數據集列表。訓練數據集(a - c)總共包含2.8億個unique的蛋白質,這些蛋白質與基于生物過程、分子功能相關關鍵詞的101,100個標簽相關聯(d)。微調數據集(e - h)用于進一步提升ProGen在溶菌酶、分支酸變位酶和蘋果酸脫氫酶蛋白質的局部序列鄰域中生成蛋白質序列的能力。
該通用數據集包含2.81億條非冗余蛋白質序列(來自超過19,000個Pfam家族)以及相關元數據(作為控制標簽)。氨基酸詞匯表采用IUPAC規定的25種標準氨基酸名稱。控制標簽分為兩類:(1)關鍵詞標簽-keyword tags;(2)分類學標簽-taxonomic tags。根據UniprotKB中受控的分層關鍵詞詞匯表(其中許多術語源自基因本體GO-Term)的定義,關鍵詞標簽包含1100個術語,涵蓋細胞成分、生物過程和分子功能等方面。分類學標簽則包含來自NCBI分類學的100,000個術語,涉及八個標準分類等級。匯總后的數據集被劃分為一個包含2.8億條序列的訓練集,以及兩個測試集:一個是包含來自20個蛋白質家族的100,000條序列的分布外測試集(OOD測試集),另一個是隨機抽樣得到的包含100萬條序列的分布內測試集(ID測試集)。這些測試集不用于訓練,而是用于評估模型。在訓練數據庫上完成模型訓練后,模型會進一步在以下數據集上進行微調,以完成生成和分類任務。
在對溶菌酶蛋白進行微調時,作者從Pfam數據庫中選擇了五個蛋白質家族,分別是噬菌體溶菌酶(PF00959)、pesticin(PF16754)、氨基葡萄糖苷酶(PF01832)、糖苷水解酶家族108(PF05838)和轉糖基酶(PF06737),共得到55,948條序列。在微調過程中,提供給模型的蛋白質是未比對的蛋白質序列,并在前面添加一個用于指定蛋白質家族的控制標簽。
在對分支酸變位酶(CM)蛋白進行微調時,使用HHBlits和blastp程序,以大腸桿菌CM - 預苯酸脫水酶(P蛋白)的CM結構域(EcCM)的1-95位殘基為查詢序列進行搜索,得到20,214條序列。
在對蘋果酸脫氫酶(MDH)蛋白進行微調時,選擇了Interpro數據庫中IPR001557的L - 乳酸/MDH蛋白家族,包含17,094條序列。
ProGen:條件語言模型
與那些為判別性蛋白質預測任務對氨基酸序列進行編碼的基于 Transformer 的語言模型不同,ProGen 是一個專門用于自回歸生成的解碼器 Transformer:它以從左到右的方式逐個token地生成序列,下一個token的生成依賴于之前生成的所有tokens。
令 a = ( a 1 , . . . , a n a ) a=(a_1,...,a_{n_{a}}) a=(a1?,...,ana??)是長度為 n a ? 1 n_{a}-1 na??1的氨基酸序列,最后附加一個"end of sequence" token,令 c = ( c 1 , . . . , c n c ) c=(c_1,...,c_{n_c}) c=(c1?,...,cnc??)是描述符的集合,比如蛋白質家族或者源物種,即 “control tags”,通過這些(控制標簽),作者希望實現對氨基酸序列生成的控制。設 x = [ c ; a ] x = [c; a] x=[c;a]為在氨基酸序列前添加控制標簽序列后形成的序列。那么,對于長度為 n = n a + n c n = n_a + n_c n=na?+nc?( n a n_a na?為氨基酸序列長度, n c n_c nc?為控制標簽序列長度)的這種組合序列,其概率為 P ( x ) P(x) P(x)。語言建模將生成序列 x x x的問題分解為下一個token預測問題,其中token可以是氨基酸,也可以是控制標簽。訓練一個參數為 θ \theta θ的神經網絡,并最小化數據集 D = ( x 1 , . . , x ∣ D ∣ ) D=(x^{1},..,x^{|D|}) D=(x1,..,x∣D∣)上的負對數似然。
在生成時,直到模型預測出 ‘end of sequence’ token 才停止。
ProGen訓練
在訓練過程中,作者納入了每條序列及其反向序列。在每條序列前添加相應的控制標簽子集。對于給定的一條序列,在不同數據庫中可能存在多個版本,每個版本都有各自相關的控制標簽。作者隨機抽取一組控制標簽,但在抽樣時更傾向于SwissProt標簽,因為它們經過人工驗證。此外,會納入一個只有序列而沒有控制標簽的樣本,這樣ProGen就能僅憑借序列數據來完成蛋白質的生成任務。
作者將所有序列截斷為最大長度512。長度小于512的序列會進行填充,并且用于padding的token會被排除在訓練所用的損失函數計算之外。預訓練期間,控制標簽的平均token長度為8。我們的模型在TensorFlow中實現,使用batch大小為2048進行訓練。