人工神經(jīng)網(wǎng)絡(luò)發(fā)展史
20世紀(jì)40年代初,神經(jīng)生物學(xué)家、心理學(xué)家W.S.Mcculloch與青年數(shù)理邏輯學(xué)家W.Pitts合作,從人腦信息處理觀點(diǎn)出發(fā),采用數(shù)理模型的方法,研究了腦細(xì)胞的動作和結(jié)構(gòu)及其生物神經(jīng)元的一些基本生理特性,他們提出了第一個神經(jīng)計算模型,即神經(jīng)元的閾值元件模型,簡稱MP模型,他們認(rèn)識到模擬大腦可用于邏輯運(yùn)行的網(wǎng)絡(luò),由一些節(jié)點(diǎn),及節(jié)點(diǎn)與節(jié)點(diǎn)之間相互聯(lián)系,構(gòu)成一個簡單的神經(jīng)網(wǎng)絡(luò)模型。
數(shù)學(xué)家Kleene在此基礎(chǔ)上抽象成一種有限自動機(jī)理論。
1948年,控制論的創(chuàng)始人之一Wiener出版了著名專著《Cybernetics》,探討了動物和機(jī)器的控制和通信問題,他在1961年增補(bǔ)了兩章內(nèi)容,主要討論學(xué)習(xí)和自生殖問題,他選擇機(jī)器學(xué)習(xí)下棋問題作為研究對象,對腦電波與自組織系統(tǒng)進(jìn)行了探索。
MP模型是促使Neumann電子計算機(jī)誕生的重要因素之一,Neumann研究了自我繁衍自動機(jī),而且證明了至少存在一種確實(shí)能夠自我繁衍的分子自動機(jī)模型,1966年他提出了元胞自動機(jī),可用來模擬生命系統(tǒng)所具有的自我復(fù)制功能,還可以用來模擬其他的自然現(xiàn)象。但有很多元胞自動機(jī)也不一定對某個連續(xù)系統(tǒng)的離散化描述得好。于是,Neumann又設(shè)想了一種新的基于自動機(jī)理、自然和人工智能知識的計算機(jī)。
此外,數(shù)學(xué)家Turing建立了通用計算機(jī)的抽象模型,他和Post都證明了一個重要定理:原則上存在著一種“萬能自動機(jī)”,它能識別任何自動機(jī)能夠識別的符號串。Turing機(jī)理論,為帶有存儲程序的計算機(jī)的形式程序語言的發(fā)明提供了理論框架,使人們對于大腦和計算機(jī)之間的類似性的信念進(jìn)一步加強(qiáng)了。
1949年神經(jīng)生物學(xué)家Hebb的論著《The Organization of behavior》,對大腦神經(jīng)細(xì)胞、學(xué)習(xí)與條件反射作了大膽的假設(shè),被稱為Hebb學(xué)習(xí)規(guī)則。
20世紀(jì)50年代初,神經(jīng)網(wǎng)絡(luò)理論具備了初步模擬實(shí)驗(yàn)的條件。Rochester,Holland與IBM公司的研究人員合作,通過網(wǎng)絡(luò)吸取經(jīng)驗(yàn)來調(diào)節(jié)強(qiáng)度,以這種方式模擬Hebb的學(xué)習(xí)規(guī)則,在IBM701計算機(jī)上運(yùn)行,取得了成功,終于出現(xiàn)了許多突現(xiàn)現(xiàn)象,幾乎有大腦的處理風(fēng)格。最大規(guī)模的神經(jīng)網(wǎng)絡(luò)也只有1000各神經(jīng)元,而每個神經(jīng)元又只有16個結(jié)合點(diǎn)。再往下做試驗(yàn),便受到計算機(jī)的限制。
Hebb的學(xué)習(xí)規(guī)則理論還影響了正在IBM公司實(shí)習(xí)的研究生McCarthy,他參加了IBM公司的一個小組,探討有關(guān)游戲的智能程序,后來他成為人工智能的主要創(chuàng)始人之一。
1952年英國生物學(xué)家Hodgkin和Huxley從生物膜上電離子的遷移闡明神經(jīng)興奮傳導(dǎo)的機(jī)理,它們建立的模型屬于二階偏微分方程,稱為H-H方程。該研究成果具有重大理論及應(yīng)用價值,獲得了諾貝爾生理醫(yī)學(xué)獎。
1954年生理學(xué)家Eccles提出了真實(shí)突觸的分流模型,并通過突觸的電生理實(shí)驗(yàn)得到證實(shí)。其重要意義在于,為神經(jīng)網(wǎng)絡(luò)模擬突觸的功能提供了原型和生理學(xué)的證據(jù)。
1956年Uttlety發(fā)明了一種由處理單元組成的推理機(jī),他稱這種處理單元為信息子(Informon),用推理機(jī)模擬行為及條件反射現(xiàn)象。
1958年計算機(jī)科學(xué)家Rosenblatt基于MP模型,增加了學(xué)習(xí)機(jī)制,推廣了MP模型。他證明了兩層感知器能夠?qū)⑤斎敕譃閮深?,假如這兩種類型是線性并可分的,也就是一個超平面能夠?qū)⑤斎肟臻g分割,其感知器收斂定理:輸入和輸出層之間的權(quán)重的調(diào)節(jié)正比于計算輸出值與期望輸出值之差。他提出的感知器模型,首次把神經(jīng)網(wǎng)絡(luò)理論付諸于工程實(shí)現(xiàn)。
神經(jīng)網(wǎng)絡(luò)是一種計算模型,由大量的節(jié)點(diǎn)(神經(jīng)元)和節(jié)點(diǎn)之間相互連接構(gòu)成。每個節(jié)點(diǎn)代表一種特定的輸出函數(shù),稱為激勵函數(shù)(Activation Function)。每兩個節(jié)點(diǎn)間的連接都代表一個對于通過該連接信號的加權(quán)值,稱為權(quán)重(Weight),這相當(dāng)于人工神經(jīng)網(wǎng)絡(luò)的記憶。網(wǎng)絡(luò)的輸出則依賴于網(wǎng)絡(luò)的連接方式、權(quán)重值和激勵函數(shù)的不同而不同。而網(wǎng)絡(luò)自身通常都是對自然界某種算法或者函數(shù)的逼近,也可能是對一種邏輯策略的表達(dá)。
多層結(jié)構(gòu)的前饋網(wǎng)絡(luò)(Multilayer Feedforward Network)由3部分組成:
輸入層(Input Layer)
輸出層(Output Layer)
隱含層(Hidden Layer):可以有多層,習(xí)慣上用一層。隱含層的節(jié)點(diǎn)數(shù)目前不定,數(shù)目越多神經(jīng)網(wǎng)絡(luò)的非線性越顯著,魯棒性越顯著。
特點(diǎn):
(1) 并行分布式處理
(2) 非線性處理
(3) 自學(xué)習(xí)功能
(4) 聯(lián)想存儲功能、
(5) 高速尋找優(yōu)化解的能力
人工神經(jīng)元模型
一個人工神經(jīng)元網(wǎng)絡(luò)是由一個多層神經(jīng)元結(jié)構(gòu)組成的,每一層神經(jīng)元有輸入和輸出,每一層L(i)由Ni個網(wǎng)絡(luò)神經(jīng)元組成,每個Ni上的網(wǎng)格神經(jīng)元把對應(yīng)在Ni-1上的神經(jīng)元輸出作為它的輸入,我們把神經(jīng)元和與之對應(yīng)的神經(jīng)元之間的連線叫做神經(jīng)軸突的突觸。在數(shù)學(xué)模型中每個突觸有一個加權(quán)數(shù)值,稱作權(quán)重,勢能,激勵函數(shù)。
典型的激活函數(shù)有線性函數(shù)、非線性斜面函數(shù)、閾值函數(shù)、s型函數(shù)4種。
S型函數(shù)之所以應(yīng)用廣泛:
非線性、
處處連續(xù)可導(dǎo)
對信號有一個較好的增益控制,防止網(wǎng)絡(luò)飽和
神經(jīng)網(wǎng)絡(luò)的分類
1、 單層前向網(wǎng)絡(luò):擁有的計算節(jié)點(diǎn)是單層的
2、 多層前向網(wǎng)絡(luò):含有一個或更多的隱含層,其中計算節(jié)點(diǎn)被相應(yīng)地稱為隱含神經(jīng)元或隱含單元。
3、 反饋網(wǎng)絡(luò):在網(wǎng)絡(luò)中至少含有一個反饋回路的神經(jīng)網(wǎng)絡(luò)。反饋網(wǎng)絡(luò)可以包含一個單層神經(jīng)元,其中每個神經(jīng)元將自身的輸出信號反饋給其他所有神經(jīng)元的輸入。
4、 隨機(jī)神經(jīng)網(wǎng)絡(luò):對神經(jīng)網(wǎng)絡(luò)引入隨機(jī)機(jī)制,認(rèn)為神經(jīng)元是按照概率的原理進(jìn)行工作的。即每個神經(jīng)元的興奮或抑制具有隨機(jī)性,其概率取決于神經(jīng)元的輸入。
5、 競爭神經(jīng)網(wǎng)絡(luò):它的輸出神經(jīng)元相互競爭以確定勝者,勝者指出哪一種模式最能代表輸入模式。
第3章 Matlab神經(jīng)網(wǎng)絡(luò)工具箱中的網(wǎng)絡(luò)對象及其屬性
1網(wǎng)絡(luò)對象
Matlab中把定義的神經(jīng)網(wǎng)絡(luò)看做一個對象,對象還包括一些子對象:輸入向量、輸出向量、目標(biāo)向量、權(quán)值向量和閾值向量。對象和子對象共同確定了神經(jīng)網(wǎng)絡(luò)對象的特性。網(wǎng)絡(luò)屬性除了只讀屬性外,均可按照約定的格式和屬性的類型進(jìn)行設(shè)置、修改、引用。引用格式為:
網(wǎng)絡(luò)名.[子對象].屬性
如net.inputs{1}.range=[0 1;0 1] net.layers{1}.size=3; net.layers{1}.transferFCn=’hardlim’
創(chuàng)建一個神經(jīng)網(wǎng)絡(luò)
感知器網(wǎng)絡(luò)用 newp函數(shù) Create a perceptron.
BP網(wǎng)絡(luò)用 newff函數(shù) Create a feed-forward backpropagation network. 創(chuàng)建一個前饋BP網(wǎng)絡(luò)
2網(wǎng)絡(luò)對象屬性 net.xxx
(1) 結(jié)構(gòu)屬性
該屬性決定網(wǎng)絡(luò)子對象的數(shù)目及它們之間的連接關(guān)系。結(jié)構(gòu)屬性值一旦發(fā)生變化,網(wǎng)絡(luò)就會自動重新定義,與之相關(guān)的其他屬性值也會自動更新。
1) numInputs屬性:定義網(wǎng)絡(luò)的輸入源的數(shù)目,設(shè)置為零或正整數(shù)。不等于網(wǎng)絡(luò)輸入層神經(jīng)元的個數(shù)
2) numLayers :網(wǎng)絡(luò)的層數(shù)
3) biasConnect :定義各個網(wǎng)絡(luò)層是否具有閾值向量,其值為Nx1布爾型向量,N為網(wǎng)絡(luò)層數(shù)(net.numLayers)
4) inputConnect 定義各網(wǎng)絡(luò)層是否具有來自各個輸入向量的連接權(quán),其值為NxR布爾型向量,R為網(wǎng)絡(luò)輸入向量維數(shù)(net.layers{1}.size)
5) layerConnect 定義一個網(wǎng)絡(luò)層是否具有來自另外一個網(wǎng)絡(luò)層的連接權(quán),NxN.
6) targetConnect :net.targetConnect定義各網(wǎng)絡(luò)層是否和目標(biāo)向量有關(guān),1xN
7) outputConnect :定義各網(wǎng)絡(luò)層是否作為輸出層
8) targetConnect :定義神經(jīng)網(wǎng)絡(luò)的目標(biāo)層,即網(wǎng)絡(luò)哪些層的輸出具有目標(biāo)矢量。
9) numOutput :定義神經(jīng)網(wǎng)絡(luò)輸出矢量的個數(shù),屬性值為只讀變量,其數(shù)值為網(wǎng)絡(luò)中輸出層總數(shù)(sum(net.outputConnect))
10) numTargets :目標(biāo)矢量的個數(shù)
11) numInputDelays :定義了神經(jīng)網(wǎng)絡(luò)的輸入延遲,屬性值為只讀變量,其數(shù)值為網(wǎng)絡(luò)各輸入層輸入延遲拍數(shù)(net.inputWeights{i,j}.delays)中的最大值
12) numLayerDelays :網(wǎng)絡(luò)的層輸出延遲,……為各層的神經(jīng)元之間連接延遲拍數(shù)(net.LayerWeights{i,j}.delays)中的最大值
(2) 函數(shù)屬性
定義了一個網(wǎng)絡(luò)在進(jìn)行權(quán)值/閾值調(diào)整、初始化、誤差性能計算或訓(xùn)練時采用的算法。
1) adaptFcn屬性
2) performFcn
3) trainFcn
4) initFcn
(3) 參數(shù)屬性
- adaptParam屬性
- initParam
- performParam
- trainParam 定義了網(wǎng)絡(luò)當(dāng)前訓(xùn)練函數(shù)的各參數(shù),其屬性值為各參數(shù)構(gòu)成的結(jié)構(gòu)體
(4) 權(quán)值和閾值屬性
- IW屬性
- LW屬性
- b屬性
- 其他屬性
3網(wǎng)絡(luò)子對象屬性
(1) 輸入向量 net.input{i}.xxx 有 size屬性、range、userdata
(2) 網(wǎng)絡(luò)層 net.layers{i}.xxx :dimensions、distanceFcn、distance屬性只讀、initFcn、netInputFcn、positions、size
(3) 輸出向量 :size、userdata
(4) 目標(biāo)向量net.targets{i}.xxx :size、userdata
(5) 閾值向量 net.biases{i}子對象定義了網(wǎng)絡(luò)的每一個閾值向量:initFcn、learn、learnFcn、learnParam、size、userdata
第4章 神經(jīng)網(wǎng)絡(luò)工具箱函數(shù)
工具箱以神經(jīng)網(wǎng)絡(luò)理論為基礎(chǔ),利用Matlab腳本語言構(gòu)造出典型神經(jīng)網(wǎng)絡(luò)的激活函數(shù),如線性、競爭性和飽和性等激活函數(shù),使設(shè)計者對所選定網(wǎng)絡(luò)輸出的計算變成對激活函數(shù)的調(diào)用。另外,用戶根據(jù)各種典型的修正網(wǎng)絡(luò)權(quán)值的規(guī)則,再加上網(wǎng)絡(luò)的訓(xùn)練過程,利用Matlab可編寫出各種網(wǎng)絡(luò)設(shè)計和訓(xùn)練的子程序。用戶還可以根據(jù)自己的需要去調(diào)用工具箱中有關(guān)的設(shè)計和訓(xùn)練程序,將自己從煩瑣的編程中解脫出來,以集中精力解決其他問題,進(jìn)而提高工作效率。
工具箱包括感知器模型、線性神經(jīng)網(wǎng)絡(luò)、BP神經(jīng)網(wǎng)絡(luò)模型、自組織網(wǎng)絡(luò)模型等
1工具箱中的通用函數(shù)
(1) 神經(jīng)網(wǎng)絡(luò)仿真函數(shù)
sim函數(shù):主要用于對神經(jīng)網(wǎng)絡(luò)進(jìn)行仿真
simulate dynamic system
This MATLAB function causes Simulink software to simulate the block diagram,
model, using parameter name-value pairs ParameterName1, Value1 and
ParameterName2, Value2.
simOut = sim('model', 'ParameterName1',Value1,'ParameterName2', Value2...);
simOut = sim('model', ParameterStruct);
simOut = sim('model', ConfigSet);
(2) 神經(jīng)網(wǎng)絡(luò)訓(xùn)練及學(xué)習(xí)函數(shù)
1) train函數(shù) [net,tr,Y,E,Pf,Af]=train(net,P,T,Pi,Ai) 該函數(shù)通過調(diào)用網(wǎng)絡(luò)訓(xùn)練函數(shù)net.trainFcn并根據(jù)訓(xùn)練函數(shù)net.trainParam對網(wǎng)絡(luò)進(jìn)行訓(xùn)練。在函數(shù)的輸入變量中,net為神經(jīng)網(wǎng)絡(luò)對象;P為網(wǎng)絡(luò)輸入;T為目標(biāo)矢量;Pi為輸入延遲的初始狀態(tài);Ai為層延遲的初始狀態(tài)。返回值中,net為新的網(wǎng)絡(luò);tr為訓(xùn)練記錄;Y為網(wǎng)絡(luò)輸出;E為輸出和目標(biāo)矢量之間的誤差;Pf為訓(xùn)練終止時的輸入延時狀態(tài);Af為訓(xùn)練終止時的層延時狀態(tài)
2) learnp 用于對神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值的學(xué)習(xí)
3) learnpn 用于神經(jīng)網(wǎng)絡(luò)歸一化權(quán)值和閾值的學(xué)習(xí)
(3) 神經(jīng)網(wǎng)絡(luò)初始化函數(shù)
1) init函數(shù) 對神經(jīng)網(wǎng)絡(luò)的參數(shù)進(jìn)行初始化
2) initlay函數(shù) 對層-層結(jié)構(gòu)神經(jīng)網(wǎng)絡(luò)的參數(shù)進(jìn)行初始化
3) initnw 對一個層進(jìn)行初始化
4) initwb 對一個層進(jìn)行初始化
5) revert 將神經(jīng)網(wǎng)絡(luò)中的權(quán)值和閾值恢復(fù)為初始值
(4) 神經(jīng)網(wǎng)絡(luò)輸入函數(shù)
1)netsum函數(shù) :對輸入求和
2)netprod 對輸入數(shù)據(jù)求和
(5) 神經(jīng)網(wǎng)絡(luò)傳遞函數(shù)
- hardlim函數(shù) 硬限幅傳遞函數(shù)
2)hardlims 對稱硬限幅傳遞函數(shù)
3 感知器神經(jīng)網(wǎng)絡(luò)工具箱函數(shù)
(1) 感知器神經(jīng)網(wǎng)絡(luò)創(chuàng)建函數(shù)
newp函數(shù) 創(chuàng)建感知器網(wǎng)絡(luò) net=newp(PR,S,TF,LF)
(2) 感知器神經(jīng)網(wǎng)絡(luò)顯示函數(shù)
- plotpc函數(shù) 在感知器向量中繪制分界線 plotpc(W,B) W為加權(quán)矩陣,B為閾值向量;H為最后畫線的控制權(quán)
- plotpv函數(shù) 繪制輸入向量和目標(biāo)向量 plotpv(P,T) P為輸入向量,T為雙目標(biāo)向量,V為控制圖形的最大范圍
(3) 感知器神經(jīng)網(wǎng)絡(luò)性能函數(shù)
Mae函數(shù) 用于計算輸出量和目標(biāo)量之間的平均絕對誤差
4 BP神經(jīng)網(wǎng)絡(luò)工具箱函數(shù)
(1) BP神經(jīng)網(wǎng)絡(luò)創(chuàng)建函數(shù)
1) newff函數(shù) 用于創(chuàng)建一個前饋BP網(wǎng)絡(luò)
2) newcf 創(chuàng)建一個多層前饋BP網(wǎng)絡(luò)
3) newfftd 創(chuàng)建一個前饋輸入延遲BP網(wǎng)絡(luò)
(2) BP神經(jīng)網(wǎng)絡(luò)傳遞函數(shù)
1)purelin 線性傳遞函數(shù)
2)tansig 線性傳遞函數(shù)
3)logsig 對數(shù)型傳遞函數(shù)
(3) BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)函數(shù)
1) learngd 梯度下降學(xué)習(xí)函數(shù) 通過神經(jīng)元的輸入和誤差、權(quán)值和閾值的學(xué)習(xí)速率來計算權(quán)值或閾值的變化率
2) learngdm 梯度下降動量學(xué)習(xí)函數(shù),通過神經(jīng)元。。。
(4) BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練函數(shù)
1) trainbfg 準(zhǔn)牛頓BP算法函數(shù)
2) traingd 梯度下降的BP算法訓(xùn)練函數(shù)
3) traingdm 梯度下降動量的BP算法訓(xùn)練函數(shù)
(5) BP神經(jīng)網(wǎng)絡(luò)性能函數(shù)
1) mse 計算均方誤差,用來計算輸出量和目標(biāo)量之間的均方誤差。
2) msereg 加權(quán)均方根誤差函數(shù),通過兩個因子加權(quán)來評價網(wǎng)絡(luò)的性能,這兩個因子分別是均方誤差、均方權(quán)值和閾值
(6) BP神經(jīng)網(wǎng)絡(luò)顯示函數(shù)
1) plotperf 函數(shù) 用于繪制網(wǎng)絡(luò)性能,還可以繪制性能目標(biāo)、確認(rèn)性能和檢驗(yàn)性能
2) plotes 繪制單獨(dú)神經(jīng)元的誤差曲面
3) plotep 繪制權(quán)值和閾值在誤差曲面上的位置
4) errsurf 用于計算單個神經(jīng)元的誤差曲面
5 線性神經(jīng)網(wǎng)絡(luò)工具箱函數(shù)
(1) 線性神經(jīng)網(wǎng)絡(luò)創(chuàng)建函數(shù)和設(shè)計函數(shù)
1) newlin 創(chuàng)建一個線性層。線性層通常用做信號處理和預(yù)測中的自適應(yīng)濾波器
2) newlind 用于設(shè)計一個線性層
(2) 學(xué)習(xí)函數(shù)
1) learnwh Widrow-Hoff的學(xué)習(xí)函數(shù),實(shí)現(xiàn)輸出誤差的平方和最小功能
2) maxlinlr 計算線性層的最大學(xué)習(xí)速率
6 自組織競爭神經(jīng)網(wǎng)絡(luò)工具箱函數(shù)
7 徑向基神經(jīng)網(wǎng)絡(luò)工具箱函數(shù)
8 反饋神經(jīng)網(wǎng)絡(luò)工具箱函數(shù)
(1) Hopfield網(wǎng)絡(luò)的工具箱函數(shù)
- newhop 用于設(shè)計一個Hopfield反饋網(wǎng)絡(luò) net=newhop net=newhop(T)
- satlins 用于Hopfield網(wǎng)絡(luò)的飽和線性傳遞函數(shù)
(2) Elman 網(wǎng)絡(luò)的工具箱函數(shù)
1) newelm函數(shù) 設(shè)計一個Elman反饋網(wǎng)絡(luò)
第5章 感知器
1 感知器神經(jīng)網(wǎng)絡(luò)原理及模型
感知器是一種模仿生物感知器機(jī)制、用于模式識別的簡單神經(jīng)網(wǎng)絡(luò)。由美國學(xué)者F.Rosenblatt于1956年提出 單層感知器的傳遞函數(shù)為強(qiáng)限幅傳遞函數(shù)hardlim
重要定理
對于單層感知器,如果輸入的兩類模式是線性可分集合,那么學(xué)習(xí)算法一定收斂,感知器一定可以成功地將兩類模式進(jìn)行正確的分類。也就是說,如果輸入的兩類模式并非線性可分時,感知器就不能進(jìn)行有效的分類。
單層感知器的缺點(diǎn)是只能解決線性可分的分類模式問題,采用多層網(wǎng)絡(luò)結(jié)構(gòu)可以增強(qiáng)網(wǎng)絡(luò)的分類能力,即在輸入層與輸出層之間增加一個隱含層,從而構(gòu)成多層感知器(Multilayer Perceptrons,MLP)。由輸入層、隱含層(可以是一層或多層)和輸出層構(gòu)成的神經(jīng)網(wǎng)絡(luò)稱為多層前向神經(jīng)網(wǎng)絡(luò)。MLP的每個神經(jīng)元為單個非線性并聯(lián)計算單元。
第6章 線性神經(jīng)網(wǎng)絡(luò)
線性網(wǎng)絡(luò)采用最小均方誤差(Least Mean Square,LMS)算法學(xué)習(xí)規(guī)則,并且其傳輸函數(shù)為一線性函數(shù)。雖然它同感知器一樣,只能解決線性可分問題,但比感知器要強(qiáng)大得多。感知器規(guī)則能保證將訓(xùn)練模式收斂到一個可正確分類的解上,但得到的網(wǎng)絡(luò)對噪聲敏感;而LMS算法使均方誤差最小化,從而使網(wǎng)絡(luò)的判定邊界盡量遠(yuǎn)離訓(xùn)練模式。