人工神經(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)導人Hecht Nielsen給人工神經(jīng)網(wǎng)絡(luò)下的定義就是:“人工神經(jīng)網(wǎng)絡(luò)是由人工建立的以有向圖為拓撲結(jié)構(gòu)的動態(tài)系統(tǒng),它通過對連續(xù)或斷續(xù)的輸入作狀態(tài)相應(yī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ā)生了興趣,導致神經(jīng)網(wǎng)絡(luò)的復興。 目前在神經(jīng)網(wǎng)絡(luò)研究方法上已形成多個流派,最富有成果的研究工作包括:多層網(wǎng)絡(luò)BP算法,Hopfield網(wǎng)絡(luò)模型,自適應(yīng)共振理論,自組織特征映射理論等。人工神經(jīng)網(wǎng)絡(luò)是在現(xiàn)代神經(jīng)科學的基礎(chǔ)上提出來的。它雖然反映了人腦功能的基本特征,但遠不是自然神經(jīng)網(wǎng)絡(luò)的逼真描寫,而只是它的某種簡化抽象和模擬。
2.人工神經(jīng)網(wǎng)絡(luò)的特點
人工神經(jīng)網(wǎng)絡(luò)的以下幾個突出的優(yōu)點使它近年來引起人們的極大關(guān)注:
(1)可以充分逼近任意復雜的非線性關(guān)系;
(2)所有定量或定性的信息都等勢分布貯存于網(wǎng)絡(luò)內(nèi)的各神經(jīng)元,故有很強的魯棒性和容錯性;
(3)采用并行分布處理方法,使得快速進行大量運算成為可能;
(4)可學習和自適應(yīng)不知道或不確定的系統(tǒng);
(5)能夠同時處理定量、定性知識。
3.人工神經(jīng)網(wǎng)絡(luò)的特點與優(yōu)越性
人工神經(jīng)網(wǎng)絡(luò)的特點和優(yōu)越性,主要表現(xiàn)在三個方面:
第一,具有自學習功能。例如實現(xiàn)圖像識別時,只在先把許多不同的圖像樣板和對應(yīng)的應(yīng)識別的結(jié)果輸入人工神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)就會通過自學習功能,慢慢學會識別類似的圖像。自學習功能對于預測有特別重要的意義。預期未來的人工神經(jīng)網(wǎng)絡(luò)計算機將為人類提供經(jīng)濟預測、市場預測、效益預測,其應(yīng)用前途是很遠大的。
第二,具有聯(lián)想存儲功能。用人工神經(jīng)網(wǎng)絡(luò)的反饋網(wǎng)絡(luò)就可以實現(xiàn)這種聯(lián)想。
第三,具有高速尋找優(yōu)化解的能力。尋找一個復雜問題的優(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)生理與認知科學研究人類思維以及智能機理。
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ò)動力學、非線性神經(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)注,因為它為解決大復雜度問題提供了一種相對來說比較有效的簡單方法。神經(jīng)網(wǎng)絡(luò)可以很容易的解決具有上百個參數(shù)的問題(當然實際生物體中存在的神經(jīng)網(wǎng)絡(luò)要比我們這里所說的程序模擬的神經(jīng)網(wǎng)絡(luò)要復雜的多)。神經(jīng)網(wǎng)絡(luò)常用于兩類問題:分類和回歸。
在結(jié)構(gòu)上,可以把一個神經(jīng)網(wǎng)絡(luò)劃分為輸入層、輸出層和隱含層(見圖1)。輸入層的每個節(jié)點對應(yīng)一個個的預測變量。輸出層的節(jié)點對應(yīng)目標變量,可有多個。在輸入層和輸出層之間是隱含層(對神經(jīng)網(wǎng)絡(luò)使用者來說不可見),隱含層的層數(shù)和每層節(jié)點的個數(shù)決定了神經(jīng)網(wǎng)絡(luò)的復雜度。
圖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é)點都可表示成預測變量(節(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)重就是在建立(也稱訓練)神經(jīng)網(wǎng)絡(luò)時要做的工作。最早的也是最基本的權(quán)重調(diào)整方法是錯誤回饋法,現(xiàn)在較新的有變化坡度法、類牛頓法、Levenberg-Marquardt法、和遺傳算法等。無論采用那種訓練方法,都需要有一些參數(shù)來控制訓練的過程,如防止訓練過度和控制訓練的速度。
圖2 帶權(quán)重Wxy的神經(jīng)元網(wǎng)絡(luò)
決定神經(jīng)網(wǎng)絡(luò)拓撲結(jié)構(gòu)(或體系結(jié)構(gòu))的是隱含層及其所含節(jié)點的個數(shù),以及節(jié)點之間的連接方式。要從頭開始設(shè)計一個神經(jīng)網(wǎng)絡(luò),必須要決定隱含層和節(jié)點的數(shù)目,活動函數(shù)的形式,以及對權(quán)重做那些限制等,當然如果采用成熟軟件工具的話,他會幫你決定這些事情。
在諸多類型的神經(jīng)網(wǎng)絡(luò)中,最常用的是前向傳播式神經(jīng)網(wǎng)絡(luò),也就是我們前面圖示中所描繪的那種。我們下面詳細討論一下,為討論方便假定只含有一層隱含節(jié)點。
可以認為錯誤回饋式訓練法是變化坡度法的簡化,其過程如下:
前向傳播:數(shù)據(jù)從輸入到輸出的過程是一個從前向后的傳播過程,后一節(jié)點的值通過它前面相連的節(jié)點傳過來,然后把值按照各個連接權(quán)重的大小加權(quán)輸入活動函數(shù)再得到新的值,進一步傳播到下一個節(jié)點。
回饋:當節(jié)點的輸出值與我們預期的值不同,也就是發(fā)生錯誤時,神經(jīng)網(wǎng)絡(luò)就要 “學習”(從錯誤中學習)。我們可以把節(jié)點間連接的權(quán)重看成后一節(jié)點對前一節(jié)點的“信任” 程度(他自己向下一節(jié)點的輸出更容易受他前面哪個節(jié)點輸入的影響)。學習的方法是采用懲罰的方法,過程如下:如果一節(jié)點輸出發(fā)生錯誤,那么他看他的錯誤是受哪個(些)輸入節(jié)點的影響而造成的,是不是他最信任的節(jié)點(權(quán)重最高的節(jié)點)陷害了他(使他出錯),如果是則要降低對他的信任值(降低權(quán)重),懲罰他們,同時升高那些做出正確建議節(jié)點的信任值。對那些收到懲罰的節(jié)點來說,他也需要用同樣的方法來進一步懲罰它前面的節(jié)點。就這樣把懲罰一步步向前傳播直到輸入節(jié)點為止。
對訓練集中的每一條記錄都要重復這個步驟,用前向傳播得到輸出值,如果發(fā)生錯誤,則用回饋法進行學習。當把訓練集中的每一條記錄都運行過一遍之后,我們稱完成一個訓練周期。要完成神經(jīng)網(wǎng)絡(luò)的訓練可能需要很多個訓練周期,經(jīng)常是幾百個。訓練完成之后得到的神經(jīng)網(wǎng)絡(luò)就是在通過訓練集發(fā)現(xiàn)的模型,描述了訓練集中響應(yīng)變量受預測變量影響的變化規(guī)律。
由于神經(jīng)網(wǎng)絡(luò)隱含層中的可變參數(shù)太多,如果訓練時間足夠長的話,神經(jīng)網(wǎng)絡(luò)很可能把訓練集的所有細節(jié)信息都“記”下來,而不是建立一個忽略細節(jié)只具有規(guī)律性的模型,我們稱這種情況為訓練過度。顯然這種“模型”對訓練集會有很高的準確率,而一旦離開訓練集應(yīng)用到其他數(shù)據(jù),很可能準確度急劇下降。為了防止這種訓練過度的情況,我們必須知道在什么時候要停止訓練。在有些軟件實現(xiàn)中會在訓練的同時用一個測試集來計算神經(jīng)網(wǎng)絡(luò)在此測試集上的正確率,一旦這個正確率不再升高甚至開始下降時,那么就認為現(xiàn)在神經(jīng)網(wǎng)絡(luò)已經(jīng)達到做好的狀態(tài)了可以停止訓練。
圖3中的曲線可以幫我們理解為什么利用測試集能防止訓練過度的出現(xiàn)。在圖中可以看到訓練集和測試集的錯誤率在一開始都隨著訓練周期的增加不斷降低,而測試集的錯誤率在達到一個谷底后反而開始上升,我們認為這個開始上升的時刻就是應(yīng)該停止訓練的時刻。
圖3神經(jīng)網(wǎng)絡(luò)在訓練周期增加時準確度的變化情況
神經(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ò)也正是當作“黑盒”來用的,不用去管 “盒子”里面是什么,只管用就行了。在大部分情況下,這種限制條件是可以接受的。比如銀行可能需要一個筆跡識別軟件,但他沒必要知道為什么這些線條組合在一起就是一個人的簽名,而另外一個相似的則不是。在很多復雜度很高的問題如化學試驗、機器人、金融市場的模擬、和語言圖像的識別,等領(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ò)做出顯而易見解釋的方法學。
第二,神經(jīng)網(wǎng)絡(luò)會學習過度,在訓練神經(jīng)網(wǎng)絡(luò)時一定要恰當?shù)氖褂靡恍┠車栏窈饬可窠?jīng)網(wǎng)絡(luò)的方法,如前面提到的測試集方法和交叉驗證法等。這主要是由于神經(jīng)網(wǎng)絡(luò)太靈活、可變參數(shù)太多,如果給足夠的時間,他幾乎可以“記住”任何事情。
第三,除非問題非常簡單,訓練一個神經(jīng)網(wǎng)絡(luò)可能需要相當可觀的時間才能完成。當然,一旦神經(jīng)網(wǎng)絡(luò)建立好了,在用它做預測時運行時還是很快得。
第四,建立神經(jīng)網(wǎng)絡(luò)需要做的數(shù)據(jù)準備工作量很大。一個很有誤導性的神話就是不管用什么數(shù)據(jù)神經(jīng)網(wǎng)絡(luò)都能很好的工作并做出準確的預測。這是不確切的,要想得到準確度高的模型必須認真的進行數(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ò)的輸入。