BP神经网络分类以及对算法进行改进—MATLAB实现
文章目錄
- 一 BP神經(jīng)網(wǎng)絡(luò)介紹
- 二 案例應(yīng)用—語音特征信號識別
- 2.1 案例說明
- 2.2 MATLAB實現(xiàn)
- 2.2.1 數(shù)據(jù)歸一化
- 2.2.2 編程實現(xiàn)
- 2.2.2.1數(shù)據(jù)選擇和歸一化
- 2.2.2.2 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)初始化
- 2.2.2.3 BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練
- 2.2.2.4 BP神經(jīng)網(wǎng)絡(luò)分類
- 2.2.2.5 結(jié)果分析
- 2.3 算法改進(jìn)
- 2.3.1 附加動量方法
- 2.3.2 變學(xué)習(xí)率學(xué)習(xí)方法
一 BP神經(jīng)網(wǎng)絡(luò)介紹
??BP神經(jīng)網(wǎng)絡(luò)是一種具有三層或三層以上的多層前饋神經(jīng)網(wǎng)絡(luò),每一層都由若干個神經(jīng)元組成,如下圖所示,它的左、右各層之間各個神經(jīng)元實現(xiàn)全連接,即左層的每一個神經(jīng)元與右層的每個神經(jīng)元都有連接,而上下各神經(jīng)元之間無連接。BP神經(jīng)網(wǎng)絡(luò)按有導(dǎo)師學(xué)習(xí)方式進(jìn)行訓(xùn)練,當(dāng)一對學(xué)習(xí)模式提供給網(wǎng)絡(luò)后,其神經(jīng)元的激活值將從輸入層經(jīng)各隱含層向輸出層傳播,在輸出層的各神經(jīng)元輸出對應(yīng)于輸入模式的網(wǎng)絡(luò)響應(yīng)。
??該網(wǎng)絡(luò)的主要特點是信號前向傳遞,誤差反向傳播。在前向傳遞中,輸入信號從輸人層經(jīng)隱含層逐層處理,直至輸出層。每一層的神經(jīng)元狀態(tài)只影響下一層神經(jīng)元狀態(tài)。如果輸出層得不到期望輸出,則轉(zhuǎn)入反向傳播,根據(jù)預(yù)測誤差調(diào)整網(wǎng)絡(luò)權(quán)值和闊值,從而使BP神經(jīng)網(wǎng)絡(luò)預(yù)測輸出不斷逼近期望輸出。
??上圖中,X1,X2,???,XnX_1,X_2,···,X_nX1?,X2?,???,Xn?是BP神經(jīng)網(wǎng)絡(luò)的輸入值,Y1,Y2,???,YmY_1,Y_2,···,Y_mY1?,Y2?,???,Ym?是BP神經(jīng)網(wǎng)絡(luò)的預(yù)測值,ωij和ωjk\omega_{ij}和\omega_{jk}ωij?和ωjk?為BP神經(jīng)網(wǎng)絡(luò)權(quán)值。從上圖可以看出,BP神經(jīng)網(wǎng)絡(luò)可以看成一個非線性函數(shù),網(wǎng)絡(luò)輸入值和預(yù)測值分別為該函數(shù)的自變量和因變量。當(dāng)輸入節(jié)點數(shù)為n、輸出節(jié)點數(shù)為m時,BP神經(jīng)網(wǎng)絡(luò)就表達(dá)了從n個自變量到m個因變量的函數(shù)映射關(guān)系。
??BP神經(jīng)網(wǎng)絡(luò)預(yù)測前首先要訓(xùn)練網(wǎng)絡(luò),通過訓(xùn)練使網(wǎng)絡(luò)具有聯(lián)想記憶和預(yù)測能力。BP神
經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程包括以下幾個步驟。
網(wǎng)絡(luò)初始化。根據(jù)系統(tǒng)輸人輸出序列(XXX,YYY)確定網(wǎng)絡(luò)輸入層節(jié)點數(shù)nnn、隱含層節(jié)點數(shù)lll,輸出層節(jié)點數(shù)mmm,初始化輸入層、隱含層和輸出層神經(jīng)元之間的連接權(quán)值ωij和ωjk\omega_{ij}和\omega_{jk}ωij?和ωjk?初始化隱含層闊值aaa,輸出層國值bbb,給定學(xué)習(xí)速率和神經(jīng)元激勵函數(shù)。
隱含層輸出計算。根據(jù)輸入變量XXX,輸入層和隱含層間連接權(quán)值ωij\omega_{ij}ωij?,以及隱含層國值aaa,計算隱含層輸出HHH。
Hj=f(∑i=1nωijxi?aj)j=1,2???,l(1-1)H_j = f(\sum\limits_{i=1}^n\omega_{ij}x_i-a_j)~~~~~~~j=1,2···,l\tag{1-1}Hj?=f(i=1∑n?ωij?xi??aj?)???????j=1,2???,l(1-1)
式中,lll為隱含層節(jié)點數(shù);fff為隱含層激勵函數(shù),該函數(shù)有多種表達(dá)形式,本文所選函數(shù)為:
f(x)=11+e?x(1-2)f(x) = \frac{1}{1+e^{-x}}\tag{1-2}f(x)=1+e?x1?(1-2)
輸出層輸出計算。根據(jù)隱含層輸出HHH,連接權(quán)值ωjk\omega_{jk}ωjk?和閾值bbb,計算BP神經(jīng)網(wǎng)絡(luò)
預(yù)測輸出OOO。
Ok=∑k=1lHjωjk?bkk=1,2???,m(1-3)O_k = \sum\limits_{k=1}^lH_j\omega_{jk}-b_k~~~~~~~k=1,2···,m\tag{1-3}Ok?=k=1∑l?Hj?ωjk??bk????????k=1,2???,m(1-3)
誤差計算。根據(jù)網(wǎng)絡(luò)預(yù)測輸出OOO和期望輸出YYY,計算網(wǎng)絡(luò)預(yù)測誤差eee。
ek=Yk?Okk=1,2???,m(1-4)e_k = Y_k-O_k~~~~~~~k=1,2···,m\tag{1-4}ek?=Yk??Ok????????k=1,2???,m(1-4)
權(quán)值更新。根據(jù)網(wǎng)絡(luò)預(yù)測誤差eee更新網(wǎng)絡(luò)連接權(quán)值ωij,ωjk\omega_{ij},\omega_{jk}ωij?,ωjk?。
ωij=ωij+ηHj(1?Hj)∑k=1mωjkeki=1,2,???,n;j=1,2???,lωjk=ωjk+ηHjekj=1,2,???,l;k=1,2,???,m\omega_{ij} = \omega_{ij} + \eta H_j(1-H_j)\sum\limits_{k=1}^m\omega_{jk}e_k~~~~~~~i = 1,2,···,n;j=1,2···,l\\ \omega_{jk} = \omega_{jk} + \eta H_je_k~~~~~~~j =1,2,···,l;k = 1,2,···,mωij?=ωij?+ηHj?(1?Hj?)k=1∑m?ωjk?ek????????i=1,2,???,n;j=1,2???,lωjk?=ωjk?+ηHj?ek????????j=1,2,???,l;k=1,2,???,m
式中,η\etaη為學(xué)習(xí)速率。
閾值更新。根據(jù)網(wǎng)絡(luò)預(yù)測誤差eee更新網(wǎng)絡(luò)節(jié)點國值a,ba,ba,b。
aj=aj+ηHj(1?Hj)∑k=1mωjkekj=1,2???,lbk=bk+ekk=1,2,???,ma_j = a_j + \eta H_j(1-H_j)\sum\limits_{k=1}^m\omega_{jk}e_k~~~~~~~j=1,2···,l\\ b_k =b_k + e_k~~~~~~~k = 1,2,···,maj?=aj?+ηHj?(1?Hj?)k=1∑m?ωjk?ek????????j=1,2???,lbk?=bk?+ek????????k=1,2,???,m
判斷算法迭代是否結(jié)束,若沒有結(jié)束,返回步驟2。
二 案例應(yīng)用—語音特征信號識別
2.1 案例說明
??語音特征信號識別是語音識別研究領(lǐng)域中的一個重要方面,一般采用模式匹配的原理解決。語音識別的運算過程為:首先,待識別語音轉(zhuǎn)化為電信號后輸人識別系統(tǒng),經(jīng)過預(yù)處理后用數(shù)學(xué)方法提取語音特征信號,提取出的語音特征信號可以看成該段語音的模式;然后,將該段語音模型同已知參考模式相比較,獲得最佳匹配的參考模式為該段語音的識別結(jié)果。語音識別流程如下圖所示。
??本案例選取了民歌、古箏、搖滾和流行四類不同音樂,用BP神經(jīng)網(wǎng)絡(luò)實現(xiàn)對這四類音樂的有效分類。每段音樂都用倒譜系數(shù)法提取500組24維語音特征信號(相關(guān)數(shù)據(jù)放在最后),提取出的語音特征信號如下圖所示。
??基于BP神經(jīng)網(wǎng)絡(luò)的語音特征信號分類算法建模包括BP神經(jīng)網(wǎng)絡(luò)構(gòu)建、BP 神經(jīng)網(wǎng)絡(luò)訓(xùn)
練和BP神經(jīng)網(wǎng)絡(luò)分類三步,算法流程如下圖所示。
??BP神經(jīng)網(wǎng)絡(luò)構(gòu)建根據(jù)系統(tǒng)輸入輸出數(shù)據(jù)特點確定BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),由于語音特征輸入信號有24維,待分類的語音信號共有4類,所以BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)為24-25-4,即輸入層有24個節(jié)點,隱含層有25個節(jié)點,輸出層有4個節(jié)點。
??BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練用訓(xùn)練數(shù)據(jù)訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)。共有2000組語音特征信號,從中隨機(jī)選擇1500組數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)訓(xùn)練網(wǎng)絡(luò),500組數(shù)據(jù)作為測試數(shù)據(jù)測試網(wǎng)絡(luò)分類能力。
??BP神經(jīng)網(wǎng)絡(luò)分類用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)對測試數(shù)據(jù)所屬語音類別進(jìn)行分類。
2.2 MATLAB實現(xiàn)
2.2.1 數(shù)據(jù)歸一化
??數(shù)據(jù)歸一化方法是神經(jīng)網(wǎng)絡(luò)預(yù)測前對數(shù)據(jù)常做的一種處理方法。數(shù)據(jù)歸一化處理把所有數(shù)據(jù)都轉(zhuǎn)化為[0,1]之間的數(shù),其目的是取消各維數(shù)據(jù)間數(shù)量級差別,避免因為輸入輸出數(shù)據(jù)數(shù)量級差別較大而造成網(wǎng)絡(luò)預(yù)測誤差較大。數(shù)據(jù)歸一化的方法主要有以下兩種。
??1)最大最小法。函數(shù)形式如下
xk=xk?xminxmax?xminx_k = \frac{x_k - x_{min}}{x_{max} - x{min}}xk?=xmax??xminxk??xmin??
式中,xminx_{min}xmin?為數(shù)據(jù)序列中的最小數(shù);xmaxx_{max}xmax?為序列中的最大數(shù)。
??2)平均數(shù)方差法。函數(shù)形式如下:
xk=xk?xmeanxvarx_k = \frac{x_k - x_{mean}}{x_{var}}xk?=xvar?xk??xmean??
式中,xmeanx_{mean}xmean?為數(shù)據(jù)序列的均值;xvarx_{var}xvar?為數(shù)據(jù)的方差。
??本案例采用第一種數(shù)據(jù)歸一化方法,歸一化函數(shù)采用MATLAB自帶函數(shù)mapminmax,該函數(shù)有多種形式,常用的方法如下:
??input_train,output_train 是訓(xùn)練輸人、輸出原始數(shù)據(jù);;inputn,outputn是歸一化后的數(shù)據(jù),inputps,outputps為數(shù)據(jù)歸一化后得到的結(jié)構(gòu)體,里面包含了數(shù)據(jù)最大值、最小值和平均值等信息,可用于測試數(shù)據(jù)歸一化和反歸一化。測試數(shù)據(jù)歸一化和反歸一化程序如下:
inputn_test = mapminmax('apply', input_test, inputps); %測試輸入數(shù)據(jù)歸一化 BPoutput = mapminmax('reverse', an, outputps);%網(wǎng)絡(luò)預(yù)測數(shù)據(jù)反歸一化??input_test是預(yù)測輸人數(shù)據(jù);inputn_test是歸一化后的預(yù)測數(shù)據(jù);'apply’表示根據(jù)inputps的值對input_test進(jìn)行歸一化。an是網(wǎng)絡(luò)預(yù)測結(jié)果;outputps是訓(xùn)練輸出數(shù)據(jù)歸一化得到的結(jié)構(gòu)體;BPoutput是反歸一化之后的網(wǎng)絡(luò)預(yù)測輸出;'reverse’表示對數(shù)據(jù)進(jìn)行反歸一化。
2.2.2 編程實現(xiàn)
2.2.2.1數(shù)據(jù)選擇和歸一化
??首先根據(jù)倒譜系數(shù)法提取四類音樂語音特征信號,不同的語音信號分別用1,2,3,4標(biāo)識,提取出的信號分別存儲于datal.mat, data2.mat,data3.mat,,data4.mat數(shù)據(jù)庫文件中,每組數(shù)據(jù)為25維,第1維為類別標(biāo)識,后24維為語音特征信號。然后把四類語音特征信號合為一組,從中隨機(jī)選取1500組數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),500組數(shù)據(jù)作為測試數(shù)據(jù),并對訓(xùn)練數(shù)據(jù)進(jìn)行歸一化處理。根據(jù)語音類別標(biāo)識設(shè)定每組語音信號的期望輸出值,如標(biāo)識類為1時,期望輸出向量為[1 0 0 0]。
%% 清空環(huán)境變量 clc clear%% 訓(xùn)練數(shù)據(jù)預(yù)測數(shù)據(jù)提取及歸一化%下載四類語音信號 load data1 c1 load data2 c2 load data3 c3 load data4 c4%四個特征信號矩陣合成一個矩陣 data(1:500,:)=c1(1:500,:); data(501:1000,:)=c2(1:500,:); data(1001:1500,:)=c3(1:500,:); data(1501:2000,:)=c4(1:500,:);%從1到2000間隨機(jī)排序 k=rand(1,2000); [m,n]=sort(k);%輸入輸出數(shù)據(jù) input=data(:,2:25); output1 =data(:,1);%把輸出從1維變成4維 output=zeros(2000,4); for i=1:2000switch output1(i)case 1output(i,:)=[1 0 0 0];case 2output(i,:)=[0 1 0 0];case 3output(i,:)=[0 0 1 0];case 4output(i,:)=[0 0 0 1];end end%隨機(jī)提取1500個樣本為訓(xùn)練樣本,500個樣本為預(yù)測樣本 input_train=input(n(1:1500),:)'; output_train=output(n(1:1500),:)'; input_test=input(n(1501:2000),:)'; output_test=output(n(1501:2000),:)';%輸入數(shù)據(jù)歸一化 [inputn,inputps]=mapminmax(input_train);2.2.2.2 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)初始化
??根據(jù)語音特征信號特點確定BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)為24-25-4,隨機(jī)初始化BP神經(jīng)網(wǎng)絡(luò)
權(quán)值和闊值。
2.2.2.3 BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練
??用訓(xùn)練數(shù)據(jù)訓(xùn)練BP神經(jīng)網(wǎng)絡(luò),在訓(xùn)練過程中根據(jù)網(wǎng)絡(luò)預(yù)測誤差調(diào)整網(wǎng)絡(luò)的權(quán)值和閾值。
%% 網(wǎng)絡(luò)訓(xùn)練 E=zeros(1,loopNumber); for ii=1:loopNumberE(ii)=0;for i=1:1:1500%% 網(wǎng)絡(luò)預(yù)測輸出 x=inputn(:,i);% 隱含層輸出for j=1:1:midnumI(j)=inputn(:,i)'*w1(j,:)'+b1(j);Iout(j)=1/(1+exp(-I(j)));end% 輸出層輸出yn=w2'*Iout'+b2;%% 權(quán)值閥值修正%計算誤差e=output_train(:,i)-yn; E(ii)=E(ii)+sum(abs(e));%計算權(quán)值變化率dw2=e*Iout;db2=e';for j=1:1:midnumS=1/(1+exp(-I(j)));FI(j)=S*(1-S);end for k=1:1:innumfor j=1:1:midnumdw1(k,j)=FI(j)*x(k)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2(j,4));db1(j)=FI(j)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2(j,4));endendw1=w1_1+xite*dw1';b1=b1_1+xite*db1';w2=w2_1+xite*dw2';b2=b2_1+xite*db2';w1_2=w1_1;w1_1=w1;w2_2=w2_1;w2_1=w2;b1_2=b1_1;b1_1=b1;b2_2=b2_1;b2_1=b2;end end2.2.2.4 BP神經(jīng)網(wǎng)絡(luò)分類
??用訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)分類語音特征信號,根據(jù)分類結(jié)果分析BP神經(jīng)網(wǎng)絡(luò)分類能力。
%% 語音特征信號分類 inputn_test=mapminmax('apply',input_test,inputps); fore=zeros(4,500); for ii=1:1for i=1:500%1500%隱含層輸出for j=1:1:midnumI(j)=inputn_test(:,i)'*w1(j,:)'+b1(j);Iout(j)=1/(1+exp(-I(j)));endfore(:,i)=w2'*Iout'+b2;end end2.2.2.5 結(jié)果分析
%% 結(jié)果分析 %根據(jù)網(wǎng)絡(luò)輸出找出數(shù)據(jù)屬于哪類 output_fore=zeros(1,500); for i=1:500output_fore(i)=find(fore(:,i)==max(fore(:,i))); end%BP網(wǎng)絡(luò)預(yù)測誤差 error=output_fore-output1(n(1501:2000))';%畫出預(yù)測語音種類和實際語音種類的分類圖 figure(1) plot(output_fore,'r') hold on plot(output1(n(1501:2000))','b') legend('預(yù)測語音類別','實際語音類別')%畫出誤差圖 figure(2) plot(error) title('BP網(wǎng)絡(luò)分類誤差','fontsize',12) xlabel('語音信號','fontsize',12) ylabel('分類誤差','fontsize',12)%print -dtiff -r600 1-4k=zeros(1,4); %找出判斷錯誤的分類屬于哪一類 for i=1:500if error(i)~=0[b,c]=max(output_test(:,i));switch ccase 1 k(1)=k(1)+1;case 2 k(2)=k(2)+1;case 3 k(3)=k(3)+1;case 4 k(4)=k(4)+1;endend end%找出每類的個體和 kk=zeros(1,4); for i=1:500[b,c]=max(output_test(:,i));switch ccase 1kk(1)=kk(1)+1;case 2kk(2)=kk(2)+1;case 3kk(3)=kk(3)+1;case 4kk(4)=kk(4)+1;end end%正確率 rightridio=(kk-k)./kk; disp('正確率') disp(rightridio);結(jié)果如下:
BP神經(jīng)網(wǎng)絡(luò)分類誤差如下圖所示:
BP神經(jīng)網(wǎng)絡(luò)分類正確率如下表所示:
| 識別正確率 | 0.7823 | 1.0000 | 0.8195 | 0.8837 |
??從BP神經(jīng)網(wǎng)絡(luò)分類結(jié)果可以看出,基于BP神經(jīng)網(wǎng)絡(luò)的語音信號分類算法具有較高的準(zhǔn)確性,能夠準(zhǔn)確識別出語音信號所屬類別。
2.3 算法改進(jìn)
??BP神經(jīng)網(wǎng)絡(luò)的隱含層節(jié)點數(shù)對BP神經(jīng)網(wǎng)絡(luò)預(yù)測精度有較大的影響:節(jié)點數(shù)太少,網(wǎng)絡(luò)不能很好地學(xué)習(xí),需要增加訓(xùn)練次數(shù),訓(xùn)練的精度也受影響;節(jié)點數(shù)太多,訓(xùn)練時間增加,網(wǎng)絡(luò)容易擬合。最佳隱含層節(jié)點數(shù)選擇可參考如下公式:
l<n?1l<(m+n)+al=log?2n\begin{aligned} l&<n-1\\ l&<\sqrt{(m+n)} + a\\ l &= \log_2n \end{aligned} lll?<n?1<(m+n)?+a=log2?n?
式中,nnn為輸入層節(jié)點數(shù);lll為隱含層節(jié)點數(shù);mmm為輸出層節(jié)點數(shù);aaa為0~10之間的常數(shù)。在實際問題中,隱含層節(jié)點數(shù)的選擇首先是參考公式來確定節(jié)點數(shù)的大概范圍,然后用試湊法確定最佳的節(jié)點數(shù)。對于某些問題來說,隱含層節(jié)點數(shù)對輸出結(jié)果影響較小,如對于本案例來說,分類誤差同隱含層節(jié)點數(shù)的關(guān)系如下圖所示。
??從上圖可以看出,本案例中BP神經(jīng)網(wǎng)絡(luò)的分類誤差隨著隱含層節(jié)點數(shù)的增加呈現(xiàn)先減少后增加的趨勢。也符合一般問題的情況。
2.3.1 附加動量方法
??BP神經(jīng)網(wǎng)絡(luò)的采用梯度修正法作為權(quán)值和闊值的學(xué)習(xí)算法,從網(wǎng)絡(luò)預(yù)測誤差的負(fù)梯度方向修正權(quán)值和閾值,沒有考慮以前經(jīng)驗的積累,學(xué)習(xí)過程收斂緩慢。對于這個問題,可以采用附加動量方法來解決,帶附加動量的權(quán)值學(xué)習(xí)公式為:
ω(k)=ω(k?1)+△ω(k)+a[ω(k?1)?ω(k?2)]\omega(k) = \omega(k-1) +\triangle \omega(k) + a[\omega(k-1) - \omega(k-2)]ω(k)=ω(k?1)+△ω(k)+a[ω(k?1)?ω(k?2)]
式中,ω(k),ω(k?1),ω(k?2)\omega(k),\omega(k-1),\omega(k-2)ω(k),ω(k?1),ω(k?2)分別為k,k?1,k?2k,k-1,k-2k,k?1,k?2時刻的權(quán)值;aaa為動量學(xué)習(xí)率。
程序如下:
結(jié)果如下:
BP神經(jīng)網(wǎng)絡(luò)分類誤差如下圖所示:
BP神經(jīng)網(wǎng)絡(luò)分類正確率如下表所示:
| 識別正確率 | 0.7083 | 1.0000 | 0.9621 | 0.9469 |
2.3.2 變學(xué)習(xí)率學(xué)習(xí)方法
??BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)率η\etaη的取值在[0,1]之間,學(xué)習(xí)率η\etaη越大,對權(quán)值的修改越大,網(wǎng)絡(luò)學(xué)習(xí)速度越快。但過大的學(xué)習(xí)速率η\etaη將使權(quán)值學(xué)習(xí)過程產(chǎn)生震蕩,過小的學(xué)習(xí)概率使網(wǎng)絡(luò)收斂過慢,權(quán)值難以趨于穩(wěn)定。變學(xué)習(xí)率方法是指學(xué)習(xí)概率η\etaη在BP神經(jīng)網(wǎng)絡(luò)進(jìn)化初期較大,網(wǎng)絡(luò)收斂迅速,隨著學(xué)習(xí)過程的進(jìn)行,學(xué)習(xí)率不斷減小,網(wǎng)絡(luò)趨于穩(wěn)定。變學(xué)習(xí)率計算公式為:
η(t)=ηmax?t(ηmax?ηmin)/tmax\eta(t) = \eta_{max} - t(\eta_{max} - \eta_{min})/t_{max}η(t)=ηmax??t(ηmax??ηmin?)/tmax?
式中,ηmax\eta_{max}ηmax?為最大學(xué)習(xí)率;ηmin\eta_{min}ηmin?為最小學(xué)習(xí)率;tmaxt_{max}tmax?為最大迭代次數(shù);ttt為當(dāng)前迭代次數(shù)。
代碼如下:
結(jié)果如下:
BP神經(jīng)網(wǎng)絡(luò)分類誤差如下圖所示:
BP神經(jīng)網(wǎng)絡(luò)分類正確率如下表所示:
| 識別正確率 | 0.8167 | 1.0000 | 0.9292 | 0.9250 |
??可以發(fā)現(xiàn)兩種改進(jìn)過后的BP神經(jīng)網(wǎng)絡(luò)的結(jié)果較于未改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)有了改善。說明此兩種改進(jìn)方法是可行的。
全部代碼:
鏈接:https://pan.baidu.com/s/1KjsNDDJTUrkLNGghKL65Yg
提取碼:6666
??
??
??
??
喜歡的小伙伴麻煩點個贊奧,謝謝啦🙏🙏
總結(jié)
以上是生活随笔為你收集整理的BP神经网络分类以及对算法进行改进—MATLAB实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql枫叶_枫叶博客告诉你忘记了my
- 下一篇: 十年互联网,十个风云人物——历史会记住他