基因組學中的深度學習

全文6,743字,閱讀30分鐘。

這一篇文章的主題是深度學習在基因組學中的應用情況的。文章較長,讀完要花些時間,不過我的建議是通讀第一部分——關于如何進行模型訓練的內(nèi)容,讀完后你應該可以理解機器學習模型的訓練過程和邏輯,剩下的部分可以挑重點的看。

基因組學其實是一門將數(shù)據(jù)驅(qū)動作為主要研究手段的學科,機器學習方法和統(tǒng)計學方法在基因組學中的應用一直都比較廣泛。

不過現(xiàn)在多組學數(shù)據(jù)進一步激增——這個從目前逐漸增多的各類大規(guī)模人群基因組項目上可以看出來,這其實帶來了新的挑戰(zhàn)——就是數(shù)據(jù)挖掘的難度增加了。我們要高效地從多組學數(shù)據(jù)中挖掘出有價值的信息,那么就需要掌握更富有表現(xiàn)力的方法,這個時候深度學習就成了一個合適的選擇。因為就目前來說深度學習本身就適合用來挖掘大量的、多維度數(shù)據(jù)背后的潛在規(guī)則,它也已經(jīng)改變了多個計算機領域,包括圖片識別、人臉識別、機器翻譯、自然語言處理等。近年來深度學習在基因組學領域也有了不少的研究和應用,我這篇文章主要基于 Nature Reviews Genetics 上《Deep learning- new computational modelling techniques for genomics》的內(nèi)容,同時我也做了一些額外的補充,目的是和大家一起梳理一下目前深度學習在基因組學研究方面的應用情況。這篇文章主要分為下面四個部分:

  • 第一,介紹有監(jiān)督學習中四個主要的神經(jīng)網(wǎng)絡,分別是:全連接網(wǎng)絡、深度卷積、循環(huán)卷積和圖卷積,同時解釋了如何將它們用來抽取基因組數(shù)據(jù)中常見的 Pattern;
  • 第二,介紹多任務學習和多模態(tài)學習,這是兩種適合于集成多維數(shù)據(jù)集的建模方法;
  • 第三,討論遷移學習,這是一種可以從現(xiàn)有模型中開發(fā)新模型的技術。這個方法對于多組學的研究和應用來說有著實際的價值;
  • 第四,討論自動編碼器(Autoencoder, AE)和生成對抗網(wǎng)絡(generative adversarial networks,GANs)這兩個非監(jiān)督學習方法。

好,接下來,我將逐一展開介紹這四個方面的內(nèi)容,同時為了讓你可以更好地理解這篇文章,我穿插補充了一些關于機器學習的背景知識。

第一部分

這一部分的內(nèi)容與有監(jiān)督學習有關,因此我們要先了解什么是“有監(jiān)督學習”。圖1 是有監(jiān)督學習的一個示意圖:

圖1.有監(jiān)督學習示意圖

簡單來說,有監(jiān)督學習的過程是輸入樣本的特征值(這個特征值可以是一個值,也可以由是一系列值構成的向量),然后預測出樣本屬于哪一個結(jié)果標簽(或叫做“標注”)。比如 圖1 是一個預測 RNA 剪接位點的例子,這里模型要依據(jù)樣本的特征值(如:位點序列信息、位置、內(nèi)含子長度等)進行計算得到一個是否為剪接位點的預測結(jié)果。

另外,圖1 其實是一個由邏輯回歸組成的單層神經(jīng)網(wǎng)絡分類模型。

所以,有監(jiān)督學習是一種需要使用標簽化數(shù)據(jù)進行訓練,然后推斷出輸入特征和結(jié)果標簽之間函數(shù)映射關系的機器學習方法,模型的訓練數(shù)據(jù)需要有明確的結(jié)果標簽,否則不能訓練。搞清楚定義之后,那有監(jiān)督機器學習是如何進行模型訓練的呢?所謂訓練其實就是求解模型參數(shù)。這個過程具體是如何實現(xiàn)的呢?

圖2. 模型訓練

這個訓練過程一共三步(圖2)——這也是絕大多數(shù)機器學習算法進行模型訓練的方式,具體如下:

1. 分割數(shù)據(jù)

首先,要將訓練數(shù)據(jù)分割為三個集合,分別是:訓練集,驗證集和測試集(如圖2.a) 。其中,訓練集用于模型參數(shù)的計算,驗證集用于模型性能評估和超參調(diào)整,目的是為了保障模型可以在現(xiàn)有數(shù)據(jù)條件下達到最好的結(jié)果,而測試集則是用來評測最終模型的綜合性能。

2. 使用訓練集數(shù)據(jù)計算模型參數(shù)

還是以圖2為例——我們這里圖2是一個神經(jīng)網(wǎng)絡模型,訓練開始時,首先要給這個網(wǎng)絡中的各個參數(shù)進行一次隨機初始化,然后再代入訓練數(shù)據(jù)去迭代更新模型參數(shù)。每一次的迭代時,通常都是隨機地從訓練集中抽取一小撮數(shù)據(jù)(圖2.a中的Batch)代入模型進行計算——注意這個過程非常重要,然后和真實結(jié)果比較獲得函數(shù)損失量。在神經(jīng)網(wǎng)絡的訓練中目前要通過反向傳播算法做梯度運算獲得能讓模型的參數(shù)往損失函數(shù)最小化的方向走的值,模型的參數(shù)要依據(jù)這個極值的結(jié)果進行更新。接著再重新到訓練數(shù)據(jù)中隨機抽取另一小撮的數(shù)據(jù)集重復這一輪迭代,直到損失函數(shù)收斂。

反向傳播算法是神經(jīng)網(wǎng)絡模型的基礎,沒有這個算法就無法高效地實現(xiàn)梯度下降算法中梯度值的計算。

這種訓練時僅從訓練集里隨機抽取一小撮數(shù)據(jù)集的做法與一次性使用整個訓練集的做法相比有兩個好處:

  • 第一,模型訓練所需的內(nèi)存將比較恒定。因為不必將大量的數(shù)據(jù)一次性加載到內(nèi)存里,因此,模型能不受計算機的內(nèi)存所限,可以使用盡可能大的訓練集數(shù)據(jù),訓練過程的可拓展性比較高;
  • 第二,在機器學習領域其實已經(jīng)證明,這種小批量數(shù)據(jù)集的方法會給模型帶來一定程度的隨機波動,而這種波動有利于模型性能的提升。

3. 通過驗證集調(diào)整模型的超參

所謂超參,就是“超級參數(shù)”,它是模型中一個(或一些)需要人為設定的外部參數(shù),而且是無法通過訓練集進行訓練的,只能進行手動調(diào)整。比如,我們要在進行模型訓練之前,先給模型的某部分乘上某一個固定的常數(shù)/向量,這個常數(shù)/向量無法訓練,它就是“超參”。通常只能一邊調(diào)整一邊在驗證集上評估結(jié)果,最后留下一個“看起來”能夠最準確貼近驗證結(jié)果的參數(shù)。這是一個很繁瑣的過程,需要多次嘗試,直至模型性能不再出現(xiàn)改善為止。

調(diào)超參一直都是機器學習模型訓練的一個難點。

當你完成最后的調(diào)參之后,用另一個獨立數(shù)據(jù)——也就是這里的測試集,綜合評估這個最佳模型的性能,主要是看看是否存在過擬合或者功效不足的情況,沒問題之后就可以用到項目中了。以上,就是訓練一個神經(jīng)網(wǎng)絡模型的主要過程。再次強調(diào)一次:一共是三步,分別是:分割數(shù)據(jù)、使用訓練集計算模型參數(shù)、通過驗證集調(diào)整模型超參并用測試數(shù)據(jù)綜合評估最終模型的性能。了解了以上背景內(nèi)容之后,我們就可以轉(zhuǎn)入深度學習的內(nèi)容了。對于很多比較簡單的問題而言,一個單層的神經(jīng)網(wǎng)絡通常是可以滿足要求的。但對于維度更多、更復雜的生物學問題來說,單層是不夠用的,只能通過更復雜的模型才能處理這類數(shù)據(jù)。圖3是一個多層神經(jīng)網(wǎng)絡模型的示意圖。

圖3. 一個多層神經(jīng)網(wǎng)絡示意圖

這個網(wǎng)絡有兩層,而且你可以看到中間一層不與輸出層相連接,對于輸出來說是一個不可見的“層”,所以也被稱為隱藏層,它的作用是將上一層的輸入數(shù)據(jù)做轉(zhuǎn)換,將其映射到一個可以對特征值進行線性分離的空間,然后通過激活函數(shù)進行非線性化,再給到后一層作為輸入。這個模型是深度神經(jīng)網(wǎng)絡的雛形,當你的模型有許多個中間隱藏層(>2)時,這個模型就稱之為深度神經(jīng)網(wǎng)絡模型。深度神經(jīng)網(wǎng)絡使用隱藏層來自動學習非線性特征的各類變換。模型里的每一個隱藏層都可以是多個線性模型疊加一個激活函數(shù)所構成,激活函數(shù)非常重要,它起到了將線性模型非線性化的作用,否則你的模型就無法通過非線性的形式描述真實世界的生物學問題(因為這些問題本身通常就是線性模型無法解答的)。目前深度學習中用得最多的激活函數(shù)是ReLU,這是一個線性整流函數(shù)(負數(shù)賦值為0,正數(shù)不變):

圖4. ReLU

深度學習模型的訓練也和上面所術的過程一致。區(qū)別就在于,它涉及的參數(shù)多,需要更多的訓練數(shù)據(jù)和更長的時間才能得到理想的結(jié)果。對于我們來說深度神經(jīng)網(wǎng)絡的構建和訓練可以用專門的深度學習框架來實現(xiàn),比如:TensorFlow、PyTorch和Keras等。

全連接網(wǎng)絡層

在說完上面的關于模型訓練的內(nèi)容之后,接下來要說的是第一部分中的第一個概念:全連接網(wǎng)絡層(Fully connected layer)。

什么?!第一部分才剛開始嗎.....?

全連接網(wǎng)絡層一般是深度學習模型的倒數(shù)第二、第三層,它在網(wǎng)絡中主要起分類器的作用,本質(zhì)上就是將前面各層訓練得到的特征空間線性地變換到另一個特征空間(即,結(jié)果空間——其實就是結(jié)果集)中。結(jié)果空間的每一個維度都會受到源空間所有維度的影響,數(shù)據(jù)被利用得很充分,所以可以很準確地將獲得分類結(jié)果。這么說比較抽象的話,可以通俗理解為,經(jīng)過全連接層的計算之后,目標預測結(jié)果就是前面各層結(jié)果的加權和了。以全連接層結(jié)成的神經(jīng)網(wǎng)絡也叫全連接神經(jīng)網(wǎng)絡,全連接神經(jīng)網(wǎng)絡在基因組學里也都有所應用,比如一開始我提到的剪接位點預測,還有致病突變預測、基因表達預測特定基因區(qū)域內(nèi)順式調(diào)控元件的預測等,但全連接層神經(jīng)網(wǎng)絡運算量很大。

深度卷積神經(jīng)網(wǎng)絡

接下來,我們用深度卷積神經(jīng)網(wǎng)絡(也就是CNN)作為例子,介紹序列模式特征的發(fā)現(xiàn)過程。如圖5 所示,這個模型要通過神經(jīng)網(wǎng)絡預測TAL1-GATA1轉(zhuǎn)錄因子復合物的結(jié)合親和力。

圖5. 基于CNN的序列模式特征檢測

圖中,從左到右,第一層分別以 GATA1 和 TAL1 轉(zhuǎn)錄因子的位置為權重濾波器,滑動掃描整個 DNA 序列,然后卷積計算每一個掃描框中的結(jié)果形成一個權重矩陣(b-c),再使用 ReLU 激活函數(shù)——這個激活函數(shù)會將負值重新賦為0,正值則保持不變,進一步做運算。然后再用最大池化操作(圖中的Max pooling),獲取位置軸上各個連續(xù)窗口內(nèi)的最大加權結(jié)果,再傳入下一個卷積層進行新一輪的運算和特征訓練,過程與第一個卷積層類似,最后再經(jīng)過一個全連接層,得到最終想要的預測結(jié)果。目前利用 CNN 對序列特征預測轉(zhuǎn)錄因子結(jié)合位點的方法有三個,分別是DeepBind、DeepSEA和Basset。而且這是目前 CNN 在基因組序列特征預測方面做的比較成功的例子。

循環(huán)卷積神經(jīng)網(wǎng)絡

介紹完CNN之后,我們開始探討循環(huán)卷積神經(jīng)網(wǎng)絡——簡稱RNN。鑒于它的特征,目前它主要在基因組遠端調(diào)控預測方面有所運用。這是因為 RNN 相比于 CNN,它更加適合用于處理序列化的數(shù)據(jù),包括時間序列數(shù)據(jù)、語言數(shù)據(jù)、文字翻譯以及 DNA 序列數(shù)據(jù),而且 RNN 對每一段序列單元都使用相同的操作,參數(shù)之間由一定的方式進行共享。

圖6. RNN

鑒于 RNN 模型的這些特點,它既可以有效地在DNA序列的任意位置上進行開放讀碼框的預測,也可以用來識別某類特定的輸入序列,比如起始密碼子預測、終止密碼子預測等。相比于CNN,RNN模型的主要優(yōu)勢在于,RNN模型可以很自然地處理長度變化很大的DNA序列,比如mRNA序列就很適合通過RNN模型來進行處理和分析。如果CNN要達到類似的效果,需要作出很多繁瑣的模型調(diào)整。不過,由于 RNN 只能對序列進行從前到后的順序操作,因此也不太容易進行并行化處理,這就導致它的速度要比 CNN 模型慢很多。在基因組學的應用方面,RNN 主要是用在單細胞 DNA 甲基化預測、RNA binding protein預測和表觀遺傳學中DNA長序列可及性的預測(也就是長序列調(diào)控的預測)。如果你對這一塊感興趣可以試試 deepTarget/deepMiRGene,它們就是干這些事情的。此外,最近有一項研究發(fā)現(xiàn),RNN模型還可用在測序數(shù)據(jù)的堿基識別(即Base-calling)。這在三代測序數(shù)據(jù)的Base-calling中有應用,DeepNano 就是通過構造合適的 RNN 模型對 Oxford Nanopore 測序儀所產(chǎn)出的長讀長測序序列進行堿基識別的方法。

圖卷積神經(jīng)網(wǎng)絡

圖卷積神經(jīng)網(wǎng)絡模型(GCN)圖6(d),在基因組學中涉及的應用還很少。它比較合適的應用場景是蛋白質(zhì)之間互作用的網(wǎng)絡或者基因與基因之間的調(diào)控網(wǎng)絡上。因為這兩個方面的網(wǎng)絡,在邏輯上都將是以圖結(jié)構的形式呈現(xiàn)。圖卷積神經(jīng)網(wǎng)絡通過圖中代表個體特征的節(jié)點和節(jié)點與節(jié)點之間的連接性來實行機器學習任務。雖然應用還比較少,但GCN實際上提供了一種分析圖結(jié)構數(shù)據(jù)的新方法,值得在基因組學中進行更多的嘗試和應用,比如可以嘗試利用它來解決腫瘤亞型的分類等。

第二部分

第二部分要介紹的內(nèi)容是“多任務學習和多模態(tài)學習”。之所以涉及到這個方面,是因為基因數(shù)據(jù)實際上并非只有 DNA 序列這一類遺傳方面的數(shù)據(jù),還涉及到轉(zhuǎn)錄組、表觀組修飾、蛋白組等多組學數(shù)據(jù),而且數(shù)據(jù)在彼此之間存在著一定的內(nèi)在關系。如何處理和整合這些多組學數(shù)據(jù)就涉及到“多任務和多模態(tài)學習”這個問題了。在多模態(tài)學習模型的構成中,它有一個總損失函數(shù),它的值是各個模態(tài)數(shù)據(jù)損失函數(shù)之和或者加權和,這取決于各個模態(tài)之間損失函數(shù)的結(jié)果是否差異巨大。下面圖7.a-c 是一個多任務和多模態(tài)學習的示意圖。這類模型的訓練往往比較困難,因為需要同時優(yōu)化學習網(wǎng)絡中多個不同的損失函數(shù),并且往往還得做出合適的取舍,每一個取舍都要有合理的內(nèi)在理由。而且如果不同的類型的數(shù)據(jù)之間,出現(xiàn)了較為嚴重的權重失衡的話——比如出現(xiàn)”一超無強”的情況,那么最終的模型可能僅能代表一小撮數(shù)據(jù)的結(jié)果,這就會讓模型出現(xiàn)嚴重偏差。

圖7. 多任務與多模態(tài)學習模型

基因組學領域,已經(jīng)成功應用多任務學習和多模態(tài)學習的一個場景是對多種不同的分子表型的預測,比如前面提到的轉(zhuǎn)錄因子結(jié)合位點、組蛋白標記、DNA可及性分析和不同組織中的基因表達等這一類與轉(zhuǎn)錄組學和表觀基因組學相關的多組學研究。

第三部分

這一部分我們來說說遷移學習。遷移學習與上述內(nèi)容都不同,它是一種解決訓練數(shù)據(jù)稀缺問題的機器學習方法。因為數(shù)據(jù)稀缺或者數(shù)據(jù)缺失的情況下,從頭訓練整個模型可能是不可行的。那么一個取而代之的方法就是使用相似結(jié)構的任務,以及由它訓練得到的模型的大多數(shù)參數(shù)來初始化我們的目標模型。你可以理解為,這是一種將先驗知識整合到新模型中的機器學習方法,它可以在一定程度上解決訓練數(shù)據(jù)不足的問題。比如 圖8 這個例子,你可以看到在這個例子中,源模型的數(shù)據(jù)很充足,且源模型中第一個子模型的結(jié)構和預測結(jié)果的形式都跟目標模型相似(都是橢圓),那么這時我們就可以將源模型里這個子模型的相關參數(shù)遷移到下方的目標模型里,對目標模型進行初始化,接著再利用有限的訓練數(shù)據(jù)對目標模型進行更新就可以了。

圖8. 遷移學習

在基因組學中,遠程調(diào)控的預測模型就應用到了遷移學習。不過遷移學習在組學方面的應用還缺少深入的研究,比如目前依然不清楚應該如何選擇合適的源模型、以及源模型中有哪些參數(shù)適合共享到目標模型中等。

深度學習模型的可解釋性問題

這個問題對于深度學習來說是天生的,但它關系著深度學習是否適合被充分應用到生命健康領域。我們知道深度學習模型的一個問題是黑盒子效應——我們無法得知模型的具體訓練細節(jié)以及中間特征參數(shù)的變化。這對于基因組學研究來說是不利的,這是因為組學研究最后的服務對象是我們?nèi)祟愖陨淼慕】担ㄌ貏e是重大的健康問題),沒有人真的愿意將重大的健康問題交給一個沒人理解的黑盒子處理,所以我們還是有必要對深度學習模型的可解釋性進行一定的研究。但遺憾的是目前對深度學習模型的黑盒子效應,似乎尚未有特別有效的解密方法。目前主要是通過不斷給出示例數(shù)據(jù),探查輸入和輸出結(jié)果之間的關系來推測和評估模型所用到的特征和權重,給出特征重要性評分(Feature important score),可用的方法包括:歸因分數(shù)、相關性系數(shù)或權重共享系數(shù)等。不過在深度學習領域,最近有一個稱為DCell的模型,它提出了一種稱為“可見神經(jīng)網(wǎng)絡”的技術,通過它可以檢查神經(jīng)網(wǎng)絡的訓練情況,進而再改善神級網(wǎng)絡的可解釋性。

第四部分

最后這部分討論非監(jiān)督學習在基因組學方面應用的問題,這里主要介紹自動編碼機(Autoencoder, AE)和生成對抗網(wǎng)絡(generative adversarial networks,GANs)這兩類非監(jiān)督學習方法,其中生成對抗網(wǎng)絡在基因組學的首次應用是在單細胞基因組研究中。非監(jiān)督學習與有監(jiān)督學習不同,它的訓練數(shù)據(jù)并不需要標記。模型的目的是通過學習數(shù)據(jù)集中有用的特征和屬性來表征整個數(shù)據(jù)集的結(jié)構。最典型、最被熟知的非監(jiān)督學習方法就是k-means聚類和降維算法(如PCA、tSNE)。神經(jīng)網(wǎng)絡也有類似的方法,比如自動編碼機(AE),就是一種能夠?qū)?shù)據(jù)嵌入到一個含有隱藏瓶頸層的低維空間中并對原始數(shù)據(jù)進行重建的方法,如圖9所示。

圖9. 自動編碼機(AE)

這個方法很特別,而且非常有用的一點是它能夠?qū)υ紨?shù)據(jù)進行有效的“降噪”!這是因為網(wǎng)絡中間有一個維度較低的瓶頸層存在,它會迫使網(wǎng)絡在學習的過程中盡可能提取更有用的特征,那些不重要的特征變化會被自動遺漏。而且,在該瓶頸層中的數(shù)據(jù)已經(jīng)實現(xiàn)了降維,這個正好可以與PCA相呼應。另外,自動編碼機適合用于缺失數(shù)據(jù)的填補,特別是可以用來填補基因芯片數(shù)據(jù)的缺失值和處理RNA-seq中基因表達數(shù)據(jù)中的異常值處理。另一個非監(jiān)督神經(jīng)網(wǎng)絡是生成模型。生成模型不同于前面提到的方法,它的目的是學習數(shù)據(jù)的生成過程。代表性的例子就是生成對抗網(wǎng)絡(GANs)和可變自動編碼器(VAEs)。其中,VAEs方法可以生成新的隨機樣本,可以用在單細胞和RNA-seq數(shù)據(jù)中,用來協(xié)助尋找統(tǒng)計意義的結(jié)果。GANs是另一種生成模型,它包含一個鑒別器和一個生成器網(wǎng)絡。這兩個網(wǎng)絡會進行共同訓練,生成器用來生成真實的數(shù)據(jù)點,而鑒別器則用于區(qū)分樣本是真實的或是由生成器所生成,圖9(c)也是對該過程的一個描述。不過目前GANs,在基因組學中的應用非常有限,目前只看到在設計和蛋白質(zhì)相關的DNA探針方面有所應用。

小結(jié)

關于目前深度學習在基因組學方面的應用和研究情況就介紹到這里了。在未來深度學習肯定是會深刻影響這個領域的,具體來說主要有三個方面:

  • 第一,協(xié)助對非編碼區(qū)變異的功能進行預測,這是目前傳統(tǒng)方法做得比較差的一個方面;
  • 第二,深度學習是一種完全由數(shù)據(jù)驅(qū)動的方法,它會進一步革新當前的生物信息學工具,我可以將它稱為新生信,這個也是目前最熱的,除了文章中所提到的新算法之外,變異檢測算法DeepVariants和Clair也屬于這一方面;
  • 第三,高效揭示多組學中高維數(shù)據(jù)的更多結(jié)構。

除此之外,對于未來還有一個非常重要的領域,那就是因果推斷。不管是傳統(tǒng)的機器學習方法,或是現(xiàn)在的深度學習方法,都很難用于預測數(shù)據(jù)之間的因果聯(lián)系,而因果關系對于生命科學研究來說十分重要,目前雖有過一些嘗試——比如孟德爾隨機,但其實都比較初步。總的來說,這是一個很值得我們?nèi)ミM一步探索的地方,可以從零開始,而這也是我們的機會!

最后還有一句話:不要迷信模型。模型是解決問題的工具,用好工具是我們的追求,但問題的解決應以人為本。

參考文獻 Deep learning- new computational modelling techniques for genomics


如果喜歡更多的生物信息和組學文章,歡迎搜索并關注我的微信公眾號 ID: helixminer

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容