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