李 波 , 張 琳, 張 搏, 張保山
(1. 空軍工程大學研究生院, 陜西 西安 710000; 2. 93748 部隊,內蒙古 包頭 014000;3. 空軍工程大學防空反導學院, 陜西 西安 710000)
BP神經網絡是一種誤差反向傳播的前饋神經網絡[1],通常用誤差梯度下降法更新網絡。由于具備并行分布處理、非線性映射和自學習等優點,BP神經網絡廣泛應用于智能故障診斷[2]、健康狀態預測[3]和自動控制[4]等領域。但是,因其存在易形成局部極小、學習效率低和收斂速度慢等固有缺陷[5],未經改進的BP神經網絡直接應用時效果常不夠理想。目前,研究者對BP神經網絡的改進研究通常集中在附加動量項和學習率自適應等方面,如:謝汝兵等[6]對BP神經網絡進行了附加動量項改進并應用于機械故障診斷;王莉莉等[7]對BP神經網絡進行“動量-學習率自適應”改進后應用于電容層析成像(Electrical Gapacitance Tomography,ECT)流型辨識;陳華珍等[8]提出了附加動量和學習率的自適應算法,并將這種“雙自適應”BP神經網絡應用于智能手環體征檢測。然而,由于上述方法中動量因子和學習率或固定不變,或僅在有限的固定點上變動,自適應功能較弱,網絡收斂性仍顯不足。筆者將C語言中的“指針”思想引入BP神經網絡中,創建了網絡“誤差指針”。通過“誤差指針”對學習率和動量因子進行雙自適應調整,進一步擴展了二者的取值空間,有利于網絡更深層次的自適應調整,可提高網絡收斂速度和診斷精度。
BP神經網絡的結構通常有輸入層、隱含層和輸出層3部分,根據隱含層數量不同,BP神經網絡可分為單隱層和多隱層。研究表明:單隱層即可實現任意非線性映射功能。典型的單隱層BP神經網絡結構如圖1所示。
BP神經網絡基本信號傳輸和調整原理如下:
輸入信號
(1)
輸出信號
(2)
式中:σ(·)為激活函數。
樣本誤差
e(n)=L(a[l](n),y),
(3)
式中:y為期望的輸出;L(·)為損失函數。
輸出層梯度
(4)
式中:σ′(·)為激活函數的導數。
隱含層梯度
(5)
第n次迭代的偏置
(6)
式中:η為學習率(也稱步長),通常取(0,1)區間內的一個常數。
第n次迭代的權重
(7)
可見,標準BP算法屬于簡單的最速下降尋優法,其調整方向與梯度方向相反。
由于神經網絡在修正權值和偏置過程中僅僅考慮了當前時刻的梯度,未考慮前一時刻的變化方向,導致網絡在學習過程中容易發生振蕩,收斂速度緩慢。因此,有研究者提出通過附加動量項的方式進行改進,改進后偏置和權重修正公式如下:
第n次迭代的偏置為
(8)
式中:μ為動量因子,通常取[0.1,0.8]區間內的一個常數。
第n次迭代的權重為
(9)
為了進一步加速網絡收斂,有研究者提出對學習率η進行自適應改進,即η不再取固定值,而根據誤差大小進行調整,通常取如下階梯函數[9]:
(10)
可見,這種學習率自適應調整的基本思路是:誤差降低時說明調整方向正確,此時增大學習率加速收斂;誤差增大時說明調整方向錯誤,此時降低學習率避免振蕩。使用批量訓練方式的動量-學習率自適應BP算法流程如圖2所示,其中ep為誤差容限。
前述方法中,雖然通過附加動量項能有效抑制振蕩,促進網絡收斂,但如何選取動量因子μ一直沒有較好的方法。μ選取過小,慣性效果弱,對于網絡的振蕩抑制不夠明顯;μ選取過大,慣性效果過于顯著,又不易加速收斂。孫瑜[10]通過對比μ取不同值時神經網絡收斂效果,得出了μ的最佳值與學習率η有關的結論,并給出了不同η下μ的一些取值范圍。但因神經網絡初始權值的隨機性,其最佳值理論尚不具備一般性。同時,學習率自適應方法僅考慮誤差的增大或減小,而未考慮誤差連續增大或減小的情況,自適應能力仍顯不足。
于海寧等[11]在研究C語言程序設計時提出一種改進的指針分析方法,提高了對敏感量的控制能力。BP神經網絡中動量因子和學習率作為對誤差函數敏感的變量,同樣適用于上述方法。因此,筆者設計了計數器p1(p2)作為網絡誤差e(n)連續增大(減小)的標志量,并將其作為“誤差指針”供動量因子和學習率自適應調節時引用,具體調整策略如下:
誤差指針p1和p2分別為
(11)
(12)
自適應學習率η為
(13)
自適應動量因子μ為
(14)
如:誤差e(n)連續減小k次時,說明調整方向正確并且搜索步長不足,此時以k冪指數方式提高學習率η,并以k冪指數方式降低動量因子μ,這樣就可以進一步加速網絡收斂。使用批量訓練方式,改進的雙自適應BP算法流程如圖3所示。
實驗分析程序運行于Windows10系統,處理器為Intel(R)Core(TM)i5-7200u,CPU 2.50 GHz 2.71 GHz,軟件版本為MATLAB R2016a。
絕緣柵雙極型晶體管(Insulated Gate Bipolar Transistor,IGBT)是一種常用的電力電子元件,廣泛應用于整流、逆變、脈寬調制等電路。筆者以某型雷達的三相電壓型交-直-交變頻器逆變電路為研究對象,對其IGBT開路故障進行診斷,其電路如圖4所示。
統計表明:三相電壓型交-直-交變頻器逆變電路中1個IGBT開路故障居多,2個IGBT同時開路故障較少,3個以上IGBT同時故障的概率極小。因此,筆者以單IGBT開路、雙IGBT開路(以T3、T4為例)和無故障等狀態為診斷內容,對不同狀態進行二進制編碼并設定了故障編號;通過Simulink獲取了IGBT在不同狀態下的電路輸出電壓值,共取得880組樣本[12](其中110組為正常值);隨機選取其中的800組用于訓練,另外80組用于測試。三相逆變電路IGBT開路故障數據(歸一化后)如表1所示。

表1 三相逆變電路IGBT開路故障數據(歸一化)
根據樣本特點,設計了3×5×6的BP神經網絡,使用批量訓練方式。其中隱層傳輸函數為Log-sigmoid,輸出層傳輸函數為Purelin。最大迭代次數為300步,為了更好地對比各算法收斂性,誤差容限設為0。
當使用典型BP神經網絡進行故障診斷時,選取的學習率和動量因子不同,網絡收斂也不同。經測試,學習率η和動量因子μ分別選取0.8和0.7時,神經網絡學習效果最理想,達到穩定誤差的迭代次數132步。使用訓練好的網絡進行測試,診斷正確率為75%,誤差曲線及診斷結果見圖5、6。
由式(3)、(7),可得典型BP神經網絡的誤差為
(15)

在使用動量-自適應學習率調整方法時,學習率初始值設置為0.8。經驗證,μ=0.6時,神經網絡學習效果最理想,達到穩定的迭代次數為38步,測試準確率提高至76.25%,誤差曲線及診斷結果如圖7、8所示。
由式(3)、(9),可得動量-自適應學習率的網絡誤差為
(16)

最后,使用基于誤差指針改進的學習率和動量因子雙自適應性BP算法,學習率初始值同樣取0.8,動量因子初始值取0.6。此時,網絡達到穩定的迭代次數為46步,準確率為82.5%。誤差曲線及診斷結果如圖9、10所示。
由式(3)、(13)、(14),可得改進的雙自適應神經網絡誤差為
(17)
此時,誤差e(n)受η(n-1)和μ(n-1)雙重調節,在指針變量p1(p2)的控制下,誤差正常下降時,調節速度不斷加快,出現震蕩時,調節幅度時將得到抑制。因此,其誤差降低速度加快,并且振蕩效果得到了較好的抑制。
為了進一步對比各種算法,取網絡最后100次迭代誤差進行對比,結果如圖11所示。不同算法誤差均值分別為0.685、0.390、0.308,均方差分別為0.002 40、0.001 30、0.000 12,由此可知:經改進的雙自適應BP算法收斂性和診斷精度均優于典型BP算法和動量-自適應學習率BP算法。
筆者通過建立誤差指針,設計了基于改進雙自適應的BP算法,并建立了相應故障診斷模型。仿真實驗證明該方法既增強了網絡的收斂性,又提高了故障診斷精度,可以改善現有方法收斂速度慢、不穩定、診斷精度偏低等缺陷。但本文并未對動量因子、學習率初始值和調整門限的選取進行研究,而初始值和調整門限的取值在一定程度上影響BP神經網絡的性能,因此,需對相關內容做進一步研究。