蛋白質深度學習

2023-05-11 06:00:43

本文主要面向兩類目標讀者: 一類是想使用機器學習的生物學家,一類是想進入生物學領域的機器學習研究者。如果你不熟悉生物學或機器學習,仍然歡迎你閱讀本文,但有時你可能會覺得有點讀不太懂!如果你已經熟悉這兩者,那麼你可能根本不需要本文 —— 你可以直接跳到我們的範例 notebook 以檢視這些模型的實際應用:

  • 微調蛋白質語言模型 (PyTorchTensorFlow)
  • 使用 ESMFold 進行蛋白質摺疊 (PyTorch,因為 OpenFold 僅支援 PyTorch,所以目前僅支援 PyTorch)

面向生物學家的科普: 語言模型是什麼鬼?

用於處理蛋白質的模型深受 BERT 和 GPT 等大語言模型的啟發。因此,為了瞭解這些模型是如何工作的,我們要回到 2016 年左右,那時大語言模型還沒有出現,特朗普還沒有當選,脫歐還沒有發生,深度學習 (Deep Learning,DL) 還是個日日新的超級新星 …… DL 成功的關鍵在於它使用人工神經網路來學習資料中的複雜模式。不過,深度學習有一個關鍵問題 —— 它需要 大量 的資料才能正常工作,而在很多工中,根本沒那麼多資料。

假設你想訓練一個 DL 模型,輸入一個英語句子,並判斷它是否合乎語法。所以你準備了訓練資料,格式如下:

Text Label
The judge told the jurors to think carefully. Correct
The judge told that the jurors to think carefully. Incorrect

理論上,這個任務在當時是完全可行的 —— 如果你將如上格式的訓練資料輸入深度學習模型,它就可以學著去預測新句子是否合乎語法。但在實踐中,它的效果並不怎麼好,因為在 2016 年,大多數人都從一個隨機初始化的新模型開始他們的每項任務。這意味著 模型必須僅從給定的訓練資料中學習它們需要知道的一切!

我們來理解一下這到底有多難,假設你是一個機器學習模型,我提供給你一些訓練資料用於完成我希望你學習的任務。假如我給你的訓練資料如下:

Text Label
Is í an stiúrthóir is fearr ar domhan! 1
Is fuath liom an scannán seo. 0
Scannán den scoth ab ea é. 1
D’fhág mé an phictiúrlann tar éis fiche nóiméad! 0

在這裡,我選擇了一種我希望你從未曾見過的語言,所以我猜你已經可能開始對你是否能學會這個任務不太自信了。也許在數百或數千個樣本之後,你可能會開始注意到輸入中一些重複出現的單詞或模式,然後你可能開始能夠作出比隨機機猜測更好的判斷,但即使這樣,一旦出現新單詞或之前沒見過的措辭馬上就能夠難住你,讓你猜錯。無獨有偶,這也是 DL 模型當時的表現!

現在我們試試相同的任務,但這次使用英語:

Text Label
She’s the best director in the world! 1
I hate this movie. 0
It was an absolutely excellent film. 1
I left the cinema after twenty minutes! 0

現在事情變得簡單了 —— 任務只是預測電影評論是正面 (1) 還是負面 (0) 的。僅使用兩個正例和兩個反例,你就能以接近 100% 的準確率完成這項任務,因為 你原本就具備大量的英語詞彙和語法知識,並具有電影和情感相關表達的文化背景。 如果沒有這些知識,事情就會變得更像第一個任務 —— 你需要閱讀大量的例子才能開始發現輸入中的表達模式,即使你花時間研究了數十萬個的例子你的猜測仍然遠不如在英語任務中只有四個例子準確。

關鍵突破: 遷移學習

在機器學習中,我們把這種將先驗知識遷移到新任務的概念稱為「遷移學習」。在 DL 上使用遷移學習是 2016 年左右該領域的一個主要目標。預訓練詞向量之類的東西 (非常有趣,但超出了本文的範圍!) 在 2016 年確實存在並且允許遷移一些知識到新的模型,但是這種知識遷移仍然比較膚淺,模型仍然需要大量的訓練資料才能很好地工作。

這種情況一直持續到 2018 年。2018 年,兩篇鉅著橫空出世,第一篇引入了 ULMFiT 模型,第二篇引入了 BERT 模型。這兩篇論文是讓自然語言遷移學習真正發揮作用的開創性論文,尤其是 BERT 標誌著預訓練大語言模型時代的發軔。兩篇論文共同使用了一個技巧,那就是它們利用了深度學習中人工神經網路的固有性質 —— 先花較長的時間在有著豐富訓練資料的文字任務上訓練神經網路,然後將整個神經網路複製到新任務中,僅用新任務的資料更新或重新訓練與網路輸出相對應的少數神經元。

上圖來自 ULMFiT 論文,它展示了在三個獨立的任務上使用遷移學習與從頭開始訓練模型相比帶來的巨大的效能提升。在許多情況下,使用遷移學習的效果相當於擁有超過 100 倍的訓練資料。不要忘記這是 2018 年釋出的 —— 現代的大語言模型可以做得更好!

這樣做的原因是,在解決任何重要任務的過程中,神經網路學習到很多輸入資料的結構性知識 —— 如對於視覺神經網路,輸入的是原始畫素,模型學習到了如何識別直線、曲線和邊緣; 對於文字神經網路,輸入的是原始文字,模型學習到了有關語法結構的細節。而這些資訊並不特定於某些任務。—— 遷移學習起作用的關鍵原因是 解決任務需要知道的很多資訊都不是特定於該任務的! 要對電影評論進行分類,你不需要了解很多關於電影評論的知識,但你需要大量的英語和文化背景知識。通過選擇訓練資料豐富的任務,我們可以讓神經網路學習此類「領域知識」,然後將其應用於我們關心的新任務,而在這些新任務中訓練資料可能更難獲取。

至此,希望你已經瞭解了什麼是遷移學習,並且大語言模型是一個經過大量文字資料訓練而得的大型神經網路,這使其成為遷移到新任務的主要備選方案。我們將在下面看到相同的技術如何應用​​於蛋白質,但首先我需要為另一半觀眾寫一篇介紹。如果你已經熟悉這方面的知識,你可以隨時跳過下一部分!

面向機器學習研究者的科普: 蛋白質是什麼鬼?

簡而言之,蛋白質可以做很多事情。有些蛋白質是 —— 它們充當化學反應的催化劑。當你的身體將營養物質轉化為能量時,從食物到肌肉運動的每一步都由一種酶催化。一些蛋白質是 結構性的,它們的功能是提供穩定性以及塑形,例如結締組織的蛋白質。如果你看過化妝品廣告,你可能看到過 膠原蛋白彈性蛋白 以及 角蛋白,這些是構成我們面板和頭髮結構的蛋白質。

其它蛋白質對健康和疾病至關重要 —— 每個人可能都記得有關 COVID-19 病毒的 spike 蛋白 的無數新聞報道。 COVID spike 蛋白與人類細胞表面一種名為 ACE2 的蛋白質結合,使其能夠進入細胞並傳遞病毒 RNA 的有效載荷。由於這種相互作用對感染至關重要,因此在 COVID 大流行期間對這些蛋白質及其相互作用進行建模是一個熱門研究焦點。

蛋白質由多個 氨基酸組成。氨基酸是相對簡單的分子,它們都具有相同的分子結構,而該結構的化學性質允許氨基酸融合在一起,從而使單個分子可以成為一條長鏈。這裡關鍵是要知道氨基酸種類不多 —— 只有 20 種標準氨基酸,某些生物體上可能還有一些其他非標準的氨基酸,但總量不多。導致蛋白質巨大多樣性的原因是 這些氨基酸可以按任何順序組合,而由此產生的蛋白質鏈可以具有截然不同的形狀和功能,因為鏈的不同部分會粘連以及彼此摺疊。與文字類比一下: 英語只有 26 個字母,但想想你可以用這 26 個字母的組合寫出各種單詞。

事實上,由於氨基酸的數量很少,生物學家可以為每一種氨基酸分配一個不同的字母。這意味著你可以像編寫文字字串一樣編寫蛋白質!例如,假設一種蛋白質鏈中有這些氨基酸: 甲硫氨酸、丙氨酸和組氨酸。這些氨基酸的 對應的字母 是 M、A 和 H,因此我們可以將該鏈寫為 「MAH」。不過,大多數蛋白質含有數百甚至數千個氨基酸,而不僅僅是三個!!

上圖顯示了一種蛋白質的兩種表示形式。所有氨基酸都包含碳 - 碳 - 氮 (C-C-N) 序列。當氨基酸融合到蛋白質中時,這種重複模式將貫穿始終,我們稱為蛋白質的 「骨架」。然而,氨基酸的不同之處在於它們的 「側鏈」,側鏈指的是附著在 C-C-N 主鏈上的原子。圖的下半部分有標記為 R1、R2 和 R3 的側鏈,它們可以是任何氨基酸。在圖的上半部分,中央氨基酸有一個 CH3 側鏈 - 那麼該氨基酸即為 丙氨酸,由字母 A 表示(圖片來源)。

儘管我們可以將其寫成文字字串,但蛋白質實際上並不是一種 「語言」,至少不是諾姆 - 喬姆斯基認可的任何一種語言。但它們確實有一些類似語言的特徵,從機器學習的角度來看,它們是一個與文字非常相似的領域: 只有一部分字串是有「意義」的。隨機文字是垃圾,隨機蛋白質只是一個無形狀的斑點。

此外,如果你只是孤立地考慮蛋白質的一部分,資訊就會丟失,就像當你只閱讀從較長文字中提取的某個句子時,資訊也會丟失。蛋白質的一個區域可能只有在其它部分存在的情況下才會呈現其自然形狀,因為需要其它部分幫助穩定和矯正其形狀!這意味著被全域性自注意力很好地捕捉到的那種長程作用力對於正確建模蛋白質非常重要。

至此,希望你對蛋白質是什麼以及為什麼生物學家如此關心它們有一個基本的概念 —— 儘管氨基酸「字母表」 、很小,但它們具有廣泛的結構和功能多樣性。因此如果能僅通過觀察氨基酸的原始「字串」來理解和預測蛋白質的結構和功能對研究是非常有價值的。

聯袂 - 蛋白質機器學習

現在我們已經瞭解了使用語言模型進行遷移學習是如何工作的,同時我們還了解了什麼是蛋白質。一旦你有了這些背景知識,下一步就不難了 —— 我們可以在蛋白質上應用相同的遷移學習思想!我們不是在涉及英文文字的任務上預先訓練模型,而是在輸入是蛋白質且有大量可用訓練資料的任務上訓練它。一旦我們這樣做了,我們的模型就有希望學到很多關於蛋白質結構的知識,就像語言模型學到了很多關於語言結構的知識一樣。這使得預訓練的蛋白質模型有希望可以遷移到任何其它基於蛋白質的任務!

生物學家想在哪些任務上用機器學習訓練蛋白質模型?最著名的蛋白質建模任務是 蛋白質摺疊。該任務是,給定像 「MLKNV……」 這樣的氨基酸鏈,預測蛋白質最終會摺疊成什麼形狀。這是一項極其重要的任務,因為準確預測蛋白質的形狀和結構可以深入瞭解蛋白質作用和機理。

早在現代機器學習出現之前,人們就一直在研究這個問題。最早的一些大規模分散式計算專案,如 Folding@Home,以超精的空間和時間解析度使用原子級模擬來模擬蛋白質摺疊。甚至還存在一個專門的 _蛋白質晶體學_領域,該領域的研究者使用 X 射線衍射來觀察從活細胞中分離出的蛋白質的結構。

然而,與許多其他領域一樣,深度學習的到來改變了一切。 AlphaFold,尤其是 AlphaFold2 使用了 transformer 結構的深度學習模型,並在模型上增加了針對蛋白質資料的處理,在僅從原始氨基酸序列預測新型蛋白質結構方面取得了出色的結果。如果你對蛋白質摺疊感興趣,我們強烈建議你看看 我們的 ESMFold notebook —— ESMFold 是一種類似於 AlphaFold2 的新模型,但它是一種更「純」的深度學習模型,不需要任何外部資料庫或搜尋操作即可執行。因此,設定過程不像 AlphaFold2 那樣痛苦,模型執行得更快,同時仍保持出色的準確性。

上圖為多殺巴斯德氏菌的 氨基葡萄糖 - 6 - 磷酸脫氨酶 同源二聚體的預測結構。該結構和視覺化圖是由上文中的 ESMFold notebook 在幾秒鐘內生成的。深藍色表示結構置信度最高的區域。

不過,蛋白質摺疊並不是我們唯一感興趣的任務!生物學家可能想做更多的蛋白質分類任務 —— 比如他們想預測蛋白質將在細胞的哪個部分起作用,或者在蛋白質產生後其中哪些氨基酸會被修改。在機器學習的語言中,當你想對整個蛋白質進行分類 (例如,預測其亞細胞定位) 時,這類任務可被建模為 序列分類 (sequence classification); 當你想對每個氨基酸進行分類時 (例如,預測哪些氨基酸會被翻譯後修飾 (Post-translational modification,PTM) ),這類任務可被建模為 詞分類 (token classification)

不過,關鍵的一點是,儘管蛋白質與語言非常不同,但它們可以通過幾乎完全相同的機器學習方法來處理 —— 在一個大的蛋白質序列資料庫上進行大規模預訓練,然後通過 遷移學習 遷移到其它訓練資料可能少得多的任務。事實上,在某些方面它甚至比像 BERT 這樣的大型語言模型還要簡單,因為不需要複雜的分詞和詞解析 —— 蛋白質沒有分詞,因此最簡單的方法是直接將每個氨基酸轉換成單詞。

聽起來很酷,但從何下手?

如果你已經熟悉深度學習,那麼你會發現微調蛋白質模型的程式碼看起來與微調語言模型的程式碼非常相似。我們提供了 PyTorchTensorFlow 兩個範例供你起步。你可以從像 UniProt 這樣的開放蛋白質資料庫中獲取大量標註資料,UniProt 除了提供 REST API 介面以供存取資料外還提供了一個漂亮的 Web 介面。你的主要困難是找到有趣的研究方向進行探索,這我就愛莫能助了 —— 但我相信有很多生物學家願意與你合作!

反之,如果你是一名生物學家,你可能有很多想法想嘗試,但可能對深入研究機器學習程式碼有點害怕。別怕!我們精心設計了範例 (PyTorchTensorFlow),這些範例中的資料載入部分與其他部分完全獨立。這意味著如果你有一個 序列分類詞分類 任務,你只需要構建一個包含蛋白質序列及其應對標籤的資料集,然後把我們的資料載入程式碼換成你自己寫的用於載入你的資料集的程式碼就好了。

儘管範例中使用 ESM-2 作為基礎預訓練模型,因為它在當前是最先進的。該領域的研究人員可能還熟悉其他模型,如 Rost 實驗室的 ProtBERT (論文連結) 是同類中最早的模型之一,並且引起了生物資訊學界的極大興趣。只需將範例程式碼中的 checkpoint 路徑從 facebook/esm2xxx 改為 Rostlab/prot_bert 之類的,範例中的程式碼就可以使用 ProtBERT 模型了。

結語

深度學習和生物學的交叉領域將在未來幾年成為一個非常活躍和成果豐碩的領域。然而,使得深度學習發展如此迅速的原因之一是人們可以快速重現結果並調整新模型以供自己使用。本著這種精神,如果你訓練了一個你認為對社群有用的模型,請分享它!上面那些 notebook 中都包含將模型上傳到 Hub 的程式碼,其他研究人員可以在 Hub 上自由存取和構建它們 - 除了對該領域的好處之外,這也可以讓你的論文被更多人見到和參照。你甚至可以使用 Spaces 做一個實時的網路演示版,以便其他研究人員可以輸入蛋白質序列並免費獲得結果,而無需編寫一行程式碼。祝你好運,願審稿人對你青眼相加!


英文原文: https://hf.co/blog/deep-learning-with-proteins

原文作者: Matthew Carrigan

譯者: Matrix Yao (姚偉峰),英特爾深度學習工程師,工作方向為 transformer-family 模型在各模態資料上的應用及大規模模型的訓練推理。

排版/審校: zhongdongy (阿東)