謝汝兵,杜 娟,葛衛(wèi)京
(太原科技大學(xué),山西 太原 030024)
BP神經(jīng)網(wǎng)絡(luò)是在人工神經(jīng)網(wǎng)中使用最廣泛,能夠處理任意輸入輸出的非線性映射,在函數(shù)逼近、模式分類、聚類識別和數(shù)據(jù)壓縮方面應(yīng)用廣泛,80%~90%的人工神經(jīng)網(wǎng)絡(luò)多采用BP網(wǎng)及其變形[1]。BP網(wǎng)絡(luò)體現(xiàn)了前饋神經(jīng)網(wǎng)絡(luò)的核心內(nèi)容和人工神經(jīng)網(wǎng)絡(luò)的精華部分。盡管BP網(wǎng)絡(luò)原理簡單,使用方便,但是在實(shí)際應(yīng)用中卻存在著收斂速度緩慢、容易陷入局部極小值和網(wǎng)絡(luò)運(yùn)算不穩(wěn)定缺陷[2]。本文提出附加動量下降法對標(biāo)準(zhǔn)BP網(wǎng)絡(luò)改進(jìn),效果明顯。
標(biāo)準(zhǔn)BP網(wǎng)絡(luò)通常采用誤差梯度下降(Gradient Descent)算法,受其影響,BP網(wǎng)絡(luò)存在如下不足[3]:①易陷入局部最優(yōu),難以實(shí)現(xiàn)全局最優(yōu);②訓(xùn)練次數(shù)繁瑣,學(xué)習(xí)效率低下,收斂速度緩慢;③隱含層節(jié)點(diǎn)缺乏理論指導(dǎo);④學(xué)習(xí)新樣本時(shí)存在遺忘舊樣本的趨勢。
BP網(wǎng)絡(luò)默認(rèn)訓(xùn)練函數(shù)是Levenberg-Marquardt,該函數(shù)對中小型前饋網(wǎng)絡(luò)的訓(xùn)練有良好的性能。但當(dāng)網(wǎng)絡(luò)內(nèi)存空間有限或傳遞非線性較復(fù)雜時(shí),BP網(wǎng)絡(luò)易陷入多個(gè)局部最優(yōu)且收斂速度緩慢[4]。這些缺陷嚴(yán)重地影響B(tài)P網(wǎng)絡(luò)在工程領(lǐng)域能力的進(jìn)一步發(fā)揮。
國內(nèi)外學(xué)者從不同角度提出諸多改進(jìn)方法,大致分為3類:①啟發(fā)式類改進(jìn),如自適應(yīng)調(diào)節(jié)學(xué)習(xí)率法和RPOP法等;②數(shù)字優(yōu)化類改進(jìn),如共軛梯度法、擬牛頓法等[5];③混合智能算法類,如遺傳算法(GA)、模擬退火法(SA)、粒子群(PSO)算法與神經(jīng)網(wǎng)絡(luò)混合等。這些方法雖取得了一定的效果,但又不同程度地存在新的問題[6]。
為保障BP網(wǎng)絡(luò)在非二次型較強(qiáng)區(qū)域處理時(shí)仍能夠保持較高的收斂速度,本文提出附加動量下降法對標(biāo)準(zhǔn)BP網(wǎng)絡(luò)權(quán)值進(jìn)行改進(jìn),其權(quán)值更新量修正公式為:
其中:α為動量系數(shù);η為學(xué)習(xí)速率;E為實(shí)際輸出與期望輸出的差值;Δωij(t)和Δωij(t-1)分別為第t次和第t-1次迭代時(shí)的權(quán)值的修正量。
引入附加動量αΔωij(t-1)后權(quán)值會朝著底部平均方向變化,從而減小全局收斂震蕩(緩沖平滑作用),進(jìn)而提高學(xué)習(xí)速率,縮短收斂時(shí)間。
改進(jìn)BP算法的流程圖如圖1所示,具體描述如下:
(1)用均勻分布隨機(jī)數(shù)把各權(quán)值矩陣W(隱含層至輸出層的連接數(shù)值)和V(輸入層到隱含層的連接數(shù)值)設(shè)定為0~1間的小數(shù),進(jìn)行初始化,并把模式計(jì)數(shù)器p和訓(xùn)練計(jì)數(shù)器q置1。
(2)從訓(xùn)練樣本對[XP,DP]中將一個(gè)數(shù)據(jù)傳入輸入層,并根據(jù)公式分別計(jì)算隱含層的輸出向量Y=(y1,y2,y3,…,ym)和輸出層輸出向量O=(o1,o2,o3,…,ol)。其中,隱含層神經(jīng)元數(shù)目為m,j是隱含層任一神經(jīng)元(j=1,2,…,m);輸出層神經(jīng)元數(shù)目為l,k是輸出層任一神經(jīng)元(k=1,2,…,l)。
(3)計(jì)算P對訓(xùn)練樣本的輸出誤差EP=以及輸出總誤差ERME=其中,P 為訓(xùn)練樣本[XP,DP]的數(shù)目,為 教 師 信 號DP=分量。
圖1 改進(jìn)BP算法的流程圖
(5)計(jì)算隱含層第j個(gè)神經(jīng)元至輸出層第k個(gè)神經(jīng)元的鏈接權(quán)值2,…,m。計(jì)算輸入層第i個(gè)神經(jīng)元到隱含層第j個(gè)神經(jīng)元的鏈接權(quán)值1,…,n;并更新權(quán)值矩陣W 和V。其中,學(xué)習(xí)率η為0~1間的小數(shù),和由步驟(4)得來,xi為輸入層第i個(gè)神經(jīng)元的輸入值,yj為隱含層第j個(gè)神經(jīng)元的輸出值。
(6)若模式計(jì)數(shù)器p<P,則p和q各加1,并返回步驟(2);否則轉(zhuǎn)到步驟(7)。
(7)檢驗(yàn)網(wǎng)絡(luò)總誤差是否達(dá)到精度要求,若ERME<Emin則訓(xùn)練結(jié)束;否則E置0,p置1,并跳回步驟(2)。
本文對旋轉(zhuǎn)機(jī)械常見故障診斷進(jìn)行仿真實(shí)驗(yàn)。通過旋轉(zhuǎn)機(jī)械故障現(xiàn)場記錄和實(shí)驗(yàn)室人為制造設(shè)備故障的積累,得出反映旋轉(zhuǎn)機(jī)械故障的4個(gè)重要特征信號,即頻域波形、時(shí)域波形、非周期波形以及頻域中心頻域。表1為旋轉(zhuǎn)機(jī)械特征信號表。
如表1所示,本文進(jìn)行了22組實(shí)驗(yàn),第1組至第20組作為改進(jìn)BP網(wǎng)絡(luò)的訓(xùn)練樣本,第21組和第22組作為其檢驗(yàn)樣本。輸入信號頻域波形(x1,x5,x9)、時(shí)域波形(x2,x6,x10)、非周期波形(x3,x7,x11)以及頻域中心頻域(x4,x8,x12)四部分構(gòu)成故障征兆集。輸出向量Y代表旋轉(zhuǎn)機(jī)械的故障原因集,(1,0,0,0)代表無故障,(0,1,0,0)代表軸承座松動故障,(0,0,1,0)代表轉(zhuǎn)子平衡不對中狀態(tài),(0,0,0,1)代表轉(zhuǎn)子徑向碰摩故障。
選用三層前向型神經(jīng)網(wǎng)絡(luò),因故障征兆集有12組特征向量,故輸入層神經(jīng)元數(shù)目是12;輸出結(jié)果有4種模式,故輸出層的神經(jīng)元數(shù)目為4。隱含層的神經(jīng)元數(shù)目由確定,n為輸入層神經(jīng)元數(shù)目,l為輸出層神經(jīng)元數(shù)目,a為1~10間的常數(shù)。由此確定網(wǎng)絡(luò)隱含層神經(jīng)元數(shù)目為10。
為使標(biāo)準(zhǔn)BP誤差曲面在大型復(fù)雜的多維空間訓(xùn)練過程中跳出局部極值點(diǎn),采用帶有附加動量和學(xué)習(xí)率的訓(xùn)練函數(shù)traingdx,通過調(diào)用learnbpm函數(shù)以實(shí)現(xiàn)式(1)對權(quán)值修正。網(wǎng)絡(luò)輸入層的傳遞函數(shù)為S型正切函數(shù)logsig函數(shù),隱含層傳遞函數(shù)為tansig函數(shù),輸出層傳遞函數(shù)為純線性函數(shù)purelin函數(shù)。訓(xùn)練過程中迭代間隔25次顯示1次,學(xué)習(xí)率為0.05,動量因子為0.9,訓(xùn)練速度為0.05,訓(xùn)練速度增長系數(shù)為1.2,訓(xùn)練速度下調(diào)系數(shù)為0.8,最大訓(xùn)練次數(shù)為10 000,實(shí)際訓(xùn)練次數(shù)為6 000,訓(xùn)練精度為1×10-5。
表1 旋轉(zhuǎn)機(jī)械特征信號表
為實(shí)現(xiàn)帶有附加動量下降法的數(shù)值修正,其改進(jìn)的學(xué)習(xí)函數(shù)learnbpm的MATLAB代碼如下:
……
function[dw,db]=learnbpm(p,d,lr,mc,dw,db)
if nargin<5
error(‘It is not enough to meet input arguments’)
end
x=(1-mc)*lr*d;
dw=mc*dw+x*p;
if nargout=2
[R,Q]=size(p);
db=mc*db+x*ones(Q,1);
end
……
表2為仿真結(jié)果,標(biāo)準(zhǔn)BP網(wǎng)絡(luò)和改進(jìn)的BP網(wǎng)絡(luò)都作出了正確的分析,即第20組和第21組驗(yàn)證數(shù)據(jù)對應(yīng)著第1類故障和第4類故障。然而,改進(jìn)BP網(wǎng)絡(luò)精確度更高,訓(xùn)練效果更加直觀。
圖2為標(biāo)準(zhǔn)BP網(wǎng)絡(luò)仿真的誤差曲線圖,收斂迭代次數(shù)為2 333次,收斂效果不佳并存在不平滑現(xiàn)象。
圖3為改進(jìn)BP網(wǎng)絡(luò)仿真的誤差曲圖,收斂迭代次數(shù)是1 976次,收斂效果明顯并曲線光滑。
由圖2和圖3對比可知,改進(jìn)BP網(wǎng)絡(luò)克服了標(biāo)準(zhǔn)BP網(wǎng)絡(luò)易陷入局部極小值和網(wǎng)絡(luò)運(yùn)算不穩(wěn)定的缺點(diǎn),收斂速度提高了15.3%。
表2 標(biāo)準(zhǔn)BP網(wǎng)絡(luò)和改進(jìn)BP網(wǎng)絡(luò)仿真結(jié)果
圖2 標(biāo)準(zhǔn)BP訓(xùn)練誤差曲線圖
圖3 改進(jìn)BP訓(xùn)練誤差曲線圖
采用附加動量下降法對標(biāo)準(zhǔn)BP網(wǎng)絡(luò)進(jìn)行改進(jìn),克服了自身收斂速度緩慢、容易陷入局部極小值和運(yùn)算不穩(wěn)定的缺陷,具有良好的推廣價(jià)值。
[1] 周潤景,張麗娜.基于MATLAB與fuzzyTECH的模糊與神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2010.
[2] 袁曾任.人工神經(jīng)網(wǎng)絡(luò)及其應(yīng)用[M].北京:清華大學(xué)出版社,1999.
[3] 韓立群.人工神經(jīng)網(wǎng)絡(luò)教程[M].北京:北京郵電大學(xué)出版社,2006.
[4] 張德峰.MATLAB神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2009.
[5] 蘇高利,鄧芳萍.論基于MATLAB語言的BP神經(jīng)網(wǎng)絡(luò)的改進(jìn)算法[J].科技通報(bào),2003,19(2):130-135.
[6] 盛仲飆.BP神經(jīng)網(wǎng)絡(luò)原理及 MATLAB仿真[J].渭南師范學(xué)院學(xué)報(bào),2008,23(5):65-67.