李 碩
同濟大學軟件學院,上海 201804
機器學習方法經(jīng)常被應用到解決醫(yī)學和生物信息學的問題。在這個報告中我列舉了一些把機器學習方法應用到生物信息學領(lǐng)域的實例。比如:組建多重神經(jīng)網(wǎng)絡(luò),運用該神經(jīng)網(wǎng)絡(luò)對4種不同形勢的腫瘤患者進行分類。
人工神經(jīng)網(wǎng)絡(luò)屬于機器學習領(lǐng)域。關(guān)于人工神經(jīng)網(wǎng)絡(luò)的概念最早提出于1940年代。后來在1980年代后被推廣應用,尤其是在醫(yī)學領(lǐng)域。
其中一個非常有用的用途是對疾病進行分類,達到診斷的目的,或者對基因表達進行分類。在這類神經(jīng)網(wǎng)絡(luò)里面,k點最近鄰居算法是最常被采用的算法。
人工神經(jīng)網(wǎng)絡(luò)的優(yōu)點是:不需要人們蛆關(guān)注神經(jīng)網(wǎng)絡(luò)里面的細節(jié)信息;人工神經(jīng)網(wǎng)絡(luò)可以很容易地被重新訓練來應對不同地分類數(shù)據(jù)。人工神經(jīng)網(wǎng)絡(luò)可以用來解決有監(jiān)督學習和無監(jiān)督學習,比如:自組織特征映射(self-organized feature map)就可以用來解決無監(jiān)督學習的問題。
它的不足之處在于:人工神經(jīng)網(wǎng)絡(luò)往往需要大量的訓練數(shù)據(jù),而這些訓練數(shù)據(jù)往往不是很容易獲得。人工神經(jīng)網(wǎng)絡(luò)可以被看作是一個黑盒,它的細節(jié)隱藏在點點之間的權(quán)值里面。這些權(quán)值的意義是人類無法理解的。同時,人工神經(jīng)網(wǎng)絡(luò)需要被仔細的訓練以避免過擬合的情況出現(xiàn)。我們常常需也要降低高維數(shù)據(jù)的維度。下面,我將分析介紹人工神經(jīng)網(wǎng)絡(luò)的具體應用。
人工神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)如圖1所示:
圖1
X1,X2,X3是該神經(jīng)網(wǎng)絡(luò)的輸入值,w0,w1,w2,w3是該神經(jīng)網(wǎng)絡(luò)的輸入結(jié)點到內(nèi)部節(jié)點的路徑權(quán)值,每個神經(jīng)元的激活函數(shù)是如上圖右側(cè)所示的函數(shù)圖像。
這個函數(shù)被稱作為sigmoid函數(shù),表達式如下:
多重神經(jīng)網(wǎng)絡(luò)通常有3層,事實上,3層神經(jīng)網(wǎng)絡(luò)以能進行很好的分類效果。這三個層包括輸入層,隱藏層,輸出層。在每個神經(jīng)元內(nèi)部我們可以選擇sigmoid激活函數(shù)或其他種類的激活函數(shù)。
如圖2所示:
圖2
單個神經(jīng)元僅能提供線性的分割面,所以多層神經(jīng)網(wǎng)絡(luò)可以提供非線性的分類函數(shù)(即:若干個線性分割面的復雜組合)。這并不意味著4層神經(jīng)網(wǎng)絡(luò)就一定比3層神經(jīng)網(wǎng)絡(luò)能一共更好的分類效果,因為層數(shù)越多,需要的訓練集就越龐大,得到的效果也不會提高。
既然有訓練問題,就會涉及到訓練算法。較為早的和著名的訓練算法是delta 規(guī)則。它于20世紀60年代被提出。它的原理是計算理論輸出值和世紀輸出值的均方差。tp 為理論輸出值,yp為實際輸出值,表示為:
訓練的開始階段,我們通常設(shè)定一個隨機選取值,令該值等于:
該公式里,α是學習速率,學習速率越大,學習的過程就越快,完成學習的時間短。但如果學習的速率過大,可能導致網(wǎng)絡(luò)的理想權(quán)值在合理結(jié)果的附近游擺而永遠無法獲得理想的權(quán)值。
神經(jīng)網(wǎng)絡(luò)被訓練好了以后,它就被用到解決目標問題。原始的數(shù)據(jù)集可以被分為兩部分:一部分用來訓練,一部分用來測試。
有時候神經(jīng)網(wǎng)絡(luò)會把訓練數(shù)據(jù)集里面的噪音點的特征納入自己的權(quán)值表達里,從而該神經(jīng)網(wǎng)絡(luò)無法真正體現(xiàn)該點集的真實特征。我們把這種情況叫做過擬合。過擬合是由于網(wǎng)絡(luò)比待估函數(shù)復雜造成的。比如一個可以同3層網(wǎng)絡(luò)解決的問題,我們用4層網(wǎng)絡(luò)或者由更多神經(jīng)元的三層網(wǎng)絡(luò)去解決該問題,就容易造成過擬合。為了更好的明確訓練時所采用的神經(jīng)網(wǎng)絡(luò)的隱藏層的層數(shù),Livingstone 和 Manalack 提出了如下計算公式:
該公式里m是訓練樣本的數(shù)目,o是該網(wǎng)絡(luò)的輸出值,w是網(wǎng)絡(luò)權(quán)值的數(shù)目,D就是隱藏層的數(shù)目。
得到了隱藏層的數(shù)目之后,我們可以以這個數(shù)目創(chuàng)建神經(jīng)網(wǎng)絡(luò),邊訓練邊削減,直到我們獲得一個一半化的網(wǎng)絡(luò)。對于沒有隱藏網(wǎng)絡(luò)層或只有一個隱藏網(wǎng)絡(luò)層的神經(jīng)網(wǎng)絡(luò),我們需要先確定它要解決的問題是否是線性的。
適當?shù)挠柧毞桨甘悄芤部梢允咕W(wǎng)絡(luò)的復雜性和數(shù)據(jù)的復雜性得到合適的匹配。一個合適的訓練方案應該是如下步驟:首先選擇一個很大的網(wǎng)絡(luò)并且把它的每個權(quán)值都設(shè)到一個很小的值上。通過訓練,這些權(quán)值可以逐漸游擺到一個合理的值。
由于初始數(shù)據(jù)集通常要被分為訓練集和測試集。在醫(yī)學領(lǐng)域,我們能獲得的數(shù)據(jù)集往往很小,比如某種病的病人數(shù)目不會很大。所以我門需要采用交叉驗證的技巧來是較小的數(shù)據(jù)集在被分為訓練集和測試集之后能較好的訓練神經(jīng)網(wǎng)絡(luò)。
[1]Machine learning in bioinformatics: A brief survey and recommendations for practitioners.Harish Bhaskar,David C.Hoyle, Sameer Singh.