第一篇:關于神經(jīng)網(wǎng)絡歸一化的討論
數(shù)據(jù)歸一化處理
1.我有一個問題不太明白,神經(jīng)網(wǎng)絡在訓練時,先對數(shù)據(jù)進行歸一化處理,按照常理訓練完之后應該對數(shù)據(jù)再進行反歸一化啊,可是再很多資料上根本就看不出有反歸一化這個步驟,而且很多時候訓練效果不是很好。請問,哪個大俠能幫幫我啊
2.看一下MATLAB里的premnmx函數(shù)和postmnmx函數(shù).它們一個是歸一一個是反歸一
3.并不是歸一化的數(shù)據(jù)訓練效果就好
4.我也遇到過類似的問題,有篇論文就是用postmnmx函數(shù).效果不好可能是樣本數(shù)據(jù)不太準.5.可以采用標準化PRESTD,效果很好。
6.樣本數(shù)據(jù)和測試數(shù)據(jù)是否放在一起歸一化?
7.應該將樣本數(shù)據(jù)和測試數(shù)據(jù)放在一起歸一化,不然如果測試數(shù)據(jù)中有的值比樣本數(shù)據(jù)最大值還大,豈不是超過1了?
神經(jīng)網(wǎng)絡訓練的時候,應該考慮極值情況,即歸一化的時候要考慮你所需要識別參數(shù)的極值,以極值作分母,這樣可能效果更好一點。
8.激發(fā)函數(shù)如果選用的是倒s型函數(shù),應不存在歸一化的問題吧
9.我想問大家一下:在神經(jīng)網(wǎng)絡中,只有一個函數(shù)即:purelin這個函數(shù)對訓練的輸出數(shù)據(jù)不用歸一化,而象logsig 和tansig函數(shù)都要歸一化(如果數(shù)據(jù)范圍不在[-1,1]或[0,1]之間).那既然用purelin函數(shù)可以不用歸一化,為何又是還用歸一化呢?
用神經(jīng)網(wǎng)絡里的PRESTD, PREPCA, POSTMNMX, TRAMNMX等函數(shù)歸一化和直接用purelin這個函數(shù)有什么區(qū)別啊? 我作負荷預測時,象不用歸一化的效果很好呀!
10.purelin沒有作歸一化啊,你用logsig 和tansig作為神經(jīng)元激勵函數(shù),輸出范圍自然限制在[-1,1]或
[0,1]之間了
11.我所知道的關于歸一化:
歸一化化定義:我是這樣認為的,歸一化化就是要把你需要處理的數(shù)據(jù)經(jīng)過處理后(通過某種算法)限制在你需要的一定范圍內。首先歸一化是為了后面數(shù)據(jù)處理的方便,其次是保正程序運行時收斂加快。在matlab里面,用于歸一化的方法共有三中,(1)premnmx、postmnmx、tramnmx(2)prestd、poststd、trastd(3)是用matlab語言自己編程。premnmx指的是歸一到[-1 1],prestd歸一到單位方差和零均值。
(3)關于自己編程一般是歸一到[0.1 0.9]。具體用法見下面實例。
為什么要用歸一化?
為什么要用歸一化呢?首先先說一個概念,叫做奇異樣本數(shù)據(jù),所謂奇異樣本數(shù)據(jù)數(shù)據(jù)指的是相對于 其他輸入樣本特別大或特別小的樣本矢量。
下面舉例:
m=[0.11 0.15 0.32 0.45 30;
0.13 0.24 0.27 0.25 45];
其中的第五列數(shù)據(jù)相對于其他4列數(shù)據(jù)就可以成為奇異樣本數(shù)據(jù)(下面所說的網(wǎng)絡均值bp)。奇異樣本數(shù)據(jù)存在所引起的網(wǎng)絡訓練時間增加,并可能引起網(wǎng)絡無法收斂,所以對于訓練樣本存在奇異樣本數(shù)據(jù)的數(shù)據(jù)集在訓練之前,最好先進形歸一化,若不存在奇異樣本數(shù)據(jù),則不需要事先歸一化。
具體舉例:
close all
clear
echo on
clc
%BP建模
%原始數(shù)據(jù)歸一化
m_data=[1047.92 1047.83 0.39 0.39 1.0 3500 5075;
1047.83 1047.68 0.39 0.40 1.0 3452 4912;
1047.68 1047.52 0.40 0.41 1.0 3404 4749;
1047.52 1047.27 0.41 0.42 1.0 3356 4586;
1047.27 1047.41 0.42 0.43 1.0 3308 4423;
1046.73 1046.74 1.70 1.80 0.75 2733 2465;
1046.74 1046.82 1.80 1.78 0.75 2419 2185;
1046.82 1046.73 1.78 1.75 0.75 2105 1905;
1046.73 1046.48 1.75 1.85 0.70 1791 1625;
1046.48 1046.03 1.85 1.82 0.70 1477 1345;
1046.03 1045.33 1.82 1.68 0.70 1163 1065;
1045.33 1044.95 1.68 1.71 0.70 849 785;
1044.95 1045.21 1.71 1.72 0.70 533 508;
1045.21 1045.64 1.72 1.70 0.70 567 526;
1045.64 1045.44 1.70 1.69 0.70 601 544;
1045.44 1045.78 1.69 1.69 0.70 635 562;
1045.78 1046.20 1.69 1.52 0.75 667 580];
%定義網(wǎng)絡輸入p和期望輸出t
pause
clc
p1=m_data(:,1:5);
t1=m_data(:,6:7);
p=p1';t=t1';
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t)
%設置網(wǎng)絡隱單元的神經(jīng)元數(shù)(5~30驗證后5個最好)
n=5;
%建立相應的BP網(wǎng)絡
pause
clc
net=newff(minmax(pn),[n,2],{'tansig','purelin'},'traingdm');
inputWeights=net.IW{1,1};
inputbias=net.b{1};
layerWeights=net.IW{1,1};
layerbias=net.b{2};
pause
clc
% 訓練網(wǎng)絡
net.trainParam.show=50;
net.trainParam.lr=0.05;
net.trainParam.mc=0.9;
net.trainParam.epochs=200000;
net.trainParam.goal=1e-3;
pause
clc
%調用TRAINGDM算法訓練BP網(wǎng)絡
net=train(net,pn,tn);
%對BP網(wǎng)絡進行仿真
A=sim(net,pn);
E=A-tn;
M=sse(E)
N=mse(E)
pause
clc
p2=[1046.20 1046.05 1.52 1.538 0.75;
1046.05 1046.85 1.538 1.510 0.75;
1046.85 1046.60 1.510 1.408 0.75;
1046.60 1046.77 1.408 1.403 0.75;
1046.77 1047.18 1.403 1.319 0.75];
p2=p2';
p2n=tramnmx(p2,minp,maxp);
a2n=sim(net,p2n);
a2=postmnmx(a2n,mint,maxt)
echo off
pause
clc
程序說明:所用樣本數(shù)據(jù)(見m_data)包括輸入和輸出數(shù)據(jù),都先進行歸一化,還有一個問題就是你要進行預測的樣本數(shù)據(jù)(見本例p2)在進行仿真前,必須要用tramnmx函數(shù)進行事先歸一化處理,然后才能用于預測,最后的仿真結果要用postmnmx進行反歸一,這時的輸出數(shù)據(jù)才是您所需要的預測結果。
個人認為:tansig、purelin、logsig是網(wǎng)絡結構的傳遞函數(shù),本身和歸一化沒什么直接關系,歸一化只是一種數(shù)據(jù)預處理方法。
12.“tansig、purelin、logsig是網(wǎng)絡結構的傳遞函數(shù),本身和歸一化沒什么直接關系,歸一化只是一種數(shù)據(jù)預處理方法”,說的有問題,若用premnmx將輸入輸出歸一化,其輸出值在[-1,1]之間,若輸出層傳函為logsig 則無論怎么訓練,輸出值都不可能在[-1,1]之間.13.我感覺如果激發(fā)函數(shù)是S型函數(shù),應該不用規(guī)一化處理,但是效果不如規(guī)一化處理的好,不知道為什么?
14.我認為有可能是數(shù)據(jù)太大或太多,將其歸一化之后,有利于快速的調整神經(jīng)網(wǎng)絡的網(wǎng)絡結構,或者如同terry2008所說存在奇異值也肯定有影響。
當然,效果好就選誰!
15.如果輸入數(shù)據(jù)中含有頻率、幅值、相位以及其他一些不同類型的數(shù)據(jù),需要對他們進行什么處理,才能用于網(wǎng)絡的訓練?只是簡單的歸一化就行嗎?
16.如果數(shù)據(jù)的維數(shù)太多,可以考慮用prepca進行主元分析,不知道silvercx所說的簡單的歸一化是什么意思?我現(xiàn)在還不知道其他預處理方法?什么事都得試一下,試過了就知道,你可可以拿出具體問題一起討論!
17.我認為討論之前要搞清一個數(shù)學問題,就是每種激勵函數(shù)的定義域和值域,我們都知道tansig的定義域是任意實數(shù),值域為(-1,1)、purelin定義域和值域都是任意實數(shù)、logsig定義域任意實數(shù),值域是(0,1)。
所以在具體實際中使用用事先考慮好這個問題,logsig的值域是(0,1),當然不可能使輸出在(-1,1)
了。
我所說的:“tansig、purelin、logsig是網(wǎng)絡結構的傳遞函數(shù),本身和歸一化沒什么直接關系,歸一化只是一種數(shù)據(jù)預處理方法”,我并沒說沒有間接關系。
18.如果輸入樣本的數(shù)據(jù)組成為In=[頻率;幅值;相位]
我只用premnmx對In進行歸一化,訓練BP網(wǎng)絡,得到一個目標輸出Out,其數(shù)據(jù)組成也為Out=[頻率;幅值;相位]。這樣子可以嗎?總覺得把不同類型的數(shù)據(jù)放一起有點不妥。
19.完全可以,不過在輸入數(shù)據(jù)和輸出數(shù)據(jù)啊安排上可能要以時間序列的方式來安排。例如,用第1,2,3,4時刻的數(shù)據(jù)預測第5時刻的數(shù)據(jù),用第2,3,4,5時刻的數(shù)據(jù)預測第6時刻的數(shù)據(jù),依次類推,可以組成一定的輸入輸出對,以上只是舉個例子,只是說明這種數(shù)據(jù)組織方法,silvercx 在實際中可以根據(jù)自己的要解決的問題,自己確定,我只是提供一個參考方法。
有問題再討論!
20.目前在我的項目中,我是這樣子來訓練BP網(wǎng)絡的。
在變頻器輸出頻率為45~50Hz之間,采集電機的轉矩(T)、轉速(n)和另外一個目標量(RL)。
然后我對這些數(shù)據(jù)進行FFT變換,得到他們前幾次諧波的幅值和相位。歸一化。然后我利用兩個網(wǎng)絡分別訓練幅值和相位。(下面Am表示幅值,Ph表示相位,即AmT45,表示在45Hz時電機的轉矩前幾次諧波幅值)
網(wǎng)絡1:
in=[AmT45 AmT46 AmT47 AmT48 AmT49 AmT50;
Amn45 Amn46 Amn47 Amn48 Amn49 Amn50;];
out=[AmRL45 AmRL46 AmRL47 AmRL48 AmRL49 AmRL50];
網(wǎng)絡2:
in=[PhT45 PhT46 PhT47 PhT48 PhT49 PhT50;
Phn45 Phn46 Phn47 Phn48 Phn49 Phn50;];
out=[PhRL45 PhRL46 PhRL47 PhRL48 PhRL49 PhRL50];
然后利用所訓練的網(wǎng)絡去測試其他頻率下的數(shù)據(jù)RL。
這樣進行網(wǎng)絡的訓練行不行,還是把幅值和相位放在一個網(wǎng)絡內訓練的效果好?
21.在神經(jīng)網(wǎng)絡BP網(wǎng)的預測中,對數(shù)據(jù)進行歸一化處理,完了輸出再反歸一化。如果是單入單出系統(tǒng)好辦,如果是多入單出系統(tǒng),那么反歸一化時,最大值和最小值怎么確定呢?
22.你可以自己指定,或者使用在訓練網(wǎng)絡時候確定的最大值和最小值
23.請問minmax(p),p是輸入樣本,它的功能是做歸一化嗎,在MATLAB里面.謝謝!
24.我認為,如果各維的數(shù)據(jù)不進行歸一化處理,那么各維對誤差函數(shù)的影響差異會很大。從而會影響學習性能。
不知道對不對?
25.那樣本數(shù)據(jù)測試數(shù)據(jù)預測數(shù)據(jù)期望數(shù)據(jù)要一起進行歸一化嗎?
26.我所知道的關于歸一化:
歸一化化定義:我是這樣認為的,歸一化化就是要把你需要處理的數(shù)據(jù)經(jīng)過處理后(通過某種算法)限制在你需要的一定范圍內。首先歸一化是為了后面數(shù)據(jù)處理的方便,其次是保正程序運行時收斂加快。
在matlab里面,用于歸一化的方法共有三中,(1)premnmx、postmnmx、tramnmx(2)prestd、poststd、trastd(3)是用matlab語言自己編程。premnmx指的是歸一到[-1 1],prestd歸一到單位方差和零均值。
(3)關于自己編程一般是歸一到[0.1 0.9]。具體用法見下面實例。
為什么要用歸一化?
為什么要用歸一化呢?首先先說一個概念,叫做奇異樣本數(shù)據(jù),所謂奇異樣本數(shù)據(jù)數(shù)據(jù)指的是相對于 其他輸入樣本特別大或特別小的樣本矢量。
下面舉例:
m=[0.11 0.15 0.32 0.45 30;
0.13 0.24 0.27 0.25 45];
其中的第五列數(shù)據(jù)相對于其他4列數(shù)據(jù)就可以成為奇異樣本數(shù)據(jù)(下面所說的網(wǎng)絡均值bp)。奇異樣本數(shù)據(jù)存在所引起的網(wǎng)絡訓練時間增加,并可能引起網(wǎng)絡無法收斂,所以對于訓練樣本存在奇異樣本數(shù)據(jù)的數(shù)據(jù)集在訓練之前,最好先進形歸一化,若不存在奇異樣本數(shù)據(jù),則不需要事先歸一化。
具體舉例:
程序說明:所用樣本數(shù)據(jù)(見m_data)包括輸入和輸出數(shù)據(jù),都先進行歸一化,還有一個問題就是你要進行預測的樣本數(shù)據(jù)(見本例p2)在進行仿真前,必須要用tramnmx函數(shù)進行事先歸一化處理,然后才能用于預測,最后的仿真結果要用postmnmx進行反歸一,這時的輸出數(shù)據(jù)才是您所需要的預測結果。
個人認為:tansig、purelin、logsig是網(wǎng)絡結構的傳遞函數(shù),本身和歸一化沒什么直接關系,歸一化只是一種數(shù)據(jù)預處理方法。
你好,我用了你的歸一化方法,但當p2數(shù)據(jù)取比這些數(shù)大很多的值時,好像就不行了,出現(xiàn)了這樣的問題,是不是數(shù)值超出了最大值的原因?我用的是GRNN網(wǎng)絡
Warning: Divide by zero.> In normprod at 73
In calca at 119
In network.sim at 204
In xgi at 60
a2=postmnmx(a2n,mint,maxt)
a2 =
Columns 1 through 9
1602 1602 NaN NaN NaN NaN NaN NaN NaN
Column 10
NaN
29.而且預測值受樣本期望輸出的最大值限制,30.這個問題我提出來很多天了,為什么沒有人表示意見呢,是這個問題本身就是神經(jīng)網(wǎng)絡的BUG,還是,我走的路偏了,對神經(jīng)網(wǎng)絡本質誤解所致,大家多多指教阿,我在這等很久了呀!
非常不好意思,請教一問題:
31.利用歸一化后的數(shù)據(jù)建了BP網(wǎng)絡,但最后預測值在反歸一化前卻超出了[-1,+1],不知問題出在哪?
32.小波神經(jīng)網(wǎng)絡對于時間序列預測在文獻上報道得神乎其神,據(jù)稱預測精度相對偏差平均達5%以下。鄙人嘗試后認為,小波神經(jīng)網(wǎng)絡只是加快了收斂速度,而預測精度決定于問題本身,很多數(shù)據(jù)預測結果并不能達到以上效果。歡迎各位仁兄討論改進方法。
33.有個問題:歸一化的時候我認為應該考慮數(shù)據(jù)的物理含義
34.為什么我的簡單的歸一化程序總是錯的?謝各位大蝦指點
p=[1520 510 5.155 33.88;1468 521 5.321 35.79;
.......共5行]';
t=[0.7 1.9;0.6 1.798;.....共10行]';
for i=1:4
P(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));就是這行總說有錯,到底是程序錯還是軟件不好??
end
此程序出自<神經(jīng)網(wǎng)絡理論與MATLAB7實現(xiàn)>,第269頁,類似的歸一化在我機子里都說不對,急死了,等畢業(yè)呢.35.不要用這個歸一化啊,換函數(shù)premnmx試試
36.為什么要歸一化?
神經(jīng)網(wǎng)絡輸入的一維代表一個特征,當神經(jīng)網(wǎng)絡的輸入是多維時,要識別的模式有多個特征,當這多個特征的數(shù)據(jù)相差很大,如幾個數(shù)量級時,就需要歸一化,變成相同數(shù)量級,以防某些數(shù)值低的特征被淹沒。
第二篇:神經(jīng)網(wǎng)絡應用
神經(jīng)網(wǎng)絡是新技術領域中的一個時尚詞匯。很多人聽過這個詞,但很少人真正明白它是什么。本文的目的是介紹所有關于神經(jīng)網(wǎng)絡的基本包括它的功能、一般結構、相關術語、類型及其應用。
“神經(jīng)網(wǎng)絡”這個詞實際是來自于生物學,而我們所指的神經(jīng)網(wǎng)絡正確的名稱應該是“人工神經(jīng)網(wǎng)絡(ANNs)”。在本文,我會同時使用這兩個互換的術語。
一個真正的神經(jīng)網(wǎng)絡是由數(shù)個至數(shù)十億個被稱為神經(jīng)元的細胞(組成我們大腦的微小細胞)所組成,它們以不同方式連接而型成網(wǎng)絡。人工神經(jīng)網(wǎng)絡就是嘗試模擬這種生物學上的體系結構及其操作。在這里有一個難題:我們對生物學上的神經(jīng)網(wǎng)絡知道的不多!因此,不同類型之間的神經(jīng)網(wǎng)絡體系結構有很大的不同,我們所知道的只是神經(jīng)元基本的結構。
The neuron
雖然已經(jīng)確認在我們的大腦中有大約50至500種不同的神經(jīng)元,但它們大部份都是基于基本神經(jīng)元的特別細胞?;旧窠?jīng)元包含有synapses、soma、axon及dendrites。Synapses負責神經(jīng)元之間的連接,它們不是直接物理上連接的,而是它們之間有一個很小的空隙允許電子訊號從一個神經(jīng)元跳到另一個神經(jīng)元。然后這些電子訊號會交給soma處理及以其內部電子訊號將處理結果傳遞給axon。而axon會將這些訊號分發(fā)給dendrites。最后,dendrites帶著這些訊號再交給其它的synapses,再繼續(xù)下一個循環(huán)。
如同生物學上的基本神經(jīng)元,人工的神經(jīng)網(wǎng)絡也有基本的神經(jīng)元。每個神經(jīng)元有特定數(shù)量的輸入,也會為每個神經(jīng)元設定權重(weight)。權重是對所輸入的資料的重要性的一個指標。然后,神經(jīng)元會計算出權重合計值(net value),而權重合計值就是將所有輸入乘以它們的權重的合計。每個神經(jīng)元都有它們各自的臨界值(threshold),而當權重合計值大于臨界值時,神經(jīng)元會輸出1。相反,則輸出0。最后,輸出會被傳送給與該神經(jīng)元連接的其它神經(jīng)元繼續(xù)剩余的計算。
Learning
正如上述所寫,問題的核心是權重及臨界值是該如何設定的呢?世界上有很多不同的訓練方式,就如網(wǎng)絡類型一樣多。但有些比較出名的包括back-propagation, delta rule及Kohonen訓練模式。
由于結構體系的不同,訓練的規(guī)則也不相同,但大部份的規(guī)則可以被分為二大類別它們可以被分為分類式或聯(lián)想式。分類式網(wǎng)絡可以接受一組數(shù),然后將其分類。例如ONR程序接受一個數(shù)字的影象而輸出這個數(shù)字?;蛘逷PDA32程序接受一個坐標而將它分類成A類或B類(類別是由所提供的訓練決定的)。更多實際用途可以看Applications in the Military中的軍事雷達,該雷達可以分別出車輛或樹。
聯(lián)想模式接受一組數(shù)而輸出另一組。例如HIR程序接受一個?臟?圖像而輸出一個它所學過而最接近的一個圖像。聯(lián)想模式更可應用于復雜的應用程序,如簽名、面部、指紋識別等。
The Ups and Downs of Neural Networks
神經(jīng)網(wǎng)絡在這個領域中有很多優(yōu)點,使得它越來越流行。它在類型分類/識別方面非常出色。神經(jīng)網(wǎng)絡可以處理例外及不正常的輸入數(shù)據(jù),這對于很多系統(tǒng)都很重要(例如雷達及聲波定位系統(tǒng))。很多神經(jīng)網(wǎng)絡都是模仿生物神經(jīng)網(wǎng)絡的,即是他們仿照大腦的運作方式工作。神經(jīng)網(wǎng)絡也得助于神經(jīng)系統(tǒng)科學的發(fā)展,使它可以像人類一樣準確地辨別物件而有電腦的速度!前途是光明的,但現(xiàn)在...是的,神經(jīng)網(wǎng)絡也有些不好的地方。這通常都是因為缺乏足夠強大的硬件。神經(jīng)網(wǎng)絡的力量源自于以并行方式處理資訊,即是同時處理多項數(shù)據(jù)。因此,要一個串行的機器模擬并行處理是非常耗時的。
神經(jīng)網(wǎng)絡的另一個問題是對某一個問題構建網(wǎng)絡所定義的條件不足-有太多因素需要考慮:訓練的算法、體系結構、每層的神經(jīng)元個數(shù)、有多少層、數(shù)據(jù)的表現(xiàn)等,還有其它更多因素。因此,隨著時間越來越重要,大部份公司不可能負擔重復的開發(fā)神經(jīng)網(wǎng)絡去有效地解決問題。
NN 神經(jīng)網(wǎng)絡,Neural Network
ANNs 人工神經(jīng)網(wǎng)絡,Artificial Neural Networks
neurons 神經(jīng)元
synapses 神經(jīng)鍵
self-organizing networks 自我調整網(wǎng)絡
networks modelling thermodynamic properties 熱動態(tài)性網(wǎng)絡模型
網(wǎng)格算法我沒聽說過
好像只有網(wǎng)格計算這個詞
網(wǎng)格計算是伴隨著互聯(lián)網(wǎng)技術而迅速發(fā)展起來的,專門針對復雜科學計算的新型計算模式。這種計算模式是利用互聯(lián)網(wǎng)把分散在不同地理位置的電腦組織成一個“虛擬的超級計算機”,其中每一臺參與計算的計算機就是一個“節(jié)點”,而整個計算是由成千上萬個“節(jié)點”組成的“一張網(wǎng)格”,所以這種計算方式叫網(wǎng)格計算。這樣組織起來的“虛擬的超級計算機”有兩個優(yōu)勢,一個是數(shù)據(jù)處理能力超強;另一個是能充分利用網(wǎng)上的閑置處理能力。簡單地講,網(wǎng)格是把整個網(wǎng)絡整合成一臺巨大的超級計算機,實現(xiàn)計算資源、存儲資源、數(shù)據(jù)資源、信息資源、知識資源、專家資源的全面共享。
第三篇:神經(jīng)網(wǎng)絡心得[定稿]
人工神經(jīng)網(wǎng)絡學習心得
時間如白馬過隙,很快八周的人工神經(jīng)網(wǎng)絡學習即將結束,仿佛昨天才剛剛開始學習這門課程,在這段時間的學習中,我有起初對神經(jīng)網(wǎng)絡的不了解到現(xiàn)在的熟悉和掌握,這其中的變化,是我知識提高的過程。我在這個過程中有一些自己的體會和感想。
我是一名學習控制科學和工程的研究生,起初對于神經(jīng)網(wǎng)絡的認識很膚淺,由于我相應知識的欠缺,想要理解神經(jīng)網(wǎng)絡的結構會很不容易。在開始的幾節(jié)課中,老師給我們講了神經(jīng)網(wǎng)絡的發(fā)展史、結構和原理,當時感覺有壓力、緊張。因為我感覺和生物的神經(jīng)學差不多,一開始接觸覺得它不是一門智能控制學,而是一門生物學,所以只能慢慢學習和理解,最終完成課程的學習。雖然相比于其他學過的課程,我對這門學科的了解稍微遜色點,但我還不是一個害怕困難的人,越是困難我越是會迎頭前進的,不會倒下,去努力掌握這些知識。
接下來的幾周,是老師的授課過程,說實話老師講的論文我聽的不太懂,講的軟件的應用也是一知半解……有種痛苦的感覺,好像什么也沒學到,問了其他同學,他們也有同樣的感覺,哦,原來都一樣啊,沒事,那就繼續(xù)堅持吧……
過了這個彷徨期,該是吶喊的時候了,該寫期末作業(yè)了,開始做題的時候還挺緊張,害怕題很難做,找了很多資料,照葫蘆畫瓢,硬著頭皮寫,寫完了之后有一點小小的成就感,我終于給做出來了,可當時我們還是不知道如RBF網(wǎng)絡和BP網(wǎng)絡怎么應用,只是有那么點熟悉,有那么點感覺。最重要的時刻到了,在課堂中老師提的問題,我顯得是那么生疏,滿臉的惆悵,對問題不知所措,迷茫與疲憊纏繞著我的身心。每次上課之前我都要花上一段時間去預習課程內容,但是每次看的都是一臉迷茫,一知半解。老師所說的每一句話,我要想半天才會明白過來。這事我猜知道,基礎是多么的重要,而且我知道學習知識最重要的是要學會應用和實踐。不然就只能只上談兵,但是一到應用我就不知從何下手。因此,我知道我還有很長的路要走。
其中的辛酸與樂趣大概也只有一塊學習的學友們了解。在這近兩個月中我們體會到了堅持的力量。遇到問題,不能退縮,只能前進。堅持就是勝利。問題只有在不斷的思考和學習中才能解決。同時,也能是自己得到提高。
經(jīng)過幾周的的學習我對神經(jīng)網(wǎng)絡的理解能力明顯有所提高。在神經(jīng)網(wǎng)絡中我們可以用跳躍性的思維去思考問題,這鍛煉了我們的跨越式思維,提高了我們的能力,增強了我們的自信心,在人生道路上選擇的關鍵時刻起了很大的作用,讓我們明白了獨立思考,開闊眼界,在科研方面所發(fā)揮的重要作用,使我們“學以致用,終生受益。
在此,我們要感謝授課的李曉強老師,謝謝李老師在這近兩個月來對我們的關心。通過這八周的學習,鍛煉了我的能力;增加了對人工神經(jīng)網(wǎng)絡知識的了解;提高了創(chuàng)新意識和解決問題的能力。
第四篇:BP神經(jīng)網(wǎng)絡實驗報告
BP神經(jīng)網(wǎng)絡實驗報告
一、實驗目的1、熟悉MATLAB中神經(jīng)網(wǎng)絡工具箱的使用方法;
2、通過在MATLAB下面編程實現(xiàn)BP網(wǎng)絡逼近標準正弦函數(shù),來加深對BP網(wǎng)絡的了解和認識,理解信號的正向傳播和誤差的反向傳遞過程。
二、實驗原理
由于傳統(tǒng)的感知器和線性神經(jīng)網(wǎng)絡有自身無法克服的缺陷,它們都不能解決線性不可分問題,因此在實際應用過程中受到了限制。而BP網(wǎng)絡卻擁有良好的繁泛化能力、容錯能力以及非線性映射能力。因此成為應用最為廣泛的一種神經(jīng)網(wǎng)絡。
BP算法的基本思想是把學習過程分為兩個階段:第一階段是信號的正向傳播過程;輸入信息通過輸入層、隱層逐層處理并計算每個單元的實際輸出值;第二階段是誤差的反向傳遞過程;若在輸入層未能得到期望的輸出值,則逐層遞歸的計算實際輸出和期望輸出的差值(即誤差),以便根據(jù)此差值調節(jié)權值。這種過程不斷迭代,最后使得信號誤差達到允許或規(guī)定的范圍之內。
基于BP算法的多層前饋型網(wǎng)絡模型的拓撲結構如上圖所示。
BP算法的數(shù)學描述:三層BP前饋網(wǎng)絡的數(shù)學模型如上圖所示。三層前饋網(wǎng)中,輸入向量為:;隱層輸入向量為:;輸出層輸出向量為:;期望輸出向量為:。輸入層到隱層之間的權值矩陣用V表示,其中列向量為隱層第j個神經(jīng)元對應的權向量;隱層到輸出層之間的權值矩陣用W表示,其中列向量為輸出層第k個神經(jīng)元對應的權向量。
下面分析各層信號之間的數(shù)學關系。
對于輸出層,有
對于隱層,有
以上兩式中,轉移函數(shù)f(x)均為單極性Sigmoid函數(shù):
f(x)具有連續(xù)、可導的特點,且有
以上共同構成了三層前饋網(wǎng)了的數(shù)學模型。
當網(wǎng)絡輸出和期望輸出不相等時,存在輸出誤差E如下:
將以上誤差定義式展開至隱層,有
進一步展開至輸入層,有
由上式可以看出,網(wǎng)絡輸入誤差是兩層權值W和V的函數(shù),因此調整權值可以改變誤差E。
顯然,調整權值的原則是使誤差不斷的減小,因此應使權值的調整量與誤差的負梯度成正比,即:
式中負號表示梯度下降,常數(shù)表示比例系數(shù),在訓練中反映了學習速率。
容易看出,BP學習算法中,各層權值調整公式形式上都是一樣的,均有3個因素決定,即:學習速率、本層誤差信號和本層輸入信號X/Y。其中輸出層誤差信號同網(wǎng)絡的期望輸出與實際輸出之差有關,直接反映了輸出誤差,而各隱層的誤差信號與前面各層的誤差信號都有關,是從輸出層開始逐層反傳過來的。
三、程序
clc
clear
all
k=1;
n=10;
P=[-1:0.05:1];
T=sin(k*pi*P);
plot(P,T,'-');
title('要逼近的非線性函數(shù)');
xlabel('輸入向量');
ylabel('非線性函數(shù)目標輸出向量');
net=newff(minmax(P),[n,1],{'tansig','purelin'},'trainlm');
y1=sim(net,P);
net.trainParam.epochs=50;
net.trainParam.goal=0.01;
net=train(net,P,T);
y2=sim(net,P);
figure;
plot(P,T,'-',P,y1,'--',P,y2,'*');
title('訓練前后的網(wǎng)絡仿真結果對比');
xlabel('輸入向量');
ylabel('輸出向量');
legend('目標函數(shù)輸出向量','未訓練BP網(wǎng)絡輸出','已訓練BP網(wǎng)絡輸出');
仿真結果如下圖:
由仿真結果圖可以看出,未經(jīng)訓練的BP網(wǎng)絡輸出與目標函數(shù)差距很大,逼近效果不理想,而對BP網(wǎng)絡訓練之后的輸出可以較精確的逼近目標函數(shù),并且BP網(wǎng)絡的訓練迭代次數(shù)僅約1.2次,網(wǎng)絡的輸出目標誤差就達到了精度要求,收斂速度很快。函數(shù)逼近效果、網(wǎng)絡訓練的收斂速度與原始非線性函數(shù)的頻率、BP網(wǎng)絡隱含層單元神經(jīng)元的數(shù)目以及BP網(wǎng)絡訓練函數(shù)有關。
四、實驗結論
通過編程實現(xiàn)使用BP網(wǎng)絡對函數(shù)進行逼近,對BP網(wǎng)絡的信號和誤差傳遞的原理以及隱層、輸出層權值調整的規(guī)則有了充分的理解和認識。
BP網(wǎng)絡是一個強大的工具,它是應用最為廣泛的網(wǎng)絡。用于文字識別、模式分類、文字到聲音的轉換、圖像壓縮、決策支持等。
但是,通過實驗看出,它還是存在一定的不足。由于本實驗中采用的學習率是固定不變的,從而使得在函數(shù)逼近的時候在有些地方出現(xiàn)了偏離,如果能自適應的調整學習率,使網(wǎng)絡在學習初期具有較大的學習率,以快速逼近函數(shù),當已經(jīng)逼近理想輸出時再使用較小的學習率,來更加精準的去逼近函數(shù),這樣會得到更好的逼近效果和更小的錯誤率。
另外,BP網(wǎng)絡還具有收斂速度慢、容易陷入局部極小值的問題。這些問題通過對標準BP算法的改進能得到一定程度的解決。
第五篇:BP神經(jīng)網(wǎng)絡優(yōu)缺點
多層前向BP網(wǎng)絡是目前應用最多的一種神經(jīng)網(wǎng)絡形式, 但它也不是非常完美的, 為了更好的理解應用神經(jīng)網(wǎng)絡進行問題求解, 這里對它的優(yōu)缺點展開討論: 多層前向BP網(wǎng)絡的優(yōu)點:
①網(wǎng)絡實質上實現(xiàn)了一個從輸入到輸出的映射功能,而數(shù)學理論已證明它具有實現(xiàn)任何復雜非線性映射的功能。這使得它特別適合于求解內部機制復雜的問題;
②網(wǎng)絡能通過學習帶正確答案的實例集自動提取“合理的”求解規(guī)則,即具有自學習能力; ③網(wǎng)絡具有一定的推廣、概括能力。多層前向BP網(wǎng)絡的問題:
①BP算法的學習速度很慢,其原因主要有:
a 由于BP算法本質上為梯度下降法,而它所要優(yōu)化的目標函數(shù)又非常復雜,因此,必然會出現(xiàn)“鋸齒形現(xiàn)象”,這使得BP算法低效;
b 存在麻痹現(xiàn)象,由于優(yōu)化的目標函數(shù)很復雜,它必然會在神經(jīng)元輸出接近0或1的情況下,出現(xiàn)一些平坦區(qū),在這些區(qū)域內,權值誤差改變很小,使訓練過程幾乎停頓;
c 為了使網(wǎng)絡執(zhí)行BP算法,不能用傳統(tǒng)的一維搜索法求每次迭代的步長,而必須把步長的更新規(guī)則預先賦予網(wǎng)絡,這種方法將引起算法低效。
②網(wǎng)絡訓練失敗的可能性較大,其原因有:
a 從數(shù)學角度看,BP算法為一種局部搜索的優(yōu)化方法,但它要解決的問題為求解復雜非線性函數(shù)的全局極值,因此,算法很有可能陷入局部極值,使訓練失??;
b 網(wǎng)絡的逼近、推廣能力同學習樣本的典型性密切相關,而從問題中選取典型樣本實例組成訓練集是一個很困難的問題。
③難以解決應用問題的實例規(guī)模和網(wǎng)絡規(guī)模間的矛盾。這涉及到網(wǎng)絡容量的可能性與可行性的關系問題,即學習復雜性問題;
④網(wǎng)絡結構的選擇尚無一種統(tǒng)一而完整的理論指導,一般只能由經(jīng)驗選定。為此,有人稱神經(jīng)網(wǎng)絡的結構選擇為一種藝術。而網(wǎng)絡的結構直接影響網(wǎng)絡的逼近能力及推廣性質。因此,應用中如何選擇合適的網(wǎng)絡結構是一個重要的問題;
⑤新加入的樣本要影響已學習成功的網(wǎng)絡,而且刻畫每個輸入樣本的特征的數(shù)目也必須相同; ⑥網(wǎng)絡的預測能力(也稱泛化能力、推廣能力)與訓練能力(也稱逼近能力、學習能力)的矛盾。一般情況下,訓練能力差時,預測能力也差,并且一定程度上,隨訓練能力地提高,預測能力也提高。但這種趨勢有一個極限,當達到此極限時,隨訓練能力的提高,預測能力反而下降,即出現(xiàn)所謂“過擬合”現(xiàn)象。此時,網(wǎng)絡學習了過多的樣本細節(jié),而不能反映樣本內含的規(guī)律。優(yōu)點——
神經(jīng)網(wǎng)絡有很強的非線性擬合能力,可映射任意復雜的非線性關系,而且學習規(guī)則簡單,便于計算機實現(xiàn)。具有很強的魯棒性、記憶能力、非線性映射能力以及強大的自學習能力,因此有很大的應用市場。
缺點——
(1)最嚴重的問題是沒能力來解釋自己的推理過程和推理依據(jù)。
(2)不能向用戶提出必要的詢問,而且當數(shù)據(jù)不充分的時候,神經(jīng)網(wǎng)絡就無法進行工作。
(3)把一切問題的特征都變?yōu)閿?shù)字,把一切推理都變?yōu)閿?shù)值計算,其結果勢必是丟失信息。
(4)理論和學習算法還有待于進一步完善和提高。