1 理論基礎(chǔ)
1.1 BP神經(jīng)網(wǎng)絡(luò)概述
????????BP網(wǎng)絡(luò)是一類(lèi)多層的前饋神經(jīng)網(wǎng)絡(luò)。它的名字源于在網(wǎng)絡(luò)訓(xùn)練的過(guò)程中,調(diào)整網(wǎng)絡(luò)的權(quán)值的算法是誤差的反向傳播的學(xué)習(xí)算法,即為BP學(xué)習(xí)算法。BP算法是Rumelhart等人在1986年提出來(lái)的。由于它的結(jié)構(gòu)簡(jiǎn)單,可調(diào)整的參數(shù)多,訓(xùn)練算法也多,而且可操作性好,BP神經(jīng)網(wǎng)絡(luò)獲得了非常廣泛的應(yīng)用。據(jù)統(tǒng)計(jì),有80??90??神經(jīng)網(wǎng)絡(luò)模型都是采用了BP網(wǎng)絡(luò)或者是它的變形。BP網(wǎng)絡(luò)是前向網(wǎng)絡(luò)的核心部分,是神經(jīng)網(wǎng)絡(luò)中最精華、最完美的部分。
????????BP神經(jīng)網(wǎng)絡(luò)雖然是人工神經(jīng)網(wǎng)絡(luò)中應(yīng)用最廣泛的算法,但是也存在著一些缺陷,例如學(xué)習(xí)收斂速度太慢、不能保證收斂到全局最小點(diǎn)、網(wǎng)絡(luò)結(jié)構(gòu)不易確定。另外,網(wǎng)絡(luò)結(jié)構(gòu)、初始連接權(quán)值和閾值的選擇對(duì)網(wǎng)絡(luò)訓(xùn)練的影響很大,但是又無(wú)法準(zhǔn)確獲得,針對(duì)這些特點(diǎn)可以采用遺傳算法對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化。
1.2 遺傳算法的基本要素
????????遺傳算法的基本要素包括染色體編碼方法、適應(yīng)度函數(shù)、遺傳操作和運(yùn)行參數(shù),本案例中遺傳算法部分使用Sheffield遺傳算法工具箱,之前已經(jīng)有詳細(xì)介紹,此處不再贅述。
2 案例背景
2.1 問(wèn)題描述
????????本節(jié)以某型拖拉機(jī)的齒輪箱為工程背景,介紹使用基于遺傳算法的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行齒輪箱故障的診斷。統(tǒng)計(jì)表明,齒輪箱故障中60??右都是由齒輪故障導(dǎo)致的,所以這里只研究齒輪故障的診斷。對(duì)于齒輪的故障,這里選取了頻域中的幾個(gè)特征量。頻域中齒輪故障比較明顯的是在嚙合頻率處的邊緣帶上。所以在頻域特征信號(hào)的提取中選取了在2、4、6擋時(shí),1、2、3軸的邊頻帶族fs±nfz處的幅值A(chǔ)i,j1、Ai,j2和Ai,j3;,其中fs為齒輪的嚙合頻率,fz為軸的轉(zhuǎn)頻,n=1,2,3,i=2,4,6表示擋位,j=1,2,3表示軸的序號(hào)。由于在2軸和3軸上有兩對(duì)齒輪嚙合,所以1、2分別表示兩個(gè)嚙合頻率。這樣,網(wǎng)絡(luò)的輸入就是一個(gè)15維的向量。因?yàn)檫@些數(shù)據(jù)具有不同的量綱和量級(jí),所以在輸入神經(jīng)網(wǎng)絡(luò)之前首先進(jìn)行歸一化處理。表1和表2列出了歸一化后的齒輪箱狀態(tài)樣本數(shù)據(jù)。
表1 齒輪箱樣本數(shù)據(jù)
????????從表中可以看出齒輪狀態(tài)有三種故障模式,因此可以采用如下的形式來(lái)表示輸出。無(wú)故障:(1,0,0)。齒根裂紋:(0,1,0)。斷齒:(0,0,1)。
????????為了對(duì)訓(xùn)練好的網(wǎng)絡(luò)進(jìn)行測(cè)試,另外再給出三組新的數(shù)據(jù)作為網(wǎng)絡(luò)的測(cè)試數(shù)據(jù),如表2所列。
?表2 測(cè)試集數(shù)據(jù)

2.2 解題思路及步驟
1.算法流程
????????遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)算法流程如圖1所示。
圖1 算法流程

????????遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)主要分為:BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)確定、遺傳算法優(yōu)化權(quán)值和閾值、BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練及預(yù)測(cè)。其中,BP神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)是根據(jù)樣本的輸入/輸出參數(shù)個(gè)數(shù)確定的,這樣就可以確定遺傳算法優(yōu)化參數(shù)的個(gè)數(shù),從而確定種群個(gè)體的編碼長(zhǎng)度。因?yàn)檫z傳算法優(yōu)化參數(shù)是BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值和閾值,只要網(wǎng)絡(luò)結(jié)構(gòu)已知,權(quán)值和閾值的個(gè)數(shù)就已知了。神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值一般是通過(guò)隨機(jī)初始化為[-0.5,0.5]區(qū)間的隨機(jī)數(shù),這個(gè)初始化參數(shù)對(duì)網(wǎng)絡(luò)訓(xùn)練的影響很大,但是又無(wú)法準(zhǔn)確獲得,對(duì)于相同的初始權(quán)重值和閾值,網(wǎng)絡(luò)的訓(xùn)練結(jié)果是一樣的,引入遺傳算法就是為了優(yōu)化出最佳的初始權(quán)值和閾值。
????????2.神經(jīng)網(wǎng)絡(luò)算法實(shí)現(xiàn)
????????針對(duì)本章的案例,下面詳細(xì)介紹BP網(wǎng)絡(luò)算法的實(shí)現(xiàn)。
????????(1)網(wǎng)絡(luò)創(chuàng)建
????????BP網(wǎng)絡(luò)結(jié)構(gòu)的確定有以下兩條比較重要的指導(dǎo)原則。
????????①對(duì)于一般的模式識(shí)別問(wèn)題,三層網(wǎng)絡(luò)可以很好地解決問(wèn)題。
????????②在三層網(wǎng)絡(luò)中,隱含層神經(jīng)網(wǎng)絡(luò)個(gè)數(shù)n2和輸入層神經(jīng)元個(gè)數(shù)n1之間有近似關(guān)系:

????????本案例中,由于樣本有15個(gè)輸入?yún)?shù),3個(gè)輸出參數(shù),所以這里n?取值為31,設(shè)置的BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)為15-31-3,即輸入層有15個(gè)節(jié)點(diǎn),隱含層有31個(gè)節(jié)點(diǎn),輸出層有3個(gè)節(jié)點(diǎn),共有15×31+31×3=558個(gè)權(quán)值,31+3=34個(gè)閾值,所以遺傳算法優(yōu)化參數(shù)的個(gè)數(shù)為558+34=592。使用表3-1中的9個(gè)樣本作為訓(xùn)練數(shù)據(jù),用于網(wǎng)絡(luò)訓(xùn)練,表2中的3個(gè)樣本作為測(cè)試數(shù)據(jù)。把測(cè)試樣本的測(cè)試誤差的范數(shù)作為衡量網(wǎng)絡(luò)的一個(gè)泛化能力(網(wǎng)絡(luò)的優(yōu)劣),再通過(guò)誤差范數(shù)計(jì)算個(gè)體的適應(yīng)度值,個(gè)體的誤差范數(shù)越小,個(gè)體適應(yīng)度值越大,該個(gè)體越優(yōu)。
????????神經(jīng)網(wǎng)絡(luò)的隱含層神經(jīng)元的傳遞函數(shù)采用S型正切函數(shù)tansig(),輸出層神經(jīng)元的傳遞函數(shù)采用S型對(duì)數(shù)函數(shù)logsig(),這是由于輸出模式為0-1,正好滿足網(wǎng)絡(luò)的輸出要求。假定輸入樣本矩陣為P,創(chuàng)建網(wǎng)絡(luò)可以使用以下代碼:
net= newff(minmax(P),[31,3],('tansig','logsig'},'trainlm');
????????(2)網(wǎng)絡(luò)訓(xùn)練和測(cè)試
????????網(wǎng)絡(luò)訓(xùn)練是一個(gè)不斷修正權(quán)值和閾值的過(guò)程,通過(guò)訓(xùn)練,使得網(wǎng)絡(luò)的輸出誤差越來(lái)越小。訓(xùn)練函數(shù)trainlm()是利用Levenberg-Marquardt算法對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練的,通過(guò)以下代碼調(diào)用函數(shù)trainlm()以及網(wǎng)絡(luò)的參數(shù)設(shè)置:
% 訓(xùn)練練次數(shù)為1000,訓(xùn)練目標(biāo)為0.01,學(xué)習(xí)速率為0.1
net.trainParam.epochs =1000;
net.trainParam.goal=0.01;
LP.1r=0.1;
% 訓(xùn)練網(wǎng)絡(luò)以及測(cè)試網(wǎng)絡(luò)
net = train(net,P,T);
網(wǎng)絡(luò)訓(xùn)練之后,需要對(duì)網(wǎng)絡(luò)進(jìn)行測(cè)試。例如測(cè)試樣本數(shù)據(jù)矩陣為P_test,則測(cè)試代碼如下:
Y= sim(net,P_test);
????????3.遺傳算法實(shí)現(xiàn)
????????遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)是用遺傳算法來(lái)優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)重值和閾值,使優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)能夠更好地進(jìn)行樣本預(yù)測(cè)。遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的要素包括種群初始化、適應(yīng)度函數(shù)、選擇算子、交叉算子和變異算子。
????????(1)種群初始化
????????個(gè)體編碼使用二進(jìn)制編碼,每個(gè)個(gè)體均為一個(gè)二進(jìn)制串,由輸入層與隱含層連接權(quán)值、隱含層閾值、隱含層與輸出層連接權(quán)值、輸出層閾值四部分組成,每個(gè)權(quán)值和閾值使用M位的二 進(jìn)制編碼,將所有權(quán)值和閾值的編碼連接起來(lái)即為一個(gè)個(gè)體的編碼。例如,本例的網(wǎng)絡(luò)結(jié)構(gòu)是15-31-3,所以權(quán)值和閾值的個(gè)數(shù)如表3所列。
表3 權(quán)值和閾值的個(gè)數(shù)
????????假定權(quán)值和閾值的編碼均為10位二進(jìn)制數(shù),那么個(gè)體的二進(jìn)制編碼長(zhǎng)度為5920。其中,前4650位為輸入層與隱含層連接權(quán)值編碼;4651~4960位為隱含層閾值編碼;4961~5890位為隱含層與輸出層連接權(quán)值編碼;5891~5920位為輸出層閾值編碼。?
????????(2)適應(yīng)度函數(shù)
????????本案例是為了使BP網(wǎng)絡(luò)在預(yù)測(cè)時(shí),預(yù)測(cè)值與期望值的殘差盡可能小,所以選擇預(yù)測(cè)樣本的預(yù)測(cè)值與期望值的誤差矩陣的范數(shù)作為目標(biāo)函數(shù)的輸出。適應(yīng)度函數(shù)采用排序的適應(yīng)度分配函數(shù):FitnV=ranking(obj),其中obj為目標(biāo)函數(shù)的輸出。
????????(3)選擇算子
????????選擇算子采用隨機(jī)遍歷抽樣(sus)。
????????(4)交叉算子
????????交叉算子采用最簡(jiǎn)單的單點(diǎn)交叉算子。
????????(5)變異算子
????????變異以一定概率產(chǎn)生變異基因數(shù),用隨機(jī)方法選出發(fā)生變異的基因。如果所選的基因的編碼為1,則變?yōu)?;反之,則變?yōu)?。
????????本案例的遺傳算法運(yùn)行參數(shù)設(shè)定如表4所列。
表4 遺傳算法參數(shù)

3.matlab代碼實(shí)現(xiàn)
完整代碼可以從以下鏈接中獲?。?/p>
基于遺傳算法的BP神經(jīng)網(wǎng)絡(luò)優(yōu)化算法
4.運(yùn)行結(jié)果分析
????????輸出結(jié)果如下:
?
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-793213.html
?
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-793213.html
5結(jié)論
????????遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的目的是通過(guò)遺傳算法得到更好的網(wǎng)絡(luò)初始權(quán)值和閾值,其基本思想就是用個(gè)體代表網(wǎng)絡(luò)的初始權(quán)值和閾值,把預(yù)測(cè)樣本的BP神經(jīng)網(wǎng)絡(luò)的測(cè)試誤差的范數(shù)作為目標(biāo)函數(shù)的輸出,進(jìn)而計(jì)算該個(gè)體的適應(yīng)度值,通過(guò)選擇、交叉、變異操作尋找最優(yōu)個(gè)體,即最優(yōu)的BP神經(jīng)網(wǎng)絡(luò)初始權(quán)值和閾值。除了遺傳算法之外,還可以采用粒子群算法、蟻群算法等優(yōu)化BP神經(jīng)網(wǎng)絡(luò)初始權(quán)值和閾值。
到了這里,關(guān)于基于遺傳算法的BP神經(jīng)網(wǎng)絡(luò)優(yōu)化算法(matlab實(shí)現(xiàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!
本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!