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