生活随笔
收集整理的這篇文章主要介紹了
Elman神经网络介绍以及Matlab实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Elman神經網絡介紹
1.特點
Elman神經網絡是一種典型的動態遞歸神經網絡,它是在BP網絡基本結構的基礎上,在隱含層增加一個承接層,作為一步延時算子,達到記憶的目的,從而使系統具有適應時變特性的能力,增強了網絡的全局穩定性,它比前饋型神經網絡具有更強的計算能力,還可以用來解決快速尋優問題。
2.結構
Elman神經網絡是應用較為廣泛的一種典型的反饋型神經網絡模型。一般分為四層:輸入層、隱層、承接層和輸出層。其輸入層、隱層和輸出層的連接類似于前饋網絡。輸入層的單元僅起到信號傳輸作用,輸出層單元起到加權作用。隱層單元有線性和非線性兩類激勵函數,通常激勵函數取Signmoid非線性函數。而承接層則用來記憶隱層單元前一時刻的輸出值,可以認為是一個有一步遲延的延時算子。隱層的輸出通過承接層的延遲與存儲,自聯到隱層的輸入,這種自聯方式使其對歷史數據具有敏感性,內部反饋網絡的加入增加了網絡本身處理動態信息的能力,從而達到動態建模的目的。其結構圖如下圖1所示,
其網絡的數學表達式為:
其中,y為m維輸出節點向量;x為n維中間層節點單元向量;u為r維輸入向量;為n維反饋狀態向量;為中間層到輸出層連接權值;為輸入層到中間層連接權值;為承接層到中間層連接權值;g()為輸出神經元的傳遞函數,是中間層輸出的線性組合;f()為中間層神經元的傳遞函數,常采用S函數。
3.與BP網絡的區別
它是動態反饋型網絡,它能夠內部反饋、存儲和利用過去時刻輸出信息,既可以實現靜態系統的建模,還能實現動態系統的映射并直接反應系統的動態特性,在計算能力及網絡穩定性方面都比BP神經網絡更勝一籌。
4.缺點
與BP神經網絡一樣,算法都是采用基于梯度下降法,會出現訓練速度慢和容易陷入局部極小點的缺點,對神經網絡的訓練較難達到全局最優。
基于Matlab實現Elman神經網絡
在MATLAB中,Elman神經網絡可以通過調用newelm()實現。
**例子:**利用Elman神經網絡實現MATLAB的數據預測。
%輸入數據
P=[3.2 3.2 3 3.2 3.2 3.4 3.2 3 3.2 3.2;
9.6 10.3 9 10.3 10.1 10 9.6 9 9.6 9.2;
3.45 3.75 3.5 3.65 3.5 3.4 3.55 3.5 3.55 3.5;
2.15 2.2 2.2 2.2 2 2.15 2.14 2.1 2.1 2.1;
140 120 140 150 80 130 130 100 130 140;
2.8 3.4 3.5 2.8 1.5 3.2 3.5 1.8 3.5 2.5;
11 10.9 11.4 10.8 11.3 11.5 11.8 11.3 11.8 11;
50 70 50 80 50 60 65 40 65 50 ]; %訓練數據
T=[2.24 2.33 2.24 2.32 2.2 2.27 2.2 2.26 2.2 2.24];%訓練輸出實際值
TestInput=[3.2 3.9 3.1 3.2 3.0;
9.5 9 9.5 9.7 9.3;
3.4 3.1 3.6 3.45 3.3;
2.15 2 2.1 2.15 2.05;
115 80 90 130 100;
2.8 2.2 2.7 2.6 2.8;
11.9 13 11.1 10.85 11.2;
50 50 70 70 50];%測試數據
TestOutput=[2.24 2.2 2.2 2.35 2.2]; %測試輸出實際值[pn,minp,maxp,tn,mint,maxt]=premnmx(P,T);
p2= tramnmx(TestInput,minp,maxp);
%創建Elman神經網絡
net_1 = newelm(minmax(pn),[8,1],{'tansig','purelin'},'traingdm'); %設置訓練參數
net_1.trainParam.show = 50;
net_1.trainParam.lr = 0.01;
net_1.trainParam.mc = 0.9;
net_1.trainParam.epochs =10000;
net_1.trainParam.goal = 1e-3;
net=init(net_1);%初始化網絡
%訓練網絡
net = train(net,pn,tn);
%使用訓練好的網絡,自定義輸入
PN = sim(net,p2);
TestResult= postmnmx(PN,mint,maxt);%仿真值反歸一化
%理想輸出與訓練輸出的結果進行比較
E =TestOutput - TestResult
%計算誤差
MSE=mse(E);%計算均方誤差
figure(1)
plot(TestOutput,'bo-');
hold on;
plot(TestResult,'r*--');
legend('真實值','預測值');
save('Elman.mat','net');
運行結果如下:
誤差結果為:
E =[0.48% 0.40% 0.12% 9.47% 2.28%]
平均誤差為:2.55%
轉載請標明出處,謝謝!。
如果感覺本文對您有幫助,請留下您的贊,您的支持是我堅持寫作最大的動力,謝謝!
總結
以上是生活随笔為你收集整理的Elman神经网络介绍以及Matlab实现的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。