傳統(tǒng)機(jī)器學(xué)習(xí)
非基于神經(jīng)網(wǎng)絡(luò)的方法,有時(shí)稱為“傳統(tǒng)機(jī)器學(xué)習(xí)。可以使用各種軟件包來訓(xùn)練此類模型,包括Python中的scikit-learn、R中的caret和Julia中的MLJ。
當(dāng)人們?cè)陂_發(fā)用于生物數(shù)據(jù)的機(jī)器學(xué)習(xí)方法時(shí),傳統(tǒng)的機(jī)器學(xué)習(xí)一般應(yīng)被看作是為給定任務(wù)尋找最合適方法的第一個(gè)探索領(lǐng)域。深度學(xué)習(xí)可以是一個(gè)強(qiáng)大的工具,而且不可否認(rèn)的是,它是目前的潮流。然而,在它擅長(zhǎng)的應(yīng)用領(lǐng)域,它仍然受到限制:當(dāng)大量數(shù)據(jù)可用時(shí)(例如數(shù)百萬數(shù)據(jù)點(diǎn)); 當(dāng)每個(gè)數(shù)據(jù)點(diǎn)具有多個(gè)特征時(shí); 當(dāng)特征是高度結(jié)構(gòu)化的(特征之間有清晰的關(guān)系,比如圖像中相鄰的像素) 。
傳統(tǒng)的機(jī)器學(xué)習(xí)方法
使用分類和回歸模型。嶺回歸(帶有正則化項(xiàng)的線性回歸)通常是開發(fā)模型的一個(gè)很好的起點(diǎn)。當(dāng)希望一個(gè)模型依賴于現(xiàn)有數(shù)據(jù)中最小數(shù)量的特征時(shí),線性回歸的其他變量,如LASSO回歸和彈性網(wǎng)絡(luò)回歸算法也值得考慮。然而數(shù)據(jù)中的特征之間的關(guān)系往往是非線性的,因此在這些情況下,使用SVM這樣的模型往往是更合適的選擇。SVM是一種強(qiáng)大的回歸和分類模型,它使用核函數(shù)將不可分離的問題轉(zhuǎn)變?yōu)楦菀捉鉀Q的可分離問題。
常用于回歸的模型也可用于分類。訓(xùn)練一個(gè)線性SVM和一個(gè)帶有徑向基函數(shù)核的SVM也是分類任務(wù)的一個(gè)很好的默認(rèn)起點(diǎn)。另一種可以嘗試的方法是kNN算法。此外還有一類穩(wěn)健的非線性方法是基于集合的模型,如隨機(jī)森林和XGBoost。
使用聚類模型。聚類算法的使用在生物學(xué)中非常普遍。k-means是一種強(qiáng)大的通用聚類方法。DBSCAN是一種替代方法。
降維。降維技術(shù)用于將具有大量屬性(或維度)的數(shù)據(jù)轉(zhuǎn)化為低維形式,同時(shí)盡可能地保留數(shù)據(jù)點(diǎn)之間的不同關(guān)系。生物學(xué)中常見的例子包括主成分分析(PCA)、均勻流形近似和投影(UMAP)和t分布隨機(jī)鄰域嵌入(t-SNE)。
人工神經(jīng)網(wǎng)絡(luò)模型得名于這樣一個(gè)事實(shí),即正在擬合的數(shù)學(xué)模型的形式是受大腦中神經(jīng)元的連接和行為的啟發(fā),最初是為了了解大腦功能而設(shè)計(jì)的。由于深度神經(jīng)網(wǎng)絡(luò)的架構(gòu)和訓(xùn)練的快速發(fā)展,人們對(duì)神經(jīng)網(wǎng)絡(luò)模型的興趣與日俱增。
基本原理:神經(jīng)網(wǎng)絡(luò)的一個(gè)關(guān)鍵特性是它們是通用函數(shù)近似器,這意味著,在很少的假設(shè)下,正確配置的神經(jīng)網(wǎng)絡(luò)可以將任何數(shù)學(xué)函數(shù)近似到任意精度水平。換句話說,如果任何過程(生物或其他)可以被認(rèn)為是一組變量的函數(shù),那么該過程可以被建模到任意精度,只受模型的大小或復(fù)雜性的制約。人工神經(jīng)元是所有神經(jīng)網(wǎng)絡(luò)模型的組成部分。人工神經(jīng)元只是一個(gè)數(shù)學(xué)函數(shù),它以特定的方式將輸入映射(轉(zhuǎn)換)為輸出。單個(gè)人工神經(jīng)元接收任意數(shù)量的輸入值,對(duì)其應(yīng)用特定的數(shù)學(xué)函數(shù)并返回輸出值。使用的函數(shù)通常表示為:
* 其中xi代表一個(gè)單一的輸入變量或特征(有n個(gè)這樣的輸入),wi代表該輸入的可學(xué)習(xí)權(quán)重,b代表一個(gè)可學(xué)習(xí)的偏置項(xiàng),σ代表一個(gè)非線性激活函數(shù),它接受一個(gè)輸入并返回一個(gè)輸出。為了創(chuàng)建一個(gè)網(wǎng)絡(luò),人工神經(jīng)元被排列成層,一個(gè)層的輸出是下一個(gè)層的輸入。網(wǎng)絡(luò)的節(jié)點(diǎn)可以被認(rèn)為是持有上述方程中的y值,它成為下一層的x值。
多層感知器:神經(jīng)網(wǎng)絡(luò)模型的最基本布局是以全連接方式排列的人工神經(jīng)元層。在這種布局中,固定數(shù)量的 "輸入神經(jīng)元 "代表了從輸入到網(wǎng)絡(luò)的數(shù)據(jù)中計(jì)算出的輸入特征值,而一對(duì)神經(jīng)元之間的每個(gè)連接代表了一個(gè)可訓(xùn)練的權(quán)重參數(shù)。這些權(quán)重是神經(jīng)網(wǎng)絡(luò)中的主要可調(diào)節(jié)參數(shù),優(yōu)化這些權(quán)重就是神經(jīng)網(wǎng)絡(luò)訓(xùn)練的意義。在網(wǎng)絡(luò)的另一端,一些輸出神經(jīng)元代表網(wǎng)絡(luò)的最終輸出值。這樣的網(wǎng)絡(luò),如果配置正確,可以用來對(duì)輸入進(jìn)行復(fù)雜的、分層次的決策,因?yàn)槟骋粚拥拿總€(gè)神經(jīng)元都會(huì)接受上一層所有神經(jīng)元的輸入。這種簡(jiǎn)單安排的神經(jīng)元層通常被稱為 "多層感知器",是最早用于生物信息學(xué)應(yīng)用的網(wǎng)絡(luò)。由于其訓(xùn)練的簡(jiǎn)易性和速度,它們今天仍被廣泛用于一些生物建模應(yīng)用中。
卷積神經(jīng)網(wǎng)絡(luò)(CNN):其非常適用于類似圖像的數(shù)據(jù),這些數(shù)據(jù)具有某種類型的局部結(jié)構(gòu),并且這種結(jié)構(gòu)的識(shí)別是分析的一個(gè)關(guān)鍵目標(biāo)(例如顯微鏡圖像中的細(xì)胞)。CNN由一個(gè)或多個(gè)卷積層組成,其中輸出是將一個(gè)小型的、單層的全連接神經(jīng)網(wǎng)絡(luò)(稱為 "過濾器 "或 "內(nèi)核")應(yīng)用于輸入中的局部特征組的結(jié)果。CNN還可以被配置成在不同空間結(jié)構(gòu)的數(shù)據(jù)上有效地運(yùn)行。
一維CNN只在一個(gè)方向滑動(dòng)的過濾器(例如從左到右);這種類型的CNN適合于只有一個(gè)空間維度的數(shù)據(jù)(如文本或生物序列)。二維CNN對(duì)具有兩個(gè)空間維度的數(shù)據(jù)進(jìn)行操作,如數(shù)字化圖像。三維CNN在體積數(shù)據(jù)上操作,如磁共振成像掃描。CNN在生物學(xué)中對(duì)各種數(shù)據(jù)類型都取得了重大成功,包括蛋白質(zhì)結(jié)構(gòu)預(yù)測(cè)、基因序列數(shù)據(jù)的變異識(shí)別、3D基因組折疊、DNA -蛋白質(zhì)相互作用、低溫電子顯微鏡圖像分析和醫(yī)學(xué)重要背景下的圖像分類(如惡性腫瘤的檢測(cè))等。
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN):其最適用于有序序列形式的數(shù)據(jù),這樣的數(shù)據(jù)在序列中的一個(gè)點(diǎn)和下一個(gè)點(diǎn)之間存在(至少在概念上)某種依賴性或關(guān)聯(lián)性。RNN可以被認(rèn)為是一個(gè)神經(jīng)網(wǎng)絡(luò)層塊,它將序列中每個(gè)條目(或時(shí)間步長(zhǎng))對(duì)應(yīng)的數(shù)據(jù)作為輸入,并為每個(gè)條目產(chǎn)生一個(gè)輸出,該輸出依賴于先前處理過的條目。它們也可以用來生成整個(gè)序列的表示,并傳遞給網(wǎng)絡(luò)的后續(xù)層以生成輸出。
在生物學(xué)中使用RNN的明顯例子包括分析基因或蛋白質(zhì)序列,其任務(wù)包括從基因序列中識(shí)別啟動(dòng)子區(qū)域、預(yù)測(cè)蛋白質(zhì)二級(jí)結(jié)構(gòu)或建模隨時(shí)間變化的基因表達(dá)水平等。RNN更高級(jí)的長(zhǎng)期短期記憶或門循環(huán)單元變體在生物學(xué)上有許多用途,包括蛋白質(zhì)結(jié)構(gòu)預(yù)測(cè)、肽設(shè)計(jì)和根據(jù)健康記錄預(yù)測(cè)臨床診斷。這些更先進(jìn)的方法通常與CNN結(jié)合使用,可以提高準(zhǔn)確性。RNN在分析基于序列的數(shù)據(jù)時(shí)非常穩(wěn)健。在RNNs中發(fā)現(xiàn)的一個(gè)問題是它們難以檢查輸入序列的特定部分,這對(duì)于產(chǎn)生高度準(zhǔn)確的輸出是很重要的。在RNN中加入注意力機(jī)制,使模型在計(jì)算每個(gè)輸出時(shí)能夠訪問輸入序列的所有部分,是為了緩解這個(gè)問題。最近,轉(zhuǎn)化器模型(Transformers)在生物序列的任務(wù)上顯示出比RNN更高的準(zhǔn)確性。AlphaFold2在CASP14中取得的突出成功表明使用注意力的模型也有希望用于結(jié)構(gòu)生物學(xué)的任務(wù)。
圖卷積神經(jīng)網(wǎng)絡(luò)(GCN):其特別適用于那些雖然沒有像圖像那樣明顯的可見結(jié)構(gòu),但由任意的特定關(guān)系或相互作用連接的實(shí)體組成的數(shù)據(jù)。與生物學(xué)有關(guān)的此類數(shù)據(jù)的例子包括分子(由原子和鍵組成)和蛋白質(zhì)-蛋白質(zhì)相互作用網(wǎng)絡(luò)(由蛋白質(zhì)相互作用組成)。圖卷積網(wǎng)絡(luò)使用生成的圖的結(jié)構(gòu)來確定神經(jīng)網(wǎng)絡(luò)模型中的信息流,例如結(jié)合藥物-基因和食物-基因關(guān)系圖來預(yù)測(cè)預(yù)防癌癥的食物。用于訓(xùn)練圖卷積網(wǎng)絡(luò)的軟件包括PyTorch Geometric和Graph Nets。
自編碼器(Autoencoders):是一種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),通過將數(shù)據(jù)點(diǎn)表示為具有預(yù)定維度的新空間中的點(diǎn)(通常遠(yuǎn)小于輸入維度的數(shù)量),對(duì)數(shù)據(jù)點(diǎn)集合進(jìn)行自編碼。其應(yīng)用包括預(yù)測(cè)兩個(gè)數(shù)據(jù)點(diǎn)之間的密切關(guān)系,以及在潛在空間上實(shí)施一些結(jié)構(gòu),這些結(jié)構(gòu)對(duì)于進(jìn)一步的預(yù)測(cè)任務(wù)非常有用。
編碼-解碼體系(encoder–decoder architecture)一旦經(jīng)過訓(xùn)練,解碼器就可以單獨(dú)使用,以生成新的合成數(shù)據(jù)樣本的預(yù)測(cè),這些樣本可以在實(shí)驗(yàn)室進(jìn)行測(cè)試,并有助于合成生物學(xué)的工作。自編碼技術(shù)已被應(yīng)用于一系列生物學(xué)問題,包括預(yù)測(cè)DNA甲基化狀態(tài)、基因和蛋白質(zhì)序列工程以及單細(xì)胞轉(zhuǎn)錄組測(cè)序分析。
由于神經(jīng)網(wǎng)絡(luò)在結(jié)構(gòu)上比傳統(tǒng)的機(jī)器學(xué)習(xí)算法復(fù)雜得多,因此存在一些神經(jīng)網(wǎng)絡(luò)特有的問題。選擇一個(gè)神經(jīng)網(wǎng)絡(luò)作為預(yù)期應(yīng)用的合適模型,只在一個(gè)訓(xùn)練示例(例如,單個(gè)圖像或基因序列)上訓(xùn)練它通常是較高的選擇。當(dāng)網(wǎng)絡(luò)簡(jiǎn)單地記憶輸入時(shí),訓(xùn)練損失函數(shù)應(yīng)該很快變?yōu)榱?;如果沒有,則代碼中可能有錯(cuò)誤,或者算法不夠復(fù)雜,無法對(duì)輸入數(shù)據(jù)建模。一旦網(wǎng)絡(luò)通過了這個(gè)基本的調(diào)試測(cè)試,就可以對(duì)整個(gè)訓(xùn)練集進(jìn)行訓(xùn)練。用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的流行軟件包包括PyTorch和Tensorflow,訓(xùn)練神經(jīng)網(wǎng)絡(luò)對(duì)計(jì)算的要求很高。值得注意的是,對(duì)于小任務(wù),Colaboratory(Colab)允許在GPU或TPU上免費(fèi)測(cè)試Python代碼。使用Colab是開始基于Python的深度學(xué)習(xí)的一種很好的方式。