王惠中,喬林翰,賀珂珂,段 潔
(蘭州理工大學電氣工程與信息工程學院,甘肅 蘭州 730050)
牽引電機以其結構簡單、維修方便、啟動轉矩大等特點而被廣泛應用。對其進行早期狀態監測,變傳統定期維修為預知維修,具有較好的經濟價值和社會價值。
目前,電機振動信號分析仍然是非電信號故障識別的主要方法。該方法大多采用安裝加速度計的方式進行采樣。一旦電機出現軸承內圈或外圈故障,將產生與正常運行狀態不同的特征頻率[1]。
人工神經網絡(artificial neural network,ANN)以其良好的非線性映射、并行處理能力、泛化能力、容錯性、自適應性等優點,被廣泛應用于信息融合、故障診斷等領域。文獻[2]采用小波神經網絡進行故障診斷,并通過遺傳算法優化網絡參數,但該方法易陷入局部極優。文獻[3]提出自適應模糊神經決策系統,但該方法需要監測三相電流,硬件消耗較大。文獻[4]采用信息融合的徑向基函數(radical basis function,RBF)神經網絡進行電機故障診斷,但該方法數據集太小,僅止于理論研究。
本文提出采用一種K折交叉驗證(K-fold cross validation,K-CV)的方法對特征樣本集進行劃分,避免了神經網絡存在的過擬合問題。交叉驗證算法從多方向學習樣本,可有效避免局部極小。
鑒于采集數據具有冗余性和和相關性,首先對數據進行降維處理,以期提高分類器的故障診斷能力。
主成分分析(principal component analyses,PCA)是一種常用的數據分析方法。它通過線性變換,使原始數據在各維度上線性無關,通常可用于提取數據主要特征分量以及高維數據降維[5]。
一般而言,機器學習中的數據集表示為向量。在實際工程應用中,通常需要處理高維數據,但機器學習的資源消耗太大,因此必須對數據進行降維。降維意味著信息丟失。鑒于實際數據本身存在相關性,在降維時應盡量降低信息的損失。PCA的本質是以方差最大的方向作為主要特征,并使數據在各方向“離相關”,使其在不同正交方向上不再具有相關性[6]。
在K折交叉驗證中,初始采樣后,將樣本集分割為K個子樣本。其中,(K-1)個樣本用作訓練數據,剩下的1個樣本作為驗證集。交叉驗證重復K次,每個子樣本驗證一次,對K次結果取平均,得到單一估測值[7]。該方法的優勢在于能同時重復運用子數據集進行訓練和驗證,以遍歷每次的結果。其中,10折交叉驗證(10-fold cross validation,10-CV)最為常用。
10-CV具體操作步驟如下。首先,將原始數據集按照K值大小劃分為訓練集與測試集。10-CV取數據集的十分之一作為測試集,其余為訓練集。然后,將訓練集劃分為10等份,取其中隨機9份用作訓練,所剩1份作為驗證集。重復以上步驟10次,使得驗證集遍歷所有訓練集。此時,對每次測試集的表現結果進行綜合分析,通常對其準確率取平均值。最后,以此平均值作為測試集的最終表現。
1.3.1初始化權值的改進方法
傳統神經網絡從(0,1)正態分布中隨機選取權值。三種最常用的激活函數分別是Logistic Sigmoid、Hyperbolic Tangent和Linear。其函數圖像和導數圖像如圖1所示。在使用Sigmoid函數時,當輸出接近0或1 的位置,權值的變化只能引起很小的更新量,學習速度慢,隱層容易出現飽和。對于隱層,無法通過cost函數進行改進。

圖1 常用激活函數圖像及其導數示意圖Fig.1 Schematic diagram of common activation functions and their derivatives
在激活函數中:
z=∑jwjxj+b
1.3.2隨機梯度下降算法
相比于傳統的梯度下降算法,隨機梯度下降法(stochastic gradient descent,SGD)引入了mini-batch的概念,即每次更新參數時選取n個樣本(n一般為10),從而在樣本數量較大時提高訓練速度[8]。但由于該算法本身迭代次數較多,且每次迭代并非向著整體最優化的方向,因此其解空間搜索過程比較盲目。而通過K折交叉驗證的方法,恰好彌補了其準確度差、非全局最優的缺陷[9]。
式(2)和式(3)分別表示傳統梯度下降算法的實現過程與隨機梯度下降算法的實現過程。
(1)
假設:
Δv=-ηC
則有:
ΔC≈-ηCc=-ηk≤0
因此,C是逐漸減小的。
在神經網絡中,C為因變量,權重和偏向為自變量。
(2)
隨機梯度下降算法如式(3)所示。觀察式(3)可以發現,該方法每次投入的是一組數據集,因此能提高訓練速度。
(3)
本文利用Eclipse+Anaconda,在Pydev環境下,對所提出的方法進行仿真。仿真所采用的數據來自美國凱斯西楚大學軸承實驗室網站。仿真過程如下。
通過電火花加工(electrical discharge machining,EDM)對電機軸承的內圈、外圈故障進行模擬。 分別在內滾道和外滾道處引入直徑為0.177 8 mm的故障。 故障軸承重新安裝到測試電機中,并記錄電機空載(電機速度為1 797 r/min)的振動數據。
使用加速度計收集振動數據。將加速度計放置在電機殼體的驅動端和風扇端的12點鐘位置,并連接到具有磁性底座的殼體。使用16通道DAT記錄儀收集振動信號,并在Matlab環境中進行后處理。所有數據文件采用Matlab(* .mat)格式。選用電機牽引端12點鐘位置,以1 200次/s進行數據采樣。選取每組數據的前100 000個采樣點,一共3組,組成樣本集。
對樣本集進行歸一化等預處理及PCA降維,得到特征向量;將每100 000點數據重新排列,構造(1 000,100)的矩陣,并將3個矩陣組合成(3 000,100)矩陣,對該矩陣進行降維操作。由于數據預處理時已經進行歸一化,此時不再需要進行白化處理。為簡便起見,直接采用sklearn中所包含的mode,在sklearn中載入decomposition。為使得每一個主成分的貢獻率達到最高,此處設置n_comnents為mle,即自動選擇所保留的特征個數。采用sklearn方法進行PCA降維前后的效果對比,如圖2所示。

圖2 PCA數據集示意圖Fig.2 Schematic diagram of PCA data set
由圖2可以看出,該方法對100維數據的降維操作有效、可行。此時所得數據為之前100維數據降維后的87維數據,則(3 000,87)矩陣的每1 000行表示一種狀態,共有3種狀態。由此可得整理數據集的方法如下。
①構造矩陣y(3 000,1)作為x的標記。其中每1 000行為一種標記,表示電機的一種運行狀態,共三種狀態(3 000行):正常運行(0.0),內圈故障(1.0),外圈故障(2.0)。
②將x和y合并成新矩陣,然后將每一行作為一個樣本去除順序干擾,即洗牌(shuffle)操作。
③此時,相當于已經對x作好標記,則重新拆分x和y。
④以x作為樣本集,對x進行K折交叉驗證,劃分訓練集和測試集。可以將每一列作為一個樣本,則有3 000個樣本,每個樣本包含88個數據。定義一個函數splitdataset切分樣本集,若10折交叉,則split_size取10。
取得帶標記的訓練集和測試集后,將其輸入已訓練好的神經網絡,即可完成故障分類[10]。
通過多次試驗,設定神經網絡結構為(87,91,3)。Pydev環境下,優化后的神經網絡與傳統反向轉播(back propagation,BP)神經網絡的電機故障診斷仿真結果對比如表1所示。從表1可以看出,優化后的神經網絡在各方面均優于傳統BP神經網絡。其中,傳統BP神經網絡算法的總體精確度為67%;優化后神經網絡算法的總體精確度為73%。

表1 故障診斷仿真結果對比(Pydev)Tab.1 Comparison of the fault diagnosis simulation results(Pydev) %
在Matlab環境下,使用核函數為Gaussian的支持向量機(support vector machine,SVM)進行分類。該方法首先設置貢獻率為95%,對數據進行降維,然后分別使用10折交叉驗證的方法與隨機劃分的方法劃分訓練集,最后分別對使用10折交叉驗證與未使用交叉驗證所得的結果進行比較。在Matlab環境下,SVM采用交叉驗證前后的故障分析仿真結果對比如表2所示。對比結果表明,交叉驗證法在一定程度上會消耗更多時間,但能大大提高故障診斷準確率。

表2 故障診斷仿真結果對比(Matlab)Tab.2 Comparison of fault diagnosis simulation results(Matlab)
本文針對牽引電機內圈、外圈故障分類問題,引用了K折交叉驗證與隨機梯度下降相結合的神經網絡方法,進行電機故障診斷。通過仿真發現:交叉驗證會在一定程度上影響訓練速度,但能夠避免陷入局部最小,并增強模型的泛化能力。隨機梯度下降搜尋解空間比較盲目,有可能導致結果陷入局部極小,存在過擬合風險,但是能大大提高大樣本的訓練速度。仿真結果證明,兩種算法的結合可以互相取長補短:通過交叉驗證,解決了SGD帶來的局部極小與過擬合的問題;通過SGD,彌補了交叉驗證造成的硬件消耗與時間消耗。與電機機械故障診斷的傳統分類方法相比,本文所采用的方法效果更好,對工程應用有一定指導意義。
參考文獻:
[1] 沈標正.電機故障診斷技術[M].北京:機械工業出版社,2001.
[2] 錢華明,王雯升.遺傳小波神經網絡及在電機故障診斷中的應用[J].電子測量與儀器學報,2009,23(3):81-86.
[3] BALLAL M S,KHAH Z J,SURYAWANSHI H M,et al.Adaptive neural fuzzy inference system for the detection of inter-turn insulation and bearing wear faults induction motor[J].IEEE Transactions on Industrial Electronics,2007,54(1):250-258.
[4] DING S,CHANG X H,WU Q H.Fault diagnosis of induction motors based on RBF neural network[J].Applied Mechanics and Materials,2014(11):85-88.
[5] 許凡,方彥軍,張榮.基于EEMD模糊熵的PCA-GG滾動軸承聚類故障診斷[J].計算機集成制造系統,2016,22(11):2631-2642.
[6] ARAKI T,IKEDA N,SHUKLA D,et al.PCA-based polling strategy in machine learning framework for coronary artery disease risk assessment in intravascular ultrasound:a link between carotid and coronary grayscale plaque morphology[J].Computer Methods & Programs in Biomedicine,2016,128(22):137-158.
[7] WONG T T.Parametric methods for comparing the performance of two classification algorithms evaluated by K-fold Cross Validation on multiple data sets[J].Pattern Recognition,2017,65(11):97.
[8] 陳振宏,蘭艷艷,郭嘉豐,等.基于差異合并的分布式隨機梯度下降算法[J].計算機學報,2015,38(10):2054-2063.
[9] BOTTOU L.Large-scale machine learning with stochastic gradient descent[M]//Proceeding of COMPSTAT’2010.New York:Physica-Verlag HD,2010.
[10]LIU Y,GAO J,LIU D.Design of software system of mobile robot with mixed programming based on eclipse+pydev[J].Communications in Computer & Information Science,2011(164):231-238.