應(yīng)用篇-第13章-神經(jīng)元網(wǎng)絡(luò)及MATLAB實現(xiàn)_第1頁
應(yīng)用篇-第13章-神經(jīng)元網(wǎng)絡(luò)及MATLAB實現(xiàn)_第2頁
應(yīng)用篇-第13章-神經(jīng)元網(wǎng)絡(luò)及MATLAB實現(xiàn)_第3頁
應(yīng)用篇-第13章-神經(jīng)元網(wǎng)絡(luò)及MATLAB實現(xiàn)_第4頁
應(yīng)用篇-第13章-神經(jīng)元網(wǎng)絡(luò)及MATLAB實現(xiàn)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、神經(jīng)元網(wǎng)絡(luò)模型是模擬人類實際神經(jīng)網(wǎng)絡(luò),神經(jīng)網(wǎng)絡(luò)(Neural Networks,NN)是由大量的、簡單的處理單元(稱為神經(jīng)元)廣泛地互相連接而形成的復(fù)雜網(wǎng)絡(luò)系統(tǒng),它反映了人腦功能的許多基本特征,是一個高度復(fù)雜的非線性動力學(xué)習(xí)系統(tǒng)。神經(jīng)網(wǎng)絡(luò)具有大規(guī)模并行、分布式存儲和處理、自組織、自適應(yīng)和自學(xué)能力,特別適合處理需要同時考慮許多因素和條件的、不精確和模糊的信息處理問題。本章主要對人工神經(jīng)元的BP算法進行了研究分析,利用MATLAB中的BP神經(jīng)元網(wǎng)絡(luò)工具函數(shù),解決了BP算法在模式識別、函數(shù)逼近等方面應(yīng)用時產(chǎn)生的大量的數(shù)值計算和計算仿真的矛盾,使BP神經(jīng)元網(wǎng)絡(luò)在實際應(yīng)用中實現(xiàn)了計算機化,研究表明,應(yīng)用

2、MATLAB實現(xiàn)BP算法簡單、易行、具有廣泛的應(yīng)用價值。第13章 神經(jīng)元網(wǎng)絡(luò)及MATLAB實現(xiàn)13.1神經(jīng)元神經(jīng)元網(wǎng)絡(luò)網(wǎng)絡(luò)簡介簡介 13.1.1神經(jīng)元神經(jīng)元網(wǎng)絡(luò)的發(fā)展史網(wǎng)絡(luò)的發(fā)展史最早的研究可以追溯到20世紀40年代。1943年,心理學(xué)家McCulloch和數(shù)學(xué)家Pitts合作提出了形式神經(jīng)元的數(shù)學(xué)模型。這一模型一般被簡稱M-P神經(jīng)網(wǎng)絡(luò)模型,至今仍在應(yīng)用,可以說,人工神經(jīng)網(wǎng)絡(luò)的研究時代,就由此開始了。1949年,心理學(xué)家Hebb提出神經(jīng)系統(tǒng)的學(xué)習(xí)規(guī)則,為神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)算法奠定了基礎(chǔ)?,F(xiàn)在,這個規(guī)則被稱為Hebb規(guī)則,許多人工神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)還遵循這一規(guī)則。1957年,F(xiàn).Rosenblatt提出

3、“感知器”(Perceptron) 模型,第一次把神經(jīng)網(wǎng)絡(luò)的研究從純理論的探討付諸工程實踐,掀起了人工神經(jīng)網(wǎng)絡(luò)研究的第一次高潮。20世紀60年代以后,數(shù)字計算機的發(fā)展達到全盛時期,人們誤以為數(shù)字計算機可以解決人工智能、專家系統(tǒng)、模式識別問題,而放松了對“感知器”的研究。于是,從20世紀60年代末期起,人工神經(jīng)網(wǎng)絡(luò)的研究進入了低潮。1982年,美國加州工學(xué)院物理學(xué)家Hopfield提出了離散的神經(jīng)網(wǎng)絡(luò)模型,標志著神經(jīng)網(wǎng)絡(luò)的研究又進入了一個新高潮。1984年,Hopfield又提出連續(xù)神經(jīng)網(wǎng)絡(luò)模型,開拓了計算機應(yīng)用神經(jīng)網(wǎng)絡(luò)的新途徑。1986年,Rumelhart和Meclelland提出多層網(wǎng)絡(luò)的

4、誤差反傳(back propagation)學(xué)習(xí)算法,簡稱BP算法。BP算法是目前最為重要、應(yīng)用最廣的人工神經(jīng)網(wǎng)絡(luò)算法之一。自20世紀80年代中期以來,世界上許多國家掀起了神經(jīng)網(wǎng)絡(luò)的研究熱潮,可以說神經(jīng)網(wǎng)絡(luò)已成為國際上的一個研究熱點。所以研究神經(jīng)元網(wǎng)絡(luò)模型及在matlab中的實現(xiàn)為我們更好的對我們對神經(jīng)元網(wǎng)絡(luò)的理解有著深遠的意義。 13.1.2神經(jīng)元神經(jīng)元網(wǎng)絡(luò)的發(fā)展史網(wǎng)絡(luò)的發(fā)展史生物神經(jīng)元生物神經(jīng)元神經(jīng)元是大腦處理信息的基本單元人腦約由101l-1012個神經(jīng)元組成,其中,每個神經(jīng)元約與104-105個神經(jīng)元通過突觸聯(lián)接,形成極為錯縱復(fù)雜而且又靈活多變的神經(jīng)網(wǎng)絡(luò)神經(jīng)元以細胞體為主體,由許多向周

5、圍延伸的不規(guī)則樹枝狀纖維構(gòu)成的神經(jīng)細胞,其形狀很像一棵枯樹的枝干主要由細胞體、樹突、軸突和突觸(Synapse,又稱神經(jīng)鍵)組成。生物神經(jīng)元網(wǎng)絡(luò)結(jié)構(gòu)樹突是樹狀的神經(jīng)纖維接收網(wǎng)絡(luò),它將電信號傳送到細胞體,細胞體對這些輸入信號進行整合并進行閾值處理。軸突是單根長纖維,它把細胞體的輸出信號導(dǎo)向其他神經(jīng)元,一個神經(jīng)細胞的軸突和另一個神經(jīng)細胞樹突的結(jié)合點稱為突觸突觸的信息處理:突觸的信息處理:生物神經(jīng)元傳遞信息的過程為多輸入、單輸出;神經(jīng)元各組成部分的功能來看,信息的處理與傳遞主要發(fā)生在突觸附近;當神經(jīng)元細胞體通過軸突傳到突觸前膜的脈沖幅度達到一定強度,即超過其閾值電位后,突觸前膜將向突觸間隙釋放神經(jīng)傳

6、遞的化學(xué)物質(zhì);突觸有兩種類型,興奮性突觸和抑制性突觸。前者產(chǎn)生正突觸后電位,后者產(chǎn)生負突觸后電位。13.2人工神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)結(jié)構(gòu) 13.2.1人工神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)1.人工神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network-ANN)常常簡稱為神經(jīng)網(wǎng)絡(luò)(NN),是以計算機網(wǎng)絡(luò)系統(tǒng)模擬生物神經(jīng)網(wǎng)絡(luò)的智能計算系統(tǒng), 是對人腦或自然神經(jīng)網(wǎng)絡(luò)的若干基本特性的抽象和模擬。直接理解:(1)神經(jīng)網(wǎng)絡(luò)是一個并行和分布式的信息處理網(wǎng)絡(luò)結(jié)構(gòu)。(2)它一般由大量神經(jīng)元組成,每個神經(jīng)元只有一個輸出,可以連接到很多其他的神經(jīng)元;每個神經(jīng)元輸入有多個連接通道,每個連接通道對應(yīng)于一個連接權(quán)系

7、數(shù)。2.人工神經(jīng)網(wǎng)絡(luò)的基本特征:人工神經(jīng)網(wǎng)絡(luò)的基本特征:(1) 結(jié)構(gòu)特征并行處理、分步式存儲與容錯性(2) 能力特征自學(xué)習(xí)、自組織與自適應(yīng)性 自適應(yīng)性是指一個系統(tǒng)能改變自身的性能以適應(yīng)環(huán)境變化的能力。神經(jīng)網(wǎng)絡(luò)的自學(xué)習(xí)是指當外界環(huán)境發(fā)生變化時,經(jīng)過一段時間的訓(xùn)練或感知,神經(jīng)網(wǎng)絡(luò)能通過自動調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)參數(shù),使得對于結(jié)定輸入能產(chǎn) 生期望的輸出,訓(xùn)練是神經(jīng)網(wǎng)絡(luò)學(xué)刁的途徑,因此經(jīng)常將學(xué)習(xí)與訓(xùn)練兩 個詞混用。神經(jīng)系統(tǒng)能在外部刺激下按一定規(guī)則調(diào)整神經(jīng)元之間的突觸連接,逐漸構(gòu)建起神經(jīng)網(wǎng)絡(luò),這一構(gòu)建過程稱為網(wǎng)絡(luò)的自組織自組織(或稱重構(gòu))。3.神經(jīng)網(wǎng)絡(luò)的基本功能:神經(jīng)網(wǎng)絡(luò)的基本功能:(1)聯(lián)想記憶利用事物間的聯(lián)系

8、通過聯(lián)想進行記憶的方法。聯(lián)想是由當前感知或思考的事物想起有關(guān)的另一事物,或者由頭腦中想起的一件事物,又引起想到另一件事物。由于客觀事物是相互聯(lián)系的,各種知識也是相互聯(lián)系的,因而在思維中,聯(lián)想是一種基本的思維形式,是記憶的一種方法。(2)非線性映射許多系統(tǒng)的輸入與輸出之間存在復(fù)雜的非線性關(guān)系,設(shè)計合理的神經(jīng)網(wǎng)絡(luò)通過對系統(tǒng)輸入輸出樣本對進行自動學(xué)習(xí),能夠以任意精度逼近任意復(fù)雜的非線性映射。神經(jīng)網(wǎng)絡(luò)的這一優(yōu)良性能使其可以作為多維非線性函數(shù)的通用數(shù)學(xué)模型。(3)分類與識別對輸入樣本的分類實際上是在樣本空間找出符合分類要求的分割區(qū)域,每個區(qū)域內(nèi)的樣本屬于一類。客觀世界中許多事物在樣本空間上的區(qū)域分割曲面

9、是十分復(fù)雜的,神經(jīng)網(wǎng)絡(luò)可以很好地解決對非線性曲面的逼近,因此具有很好的分類與識別能力; 13.2.2人工神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)1943,神經(jīng)生理學(xué)家 McCulloch 和數(shù)學(xué)家 Pitts 基于早期神經(jīng)元學(xué)說,歸納總結(jié)了生物神經(jīng)元的基本特性,建立了具有邏輯演算功能的神經(jīng)元模型以及這些人工神經(jīng)元互聯(lián)形成的人工神經(jīng)網(wǎng)絡(luò),即所謂的 McCulloch-Pitts 模型。McCulloch-Pitts 模型模型(MP模型)是世界上第一個神經(jīng)計算模型,即人工神經(jīng)系統(tǒng)。MP模型1943,神經(jīng)生理學(xué)家 McCulloch 和數(shù)學(xué)家 Pitts 基于早期神經(jīng)元學(xué)說,歸納總結(jié)了生物神經(jīng)元的基本特性,建立了具有邏

10、輯演算功能的神經(jīng)元模型以及這些人工神經(jīng)元互聯(lián)形成的人工神經(jīng)網(wǎng)絡(luò),即所謂的 McCulloch-Pitts 模型。McCulloch-Pitts 模型模型(MP模型)是世界上第一個神經(jīng)計算模型,即人工神經(jīng)系統(tǒng)。13.2人工神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)結(jié)構(gòu) 13.2.1人工神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)如圖13-2, 是 神經(jīng)元的輸出,它可與其他神經(jīng)元通過權(quán)連接: 分別指與第 個神經(jīng)元連接的其它神經(jīng)元的輸出; 分別是指其他神經(jīng)元與第 個神經(jīng)元聯(lián)接的權(quán)值;iyi1,.,.,jnuuui1,.,.,ijiniwwwif(x)是作用函數(shù)(Activation Function),也稱激發(fā)函數(shù)。MP神經(jīng)元模型中的作用函

11、數(shù)為單位階躍函數(shù):1,0( )0,0 xf xx可知當神經(jīng)元i的輸入信號加權(quán)和超過閾值時,輸出為“1”,即“興奮”狀態(tài);反之輸出為“0”,是“抑制”狀態(tài)。激發(fā)函數(shù)的基本作用:1.控制輸入對輸出的激活作用;2.對輸入、輸出進行函數(shù)轉(zhuǎn)換;3.將可能無限域的輸入變換成指定的有限范圍內(nèi)的輸出。 13.2.4神經(jīng)網(wǎng)絡(luò)模型神經(jīng)網(wǎng)絡(luò)模型神經(jīng)網(wǎng)絡(luò)模型 神經(jīng)網(wǎng)絡(luò)是由大量的神經(jīng)元互聯(lián)而構(gòu)成的網(wǎng)絡(luò)。根據(jù)網(wǎng)絡(luò)中神經(jīng)元的互聯(lián)方式,常見網(wǎng)絡(luò)結(jié)構(gòu)主要可以分為下面類:(1) 前饋神經(jīng)網(wǎng)絡(luò)前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural Networks )前饋網(wǎng)絡(luò)也稱前向網(wǎng)絡(luò)。這種網(wǎng)絡(luò)只在訓(xùn)練過程會有反饋信號,而在分類過程

12、中數(shù)據(jù)只能向前傳送,直到到達輸出層,層間沒有向后的反饋信號,因此被稱為前饋網(wǎng)絡(luò)。感知機( perceptron)與BP神經(jīng)網(wǎng)絡(luò)就屬于前饋網(wǎng)絡(luò)。圖13-8 中是一個3層的前饋神經(jīng)網(wǎng)絡(luò),其中第一層是輸入單元,第二層稱為隱含層,第三層稱為輸出層(輸入單元不是神經(jīng)元,因此圖中有2層神經(jīng)元)。對于一個3層的前饋神經(jīng)網(wǎng)絡(luò)N,若用X表示網(wǎng)絡(luò)的輸入向量,W1W3表示網(wǎng)絡(luò)各層的連接權(quán)向量,F(xiàn)1F3表示神經(jīng)網(wǎng)絡(luò)3層的激活函數(shù)。對于一個3層的前饋神經(jīng)網(wǎng)絡(luò)N,若用X表示網(wǎng)絡(luò)的輸入向量,W1W3表示網(wǎng)絡(luò)各層的連接權(quán)向量,F(xiàn)1F3表示神經(jīng)網(wǎng)絡(luò)3層的激活函數(shù)。那么神經(jīng)網(wǎng)絡(luò)的第一層神經(jīng)元的輸出為:O1 = F1( XW1 )

13、第二層的輸出為:O2 = F2 ( F1( XW1 ) W2 )輸出層的輸出為:O3 = F3( F2 ( F1( XW1 ) W2 ) W3 )若激活函數(shù)F1F3都選用線性函數(shù),那么神經(jīng)網(wǎng)絡(luò)的輸出O3將是輸入X的線性函數(shù)。因此,若要做高次函數(shù)的逼近就應(yīng)該選用適當?shù)姆蔷€性函數(shù)作為激活函數(shù)。 前饋神經(jīng)網(wǎng)絡(luò)(2) 反饋神經(jīng)網(wǎng)絡(luò)反饋神經(jīng)網(wǎng)絡(luò)(Feedback Neural Networks )反饋型神經(jīng)網(wǎng)絡(luò)是一種從輸出到輸入具有反饋連接的神經(jīng)網(wǎng)絡(luò),其結(jié)構(gòu)比前饋網(wǎng)絡(luò)要復(fù)雜得多。典型的反饋型神經(jīng)網(wǎng)絡(luò)有:Elman網(wǎng)絡(luò)和Hopfield網(wǎng)絡(luò)。反饋神經(jīng)網(wǎng)絡(luò)(3) 自組織網(wǎng)絡(luò)自組織網(wǎng)絡(luò) ( SOM ,Self

14、-Organizing Neural Networks )自組織神經(jīng)網(wǎng)絡(luò)是一種無導(dǎo)師學(xué)習(xí)網(wǎng)絡(luò)。它通過自動尋找樣本中的內(nèi)在規(guī)律和本質(zhì)屬性,自組織、自適應(yīng)地改變網(wǎng)絡(luò)參數(shù)與結(jié)構(gòu)。13.3神經(jīng)網(wǎng)絡(luò)神經(jīng)網(wǎng)絡(luò)的基本學(xué)習(xí)方式和學(xué)習(xí)規(guī)則的基本學(xué)習(xí)方式和學(xué)習(xí)規(guī)則 13.3.1神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)方式神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)方式神經(jīng)網(wǎng)絡(luò)運作過程分為學(xué)習(xí)和工作兩種狀態(tài)。(1)神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)狀態(tài)神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)狀態(tài) 網(wǎng)絡(luò)的學(xué)習(xí)主要是指使用學(xué)習(xí)算法來調(diào)整神經(jīng)元間的聯(lián)接權(quán),使得網(wǎng)絡(luò)輸出更符合實際。學(xué)習(xí)算法分為有導(dǎo)師學(xué)習(xí)有導(dǎo)師學(xué)習(xí)( Supervised Learning )與無導(dǎo)師學(xué)習(xí)無導(dǎo)師學(xué)習(xí)( Unsupervised Learnin

15、g )兩類。有導(dǎo)師學(xué)習(xí)有導(dǎo)師學(xué)習(xí)算法將一組訓(xùn)練集 ( training set )送入網(wǎng)絡(luò),根據(jù)網(wǎng)絡(luò)的實際輸出與期望輸出間的差別來調(diào)整連接權(quán)。有導(dǎo)師學(xué)習(xí)算法的主要步驟包括:1) 從樣本集合中取一個樣本(Ai,Bi);2) 計算網(wǎng)絡(luò)的實際輸出O;3) 求D=Bi-O;4) 根據(jù)D調(diào)整權(quán)矩陣W;5) 對每個樣本重復(fù)上述過程,直到對整個樣本集來說,誤差不超過規(guī)定范圍。BP算法就是一種出色的有導(dǎo)師學(xué)習(xí)算法。無導(dǎo)師學(xué)習(xí)無導(dǎo)師學(xué)習(xí)抽取樣本集合中蘊含的統(tǒng)計特性,并以神經(jīng)元之間的聯(lián)接權(quán)的形式存于網(wǎng)絡(luò)中。Hebb學(xué)習(xí)律是一種經(jīng)典的無導(dǎo)師學(xué)習(xí)算法。(2) 神經(jīng)網(wǎng)絡(luò)的工作狀態(tài)神經(jīng)網(wǎng)絡(luò)的工作狀態(tài) 神經(jīng)元間的連接權(quán)不變

16、,神經(jīng)網(wǎng)絡(luò)作為分類器、預(yù)測器等使用。(3) 無導(dǎo)師學(xué)習(xí)算法:無導(dǎo)師學(xué)習(xí)算法:Hebb學(xué)習(xí)率學(xué)習(xí)率 Hebb算法核心思想是,當兩個神經(jīng)元同時處于激發(fā)狀態(tài)時兩者間的連接權(quán)會被加強,否則被減弱。 為了理解Hebb算法,有必要簡單介紹一下條件反射實驗。巴甫洛夫的條件反射實驗:每次給狗喂食前都先響鈴,時間一長,狗就會將鈴聲和食物聯(lián)系起來。以后如果響鈴但是不給食物,狗也會流口水。巴甫洛夫的條件反射實驗受該實驗的啟發(fā),Hebb的理論認為在同一時間被激發(fā)的神經(jīng)元間的聯(lián)系會被強化。比如,鈴聲響時一個神經(jīng)元被激發(fā),在同一時間食物的出現(xiàn)會激發(fā)附近的另一個神經(jīng)元,那么這兩個神經(jīng)元間的聯(lián)系就會強化,從而記住這兩個事物之

17、間存在著聯(lián)系。相反,如果兩個神經(jīng)元總是不能同步激發(fā),那么它們間的聯(lián)系將會越來越弱。 13.3.2bp神經(jīng)網(wǎng)絡(luò)及神經(jīng)網(wǎng)絡(luò)及matlab實現(xiàn)實現(xiàn)本節(jié)以Fisher的Iris數(shù)據(jù)集作為神經(jīng)網(wǎng)絡(luò)程序的測試數(shù)據(jù)集。Iris數(shù)據(jù)集可以在/wiki/Iris_flower_data_set 找到。這里簡要介紹一下Iris數(shù)據(jù)集:有一批Iris花,已知這批Iris花可分為3個品種,現(xiàn)需要對其進行分類。不同品種的Iris花的花萼長度、花萼寬度、花瓣長度、花瓣寬度會有差異。我們現(xiàn)有一批已知品種的Iris花的花萼長度、花萼寬度、花瓣長度、花瓣寬度的數(shù)據(jù)。一種解決方法是用已

18、有的數(shù)據(jù)訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)用作分類器。1. 數(shù)據(jù)預(yù)處理數(shù)據(jù)預(yù)處理 在訓(xùn)練神經(jīng)網(wǎng)絡(luò)前一般需要對數(shù)據(jù)進行預(yù)處理,一種重要的預(yù)處理手段是歸一化處理。下面簡要介紹歸一化處理的原理與方法。(1) 什么是歸一化?什么是歸一化? 數(shù)據(jù)歸一化,就是將數(shù)據(jù)映射到0,1或-1,1區(qū)間或更小的區(qū)間,比如(0.1,0.9) 。(2) 為什么要歸一化處理?為什么要歸一化處理? 輸入數(shù)據(jù)的單位不一樣,有些數(shù)據(jù)的范圍可能特別大,導(dǎo)致的結(jié)果是神經(jīng)網(wǎng)絡(luò)收斂慢、訓(xùn)練時間長。數(shù)據(jù)范圍大的輸入在模式分類中的作用可能會偏大,而數(shù)據(jù)范圍小的輸入作用就可能會偏小。由于神經(jīng)網(wǎng)絡(luò)輸出層的激活函數(shù)的值域是有限制的,因此需要將網(wǎng)絡(luò)訓(xùn)練的目標數(shù)據(jù)映射

19、到激活函數(shù)的值域。例如神經(jīng)網(wǎng)絡(luò)的輸出層若采用S形激活函數(shù),由于S形函數(shù)的值域限制在(0,1),也就是說神經(jīng)網(wǎng)絡(luò)的輸出只能限制在(0,1),所以訓(xùn)練數(shù)據(jù)的輸出就要歸一化到0,1區(qū)間。S形激活函數(shù)在(0,1)區(qū)間以外區(qū)域很平緩,區(qū)分度太小。例如S形函數(shù)f(X)在參數(shù)a=1時,f(100)與f(5)只相差0.0067。(3) 歸一化算法歸一化算法 一種簡單而快速的歸一化算法是線性轉(zhuǎn)換算法。線性轉(zhuǎn)換算法常見有兩種形式: y = ( x - min )/( max - min )其中min為x的最小值,max為x的最大值,輸入向量為x,歸一化后的輸出向量為y 。上式將數(shù)據(jù)歸一化到 0 , 1 區(qū)間,當激

20、活函數(shù)采用S形函數(shù)時(值域為(0,1))時這條式子適用。 y = 2 * ( x - min ) / ( max - min ) - 1這條公式將數(shù)據(jù)歸一化到 -1 , 1 區(qū)間。當激活函數(shù)采用雙極S形函數(shù)(值域為(-1,1))時這條式子適用。(4) Matlab數(shù)據(jù)歸一化處理函數(shù)數(shù)據(jù)歸一化處理函數(shù) Matlab中歸一化處理數(shù)據(jù)可以采用premnmx , postmnmx , tramnmx 這3個函數(shù)。 premnmx語法:pn,minp,maxp,tn,mint,maxt = premnmx(p,t)pn: p矩陣按行歸一化后的矩陣minp,maxp:p矩陣每一行的最小值,最大值tn:t矩

21、陣按行歸一化后的矩陣mint,maxt:t矩陣每一行的最小值,最大值作用:將矩陣p,t歸一化到-1,1 ,主要用于歸一化處理訓(xùn)練數(shù)據(jù)集。 tramnmx語法:pn = tramnmx(p,minp,maxp)參數(shù):minp,maxp:premnmx函數(shù)計算的矩陣的最小,最大值pn:歸一化后的矩陣作用:主要用于歸一化處理待分類的輸入數(shù)據(jù)。 13.3.4神經(jīng)網(wǎng)絡(luò)模型神經(jīng)網(wǎng)絡(luò)模型神經(jīng)網(wǎng)絡(luò)模型 神經(jīng)網(wǎng)絡(luò)是由大量的神經(jīng)元互聯(lián)而構(gòu)成的網(wǎng)絡(luò)。根據(jù)網(wǎng)絡(luò)中神經(jīng)元的互聯(lián)方式,常見網(wǎng)絡(luò)結(jié)構(gòu)主要可以分為下面類:(1) 前饋神經(jīng)網(wǎng)絡(luò)前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural Networks )前饋網(wǎng)絡(luò)也稱前向

22、網(wǎng)絡(luò)。這種網(wǎng)絡(luò)只在訓(xùn)練過程會有反饋信號,而在分類過程中數(shù)據(jù)只能向前傳送,直到到達輸出層,層間沒有向后的反饋信號,因此被稱為前饋網(wǎng)絡(luò)。感知機( perceptron)與BP神經(jīng)網(wǎng)絡(luò)就屬于前饋網(wǎng)絡(luò)。圖13-8 中是一個3層的前饋神經(jīng)網(wǎng)絡(luò),其中第一層是輸入單元,第二層稱為隱含層,第三層稱為輸出層(輸入單元不是神經(jīng)元,因此圖中有2層神經(jīng)元)。對于一個3層的前饋神經(jīng)網(wǎng)絡(luò)N,若用X表示網(wǎng)絡(luò)的輸入向量,W1W3表示網(wǎng)絡(luò)各層的連接權(quán)向量,F(xiàn)1F3表示神經(jīng)網(wǎng)絡(luò)3層的激活函數(shù)。 postmnmx語法: p,t = postmnmx(pn,minp,maxp,tn,mint,maxt)參數(shù):minp,maxp:pr

23、emnmx函數(shù)計算的p矩陣每行的最小值,最大值mint,maxt:premnmx函數(shù)計算的t矩陣每行的最小值,最大值作用:將矩陣pn,tn映射回歸一化處理前的范圍。postmnmx函數(shù)主要用于將神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果映射回歸一化前的數(shù)據(jù)范圍。(2) train函數(shù)函數(shù)網(wǎng)絡(luò)訓(xùn)練學(xué)習(xí)函數(shù)。語法: net, tr, Y1, E = train( net, X, Y )。參數(shù):X:網(wǎng)絡(luò)實際輸入。Y:網(wǎng)絡(luò)應(yīng)有輸出。tr:訓(xùn)練跟蹤信息。Y1:網(wǎng)絡(luò)實際輸出。E:誤差矩陣。(4) Matlab BP網(wǎng)絡(luò)實例網(wǎng)絡(luò)實例 我將Iris數(shù)據(jù)集分為2組,每組各75個樣本,每組中每種花各有25個樣本。其中一組作為以上程序的訓(xùn)

24、練樣本,另外一組作為檢驗樣本。為了方便訓(xùn)練,將3類花分別編號為1,2,3 。使用這些數(shù)據(jù)訓(xùn)練一個4輸入(分別對應(yīng)4個特征),3輸出(分別對應(yīng)該樣本屬于某一品種的可能性大?。┑那跋蚓W(wǎng)絡(luò)。Matlab程序如下:%讀取訓(xùn)練數(shù)據(jù)f1,f2,f3,f4,class = textread(trainData.txt , %f%f%f%f%f,150);%特征值歸一化input,minI,maxI = premnmx( f1 , f2 , f3 , f4 ) ;%構(gòu)造輸出矩陣s = length( class) ;output = zeros( s , 3 ) ;for i = 1 : s output(

25、i , class( i ) ) = 1 ;end%創(chuàng)建神經(jīng)網(wǎng)絡(luò)net = newff( minmax(input) , 10 3 , logsig purelin , traingdx ) ; %設(shè)置訓(xùn)練參數(shù)net.trainparam.show = 50 ;net.trainparam.epochs = 500 ;net.trainparam.goal = 0.01 ;net.trainParam.lr = 0.01 ;%開始訓(xùn)練net = train( net, input , output ) ;%讀取測試數(shù)據(jù)t1 t2 t3 t4 c = textread(testData.txt

26、, %f%f%f%f%f,150);%測試數(shù)據(jù)歸一化testInput = tramnmx ( t1,t2,t3,t4 , minI, maxI ) ;%仿真Y = sim( net , testInput ) %統(tǒng)計識別正確率s1 , s2 = size( Y ) ;hitNum = 0 ;for i = 1 : s2 m , Index = max( Y( : , i ) ) ; if( Index = c(i) ) hitNum = hitNum + 1 ; endendsprintf(識別率是 %3.3f%,100 * hitNum / s2 )以上程序的識別率穩(wěn)定在以上程序的識別率穩(wěn)

27、定在95%左右,訓(xùn)練左右,訓(xùn)練100次左右達到收斂。次左右達到收斂。(5)參數(shù)設(shè)置對神經(jīng)網(wǎng)絡(luò)性能的影響參數(shù)設(shè)置對神經(jīng)網(wǎng)絡(luò)性能的影響 我在實驗中通過調(diào)整隱含層節(jié)點數(shù),選擇不通過的激活函數(shù),設(shè)定不同的學(xué)習(xí)率, 隱含層節(jié)點個數(shù)隱含層節(jié)點個數(shù) 隱含層節(jié)點的個數(shù)對于識別率的影響并不大,但是節(jié)點個數(shù)過多會增加運算量,使得訓(xùn)練較慢。 激活函數(shù)的選擇激活函數(shù)的選擇 激活函數(shù)無論對于識別率或收斂速度都有顯著的影響。在逼近高次曲線時,S形函數(shù)精度比線性函數(shù)要高得多,但計算量也要大得多。 學(xué)習(xí)率的選擇學(xué)習(xí)率的選擇 學(xué)習(xí)率影響著網(wǎng)絡(luò)收斂的速度,以及網(wǎng)絡(luò)能否收斂。學(xué)習(xí)率設(shè)置偏小可以保證網(wǎng)絡(luò)收斂,但是收斂較慢。相反,學(xué)習(xí)

28、率設(shè)置偏大則有可能使網(wǎng)絡(luò)訓(xùn)練不收斂,影響識別效果。%仿真Y = sim( net , testInput ) %統(tǒng)計識別正確率s1 , s2 = size( Y ) ;hitNum = 0 ;for i = 1 : s2 m , Index = max( Y( : , i ) ) ; if( Index = c(i) ) hitNum = hitNum + 1 ; endendsprintf(識別率是 %3.3f%,100 * hitNum / s2 )以上程序的識別率穩(wěn)定在以上程序的識別率穩(wěn)定在95%左右,訓(xùn)練左右,訓(xùn)練100次左右達到收斂。次左右達到收斂。3. 使用使用AForge.NET

29、實現(xiàn)神經(jīng)網(wǎng)絡(luò)實現(xiàn)神經(jīng)網(wǎng)絡(luò)(1) AForge.NET簡介簡介 AForge.NET是一個C#實現(xiàn)的面向人工智能、計算機視覺等領(lǐng)域的開源架構(gòu)。AForge.NET源代碼下的Neuro目錄包含一個神經(jīng)網(wǎng)絡(luò)的類庫。(2)使用使用Aforge建立建立BP神經(jīng)網(wǎng)絡(luò)神經(jīng)網(wǎng)絡(luò) 使用AForge建立BP神經(jīng)網(wǎng)絡(luò)會用到下面的幾個類: SigmoidFunction : S形神經(jīng)網(wǎng)絡(luò)構(gòu)造函數(shù):public SigmoidFunction( double alpha )參數(shù)alpha決定S形函數(shù)的陡峭程度。 ActivationNetwork:神經(jīng)網(wǎng)絡(luò)類構(gòu)造函數(shù):public ActivationNetwork(

30、IActivationFunction function, int inputsCount, params int neuronsCount ): base( inputsCount, neuronsCount.Length )public virtual double Compute( double input )參數(shù)意義:inputsCount:輸入個數(shù)neuronsCount:表示各層神經(jīng)元個數(shù) BackPropagationLearning:BP學(xué)習(xí)算法構(gòu)造函數(shù):public BackPropagationLearning( ActivationNetwork network )參數(shù)意

31、義:network :要訓(xùn)練的神經(jīng)網(wǎng)絡(luò)對象BackPropagationLearning類需要用戶設(shè)置的屬性有下面2個:learningRate :學(xué)習(xí)率momentum :沖量因子下面給出一個用AForge構(gòu)建BP網(wǎng)絡(luò)的代碼。/ 創(chuàng)建一個多層神經(jīng)網(wǎng)絡(luò),采用S形激活函數(shù),各層分別有4,5,3個神經(jīng)元/(其中4是輸入個數(shù),3是輸出個數(shù),5是中間層結(jié)點個數(shù))ActivationNetwork network = new ActivationNetwork( new SigmoidFunction(2), 4, 5, 3);/ 創(chuàng)建訓(xùn)練算法對象BackPropagationLearning teac

32、her = newBackPropagationLearning(network);/ 設(shè)置BP算法的學(xué)習(xí)率與沖量系數(shù)teacher.LearningRate = 0.1;teacher.Momentum = 0;int iteration = 1 ; / 迭代訓(xùn)練500次while( iteration 500 ) teacher.RunEpoch( trainInput , trainOutput ) ; +iteration ;/使用訓(xùn)練出來的神經(jīng)網(wǎng)絡(luò)來分類,t為輸入數(shù)據(jù)向量network.Compute(t)0例例1 采用動量梯度下降算法訓(xùn)練采用動量梯度下降算法訓(xùn)練 BP 網(wǎng)絡(luò)。網(wǎng)絡(luò)。

33、訓(xùn)練樣本定義如下:輸入矢量為 p =-1 -2 3 1 -1 1 5 -3目標矢量為 t = -1 -1 1 1解:本例的 MATLAB 程序如下: close all clear echo on clc % NEWFF生成一個新的前向神經(jīng)網(wǎng)絡(luò) % TRAIN對 BP 神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練 13.4神經(jīng)元神經(jīng)元網(wǎng)絡(luò)算法實例網(wǎng)絡(luò)算法實例% SIM對 BP 神經(jīng)網(wǎng)絡(luò)進行仿真 pause % 敲任意鍵開始 clc % 定義訓(xùn)練樣本 % P 為輸入矢量 P=-1, -2, 3, 1; -1, 1, 5, -3;% T 為目標矢量 T=-1, -1, 1, 1; pause; clc % 創(chuàng)建一個新的前向神

34、經(jīng)網(wǎng)絡(luò) net=newff(minmax(P),3,1,tansig,purelin,traingdm)% 當前輸入層權(quán)值和閾值 inputWeights=net.IW1,1 inputbias=net.b1 % 當前網(wǎng)絡(luò)層權(quán)值和閾值 layerWeights=net.LW2,1 layerbias=net.b2 pause clc % 設(shè)置訓(xùn)練參數(shù) net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.mc = 0.9; net.trainParam.epochs = 1000; net.trainParam.g

35、oal = 1e-3; pause clc % 調(diào)用 TRAINGDM 算法訓(xùn)練 BP 網(wǎng)絡(luò) net,tr=train(net,P,T); pause clc % 對 BP 網(wǎng)絡(luò)進行仿真 A = sim(net,P) % 計算仿真誤差 E = T - A MSE=mse(E) pause clc echo off例例2 采用提前停止方法提高 BP 網(wǎng)絡(luò)的推廣能力。對于和例 2相同的問題,在本例中我們將采用訓(xùn)練函數(shù) traingdx 和提前停止相結(jié)合的方法來訓(xùn)練 BP 網(wǎng)絡(luò),以提高 BP 網(wǎng)絡(luò)的推廣能力。 解:在利用提前停止方法時,首先應(yīng)分別定義訓(xùn)練樣本、驗證樣本或測試樣本,其中,驗證樣本是必不

36、可少的。在本例中,我們只定義并使用驗證樣本,即有 驗證樣本輸入矢量:val.P = -0.975:.05:0.975 驗證樣本目標矢量:val.T = sin(2*pi*val.P)+0.1*randn(size(val.P) 值得注意的是,盡管提前停止方法可以和任何一種 BP 網(wǎng)絡(luò)訓(xùn)練函數(shù)一起使用,但是不適合同訓(xùn)練速度過快的算法聯(lián)合使用,比如 trainlm 函數(shù),所以本例中我們采用訓(xùn)練速度相對較慢的變學(xué)習(xí)速率算法 traingdx 函數(shù)作為訓(xùn)練函數(shù)。本例的 MATLAB 程序如下:close all clear echo on clc % NEWFF生成一個新的前向神經(jīng)網(wǎng)絡(luò) % TRAIN

37、對 BP 神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練 % SIM對 BP 神經(jīng)網(wǎng)絡(luò)進行仿真 pause % 敲任意鍵開始 clc % 定義訓(xùn)練樣本矢量 % P 為輸入矢量 P = -1:0.05:1; % T 為目標矢量 randn(seed,78341223); T = sin(2*pi*P)+0.1*randn(size(P); % 繪制訓(xùn)練樣本數(shù)據(jù)點 plot(P,T,+); echo off hold on; clc pause clc % 定義驗證樣本 val.P = -0.975:0.05:0.975; % 驗證樣本的輸入矢量 val.T = sin(2*pi*val.P)+0.1*randn(size(val.P); % 驗證樣本的目標矢量 pause clc % 創(chuàng)建一個新的前向神經(jīng)網(wǎng)絡(luò) net=newff(minmax(P),5,1,tansig,purelin,traingdx); pause clc % 設(shè)置訓(xùn)練參數(shù) net.trainParam.epochs = 50

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論