前言

近來總算閑下來不少,我有更多的時間看些自己想看的東西,之前就一直想學習下這兩年來風聲水起的GAN(Generative Adversarial Networks, 生成對抗網路),比如生成很逼真的假臉呀,虛假的音頻,生成假新聞等等,還是非常有意思的。於是乎去找了重新回顧了之前看的生物信息學和深度學習一些綜述的文章,果然被我發現了一篇,這兩天就爬出來仔細研究了下,順道把GAN網路也學習了,也來和大家分享下。

今天講的是斯坦福大學AI lab發表在bioarxiv 上的一篇preprint的文章,名字叫做:Feedback GAN (FBGAN) for DNA: a Novel Feedback-Loop Architecture for Optimizing Protein Functions。 標題就已經把作者要做的說了,用帶反饋的生成對抗網路做蛋白質的功能優化操作,在文中其實指的就是生成可編碼成蛋白質的DNA序列。

論文地址:arxiv.org/pdf/1804.0169

源碼地址:github.com/av1659/fbgan, 源碼我不確定是不是作者寫的,不過看了下,主體的功能都有,前兩天想跑下來著,不過由於實驗室伺服器畢業用不了,單機我這小本本估計也跑不動,所以有啥問題別來找我(手動黑臉。。)

Motivation

這篇論文的動機是希望通過GANs網路去生成一些逼近與現實分布的基因,蛋白質甚至是一些醫用的藥物,因此,這個研究也屬於合成生物學(synthetic biology) 的範疇了, 通過GANs合成DNA序列編碼可變長度的蛋白質,因此作者做了兩個實驗:

  1. 產生抗菌肽的合成編碼DNA序列
  2. 優化合成基因的多肽二級結構

並驗證通過GANs網路生成的合成蛋白質具有一定的生物學特性。

GANs技術簡介

用一句最簡單的話來說,GANs網路設計的實質就是左右互博大法,GANs網路主要有兩個子網路構成,分別是生成網路G(Generator)和判別網路D(Discriminator), G網路接收一個隨機的雜訊,D用於判斷G網路生成的數據的可靠性。在訓練過程中,兩個網路不斷博弈,生成網路G的目標就是盡量生成真實的數據去欺騙判別網路D。而D的目標就是盡量辨別出G生成的假數據和真實的數據。這樣,G和D構成了一個動態的「博弈過程」,最終的平衡點即納什均衡點。

找個圖像的原理示意圖如下:

為了優化上面這個問題和訓練整個網路的參數,GANs採用的是極大極小博弈的方式來計算損失的,在初代的GANs中,其定義如下:

如果一眼就能看懂這個公式在講些什麼,就說明你的GANs理解已經niubility了,最開始這個minmax指代的意思就是D的主要作用是要將函數值拖向極大那邊,而G的作用就是要將函數值拖向極小的那邊,而且上面這個loss其實有點像logloss,分別對正負樣本計算loss。

因為GANs是用極小化極大演算法做優化的,所以訓練過程可能會很不穩定,比如在訓練的後期D網路的梯度會很小,訓練不好,整個網路效果就會非常差,這也是限制GANs網路發展的一個原因,因此也有了GANs的各種改進,比如wassertein GAN加入了梯度懲罰,很好解決了訓練彌散的問題,DCGAN加入了全卷積,學習更好的特徵。

國外有個大神在github上整理了個GANs的動物園,包含了基本所有GANs的變種,地址在這:github.com/hindupuravin,可以看出近年來GANs網路的火熱程度。

FBGAN

? 回到論文,作者認為將GANs用於合成生物學,就需要一個框架來生成新的序列,同時還需要對生成的序列進行優化以獲得所需的特性。比如,序列與配體的結合親和力,或生成的大分子的二級結構。因此作者設計了一種新的反饋機制,用於使用GAN生成DNA序列,然後使用單獨的函數分析器(function analyzer)來優化這些序列以獲得所需的特性,確保可以獲得期望的多肽或者蛋白質的性能,相當於這個函數分析器起到一個功能性修正的作用。

其中GANs網路只用於生成合適的基因序列,產生的基因序列並不具有高級生物屬性,而這個函數分析器則是作為一個黑盒的存在,可以是目前已有的一些工具,目的是輸出一個得分或者概率置信度,用於糾正GANs網路的訓練方向。比如在第一個實驗中,作者就採用了可微分的神經網路(RNN)作為函數分析器,在第二個實驗中,採用了一個web伺服器網頁的現成工具來計算 alpha-helical residues的數量。函數分析器甚至可以是一些專家或者科學家的先驗判斷或者驗證,其目的就是針對不同任務,輸出一個置信度,用於網路的優化,這也是為什麼叫FBGANs.

GANs網路結構採用的就是Wasserstein GAN (WGAN), 是GANs的一種變種,加入了梯度懲罰,和定義了Wasserstein 距離來計算輸出數據和真實值的距離。

而函數分析器就是採用的是一種可微分神經網路(RNN)或者是一個在線計算工具,輸入是GANs網路得到的DNA序列,輸出的就對應序列能夠成功編碼成多肽的概率,預期輸出是多肽的概率越高越好(這三幅圖都是針對第一個例子的)。

最後整個訓練的網路相當於將連個子結構進行級聯來訓練:

GANs網路訓練和初始化

需要知道的是,GANs網路輸出只是基因序列,並不具有生物學性質,但是期望是輸出具有編碼蛋白質功能的基因序列。因此,作者用了Uniprot數據集中的3655個蛋白質,每個蛋白的長度都低於50個氨基酸(和第一個實驗的AMP匹配),篩選原則是氨基酸的序列類間相似性較低(相似氨基酸會聚類成同一類)。

這個訓練還有個初始化的過程,網路訓練開始階段是不連接函數分析器的,是單獨進行GANs網路的訓練,這是為了保證generator產生的數據具備一定的數據集特性,而不是隨機的一些生成數據,當進行了一定的訓練輪次後,再級聯函數分析器,從generator產生的數據中隨機抽樣一部分到函數分析器,並輸出概率得分作為discriminator的input先驗,將概率得分的top-N輸入到discriminator,替換到分數低的top-N,這樣依次迭代整個訓練數據集,使得函數分析器的得分越來越高,從而優化整個網路。

測試

在論文中,作者一共做了兩個實驗。

一. WGAN Architecture to Generate Protein-Coding Sequences

第一個實驗是作者採用AMPs作為實驗對象,antimicrobial peptide (AMP) 是典型的低分子量多肽,對細菌、病毒和真菌具有廣泛的抗菌活性。由於他們的長度相對較短,可以很方便的使用GANs來測試。通過訓練的GANs網路和級聯的RNN(GRU+LSTM)函數分析器,其中RNN是通過APD3數據集中的2600個數據單獨訓練的,不參與GANs網路的訓練,使得生成的序列能夠具有AMPs的生物學性質。

訓練完之後,為了驗證網路和計算框架的有效性,作者從兩個層面進行了結果分析:

  1. 首先是函數分析器是否隨著訓練時間增長逐漸優化了generator,在不犧牲基因結構的情況下,使得生成的序列具有編碼成特定序列的能力。
  2. 其次是分析模型過擬合問題,生成的基因序列是否和已經存在的自然基因序列具有序列相似性,是否會生成相似的蛋白質。

對於第一個問題,作者驗證在一定輪次(1,10,60)後,函數分析器的準確率在逐步上升,60epoch之後接近99%的準確率,並且超過90%的基因序列結構未發生改變,說明GANs網路的有效性。

對於第二個問題,為了計算GANs網路生成的序列和存在的AMP序列的差異度,通過計算歸一化的編輯距離(Minimum Edit Distance,MED)和蛋白質的生理化學性質來看其相似性,編輯距離可以理解為一個字元串轉化成另外一個字元串所需要的增、刪、替換的次數,這個計算可以用動態規劃加速。歸一化是為了避免長度的影響,最後通過直方圖發現兩者的差異程度較大,並沒有過擬合的情況

蛋白質的生理化學性質的相似性是通過一些指標來衡量的,比如長度、摩爾重量、芳香性、博曼指數、疏水性等等,最後結果發現在與基因序列相關的指標上都具有一定差異,說明兩者相似度並不高。

二. Optimizing Secondary Structure with Black-Box PSIPRED Analyzer

作者測試這個的原因是因為蛋白質的二級結構例如α-螺旋或β-摺疊會在較短的多肽中也會出現,因此可以通過生成的額多肽,這裡採用的函數分析器是PSIPRED的分析器,這是個未公開的黑合結構,它會標記具有二級結構的摺疊位點,並輸出α-螺旋殘基的個數,如果序列無法摺疊,輸出個數就是0,這個可用於GANs網路的調整,從而測試網路的有效性。

最後實驗發現經過GANs網路的螺旋長度明顯高於自然的蛋白質:

總結

這篇用GANs網路的文章做蛋白合成的思路非常的新穎,通過將GANs網路作為整個框架的一個子結構,級聯了分析器作為先驗判斷,可以有效的調整整個網路,通過級聯不同的分析器,可以用於不同的實際用途,比如作者在文章中就採用了RNN 分析器和 PSIPRED 分析器用於不同的實際功能,通過Feed-back的結構,為GANs網路引入先驗信息,可以有效指導GANs的訓練。

歡迎大家關注我的知乎專欄:從零開始生物信息學

相同內容也可以關注我的微信公眾號: 壹讀基因:

推薦閱讀:

相关文章