人工神經(jīng)網(wǎng)絡(luò)
目錄
1.人工神經(jīng)網(wǎng)絡(luò)概述
人工神經(jīng)網(wǎng)絡(luò)( Artificial Neural Networks, 簡寫為ANNs)也簡稱為神經(jīng)網(wǎng)絡(luò)(NNs)或稱作連接模型(Connectionist Model) ,是對人腦或自然神經(jīng)網(wǎng)絡(luò)(Natural Neural Network)若干基本特性的抽象和模擬。人工神經(jīng)網(wǎng)絡(luò)以對大腦的生理研究成果為基礎(chǔ)的,其目的在于模擬大腦的某些機理與機制,實現(xiàn)某個方面的功能。國際著名的神經(jīng)網(wǎng)絡(luò)研究專家,第一家神經(jīng)計算機公司的創(chuàng)立者與領(lǐng)導(dǎo)人Hecht Nielsen給人工神經(jīng)網(wǎng)絡(luò)下的定義就是:“人工神經(jīng)網(wǎng)絡(luò)是由人工建立的以有向圖為拓?fù)浣Y(jié)構(gòu)的動態(tài)系統(tǒng),它通過對連續(xù)或斷續(xù)的輸入作狀態(tài)相應(yīng)而進行信息處理?!?這一定義是恰當(dāng)?shù)摹?人工神經(jīng)網(wǎng)絡(luò)的研究,可以追溯到 1957年Rosenblatt提出的感知器模型(Perceptron) 。它幾乎與人工智能——AI(Artificial Intelligence)同時起步,但30余年來卻并未取得人工智能那樣巨大的成功,中間經(jīng)歷了一段長時間的蕭條。直到80年代,獲得了關(guān)于人工神經(jīng)網(wǎng)絡(luò)切實可行的算法,以及以Von Neumann體系為依托的傳統(tǒng)算法在知識處理方面日益顯露出其力不從心后,人們才重新對人工神經(jīng)網(wǎng)絡(luò)發(fā)生了興趣,導(dǎo)致神經(jīng)網(wǎng)絡(luò)的復(fù)興。 目前在神經(jīng)網(wǎng)絡(luò)研究方法上已形成多個流派,最富有成果的研究工作包括:多層網(wǎng)絡(luò)BP算法,Hopfield網(wǎng)絡(luò)模型,自適應(yīng)共振理論,自組織特征映射理論等。人工神經(jīng)網(wǎng)絡(luò)是在現(xiàn)代神經(jīng)科學(xué)的基礎(chǔ)上提出來的。它雖然反映了人腦功能的基本特征,但遠不是自然神經(jīng)網(wǎng)絡(luò)的逼真描寫,而只是它的某種簡化抽象和模擬。
2.人工神經(jīng)網(wǎng)絡(luò)的特點
人工神經(jīng)網(wǎng)絡(luò)的以下幾個突出的優(yōu)點使它近年來引起人們的極大關(guān)注:
(1)可以充分逼近任意復(fù)雜的非線性關(guān)系;
(2)所有定量或定性的信息都等勢分布貯存于網(wǎng)絡(luò)內(nèi)的各神經(jīng)元,故有很強的魯棒性和容錯性;
(3)采用并行分布處理方法,使得快速進行大量運算成為可能;
(4)可學(xué)習(xí)和自適應(yīng)不知道或不確定的系統(tǒng);
(5)能夠同時處理定量、定性知識。
3.人工神經(jīng)網(wǎng)絡(luò)的特點與優(yōu)越性
人工神經(jīng)網(wǎng)絡(luò)的特點和優(yōu)越性,主要表現(xiàn)在三個方面:
第一,具有自學(xué)習(xí)功能。例如實現(xiàn)圖像識別時,只在先把許多不同的圖像樣板和對應(yīng)的應(yīng)識別的結(jié)果輸入人工神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)就會通過自學(xué)習(xí)功能,慢慢學(xué)會識別類似的圖像。自學(xué)習(xí)功能對于預(yù)測有特別重要的意義。預(yù)期未來的人工神經(jīng)網(wǎng)絡(luò)計算機將為人類提供經(jīng)濟預(yù)測、市場預(yù)測、效益預(yù)測,其應(yīng)用前途是很遠大的。
第二,具有聯(lián)想存儲功能。用人工神經(jīng)網(wǎng)絡(luò)的反饋網(wǎng)絡(luò)就可以實現(xiàn)這種聯(lián)想。
第三,具有高速尋找優(yōu)化解的能力。尋找一個復(fù)雜問題的優(yōu)化解,往往需要很大的計算量,利用一個針對某問題而設(shè)計的反饋型人工神經(jīng)網(wǎng)絡(luò),發(fā)揮計算機的高速運算能力,可能很快找到優(yōu)化解。
4.人工神經(jīng)網(wǎng)絡(luò)的主要研究方向
神經(jīng)網(wǎng)絡(luò)的研究可以分為理論研究和應(yīng)用研究兩大方面。
理論研究可分為以下兩類:
1).利用神經(jīng)生理與認(rèn)知科學(xué)研究人類思維以及智能機理。
2).利用神經(jīng)基礎(chǔ)理論的研究成果,用數(shù)理方法探索功能更加完善、性能更加優(yōu)越的神經(jīng)網(wǎng)絡(luò)模型,深入研究網(wǎng)絡(luò)算法和性能, 如:穩(wěn)定性、收斂性、容錯性、魯棒性等;開發(fā)新的網(wǎng)絡(luò)數(shù)理理論,如:神經(jīng)網(wǎng)絡(luò)動力學(xué)、非線性神經(jīng)場等。
應(yīng)用研究可分為以下兩類:
1).神經(jīng)網(wǎng)絡(luò)的軟件模擬和硬件實現(xiàn)的研究。
2).神經(jīng)網(wǎng)絡(luò)在各個領(lǐng)域中應(yīng)用的研究。這些領(lǐng)域主要包括:
模式識別、信號處理、知識工程、專家系統(tǒng)、優(yōu)化組合、機器人控制等。 隨著神經(jīng)網(wǎng)絡(luò)理論本身以及相關(guān)理論、相關(guān)技術(shù)的不斷發(fā)展,神經(jīng)網(wǎng)絡(luò)的應(yīng)用定將更加深入。
5.人工神經(jīng)網(wǎng)絡(luò)的應(yīng)用分析
神經(jīng)網(wǎng)絡(luò)近來越來越受到人們的關(guān)注,因為它為解決大復(fù)雜度問題提供了一種相對來說比較有效的簡單方法。神經(jīng)網(wǎng)絡(luò)可以很容易的解決具有上百個參數(shù)的問題(當(dāng)然實際生物體中存在的神經(jīng)網(wǎng)絡(luò)要比我們這里所說的程序模擬的神經(jīng)網(wǎng)絡(luò)要復(fù)雜的多)。神經(jīng)網(wǎng)絡(luò)常用于兩類問題:分類和回歸。
在結(jié)構(gòu)上,可以把一個神經(jīng)網(wǎng)絡(luò)劃分為輸入層、輸出層和隱含層(見圖1)。輸入層的每個節(jié)點對應(yīng)一個個的預(yù)測變量。輸出層的節(jié)點對應(yīng)目標(biāo)變量,可有多個。在輸入層和輸出層之間是隱含層(對神經(jīng)網(wǎng)絡(luò)使用者來說不可見),隱含層的層數(shù)和每層節(jié)點的個數(shù)決定了神經(jīng)網(wǎng)絡(luò)的復(fù)雜度。
圖1 一個神經(jīng)元網(wǎng)絡(luò)
除了輸入層的節(jié)點,神經(jīng)網(wǎng)絡(luò)的每個節(jié)點都與很多它前面的節(jié)點(稱為此節(jié)點的輸入節(jié)點)連接在一起,每個連接對應(yīng)一個權(quán)重Wxy,此節(jié)點的值就是通過它所有輸入節(jié)點的值與對應(yīng)連接權(quán)重乘積的和作為一個函數(shù)的輸入而得到,我們把這個函數(shù)稱為活動函數(shù)或擠壓函數(shù)。如圖2中節(jié)點4輸出到節(jié)點6的值可通過如下計算得到:
W14*節(jié)點1的值+W24*節(jié)點2的值
神經(jīng)網(wǎng)絡(luò)的每個節(jié)點都可表示成預(yù)測變量(節(jié)點1,2)的值或值的組合(節(jié)點3-6)。注意節(jié)點6的值已經(jīng)不再是節(jié)點1、2的線性組合,因為數(shù)據(jù)在隱含層中傳遞時使用了活動函數(shù)。實際上如果沒有活動函數(shù)的話,神經(jīng)元網(wǎng)絡(luò)就等價于一個線性回歸函數(shù),如果此活動函數(shù)是某種特定的非線性函數(shù),那神經(jīng)網(wǎng)絡(luò)又等價于邏輯回歸。
調(diào)整節(jié)點間連接的權(quán)重就是在建立(也稱訓(xùn)練)神經(jīng)網(wǎng)絡(luò)時要做的工作。最早的也是最基本的權(quán)重調(diào)整方法是錯誤回饋法,現(xiàn)在較新的有變化坡度法、類牛頓法、Levenberg-Marquardt法、和遺傳算法等。無論采用那種訓(xùn)練方法,都需要有一些參數(shù)來控制訓(xùn)練的過程,如防止訓(xùn)練過度和控制訓(xùn)練的速度。
圖2 帶權(quán)重Wxy的神經(jīng)元網(wǎng)絡(luò)
決定神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)(或體系結(jié)構(gòu))的是隱含層及其所含節(jié)點的個數(shù),以及節(jié)點之間的連接方式。要從頭開始設(shè)計一個神經(jīng)網(wǎng)絡(luò),必須要決定隱含層和節(jié)點的數(shù)目,活動函數(shù)的形式,以及對權(quán)重做那些限制等,當(dāng)然如果采用成熟軟件工具的話,他會幫你決定這些事情。
在諸多類型的神經(jīng)網(wǎng)絡(luò)中,最常用的是前向傳播式神經(jīng)網(wǎng)絡(luò),也就是我們前面圖示中所描繪的那種。我們下面詳細(xì)討論一下,為討論方便假定只含有一層隱含節(jié)點。
可以認(rèn)為錯誤回饋式訓(xùn)練法是變化坡度法的簡化,其過程如下:
前向傳播:數(shù)據(jù)從輸入到輸出的過程是一個從前向后的傳播過程,后一節(jié)點的值通過它前面相連的節(jié)點傳過來,然后把值按照各個連接權(quán)重的大小加權(quán)輸入活動函數(shù)再得到新的值,進一步傳播到下一個節(jié)點。
回饋:當(dāng)節(jié)點的輸出值與我們預(yù)期的值不同,也就是發(fā)生錯誤時,神經(jīng)網(wǎng)絡(luò)就要 “學(xué)習(xí)”(從錯誤中學(xué)習(xí))。我們可以把節(jié)點間連接的權(quán)重看成后一節(jié)點對前一節(jié)點的“信任” 程度(他自己向下一節(jié)點的輸出更容易受他前面哪個節(jié)點輸入的影響)。學(xué)習(xí)的方法是采用懲罰的方法,過程如下:如果一節(jié)點輸出發(fā)生錯誤,那么他看他的錯誤是受哪個(些)輸入節(jié)點的影響而造成的,是不是他最信任的節(jié)點(權(quán)重最高的節(jié)點)陷害了他(使他出錯),如果是則要降低對他的信任值(降低權(quán)重),懲罰他們,同時升高那些做出正確建議節(jié)點的信任值。對那些收到懲罰的節(jié)點來說,他也需要用同樣的方法來進一步懲罰它前面的節(jié)點。就這樣把懲罰一步步向前傳播直到輸入節(jié)點為止。
對訓(xùn)練集中的每一條記錄都要重復(fù)這個步驟,用前向傳播得到輸出值,如果發(fā)生錯誤,則用回饋法進行學(xué)習(xí)。當(dāng)把訓(xùn)練集中的每一條記錄都運行過一遍之后,我們稱完成一個訓(xùn)練周期。要完成神經(jīng)網(wǎng)絡(luò)的訓(xùn)練可能需要很多個訓(xùn)練周期,經(jīng)常是幾百個。訓(xùn)練完成之后得到的神經(jīng)網(wǎng)絡(luò)就是在通過訓(xùn)練集發(fā)現(xiàn)的模型,描述了訓(xùn)練集中響應(yīng)變量受預(yù)測變量影響的變化規(guī)律。
由于神經(jīng)網(wǎng)絡(luò)隱含層中的可變參數(shù)太多,如果訓(xùn)練時間足夠長的話,神經(jīng)網(wǎng)絡(luò)很可能把訓(xùn)練集的所有細(xì)節(jié)信息都“記”下來,而不是建立一個忽略細(xì)節(jié)只具有規(guī)律性的模型,我們稱這種情況為訓(xùn)練過度。顯然這種“模型”對訓(xùn)練集會有很高的準(zhǔn)確率,而一旦離開訓(xùn)練集應(yīng)用到其他數(shù)據(jù),很可能準(zhǔn)確度急劇下降。為了防止這種訓(xùn)練過度的情況,我們必須知道在什么時候要停止訓(xùn)練。在有些軟件實現(xiàn)中會在訓(xùn)練的同時用一個測試集來計算神經(jīng)網(wǎng)絡(luò)在此測試集上的正確率,一旦這個正確率不再升高甚至開始下降時,那么就認(rèn)為現(xiàn)在神經(jīng)網(wǎng)絡(luò)已經(jīng)達到做好的狀態(tài)了可以停止訓(xùn)練。
圖3中的曲線可以幫我們理解為什么利用測試集能防止訓(xùn)練過度的出現(xiàn)。在圖中可以看到訓(xùn)練集和測試集的錯誤率在一開始都隨著訓(xùn)練周期的增加不斷降低,而測試集的錯誤率在達到一個谷底后反而開始上升,我們認(rèn)為這個開始上升的時刻就是應(yīng)該停止訓(xùn)練的時刻。
圖3神經(jīng)網(wǎng)絡(luò)在訓(xùn)練周期增加時準(zhǔn)確度的變化情況
神經(jīng)元網(wǎng)絡(luò)和統(tǒng)計方法在本質(zhì)上有很多差別。神經(jīng)網(wǎng)絡(luò)的參數(shù)可以比統(tǒng)計方法多很多。如圖4中就有13個參數(shù)(9個權(quán)重和4個限制條件)。由于參數(shù)如此之多,參數(shù)通過各種各樣的組合方式來影響輸出結(jié)果,以至于很難對一個神經(jīng)網(wǎng)絡(luò)表示的模型做出直觀的解釋。實際上神經(jīng)網(wǎng)絡(luò)也正是當(dāng)作“黑盒”來用的,不用去管 “盒子”里面是什么,只管用就行了。在大部分情況下,這種限制條件是可以接受的。比如銀行可能需要一個筆跡識別軟件,但他沒必要知道為什么這些線條組合在一起就是一個人的簽名,而另外一個相似的則不是。在很多復(fù)雜度很高的問題如化學(xué)試驗、機器人、金融市場的模擬、和語言圖像的識別,等領(lǐng)域神經(jīng)網(wǎng)絡(luò)都取得了很好的效果。
神經(jīng)網(wǎng)絡(luò)的另一個優(yōu)點是很容易在并行計算機上實現(xiàn),可以把他的節(jié)點分配到不同的CPU上并行計算。
在使用神經(jīng)網(wǎng)絡(luò)時有幾點需要注意:第一,神經(jīng)網(wǎng)絡(luò)很難解釋,目前還沒有能對神經(jīng)網(wǎng)絡(luò)做出顯而易見解釋的方法學(xué)。
第二,神經(jīng)網(wǎng)絡(luò)會學(xué)習(xí)過度,在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時一定要恰當(dāng)?shù)氖褂靡恍┠車?yán)格衡量神經(jīng)網(wǎng)絡(luò)的方法,如前面提到的測試集方法和交叉驗證法等。這主要是由于神經(jīng)網(wǎng)絡(luò)太靈活、可變參數(shù)太多,如果給足夠的時間,他幾乎可以“記住”任何事情。
第三,除非問題非常簡單,訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)可能需要相當(dāng)可觀的時間才能完成。當(dāng)然,一旦神經(jīng)網(wǎng)絡(luò)建立好了,在用它做預(yù)測時運行時還是很快得。
第四,建立神經(jīng)網(wǎng)絡(luò)需要做的數(shù)據(jù)準(zhǔn)備工作量很大。一個很有誤導(dǎo)性的神話就是不管用什么數(shù)據(jù)神經(jīng)網(wǎng)絡(luò)都能很好的工作并做出準(zhǔn)確的預(yù)測。這是不確切的,要想得到準(zhǔn)確度高的模型必須認(rèn)真的進行數(shù)據(jù)清洗、整理、轉(zhuǎn)換、選擇等工作,對任何數(shù)據(jù)挖掘技術(shù)都是這樣,神經(jīng)網(wǎng)絡(luò)尤其注重這一點。比如神經(jīng)網(wǎng)絡(luò)要求所有的輸入變量都必須是0-1(或-1 -- +1)之間的實數(shù),因此像“地區(qū)”之類文本數(shù)據(jù)必須先做必要的處理之后才能用作神經(jīng)網(wǎng)絡(luò)的輸入。