孫世宇 ,黃 毅 ,郭 靜 ,段修生 ,曹 帥
(1.陸軍工程大學(xué)石家莊校區(qū),石家莊 050003;2.北方自動控制技術(shù)研究所,太原 030006)
在模擬電路故障診斷中,傳統(tǒng)的故障診斷方法如故障字典法等,由于自身的局限性和模擬電路的復(fù)雜性已經(jīng)無法適應(yīng)新的故障診斷需求。近年來,人工智能迅速發(fā)展,神經(jīng)網(wǎng)絡(luò)(Neural Network,NN),支持向量機(jī)(Support Vector Machine,SVM)等學(xué)習(xí)算法被廣泛應(yīng)用到故障診斷領(lǐng)域,并取得了較好的診斷效果[1-2]。目前基于人工智能的故障診斷方法研究主要集中在3個方面:特征提取方法的研究,如小波分解,統(tǒng)計(jì)特性特征,分?jǐn)?shù)階傅立葉變換等[3-4];分類器的研究,如神經(jīng)網(wǎng)絡(luò),支持向量機(jī)等[5-6];參數(shù)優(yōu)化算法的研究,如粒子群尋優(yōu)(Particle Swarm Optimization,PSO)算法,遺傳算法(Genetic Algo-rithm,GA),蟻群算法(Ant Colonly Optimization,ACO)等[7-9]。其中,對特征提取方法的大量研究表明,分類器存在對輸入特征品質(zhì)的要求高、對特征提取算法依賴的弱點(diǎn)。在分類器研究中,訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)上的診斷精度差異較大,無法通過少量樣本較好地?cái)M合出故障診斷模型,顯示了分類器泛化能力一般的弱點(diǎn)。此外,SVM在大規(guī)模樣本和多分類問題的局限性和神經(jīng)網(wǎng)絡(luò)局部最優(yōu)的問題也同樣是傳統(tǒng)智能診斷方法研究的瓶頸所在。
對于上述傳統(tǒng)智能故障診斷方法存在的問題,一直沒能很好地解決。近年來,深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,DNN)蓬勃發(fā)展,并被廣泛應(yīng)用到圖像分類[10]、人臉識別[11]、語音識別[12]等領(lǐng)域,取得了很好的應(yīng)用效果。堆棧自編碼機(jī)(Stacked Autoencoders,SAE)是一種典型的深度神經(jīng)網(wǎng)絡(luò)[13],具有挖掘數(shù)據(jù)深層特征表達(dá)的能力,能夠克服傳統(tǒng)智能分類器對特征提取算法過度依賴的缺點(diǎn),而其良好的魯棒性,一定程度上可以解決傳統(tǒng)智能分類器泛化能力有限的問題[14]。
同時,本文通過分析傳統(tǒng)堆棧自編碼機(jī)應(yīng)用于模擬電路故障診斷中的不足,提出基于流形結(jié)構(gòu)約束的堆棧自編碼機(jī)模擬電路故障診斷方法,有效地增強(qiáng)了傳統(tǒng)堆棧自編碼機(jī)的特征提取能力,通過在3個不同的數(shù)據(jù)集上進(jìn)行故障診斷實(shí)驗(yàn),并與傳統(tǒng)智能分類器對比,驗(yàn)證了本文方法的有效性。
堆棧自編碼機(jī)對輸入故障數(shù)據(jù)的特征品質(zhì)要求不高,主要是因?yàn)槎褩W跃幋a機(jī)本身具有很強(qiáng)的特征提取能力,可以在執(zhí)行分類任務(wù)的同時對故障數(shù)據(jù)的深層結(jié)構(gòu)進(jìn)行挖掘,這種特征提取能力是通過構(gòu)建多層自編碼機(jī)(Autoencoder,AE),逐層提取特征實(shí)現(xiàn)的,如圖1所示。因此,自編碼機(jī)的特征提取能力對堆棧自編碼機(jī)性能有決定性影響。
圖1 流形結(jié)構(gòu)堆棧自編碼機(jī)故障診斷流程圖
傳統(tǒng)自編碼機(jī)分為編碼和解碼兩個部分,對故障數(shù)據(jù)的特征提取過程如下:
其中,g()是激活函數(shù),常用的激活函數(shù)一般有sigmoid,tanh,ReLU 等;W 是一個 dy×dx維的權(quán)值矩陣。本文中,忽略神經(jīng)元的偏置。
解碼時,通過函數(shù)f()重構(gòu)故障樣本x',
其中,f()是一個與g()類似的激活函數(shù);W'是W的轉(zhuǎn)置。
以重構(gòu)誤差作為目標(biāo)函數(shù),采用BP算法對(W,W')進(jìn)行更新,學(xué)習(xí)得到的隱層輸出y便是故障樣本x的特征表達(dá)。
但是,這種傳統(tǒng)的自編碼機(jī)僅僅關(guān)注如何更好地重構(gòu)每個輸入故障樣本,忽略了模擬輸入故障樣本之間的關(guān)系[15],而輸入故障樣本之間的關(guān)系隱藏著故障數(shù)據(jù)集內(nèi)在的流形結(jié)構(gòu)(ManifoldStructure),這是數(shù)據(jù)深層次的結(jié)構(gòu)特征。為了學(xué)習(xí)故障數(shù)據(jù)集的流形結(jié)構(gòu),本文在傳統(tǒng)自編碼機(jī)的基礎(chǔ)上,提出基于鄰流形結(jié)構(gòu)自編碼機(jī),在最大限度地重構(gòu)輸入個體的同時,賦予自編碼機(jī)學(xué)習(xí)故障數(shù)據(jù)集流形結(jié)構(gòu)的能力。
基于流形結(jié)構(gòu)約束的自編碼機(jī)也分為編碼和解碼兩個部分。
考慮到隱層輸出y是原始故障樣本x的特征表達(dá),為了模擬故障數(shù)據(jù)之間的關(guān)系,學(xué)習(xí)到好的流行結(jié)構(gòu),將與yi相鄰近的k個隱層輸出Ωi={ynearj}1k的距離和作為流行結(jié)構(gòu)的目標(biāo)函數(shù),則隱層輸出yi的流形結(jié)構(gòu)約束為:
n個樣本總體流形結(jié)構(gòu)約束為:
其中,yi為故障樣本xi的隱層輸出,ynearj為 {ynearj}1k中的第j個樣本。
則基于流形結(jié)構(gòu)約束的自編碼機(jī)目標(biāo)函數(shù)為:
其中,第1項(xiàng)Jrec是重構(gòu)誤差項(xiàng),一般情況下,平方誤差用于線性重構(gòu)模型中,交叉熵(xilog(xi')+(1-x)ilog(1-xi'))用于二值重構(gòu)模型中。第2項(xiàng)Jnear是鄰近距離和約束項(xiàng),α,表示學(xué)習(xí)率。
采用線性重構(gòu)模型,則上式變?yōu)椋?/p>
通過最小化關(guān)于(W,W')的目標(biāo)函數(shù)J,使用包梯度下降(Batch Gradient Descent,BGD)算法對目標(biāo)函數(shù)進(jìn)行最優(yōu)求解。雖然目標(biāo)函數(shù)J為非凸函數(shù),容易陷入局部最小,但實(shí)際上BGD算法就能取得很好的結(jié)果。設(shè)包數(shù)據(jù)大小為m,則一個BGD迭代后(W,W')更新如下:
其中,各項(xiàng)偏導(dǎo)如下:
其中,*表示矩陣乘積符號,?表示阿達(dá)馬乘積符號。
算法簡述如下:
用基于流形結(jié)構(gòu)約束的自編碼機(jī)逐層壘疊構(gòu)造堆棧自編碼機(jī),結(jié)合貪心逐層算法對模擬電路故障進(jìn)行診斷,其診斷過程如下:
步驟1:采集數(shù)據(jù),構(gòu)造故障集,并對故障集進(jìn)行預(yù)處理;
步驟2:構(gòu)造一個深度神經(jīng)網(wǎng)絡(luò);
步驟3:預(yù)訓(xùn)練
1)將深度神經(jīng)網(wǎng)絡(luò)相鄰兩層構(gòu)造一個AE,如圖1預(yù)訓(xùn)練;2)從底層開始,訓(xùn)練第1個AE,最小化其目標(biāo)函數(shù);3)將上一個AE的輸出作為AE的輸入,訓(xùn)練AE;4)重復(fù)3)直到完成所有AE的訓(xùn)練,保存權(quán)值矩陣W。
步驟4:微調(diào)
1)對堆棧自編碼機(jī)構(gòu)造一個重構(gòu)過程,其結(jié)構(gòu)與深度神經(jīng)網(wǎng)絡(luò)對稱,用WT矩陣初始化重構(gòu)過程的權(quán)陣連接,如圖1微調(diào);
2)以重構(gòu)誤差為目標(biāo)函數(shù),用BP算法對網(wǎng)絡(luò)進(jìn)行微調(diào),得到微調(diào)后的權(quán)值連接矩陣W+ε。
步驟5:分類
在堆棧自編碼機(jī)的頂層加入softmax分類器,用BP算法對深度神經(jīng)網(wǎng)絡(luò)進(jìn)行分類訓(xùn)練。
選擇ITC97中的Elliptical Filter電路作為實(shí)驗(yàn)電路,其電路圖和元器件標(biāo)稱值如圖2所示。
圖2 Elliptical Filter電路
分別設(shè)置電路中R2,R6,C1,C5元件值相對標(biāo)稱值正偏和負(fù)偏50%作為電路故障,加上電路正常狀態(tài),共9種故障狀態(tài)。
在Pspice環(huán)境下對各故障狀態(tài)進(jìn)行mente carle仿真,設(shè)置電阻、電容容差都為5%,選取3個放大器的輸出out1,out2,ou3作為測試點(diǎn),以方波信號為激勵信號,對每種故障狀態(tài)進(jìn)行1 000次時域瞬態(tài)分析,每個測試點(diǎn)采樣500個信號點(diǎn),構(gòu)成一個9 000*1 500的原始數(shù)據(jù)集,設(shè)為數(shù)據(jù)集A。
制作3個特征品質(zhì)不同的數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)。數(shù)據(jù)集origin是故障電路的原始響應(yīng)數(shù)據(jù),數(shù)據(jù)集wavelet是對原始數(shù)據(jù)小波分解后的數(shù)據(jù),數(shù)據(jù)集wavelet-energy是對小波分解后的數(shù)據(jù)進(jìn)行降維得到的數(shù)據(jù)。其具體處理過程如下:
數(shù)據(jù)集origin:原始數(shù)據(jù)集A。
數(shù)據(jù)集wavelet:分別對3個測試點(diǎn)的原始數(shù)據(jù)進(jìn)行5層db3小波變換,取各測試點(diǎn)小波變換數(shù)據(jù)的前500維構(gòu)成一個9 000*1 500的數(shù)據(jù)集,設(shè)為數(shù)據(jù)集wavelet。
表1 器件故障表
數(shù)據(jù)集wavelet-energy:分別對3個測試點(diǎn)的原始數(shù)據(jù)進(jìn)行5層db3小波分解,取各層能量值(此處取各層小波系數(shù)的絕對值和)作為特征向量,構(gòu)成一個9 000*18的特征數(shù)據(jù)集,設(shè)為數(shù)據(jù)集wavelet-energy。
取3個數(shù)據(jù)集的任意一個樣本及任意三維特征如圖3所示。
圖3 3個數(shù)據(jù)集的樣本和任意三維特征圖
由圖3可以看出,從數(shù)據(jù)集origin到數(shù)據(jù)集wavelet,其特征品質(zhì)變好,故障類之間的可區(qū)分度更高;從數(shù)據(jù)集wavelet到數(shù)據(jù)集wavelet-energy,其數(shù)據(jù)維度大幅降低,但是數(shù)據(jù)特征品質(zhì)變差,這是因?yàn)閺膚avelet到wavelet-energy的過程中,雖然保留了主要特征,但也損失了部分特征。
用堆棧自編碼機(jī)對3.2中的3個數(shù)據(jù)集進(jìn)行故障診斷實(shí)驗(yàn),并與SVM、BP神經(jīng)網(wǎng)絡(luò)對比。
分別為數(shù)據(jù)集origin/wavelet和wavelet-energy構(gòu)造1 500-700-300-100-9和18-15-9兩個堆棧自編碼機(jī),權(quán)陣初始化為之間的隨機(jī)數(shù)(nm,nm+1為相鄰兩層神經(jīng)元個數(shù)),設(shè)置數(shù)據(jù)包為大小15,學(xué)習(xí)率為0.1,預(yù)訓(xùn)練階段,使用Denoising方法增強(qiáng)網(wǎng)絡(luò)的魯棒性,各層自編碼機(jī)噪聲系數(shù)?。?.5,0.2,0.1];用流形結(jié)構(gòu)約束學(xué)習(xí)故障內(nèi)部的流形結(jié)構(gòu),參數(shù)取(3,0.1);使用 Dropout防止過擬合,取層 Dropout系數(shù)?。?.5,0.2,0.1],迭代次數(shù)為 100。微調(diào)階段,迭代次數(shù)為100。故障分類階段用BP算法對深度神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,迭代次數(shù)為100。
在訓(xùn)練/測試數(shù)據(jù)集的設(shè)置上,隨機(jī)抽取少量樣本作為訓(xùn)練集,其余大量樣本作為測試數(shù)據(jù),近似模擬故障數(shù)據(jù)全集,對訓(xùn)練好的故障診斷模型性能進(jìn)行評估。
在3個數(shù)據(jù)集上,用不同的分類器進(jìn)行100次迭代訓(xùn)練,得實(shí)驗(yàn)結(jié)果如下頁表2所示。
分析上述實(shí)驗(yàn)數(shù)據(jù)可以發(fā)現(xiàn):
1)從數(shù)據(jù)集origin到wavelet診斷精度的提升可以看出,BP和SVM對輸入數(shù)據(jù)集特征品質(zhì)要求較高;從wavelet到wavelet-energy的變化可以看出BP和SVM對高維數(shù)據(jù)處理的乏力。而SAE和改進(jìn)SAE無論在哪個數(shù)據(jù)集上均能取得很好的訓(xùn)練效果,表現(xiàn)了SAE對輸入數(shù)據(jù)特征品質(zhì)要求低和對高維數(shù)據(jù)處理能力強(qiáng)的優(yōu)點(diǎn)。
2)對每個數(shù)據(jù)集,訓(xùn)練樣本量從45個到360個,故障診斷精度越來越高。這是因?yàn)楦鶕?jù)“大數(shù)定理”,訓(xùn)練樣本量越大,訓(xùn)練得到的故障診斷模型越接近真實(shí)模型。同時也可以發(fā)現(xiàn),大量的訓(xùn)練樣本能夠彌補(bǔ)模式識別算法在擬合故障診斷模型上的不足。
3)在泛化能力方面,SAE在不同數(shù)據(jù)集上,其訓(xùn)練和測試精度基本一致,差異性較小,而SVM和BPNN則在訓(xùn)練和測試上精度差異較大,最大能達(dá)到25.02%。
本文所提的改進(jìn)的SAE能夠有效提升SAE的故障診斷效果。特別是數(shù)據(jù)集Wavelet-energy,由于特征維度較低,SAE無法再挖掘出更有效的特征,因此,SAE和BPNN的診斷精度基本持平,但是本文所提的改進(jìn)SAE基于流形結(jié)構(gòu)特征約束,可以挖掘數(shù)據(jù)內(nèi)在結(jié)構(gòu)特征,取得了更好的故障診斷精度。
本文針對傳統(tǒng)智能故障診斷方法的不足,提出基于堆棧自編碼機(jī)的故障診斷方法;針對堆棧自編碼機(jī)特征提取能力的不足,提出基于流形結(jié)構(gòu)約束的堆棧自編碼機(jī)實(shí)現(xiàn)故障診斷,實(shí)驗(yàn)表明:
表2 Elliptical Filter電路診斷結(jié)果
1)基于堆棧自編碼機(jī)的模擬電路故障診斷方法有比SVM和BP神經(jīng)網(wǎng)絡(luò)更好的故障識別率;
2)基于流形結(jié)構(gòu)約束的堆棧自編碼機(jī)模擬電路故障診斷有比基于堆棧自編碼機(jī)模擬電路故障診斷更好的識別率;
3)基于堆棧自編碼機(jī)的模擬電路故障診斷方法有更好的泛化能力,在少量訓(xùn)練樣本時,測試樣本集仍然能有很高的識別率。