梁 昱 李彬彬* 陳志高 焦 斌
1(上海電機學院電氣學院 上海 201306)2(中核檢修有限公司海鹽分公司 浙江 嘉興 314300)
在工業生產中,大型旋轉機械設備安全可靠地正常運行極其重要,其中軸承作為其關鍵部件,一旦發生故障,將對公司生產效益和人身安全產生很大的影響,所以滾動軸承的運維和故障診斷技術極為重要[1]。
深度學習是指一類機器學習技術,其深層體系結構中的多層信息非線性處理機制被用于模式分類以及其他學習任務[2],它強調多層和非線性。實際上,深度學習起源于Artificial Neural Network的概念,所以深度學習基本上就是指深層神經網絡。
谷歌公司的深度學習框架TensorFlow是一個靈活便利、功能強大的機器學習庫,許多深度學習算法封裝于其中,用戶只要將TensorFlow導入到Python中調用就可以搭建各種網絡模型,極大方便了深度學習的研究[3-4]。
基于深度前饋網絡,近年來,深度學習在機器學習領域備受關注,在分類、預測、故障診斷等多領域取得突破的成果。文獻[5]中提出了C-RF模型,把卷積神經網絡(CNN)提取到的特征輸入隨機森林(RF)中進行分類,實驗結果表明該模型的分類效果和泛化能力比單獨使用RF有了很大的提高。文獻[6]中提出構建多層感知器(MLP)神經網絡模型用于股票預測,并將TensorFlow與傳統BP神經網絡進行性能對比,實驗結果說明TensorFlow具有更好的預測準確度和更快的收斂速度。文獻[7-9]分別提出了基于短時傅里葉變換(STFT)、CNN、SDAE的電機故障診斷方法,并與傳統的故障診斷方法進行比較,實驗結果表明,所提出方法能更好地實現感應電機故障診斷。文獻[10]提出了一種新的基于LeNet-5卷積網絡的數據驅動故障診斷方法,1-D信號轉換成2-D圖像信號,提高了模型的特征提取能力,并應用于電機軸承、水泵、液壓泵的故障診斷中,模型預測準確率都在99%以上。
深度學習取得重大成果的原因一方面在于計算機運算能力的提高和大數據的支持,另一方面是網絡本身結構和參數的合理設置與選擇。合適的訓練優化算法、合理的參數設置和模型結構直接影響網絡模型的泛化能力和準確性,有助于加快收斂速度防止過擬合。因此,參數設置、優化算法和網絡結構一直是深度學習研究中的重點和難點[11]。
本文基于現代深度前饋神經網絡的基本理論,對深層神經網絡中的參數設置、優化算法、結構選擇進行深入研究,在TensorFlow中建立最優深度前饋神經網絡模型。本文提出直接將原始振動信號作為模型的輸入,無需進行復雜的信號處理和故障特征提取。最后結合美國西儲大學滾動軸承方面的實驗數據,將優化的模型在電機軸承故障診斷領域中進行了驗證,完成9種不同工況下軸承的故障診斷,并和其他常用的機器學習算法比較。
深度前饋網絡應用在故障診斷方面,可以將其看作是分類器,定義了一個映射集y=f(x,θ),輸入x通過相關參數θ映射到一個輸出類別y。
深度前饋網絡模型中參數θ的學習算法是迭代的,所以初始值(即迭代起點)對于迭代過程是否達到局部最小、是否能夠收斂到一個代價高或低的點以及訓練時間的大小關系密切,不合適的參數初始化方法會降低梯度的學習優化效率和網絡泛化能力[12]。通常來說,需要初始化每個單元使其具有不同的初始參數,防止學習算法以相同的方式更新某兩個單元,因此促使了參數的隨機初始化。
通常情況下,可以為每個神經元除權值以外的參數(如偏置值等)設置啟發式挑選的常數,設置為0或0附近小的常數。而所有的權值則初始化為小的隨機數,可以在高斯分布中隨機抽取。一般而言總是希望神經元的輸出值接近于零,盡可能保證參數θ都能夠在其激活函數偏導數最大之處進行調整。因此在TensorFlow中權值初始化可以從截斷正態分布中隨機抽取,生成的值w~N(μ,σ2),其中,μ=0,σ2=1,如果w的取值在區間(μ-2σ,μ+2σ)之外則重新進行選擇。由正態分布的“3σ”原則可知,區間(μ-2σ,μ+2σ)內的面積為95.45%,這樣保證權值w都在均值0附近。
非激活函數通常用于隱含層,完成信號的前向傳播。傳統Sigmoid和Tanh函數[13]大部分定義域內都飽和,僅接近0時它們才對輸入強烈敏感,這種廣泛飽和性會造成梯度消失,并且不具有稀疏性。只有當合適的代價函數來抵消飽和性時,它們作為輸出單元可以與基于梯度的學習相兼容。
神經學家發現生物神經元的激活方式具有單側抑制、興奮邊界寬闊以及輸出具有稀疏性的特性。ReLU函數f(x)=max(x,0),曲線如圖1所示。

圖1 ReLU激活函數曲線
可以看出,ReLU函數幾乎是線性的,這使得只要是處于激活狀態,其導數都能保持較大,小于0則沒有輸出,因此它保留了許多使得線性模型易于使用基于梯度的方法進行優化的屬性,同時也符合生物神經元單側抑制和興奮邊界寬闊的特性,并且ReLU函數還具有稀疏表達能力。因此,目前深度前饋網絡、CNN、RNN、LSTM等主流深度學習模型的激活函數大多采用ReLU函數[14-15]。文獻[16]表明ReLU函數在訓練正確率和網絡收斂速度上均優于其他激活函數。
深度前饋網絡模型效果及優化的目標是通過損失函數來定義的,損失函數是模型對數據擬合程度的反映,擬合得越好,則值越小。常用的損失函數為:均方差損失函數和交叉熵損失函數。均方差損失函數(MSE)直觀意義是模型預測值和真值的歐氏距離,而交叉熵損失函數(Cross entropy)如下:

(1)
給定兩個概率分布p和q,交叉熵刻畫了兩個概率分布之間的距離,值越小則說明兩者越接近。在決策分類問題中使用比較廣泛[17]。在故障診斷中概率分布pi是真正的標簽,給定分布qi是預測值。
基于統計學理論,現代深度前饋網絡大多數都使用最大似然原理來優化學習,即損失函數就是負的對數似然,它與交叉熵等價。損失函數表示為:
(2)

使用最大似然來導出損失函數的方法,一方面減輕了每個模型設計損失函數的負擔,這樣不用預測y的完整概率分布,而是僅僅預測在x條件下y的某種統計量,例如參數的點估計、偏差、方差,對于刻畫泛化、過擬合等非常有幫助;另一方面負的對數似然在很多模型中避免了激活函數梯度飽和(梯度消失)的問題,損失函數取對數后可以消除某些輸出單元中的指數效果。這也是交叉熵損失函數比均方差損失函數更受歡迎的原因之一[18]。
神經網絡的輸出不一定是一個概率分布,但是在電機故障診斷中可以把“一個樣例屬于某一個類別”看成一個概率事件,那么訓練數據的正確答案就符合一個概率分布,將輸出結果變成概率分布常用的方法是用于Multinoulli輸出分布的Softmax單元。假設原始的神經網絡輸出為y,那么經過Softmax回歸處理之后的輸出為[19]:
(3)
深度前饋網絡的整體結構主要包括網絡的深度和寬度。神經網絡的萬能近似定理表明[20],即使網絡只有一個隱含層,但只要節點數足夠多(網絡足夠寬)也能夠在訓練集上近似任何函數,而更深的網絡則意味著每一層會使用較少的節點數,但缺點是網絡過于復雜難以優化,大大增加了參數訓練的時間,所以模型性能提高優先考慮增加隱含層中的神經元數,其訓練效果會比增加層數更容易觀察和調整。結構設計可采用如下方法:先設較少的節點數,然后逐漸增加節點數,每次對網絡進行訓練并記錄在驗證集上表現的誤差,直到滿足要求即可。因此最優的深度前饋網絡結構必須通過大量實驗來找到。
在參數的更新過程中,某些優化算法能根據模型的參數和損失來優化模型。梯度下降法是最普遍的優化算法,它會沿逆梯度方向讓超參數不斷更新,使總損失不斷下降。優化損失函數L(θ)過程可以抽象為尋找一個參數θ,使得L(θ)最小,通過迭代的方法來不斷逼近最優解。一般來說,參數更新包含兩種思路:更新的方向和調整學習率。TensorFlow中常用的優化方法有[21-24]:更新方向算法,包括梯度下降法(GD)和動量法(Momentum);自適應學習率調整(Adaptive learning rate)算法,包括AdaGrad算法、RMSProp算法、Adam算法。優化算法之間聯系如圖2所示。

圖2 TensorFlow中各種優化算法關系圖
由圖2可以看出,梯度下降對于神經網絡而言,幾乎所有深度模型的迭代總是基于梯度來使得損失函數下降,梯度下降可謂是訓練的全部,最多也只是不斷地研究出各式各樣的梯度下降法的變體而已。
梯度下降法的缺點[25]:不能保證被優化的函數達到全局最優解,容易陷入局部極小值;計算時間長、收斂速度慢,學習率無法自適應調整,在海量數據下,要計算所有訓練數據的損失函數是非常消耗時間的。而Adam[24]算法是利用梯度一階矩估計和二階矩估計動態調整每個參數的學習率,算法描述如表1所示。
可以看出,Adam優化算法在于計算歷史梯度衰減方式上,使用了類似動量的衰減方法,實質上就是帶有動量項的RMSProp。Adam將動量應用于縮放后的梯度,同時結合了AdaGrad善于處理稀疏梯度和RMSProp善于處理非平穩目標的優點,在自適應學習率方面表現較好,適用于大多非凸優化,也適用于海量數據和高維空間。因此Adam算法是應用最廣泛的、效果最好的算法,它高效、穩定,適用于絕大多數的應用場景。
深度學習中數學模型的設計要求不僅在訓練集上表現好,而且能在新輸入上泛化良好,許多策略被顯示地設計來減少測試誤差,這些策略被統稱為正則化。在機器學習中,過擬合現象被稱為過度訓練,本質是過于復雜的模型在學習中不知不覺中提取了一些殘余變化(即隨機干擾噪聲),產生與特定數據集過于緊密或完全對應的分析,從而忽視了通用的趨勢和整體的規律,無法擬合其他數據或可靠地預測未來的觀測結果。而正則化是降低泛化誤差,減小過擬合的一個有效手段,包括L1、L2正則化以及最常用的Dropout。
Dropout的優點是計算方便,訓練過程中會產生n個隨機二進制數與某些神經元相乘,從而依概率去掉對應層的某些神經元,使得每次迭代中訓練的都是一個小的神經網絡,如圖3所示[26]。

圖3 Dropout示意圖
文獻[27]中顯示,Dropout比其他標準的計算開銷小的正則化方法(如L1,L2正則化)更有效,經過交叉驗證,keep prob率等于0.5的時候效果最好,因為此時dropout隨機生成的網絡結構最多。
Dropout的另一個顯著優點是降低了模型的計算復雜度,它一般不限制適用的模型或訓練過程,基本在所有使用分布式表示且用SGD法訓練的模型上都表現良好,包括RBM、CNN、RNN等網絡模型。
另一方面Dropout減少了模型的有效容量,為了彌補這種影響,必須擴大模型規模,所以當只有極少的訓練樣本時,Dropout不會很有效。文獻[27]中還提到在少于5 000的測試樣本的Alternative Splicing Data上,Bayes神經網絡比Dropout表現得更好。所以至少要在上萬數據集上使用Dropout會比L1和L2的正則化方法更有效,最佳驗證集的泛化誤差會比較小。
深度前饋網絡是在Python3.6開發環境Spyder中通過編程并調用開源的TensorFlow庫建立的。計算機處理器:Intel(R) Core(TM) i5-7400 CPU @ 3.00 GHz,內存(RAM)為8 GB,操作系統64位Windows。
本實驗所運用的數據來自美國Case Western Reserve大學正常和故障滾動承故障測試數據。使用電火花加工(EDM)對電機軸承的滾球、內滾道和外滾道引入不同直徑的點蝕故障。故障規格如表2所示。
將Normal信號和表2中的9種振動故障信號導入Python中,得到10種對應的振動原始信號圖如圖4所示。

圖4 10種不同工況下振動原始信號圖
電機轉速為1 750 r/min,采樣頻率為12 kHz,則一個周期一轉采集到約412(60×12 000÷1 750)個振動點,因此網絡的輸入樣本為412維的原始數據。為了獲得足夠的訓練樣本和測試樣本,并保證不重復抽樣,采用連續抽樣的截取方法來獲取樣本,并設定一定的抽樣步長。本實驗設置抽樣步長為412,標簽0~9分別代表正常信號和9種故障信號,從每種信號中隨機抽樣獲得5 000個樣本,加上標簽最終得到50 000×(412+1)的矩陣作為網絡的輸入,將此矩陣保存至.csv文件,以便于導入到深度前饋網絡中進行故障診斷,在模型訓練時再按7∶3比例隨機分為35 000個樣本訓練集和15 000個樣本測試集。
表3為在故障診斷中,深度前饋神經網絡模型在TensorFlow中的關鍵參數設置。

表3 TensorFlow中核心參數的設置
圖5為不同網絡結構在訓練1 000次后對診斷準確率的影響,橫軸表示學習參數的數量。

圖5 網絡結構對故障診斷準確率的影響
從圖5中可以看出,隨著參數不斷增加,準確率漸漸提高,當增加到100萬以上時,由于模型復雜參數過多出現過擬合現象,準確率有所下降,而四層和五層網絡的泛化能力較強,在30~100萬的參數區間內有較高準確率。三層、四層、五層、六層網絡結構準確率普遍都在98%以上,且四層、五層整體效果要優于三層、六層,說明對應本實驗軸承故障數據集,適當調整網絡的寬度或深度都可以達到較好的泛化能力。
進一步比較分析,表4為不同網絡結構下的深度前饋網絡模型故障診斷評估表,選取四層和五層網絡為比較對象,選取30~100萬的學習參數區間,測試集樣本數是15 000,訓練次數為1 000次。評估指標中,上升時間指準確率從10%上升到90%所需時間。

表4 不同網絡結構下的網絡模型故障診斷評估
從表4中可以看出,所有網絡準確率達到了98.9%左右,結構為412-600-500-10的四層網絡模型效果最優,準確率達到最高98.96%,誤診數也是最低的,且優化速度較快,只用78 s模型診斷準確率就從10%上升到90%。盡管其訓練時間較長,但是訓練網絡是線下進行,為了更好地診斷軸承故障,花時間訓練一個最優網絡是值得的。
綜上所述,選取412-600-500-10四層網絡結構為最優的深度前饋網絡模型,對應的詳細模型如圖6所示,圖7、圖8為其診斷準確率、損失與訓練次數的學習曲線圖,圖9為測試集對應的混淆矩陣,表5為其對應的故障診斷報告。

圖6 TensorFlow中Deep feedforward network的故障診斷模型

圖7 準確率和訓練次數的關系曲線圖

圖8 損失和訓練次數的關系曲線圖

圖9 混淆矩陣

故障類別PrecisionRecallF1-scoreSupportNormal1.001.001.001498Ballfault-0070.991.001.001519Ballfault-0141.001.001.001508Ballfault-0211.001.001.001512Innerrace-0070.921.000.961521Innerrace-0141.001.001.001464Innerrace-0211.001.001.001510Outerrace-0071.000.900.951485Outerrace-0141.001.001.001456Outerrace-0211.001.001.001527Avg/total0.990.990.9915000
從圖7和圖8中可以看出,對于軸承故障數據診斷準確率為98.96%,損失僅為1.472;從圖9和表5中可以看出針對每個故障類別的預測準確性,除了Outer race-007類故障診斷出現了0.1的誤診率,即1 485個樣本中有大約150個誤診成Inner race-007故障,其他情況基本診斷正確,而且,每種故障的查準率(Precision)、召回率(Recall)、F1分數(F1-score)平均值都為0.99,結果充分說明最優深度前饋網絡模型能夠較好地實現軸承故障診斷。
模式識別是軸承故障診斷中的重要一步,實質是分類算法,傳統常用于分類的機器學習算法有k-近鄰算法、支持向量機(SVM)、邏輯回歸算法(Logistic Regression)、決策樹(Decision Tree)、隨機森林算法(Random Forest)、樸素貝葉斯(Naive Bayers)等。
為了和機器學習算法作比較,利用和3.1節同樣的50 000組數據作為輸入數據,15 000組為測試集。不同方法的診斷結果如表6所示。

表6 不同方法的診斷結果比較
由表6可得,邏輯回歸和樸素貝葉斯方法效果較差,說明模型無法很好地擬合訓練集和預測測試集;決策樹模型雖然對樣本擬合情況極佳,但是模型測試分只有53.86%,對新數據診斷誤差很大,說明改模型容易造成過擬合;相比而言k-近鄰、隨機森林和支持向量機的訓練集分數幾乎達到100%,對訓練樣本的擬合情況較好,對測試樣本的預測診斷率也在90%以上,訓練速度也比較快,說明模型的準確性和泛化能力良好。但還是遠低于本文實驗的結果98.96%,可見機器學習和深度前饋網絡相比,雖然訓練速度上有優勢,但是算法的魯棒性模型診斷結果相對較差。經過大量數據測試經驗發現,上述傳統的機器學習算法一般在數據集較小的情況下,往往分類效果比會比深度前饋神經網絡要好,在上萬數據的情況下效果普遍低于深度前饋網絡。
本文提出基于現代深度前饋神經網絡的軸承故障診斷模型,并通過梯度優化算法、正則化方式以及不同網絡結構的研究,旨在向最優模型的建立不斷靠近。實驗在Python語言開發環境中編寫程序并調用開源的TensorFlow庫函數完成。利用深度前饋網絡強大的非線性學習能力,無需人工處理數據提取復雜的特征即可實現高精度的滾動軸承故障診斷,實驗結果最終達到了98.96%的診斷準確率。通過和傳統機器學習方法比較說明該方法存在的優勢,從而表明了深度前饋神經網絡模型有更強的分類決策能力。