鄧明洋,李長征,楊 浩
(西北工業(yè)大學 動力與能源學院,西安 710072)
機械設備在使用的過程中,隨著時間的推移,由于一些因素如機械疲勞、操作不當、維護不當等,導致零部件發(fā)生破損而產生故障。損壞的機械設備繼續(xù)運行很可能會導致嚴重的事故發(fā)生,而造成巨大的損失。機械故障診斷技術是一種了解和掌握機器在運行
過程的狀態(tài),確定其整體或局部正?;虍惓?,早期發(fā)現故障及其原因,并能預報故障發(fā)展趨勢的技術。運用機械故障診斷技術能夠有效的減少安全隱患,避免造成重大損失[1-3]。
基于數據驅動的機械故障診斷是通過對監(jiān)測信號進行分析,并設計算法進行故障診斷。傳統(tǒng)的故障診斷方法是從信號的時域、頻域以及時頻域進行分析,這類方法的可解釋性強,能夠很好地闡述某些故障的現象和原因,但需要深入的專業(yè)領域知識,并且因為信號本身是經過十分復雜的調制過程形成的,分析方法特別是定量指標存在難以泛化的困難。隨著機器學習技術的深入研究,在機械故障診斷領域也得到了廣泛的應用。基于機器學習的故障診斷方法的基本流程是,首先通過人工提取一些常用的特征,如時域特征、頻域特征、時頻域特征等,然后對特征進行篩選,消除冗余信息,達到更好的診斷效果,最后挑選相應的機器學習算法進行訓練以及測試故障診斷的效果。相對傳統(tǒng)方法,它不需要太過專業(yè)的知識[4]。得益于算力的提升以及數據量的增長,深度學習在故障診斷領域也開始廣泛應用。深度學習進行故障診斷無需對數據進行人工的特征提取[5],一類方法是將原始信號進行直接輸入網絡通過一維卷積進行故障診斷[6],另一類方法對原始數據經短時傅里葉變換或者小波變換后轉換成圖像,輸入網絡通過二維卷積進行故障診斷[7],但這兩類方法對不同分布的數據則需要重新進行訓練網絡,且網絡參數巨大。
自編碼器可以看作一種自動提取特征的神經網絡,編碼網絡將原始數據作為輸入,通過神經網絡壓縮為對應的特征,然后解碼網絡將特征解碼為原始數據[8]。對不同分布的數據,使用自編碼器進行特征提取,輸入到輕量的故障診斷模型進行診斷。這種方法可以共用特征提取網絡,且故障診斷模型的參數量小,此外還可以探索不同分布數據的相關性。
由于故障信號是極具復雜,通過自編碼器進行提取故障信號的特征,然后根據特征重構出原始信號,在網絡規(guī)模小的時難以收斂[9]。為了解決這個問題,一些學者提出使用信號頻譜作為自編碼器的輸入,取得了較好的效果。趙志宏等[10]提出了使用故障信號作為輸入,重構的是信號頻譜,提取出信號的頻域特征,從故障信號到對應頻譜,相當于只重構信號的部分特征,通過這種方法取得了很好的分類效果。但這種方法使用自編碼器將數據樣本編碼為確定性向量,對噪聲的抗干擾性不強[11-14]。
針對上述問題,本文提出采用變分自編碼器提取信號頻域特征。首先將原始信號輸入網絡提取頻域特征分布,對特征分布加入噪聲然后采樣得到特征向量,對特征向量重構頻譜[15]。這種方法使得特征向量具有一定的不確定性,因此使得特征表示更為魯棒。進一步,應用局部異常因子算法對信號特征的離群點進行檢測和剔除。最后,以頻域特征作為輸入構建分類算法對不同類型的軸承故障進行分類并驗證算法的有效性。
自編碼器(AE,autoencoder)是一種人工神經網絡,用于學習未標記數據的有效編碼,屬于無監(jiān)督學習方法,通過嘗試從編碼中重新生成輸入來驗證和改進編碼。自編碼器通過訓練網絡來學習一組數據的編碼,即特征表示,通常用于數據降維[9]。
自編碼器的結構如圖1所示,自編碼器由編碼器(Encode)和解碼器(Decode)兩個部分組成。編碼器用于將輸入映射到相應的編碼,解碼器用于將編碼重建原始輸入。給定輸入空間X∈X和特征空間h∈F,定義映射f,g使得輸入的重建誤差最小[11]:
變分自編碼器[14](VAE,variational auto-encoders)與自編碼器架構有相似之處,但在過程和數學公式方面存在著顯著差異。普通自編碼器將輸入編碼成特征空間中的某個確定點;而變分自編碼器,將輸入編碼成特征空間中的概率分布。變分自編碼器模型訓練過程分為四步:首先,將輸入編碼成在特征空間中的分布;第二,在這個分布中隨機采樣特征空間中的一個點;第三,對采樣點進行解碼計算出損失;最后,損失通過網絡進行反向傳播優(yōu)化網絡參數。
變分自編碼器的目標是使用參數化分布pθ(x)模擬或近似x的真實分布p(x)。設z為潛空間變量,為x更本質的描述。通過聯(lián)合分布邊緣化z表示x:
根據鏈式規(guī)則,方程可以重寫為:
pθ(x)難處理導致pθ(z|x)很棘手,變分自編碼器采用神經網絡來近似后驗分布:
qΦ(z|x)≈pθ(z|x)
通過深度神經網絡優(yōu)化參數Φ,使得qΦ(z|x)可以很好的估計pθ(z|x)。通過這種方式將整體問題轉換到自編碼器框架中,其中條件似然概率分布pθ(x|z)由解碼器計算,而近似后驗概率分布qΦ(z|x)由編碼器計算。
對于深度學習問題,需要定義一個可微的損失函數,以便通過反向傳播來更新網絡權重。對于變分自編碼器,其思路是通過優(yōu)化解碼器模型(生成模型)參數減少輸入和輸出之間的重建誤差,以及參數Φ使得qΦ(z|x)盡可能地接近pθ(z|x)。重構誤差使用均方誤差,衡量兩個分布差異使用Kullback-leibler散度[15]。DKL(qΦ(z|x)||pθ(z|x))具體的表達形式為:
通過變形移項可以將等式重寫為:
log(pθ(x))-DKL(qΦ(z|x)||pθ(z|x))=
Ez~qΦ(z|x)(log(pθ(z|x))-DKL(qΦ(z|x)||pθ(z)))
目標是最大化pθ(x)項,以提高生成的數據質量,并最小化真實后驗和估計后驗的差異。定義證據下界(ELBO,evidence lower bound)損失函數,可以寫成:
LθΦ=-Ez~qΦ(z|x)(log(pθ(z|x)))+
DKL(qΦ(z|x)||pθ(z))
鑒于Kullback-leibler散度的非負性質,有如下性質:
-Lθ,Φ≤log(pθ(x))
問題可以概括為,使用神經網絡求解最佳參數將此損失函數最小化:
變分自編碼器的框架如圖2所示,通過重參數化技巧,將隨機向量ε作為外部輸入注入到潛空間中,將隨機性排除在更新過程之外。
圖2 變分自編碼器結構
關于潛空間的主要假設可以看作為一組多元高斯分布,可以描述為:
z~pθ(z|x)=N(μ,δ2)
鑒于噪聲項滿足ε~N(0,I)和⊙定義為元素的乘積,重參數化將上述方程修改為:
z=μ+σ⊙ε
傳統(tǒng)的自編碼器的目標輸出一般為原始信號,且網絡結構一般是對稱的。通過自編碼器提取特征,使用特征分類的過程,即故障診斷過程如圖3所示。分類過程只使用了編碼網絡的輸出。所以在保證分類模型的復雜度時,加深解碼網絡的層數,構建非對稱自編碼器,使得特征提取的效果更好。此外通過壓縮的特征進行重建原始信號,必然會有一定的信息損失。頻譜是時域信號在頻域下的表示方式,通過對時域信號x(t)進行傅里葉變換得到f(w)=|A(W)|*e(jφ(w)),其中|A(W)|為幅值譜,e(jφ(w))為相位譜,廣義上的頻譜就是對幅值譜的另一種叫法,從時域信號到幅值譜存在一定的信息損失。計算機在處理的過程中是對采樣的信號進行處理,由采樣定理可知,給定采樣率fs,完全重構頻帶的限制為B 圖3 自編碼器分類任務 頻域特征變分自編碼器的框架如圖4所示,輸入為原始的時域信號,通過編碼器得到頻域特征的概率分布,通過對頻域特征的概率分布進行重采樣得到頻域特征向量,解碼器對特征向量進行重建頻譜??梢钥闯鼍幋a器和解碼器為非對稱的結構。 圖4 頻域特征變分自編碼器 離群點(outliers)也稱為異常值,是與其他觀測值有顯著差異的值。形成離群點的因素是多種多樣的,可能是數據采樣過程中噪聲引入的誤差,也可能是研究對象固有存在各種偶然因素引起的[16-17]。不管何種原因導致離群點出現,都會對數據的分析造成一定的影響。對于故障檢測而言,離群點表征某種故障發(fā)生時,幾率較小的情況,離群點提供了重要的信息,需要單獨討論。而為了讓診斷模型泛化性能更好,選擇丟棄這些異常值來進行實驗。 局部異常因子(LOF,local outlier factor)[18-19]是一種無監(jiān)督的離群檢測方法,采用局部的方法能夠對不同密度聚類的離群點進行識別。相關概念如下: 1)點p的第k距離:給定正整數k,定義d(p,o)為點p和點o∈D之間的距離,點p的第k距離定義為k-distance(p)使得: (1)至少有k個點o′∈D滿足d(p,o′)≤d(p,o)以及 (2)至多有k-1個點o′∈D滿足d(p,o′) 2)點p的第k距離鄰域:給定點p的第k距離,點p的第k距離鄰域包含所有與點p距離不超過點p的第k距離的點。 Nk(p)={q∈D|d(p,q)≤k-distance(p)} 其中:|Nk(p)為Nk(p)集合中的點數,有|Nk(p)|≥k。 3)點p相對于點o第k可達距離:令k為一個自然數,則點p相當于點o的第k可達距離定義為: reach-distk(p,o)=max{k-distance(o),d(p,o)} 4)點p的局部可達密度定義為: 局部可達密度為點p與其第k距離鄰域點的平均可達距離的倒數。表示的是從點p的鄰近點到達點p的平均可達性,對于重復點時,這個值變得無窮大。 5)點p的局部離群因子表達為: 局部離群因子為點p第k距離鄰域點平均局部可達密度與點p的局部可達密度之比,這是密度值之比,有如下結論: (1)LOFk(p)~1表示點p和鄰近點具有相似的密度; (2)LOFk(p)<1表示點p比鄰近點的密度更高(內點); (3)LOFk(p)>1表示點p的密度低于鄰近點的密度(離群點)。 LOF是通過點p和它鄰域點的相對密度來判斷是否為異常點。相對密度通過局部異常因子來衡量,異常因子明顯大于1的表示離群點,密度通過平均局部可達距離倒數表達,距離越大表明密度越小。LOF是通過點的第k距離鄰域來計算,不必全局計算,因此稱作局部異常因子。LOF不會因為數據的數據簇的分散情況而誤判。 本文提出的故障診斷模型的整體流程如圖5所示,它包含數據預處理、特征提取、樣本分類3個部分。每個部分的具體作用如下: 圖5 故障診斷模型流程 1)數據預處理部分對原始數據進行截取,劃分訓練集和測試集以及對訓練集使用FFT求取頻譜; 2)特征提取部分使用訓練集訓練頻域特征變分自編碼器,然后使用局部異常因子算法對每一簇的離群點進行剔除得到特征訓練集; 3)樣本分類即為選定分類器,使用特征訓練集進行訓練,使用測試集經頻域特征變分自編碼器提取特征,輸入分類器進行分類。 本文的滾動軸承實驗數據來自凱斯西儲大學(CWRU)軸承數據中心[20],實驗裝置如圖6所示,實驗裝置由2HP電機(左)、扭矩傳感器/編碼器(中)、功率計以及電子控制設備(未顯示)組成。使用放電加工將單點故障引入測試軸承,在不同損傷程度以及不同負載下采集了多組的振動信號。選取了風扇端軸承在采樣頻率為12 kHz及負載為0 HP的實驗數據。如表1所示,數據的類別分別為正常狀態(tài)(Normal)、滾動體故障(Ball)、內圈故障(IR)、外圈故障(OR),其中每種故障包含0.007、0.014和0.021三種不同的損傷程度如表1所示,共10種類型的數據。 圖6 滾動軸承實驗裝置 表1 實驗數據故障類型 使用滑動窗口方法生成訓練集和測試集樣本,設定窗口長度為L,窗口的重疊率為R,則可計算出滑動的步長S為: S=(1-R)*L 分別使用滑動窗口法對上述類別數據進行截取,同時通過FFT求取數據的頻譜,每種數據生成2 000個樣本,把不同損傷程度與正常數據分別組合為數據集A(0.007)、數據集B(0.014)、數據集C(0.021)。 實驗所采用的編程環(huán)境為Google Colaboratory,是Google提供的一個Jupyter Notebook式的交互環(huán)境,搭載python3.7、tensorflow2.8.2。構建頻域特征變分自編碼器模型進行特征提取,模型具體參數如表2所示,主要參數中的神經元個數括號中第一個參數表示前一層節(jié)點的個數,第二參數表示當前層的節(jié)點數。訓練模型時,批次大小為50,采用Adam優(yōu)化器,學習率設置為0.000 1,迭代次數500次。 表2 變分頻域特征提取自編碼模型參數 自編碼器是一種無監(jiān)督的學習網絡,在分類任務前進行特征提取,同時需將數據集劃分為訓練集和測試集,從表2可以看出特征的維度為32,為了直觀地展示,將提取到的32維特征使用t-SNE算法進行二維可視化。在數據集A、B、C分別使用訓練集進行訓練,使用測試集進行驗證,通過t-SNE算法得到如圖7~9所示的結果。 圖7 數據集A的特征降維結果 圖8 數據集B的特征降維結果 圖9 數據集C的特征降維結果 從圖7~9可以看出,3種不同損傷的數據集通過頻域特征變分自編碼器提取特征,對提取的特征進行t-SNE聚類算法可以明顯看出數據集分為四類,類與類之間存在著清晰的界線。此外,有少部分點被t-SNE算法映射別的簇中。 3種數據集的頻譜重建的效果如圖10~12所示,可以看出重建頻譜與原始頻譜在形狀上是相似的,但是原始頻譜中的毛刺被消除了,相當于多個混有噪聲的頻譜進行平均,說明頻域特征變分自編碼器能夠提取大部分頻域特征。 圖10 數據集A原始頻譜和重建頻譜 圖11 數據集B原始頻譜和重建頻譜 圖12 數據集C原始頻譜和重建頻譜 通過對信號進行編碼壓縮成特征,然后對特征解碼還原信號,還原信號的好壞,在一定程度上取決于特征數量,特征數量越多表明表達信息越完整,但是提取特征以及解碼特征所需要的計算量也大,所以在保證提取大部分特征的同時也需要對計算量折中,訓練集A上不同特征維度對重建損失影響效果,如圖13所示??紤]計算量以及性能提升選取了32作為特征空間維度大小。 圖13 重建誤差隨特征維度的關系 此外對數據集A、B、C合并,即把相同類型不同損傷程度的歸為一類,通過頻域特征變分自編碼器對10種故障數據特征進行提取,對提取的數據進行t-SNE算法進行可視化,結果如圖14所示。數據的顏色標注和圖9~11一致,可以看出數據集存在明顯聚類,且不同損傷的數據集之間分布不同。 圖14 10類故障數據特征降維結果 為了討論頻域特征變分自編碼器+分類模型,對不同分布的識別性能。使用數據集A、B、C的訓練集作為訓練,利用數據集A、B、C的測試集對分類效果進行驗證,分類網絡采用一層全連接層以及一層softmax層,具體分類網絡的參數如表3所示。 表3 樣本分類網絡模型參數 使用數據集A、B、C的訓練集為訓練數據,數據集A、B、C的測試數據驗證的結果。診斷結果如表4所示,實驗結果表明分類的效果很好,準確率可以達到98%以上。 表4 軸承故障診斷實驗準確率 % 此外,區(qū)分損傷程度即將故障位置相同但損傷程度不同劃分為不同類,即表1所示的10種故障類型。使用同樣的方法進行特征提取,輸入到10分類的網絡分類,結果如表4所示,實驗表明達到相同分類效果所需要的分類網絡層數明顯增多。圖14的特征分布可以看出,不同損傷程度數據相似,說明可以通過進一步探究不同損傷程度數據之間的聯(lián)系。 本文將變分自編碼器和頻域特征提取自編碼器進行結合提出了一種頻域特征變分自編碼器,使得特征具有一定的不確定性,特征的魯棒性更強。對提取的特征進行t-SNE二維可視化,發(fā)現部分點被t-SNE映射到別的簇中,引入局部異常因子算法對離群點進行檢測和剔除,以防止分類器過擬合。在不同損傷程度的數據上進行泛化分類實驗,實驗表明僅通過兩層輕量神經網絡可達到98%以上的分類準確率。本文方法所提取的特征對信號具有優(yōu)異的表達,通過對故障特征進行分類,降低了故障診斷模型的復雜度。同時也可以進一步探討不同損傷程度的故障、以及不同工況下的故障的區(qū)別和聯(lián)系,對后續(xù)研究有一定的參考價值。1.3 局部異常因子算法
2 故障診斷模型
3 故障診斷實驗
3.1 實驗數據介紹與預處理
3.2 特征提取實驗及分析
3.3 故障診斷實驗及結果分析
4 結束語