BP算法的具體實現(xiàn)_第1頁
BP算法的具體實現(xiàn)_第2頁
BP算法的具體實現(xiàn)_第3頁
BP算法的具體實現(xiàn)_第4頁
BP算法的具體實現(xiàn)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

BP算法的具體實現(xiàn)實驗?zāi)康暮投鄬忧跋蚓W(wǎng)絡(luò)工作原理實驗?zāi)康模和ㄟ^實驗了解多層前向網(wǎng)絡(luò)的工作原理;通過實驗掌握多層前向網(wǎng)絡(luò)用于字符識別的基本原理與方法;通過上機實驗掌握BP算法的具體實現(xiàn)和神經(jīng)網(wǎng)絡(luò)工具箱中相關(guān)函數(shù)的使用。多層前向網(wǎng)絡(luò)工作原理:網(wǎng)絡(luò)結(jié)構(gòu)單隱層前向網(wǎng)絡(luò)多層前向網(wǎng)絡(luò)的一般層(第層結(jié)構(gòu)())激活函數(shù)隱層:1.Sigmoid激活函數(shù)2.對稱的Sigmoid激活函數(shù)。輸出層:分類問題時,選取Sigmoid或?qū)ΨQSigmoid作為激活函數(shù);函數(shù)逼近問題時,輸出層神經(jīng)元選取線性激活函數(shù)。BP算法(1)初始化:選擇很小的隨機數(shù)初始化權(quán)值和閾值,如。(2)前向計算(第k步),,,其中.(3)后向計算(第k步)對于(4)更新權(quán)值和閾值,動量BP算法最速下降法的鋸齒現(xiàn)象是導致BP算法收斂速度慢的主要原因。為了克服這種震蕩現(xiàn)象,加快收斂速度,一個經(jīng)典的解決辦法是:使用低通濾波器來平滑震蕩。低通濾波器(IIR)考慮下面的一階濾波器,其中,是濾波器的輸入,是濾波器的輸出,是動量常數(shù),滿足.對上式兩邊同時進行離散時間Fourier變換,有,。顯然,有,(當動量常數(shù)接近1時)。因此,上述濾波器是一個低通濾波器。動量BP算法其中實際使用1)權(quán)值和閾值的初始化選擇很小的隨機數(shù):如取中均勻分布的隨機數(shù),目的是避免網(wǎng)絡(luò)的節(jié)點飽和,從而大大減少網(wǎng)絡(luò)所需的訓練次數(shù)。2)隱層神經(jīng)元個數(shù)的選擇網(wǎng)絡(luò)隱層神經(jīng)元個數(shù)太少,通常導致欠擬合,而網(wǎng)絡(luò)隱層神經(jīng)元個數(shù)太多,通常導致過擬合,使網(wǎng)絡(luò)缺乏泛化能力3)訓練的停止準則(1)給定迭代次數(shù);(2)停止:,其中為第次迭代后對應(yīng)所有訓練樣本的均方誤差;(3)交叉確定法(Cross-Validation法)圖中繪出了分別對應(yīng)于training集、validation集和test集的誤差下降曲線。使用交叉確認法的停止規(guī)則是:當訓練集的誤差曲線下降曲線與確認的誤差曲線下降曲線相背離時,則停止訓練。從圖中的test集的誤差下降曲線可以看出,這種停止準則的有效性。問題描述字符識別是模式識別的一個重要的研究方向,在很多領(lǐng)域有著廣泛的應(yīng)用。本試驗考慮設(shè)計一個多層前向網(wǎng)絡(luò)用于二十六個英文字母的識別。在計算機中,字符或圖像均可用位圖形式描述。圖1給出了字母A的位圖形式,如果用1表示,其余元素用0表示,則字母A可以用一個如下的矩陣表示圖1字母A的位圖圖2含噪字母A的位圖.如果將上述矩陣按行拉直,則得到字母A的理想特征向量表示,即.用同樣的方式,可以定義其它所有26個英文字母的理想特征向量,以作為多層前向網(wǎng)絡(luò)的輸入向量。26個英文字母每個字母對應(yīng)的神經(jīng)網(wǎng)絡(luò)的目標輸出,用一個26維的向量表示,例如,字母A、B的目標輸出分別為其它字母依次類推。26個英文字母的理想特征向量及其所對應(yīng)的目標輸出,可通過調(diào)用”prprob”函數(shù)得到,位圖可使用”plotchar”畫出。利用多層前向網(wǎng)絡(luò)進行字符識別,就是通過設(shè)計和訓練一個網(wǎng)絡(luò),使網(wǎng)絡(luò)能夠?qū)?yīng)于字符的特征向量輸入得到相應(yīng)的目標輸出。然而,在實際識別過程中,待識別字符的特征向量通常是所對應(yīng)的理想特征向量的含噪版本,圖2給出了一個含有高斯白噪聲的字母A的位圖。因此,在訓練和設(shè)計網(wǎng)絡(luò)時,應(yīng)該使網(wǎng)絡(luò)具有一定的抑制噪聲的能力。實驗內(nèi)容神經(jīng)網(wǎng)絡(luò)工具箱中的函數(shù)介紹newff:生成一個新的多層前向網(wǎng)絡(luò);traingdx:具有自適應(yīng)學習率的動量BP學習算法;train:對網(wǎng)絡(luò)進行訓練;sim:對網(wǎng)絡(luò)進行仿真,即求網(wǎng)絡(luò)對給定輸入所對應(yīng)的輸出。訓練網(wǎng)絡(luò)選取隱層神經(jīng)元的個數(shù)為10,采用每個字母理想特征向量的20個加噪的版本(均值為0,標準方差為0.1和0.2的高斯白噪各10個)作為訓練樣本,選取適當?shù)某跏紮?quán)值、初始閾值和動量值對網(wǎng)絡(luò)進行訓練,直到網(wǎng)絡(luò)收斂(停止準則:設(shè)定迭代次數(shù)或?qū)嶋H輸出與期望輸出的均方誤差值小于一個給定的值,例如,迭代次數(shù)為1000;均方誤差為0.1)。本次訓練網(wǎng)絡(luò)的迭代次數(shù)為3000,均方誤差為0.001(程序見bp.m)。檢驗網(wǎng)絡(luò)識別能力產(chǎn)生一系列加噪的特征向量(噪聲為均值為0高斯白噪)作為網(wǎng)絡(luò)的輸入向量,檢驗在噪聲方差依次為0:0.05:0.5下的正確識別率,繪出識別率與噪聲方差的變化關(guān)系曲線如下,當噪聲方差增大時,識別率下降?!?-’表示訓練樣本未加噪,‘*’表示加噪,可以看出,加噪訓練樣本得到的識別率要高于不加噪樣本的識別率。(bp1.m)選取不同初始權(quán)值和初始閾值對網(wǎng)絡(luò)進行訓練選取[-0.1,0.1],[-0.5,0.5]為兩組初始權(quán)值和閾值范圍,利用MATLAB繪出訓練誤差收斂曲線如下。[-0.5,0.5][-0.1,0.1]由曲線可以看出,初始閾值和權(quán)值在[-0.5,0.5]區(qū)間時迭代次數(shù)小于[-0.1,0.1],且兩條曲線均成階梯狀下降。(bp2.m)使用交叉確認發(fā)確定最優(yōu)隱層神經(jīng)元的個數(shù)用于交叉確認的隱層神經(jīng)元的個數(shù)為:5,10,15,20,30,40;總樣本樣本:每個字母理想特征向量的80個加噪的版本(均值為0,標準方差為0.1和0.2的高斯白噪各40個)。其中,50%為訓練樣本,25%為驗證樣本,25%為檢測樣本。5個隱層神經(jīng)元10個隱層神經(jīng)元15個隱層神經(jīng)元20個隱層神經(jīng)元30個隱層神經(jīng)元40個隱層神經(jīng)元由上可知,最優(yōu)隱層神經(jīng)元個數(shù)為40個。對于該網(wǎng)絡(luò),計算噪聲方差依次為0:0.05:0.5下的正確恢復(fù)率如下。易得,當噪聲方差增大時,識別率成下降趨勢,但仍高于66%。(bp3.m)增加含噪訓練樣本選取含噪訓練樣本數(shù)量為50、100、200、500、1000且分別選擇方差0、0.1、0.2、0.5的高斯含噪訓練樣本分別訓練網(wǎng)絡(luò)(隱層神經(jīng)元個數(shù)為30),并對應(yīng)隨機產(chǎn)生200個檢驗數(shù)據(jù)。方差訓練樣本數(shù)00.10.20.5501.00000.99000.94000.65001001.00000.98000.95500.66002001.00000.99500.94500.69505001.00000.93500.80500.805010001.00000.99500.97000.7600由表可得,當訓練樣本數(shù)一定時,增大方差,會使得識別率下降。但當方差一定,增加訓練樣本個數(shù)時,識別率會出現(xiàn)波動,并不是訓練樣本個數(shù)越多,識別效果越好。(bp4.m)增加隱層神經(jīng)元個數(shù)方差神經(jīng)元個數(shù)00.10.20.5301.00000.99000.96000.8000401.00000.99500.95500.7450501.00001.00000.94500.79501001.00001.00000.93500.76001501.00000.99000.96500.7500從上表可以看出,當隱層神經(jīng)元一定時,增大方差,會使得識別率下降。但當方差一定,增加神經(jīng)元個數(shù)時,識別率會出現(xiàn)波動,并不是神經(jīng)元個數(shù)越多,識別效果越好。(bp5.m)實驗主要結(jié)論及改進意見主要結(jié)論:設(shè)計一個輸入層和輸出層神經(jīng)元個數(shù)為35、26的單隱層神經(jīng)網(wǎng)絡(luò),選取隱層神經(jīng)元個數(shù)為10,并給定初始權(quán)值和閾值為[-0.1,0.1],同時設(shè)置迭代次數(shù)為3000,均方誤差為0.0001。當檢驗樣本的噪聲方差增大時,識別率下降。初始閾值和權(quán)值在[-0.5,0.5]區(qū)間時迭代次數(shù)小于[-0.1,0.1],且兩條曲線均成階梯狀下降。使用交叉確認法確定了隱層神經(jīng)元的數(shù)量最優(yōu)為40,并給出了噪聲方差依次為0:0.05:0.5下的識別率。改進意見:通過實驗知,不能盲目通過增加含噪訓練樣本個數(shù)和隱層神經(jīng)元個數(shù)來提高網(wǎng)絡(luò)識別能力,個人認為,需要通過進一步的學習來確定。五.程序附錄bp.mclc;clear;%??3y1¤×÷???Dμ?±?á?[alphabet,targets]=prprob;%í¨1yprproboˉêyμ?μ??μá·×????ˉoí??±ê?ˉ[R,Q]=size(alphabet);[S2,Q]=size(targets);S1=10;%òto?2???êynet=newff(minmax(alphabet),[S1S2],{'logsig''logsig'},'traingdx');%′′?¨é??-í???£?á?2?£?oˉêy?aLogsig?£net.IW{1}=0.2*rand(10,35)-0.1;%?D?μoíè¨?μ?ú[-0.1,0.1]????net.LW{2}=0.2*rand(26,10)-0.1;net.b{1}=0.2*rand(10,1)-0.1;net.b{2}=0.2*rand(26,1)-0.1;T=alphabet;%?μá·?ˉG=targets;%??±ê?ˉnet.trainParam.goal=0.001;%?μá·???è??±ê?a0.001net.trainParam.epochs=3000;%μü′ú3000′?G1=repmat(targets,1,20);%à??1??±ê?ˉT1=[];forj=1:10T1=[T1alphabet+randn(R,Q)*0.1,alphabet+randn(R,Q)*0.2];end[net,tr]=train(net,T1,G1);%?μá·óD??éùμ?é??-í???bp1.mclc;clear;%??3y1¤×÷???Dμ?±?á?[alphabet,targets]=prprob;%í¨1yprproboˉêyμ?μ??μá·×????ˉoí??±ê?ˉ[R,Q]=size(alphabet);%è?μ?×????ˉμ???êy[S2,Q]=size(targets);%è?μ???±ê?ˉμ???êy£??ú?aà???±ê?ˉê?26???t????êy?£·?±e′ú±íA~ZS1=10;%òto?2???êynet=newff(minmax(alphabet),[S1S2],{'logsig''logsig'},'traingdx');%′′?¨é??-í???£?á?2?£?oˉêy?aLogsig?£net.IW{1}=0.2*rand(10,35)-0.1;net.LW{2}=0.2*rand(26,10)-0.1;net.b{1}=0.2*rand(10,1)-0.1;net.b{2}=0.2*rand(26,1)-0.1;net.trainParam.goal=0.001;%?μá·???è??±ê?a0.001net.trainParam.epochs=3000;%μü′ú3000′?P=alphabet;%?μá·?ˉT=targets;%??±ê?ˉ[net,~]=train(net,P,T);%?μá·í???netn=net;%′′?¨′?óD??éùμ?í???netn.trainParam.goal=0.001;%?μá·???è??±ê?a0.001netn.trainParam.epochs=3000;%μü′ú3000′?G1=repmat(targets,1,20);%à??1??±ê?ˉT1=[];forj=1:10T1=[T1alphabet+randn(R,Q)*0.1,alphabet+randn(R,Q)*0.2];end[netn,tr]=train(netn,T1,G1);%?μá·óD??éùμ?é??-í???noise_fanwei=0:0.05:0.5;max_test=100;network1=[];network2=[];fornoiselevel=0:0.05:0.5errors1=0;errors2=0;fori=1:max_testP=alphabet+randn(35,26)*noiselevel;%·????ˉ?óè???éùA=sim(net,P);%??ó??T??éù?μá·μ?í?????DD·???AA=compet(A);%ê?3??a1μ???????ó|ê?è??òá??a?o?ù??ê¤μ?ê?è??òá?errors1=errors1+sum(sum(abs(AA-T)))/2;%?????ó2?An=sim(netn,P);%??ó?óD??éù?μá·μ?í?????DD·???AAn=compet(An);%ê?3??a1μ???????ó|ê?è??òá??a?o?ù??ê¤μ?ê?è??òá?errors2=errors2+sum(sum(abs(AAn-T)))/2;%?????ó2?endnetwork1=[network1(26*100-errors1)/26/100];%????3?Network1μ??ó2?network2=[network2(26*100-errors2)/26/100];%????3?Network2μ??ó2?endplot(noise_fanwei,network1*100,'--',noise_fanwei,network2*100,'*');title('?yè·ê?±e?ê');xlabel('??éù·?2?');ylabel('Network1--Network2*');bp2.mclc;clear;%??3y1¤×÷???Dμ?±?á?[alphabet,targets]=prprob;%í¨1yprproboˉêyμ?μ??μá·×????ˉoí??±ê?ˉ[R,Q]=size(alphabet);%è?μ?×????ˉμ???êy[S2,Q]=size(targets);%è?μ???±ê?ˉμ???êy£??ú?aà???±ê?ˉê?26???t????êy?£·?±e′ú±íA~ZS1=10;%òto?2???êynet=newff(minmax(alphabet),[S1S2],{'logsig''logsig'},'traingdx');%′′?¨é??-í???£?á?2?£?oˉêy?aLogsig?£net.IW{1}=1.0*rand(10,35)-0.5;net.LW{2}=1.0*rand(26,10)-0.5;net.b{1}=1.0*rand(10,1)-0.5;net.b{2}=1.0*rand(26,1)-0.5;P=alphabet;%?μá·?ˉT=targets;%??±ê?ˉnet.trainParam.goal=0.001;%?μá·???è??±ê?a0.001net.trainParam.epochs=3000;%μü′ú3000′?[net,tr]=train(net,P,T);%?μá·′úóD??éùμ?é??-í???bp3.mclc;clear;N=80;%2úéú?μá·?ù±?oí??±êê?3?[p,t]=prprob();[m,n]=size(p);p_new=repmat(p,1,N);%2úéúo???μ??μá·?ù±?t_new=repmat(t,1,N);noise=zeros(35,N*26);noise(:,1:n*N/2)=sqrt(0.1)*randn([m,n*N/2]);%???1°×???ù?μ?a0£?·?2??a0.1μ??μá·?ù±?noise(:,n*N/2+1:end)=sqrt(0.2)*randn([m,n*N/2]);%???1°×???ù?μ?a0£?·?2??a0.2μ??μá·?ù±?p_new=p_new+noise;[trainex,validate,testex]=dividevec(p_new,t_new,0.25,0.25);H=[5,10,15,20,30,40];%′y??μ?é??-?a??êyL=length(H);rate=zeros(1,L);c=cell(1,L);fori=1:L%D??¨ò???í???net=newff(minmax(p_new),[H(i),26],{'logsig','logsig'},'traingdx');net.IW{1}=0.2*rand(H(i),35)-0.1;net.LW{2}=0.2*rand(26,H(i))-0.1;net.b{1}=0.2*rand(H(i),1)-0.1;net.b{2}=0.2*rand(26,1)-0.1;%2?êyμ÷??net.trainParam.epochs=5000;%10Maximumnumberofepochstotrainnet.trainParam.goal=0.001;%0Performancegoal%?μá·í???[net,tr]=train(net,trainex.P,trainex.T,[],[],validate);c{1,i}=net;%?ì?éí???y=sim(net,testex.P);s=0;forj=1:size(testex.T,2)ifcompet(y(:,j))==testex.T(:,j);s=s+1;endendrate(:,i)=s/j;end[h,index]=max(rate);fprintf('×?ó?òt2?é??-?a??êy?a£o');H(index)%?ì?éí???ê?±e?üá|net=c{1,index};var=0:0.05:0.5;l=length(var);Rate=zeros(1,l);fori=1:ls=0;fork=1:100%???ú2úéú100???ó???ì?é?ù±?a1=randperm(26,1);p1=p(:,a1)+sqrt(var(i))*randn(35,1);a=sim(net,p1);index=find(compet(a)==1);ifindex==a1s=s+1;endendRate(1,i)=s/100;endplot(var,Rate,'*');xlabel('??éù·?2?');ylabel('ê?±e?ê');fork=1:length(var)text(var(k),Rate(k)-0.005,['(',num2str(var(k)),',',num2str(Rate(k)),')']);endbp4.m%???óo????μá·?ù±???êyclc;clear%2úéú?μá·?ù±?oí??±êê?3?NN=[50,100,200,500,1000];hiden=30;Var=[0,0.1,0.2,0.5];Rate=zeros(length(NN),length(Var));[p,t]=prprob();[m,n]=size(p);fori=1:length(NN)%2úéúo???μ??μá·?ù±?N=NN(i);p_new=repmat(p,1,N);t_new=repmat(t,1,N);noise=zeros(35,N*26);noise(:,1:n*N/2)=sqrt(0.1)*randn([m,n*N/2]);%???1°×???ù?μ?a0£?·?2??a0.1μ??μá·?ù±?noise(:,n*N/2+1:end)=sqrt(0.2)*randn([m,n*N/2]);%???1°×???ù?μ?a0£?·?2??a0.2μ??μá·?ù±?p_new=p_new+noise;%D??¨ò???í???net=newff(minmax(p_new),[hiden,26],{'logsig','logsig'},'traingdx');net.IW{1}=rand(hiden,35)-0.5;net.LW{2}=rand(26,hiden)-0.5;net.b{1}=rand(hiden,1)-0.5;net.b{2}=rand(26,1)-0.5;%2?êyμ÷??net.trainParam.epochs=5000;%10Maximumnumberofepochstotrainnet.trainParam.goal=1e-3;%0Performancegoal%?μá·í???[net,tr]=train(net,p_new,t_new);%?ì?éí???forj=1:length(Var)var=Var(j);s=0;K=200;fork=1:K%???ú2úéú200???ó???ì?é?ù±?a1=randperm(26,1);p1=p(:,a1)+sqrt(var)*randn(35,1);a=sim(net,p1);index=find(compet(a)==1);ifindex==a1s=s+1;endendRate(i,j)=s/Kendendbp5.m%???óòt2?é??-?a??êyclc;clear%2úéú?μá·?ù±?oí??±êê?3?H=[30,40,50,100,150];N=100;Var=[0,0.1,0.2,0.5];Rate=zeros(length(H),length(Var));[p,t]=prprob();[m,n]=size(p);fori=1:length(H)%2úéúo???μ??μá·?ù±?

溫馨提示

  • 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

提交評論