趙曉平,王逸飛 ,張永宏 ,吳家新 ,王麗華
(1.南京信息工程大學 計算機與軟件學院,南京 210044;2.南京信息工程大學 自動化學院,南京 2100443.南京信息工程大學江蘇省網絡監控中心 計算機與軟件學院,南京 210044)
齒輪箱是現代機械設備智能化中不可分割的一部分,其結構復雜,長時間的運轉后,齒輪箱內部零件極易因疲勞磨損產生故障,從而導致設備損壞,而軸承和齒輪就是其中最重要的兩種零部件。齒輪箱被廣泛應用于交通運輸、電力發電、石油化工、采礦冶金等現代工業設備[1-3]中,在實際的工業生產中,當機械設備出現單一故障后不會馬上停機檢查,而是繼續對故障進行跟蹤監測,判斷故障程度,推測其剩余壽命。在設備繼續運行的過程中,很可能出現零件進一步損壞,形成復合故障[4-5]。這對傳統故障診斷方法帶來了巨大挑戰,亟需一種有效的方法來完成復合故障的診斷。
深度學習能夠根據機械故障信號的特點,在進行一系列預處理后直接輸入深層神經網絡進行訓練,依靠多層神經網絡的特征提取和降維功能[6],模型以最小化其損失函數為目標,通過梯度下降[7]和反向傳播[8]算法進行自學習使模型收斂,從而完成機械故障識別診斷。
Li等[9-11]使用多個自編碼器堆疊形成深度網絡,先通過無監督逐層對網絡進行預訓練,再對網絡權值進行有監督訓練來更新,從而對滾動軸承的損傷位置和大小進行了高效診斷。Jeong等[12-15]進一步優化了深度置信網絡,對參數進行了尋優,使得模型在滾動軸承故障診斷中具有更好的魯棒性和抗噪能力。陳淑梅等[16]采用輕量級卷積神經網絡進行故障診斷,并采用田納西過程為代表的多變量非線性過程驗證了模型的有效性。Schroff等[17]建立了Face-net首次將Triplet loss應用于人臉識別,并取得了卓越的成績,這也讓人們看到了Triplet loss在處理大樣本、復雜數據中的優勢。
上述研究展示了深度學習在面對機械大數據任務時,強大的自適應特征提取和分類能力,這些研究均是在診斷單一目標故障時發揮了良好的效果。然而,在實際情況中,齒輪箱中的齒輪和軸承往往會同時出現故障,而故障信號間有耦合,變化的工況(負載,轉速)也會對信號產生較大影響,這使得各類復合故障信[18]號交織在一起,難以區分。針對這一問題本文提出了基于Triplet loss的深度度量學習模型,使用Triplet loss作為損失函數來優化模型,在每次訓練中都增大不同故障信號在高維空間中的距離,從而高效完成復雜的復合故障的分類任務。本文對以Softmax為分類器的神經網絡模型和以Triplet loss為基礎的深度度量學習模型進行了比較分析,論證了有度量效果的Triplet loss在復合故障識別上有巨大優勢。

三元組是由正樣本positive、負樣本nagative和錨點樣本anchor構成的,具體構成如下:從訓練數據集中隨機選擇一個樣本作為anchor(xa),再隨機選擇一個與anchor異類的樣本和同類的樣本分別為negative(xn)和positive(xp),即三元組(anchor,positive,negative)。針對三元組中的每個樣本,訓練一個神經網絡,得到三個樣本的特征表達記為f(xi,a),f(Xi,ρ),f(xi,n)。
圖1為三元組的訓練過程示意圖,首先固定一個錨點樣本(anchor)希望包含該樣本的類間對(anchor-negative)特征的距離能夠比同樣包含該樣本的類內對(anchor-positive)特征的距離大一個間隔(margin),如式(1)
(1)


圖1 Triplet loss的優化目標Fig.1 Triplet loss optimization goal
若以Triplet loss作為損失函數訓練模型,不斷優化使之達到最小值,實際上就是讓同類樣本越來越接近,異類樣本越來越疏遠的過程。
對于三元組的選取,采樣策略是至關重要的:假設訓練集樣本數為n,那么所有的三元組組合數為O(n3),數量非常龐大。其中存在大量的平凡三元組,這些平凡三元組類間對的距離已經比類內對的距離大一個間隔,他們對應的損失為0。簡單的隨機采樣會導致模型收斂緩慢,特征不具有足夠的判別性。因此一種合理的解決方案是僅挖掘對訓練有意義的正負樣本,也稱為“難例挖掘”。例如:Hard Net旨在在一個訓練batch中挖掘一些最難的三元組。然而如果每次都針對錨點樣本挖掘最困難的類間樣本,模型又很容易坍縮。因此,Schroff提出了一種半難例(semi-hard)挖掘的方式:選擇比類內樣本距離遠而又不足夠遠出間隔的類間樣本來進行訓練。
將齒輪箱內的齒輪故障和軸承故障的復合故障作為本文的研究對象,建立深度度量學習模型。該模型采用Triplet loss作為損失函數來構建網絡,它將特征映射到歐幾里得空間,計算同類樣本與異類樣本在歐式空間上的特征距離,距離越近相似度越高。通過不斷優化Triplet loss,神經網絡則不斷學習到新的特征,并且使同類樣本的距離越來越近,同時使異類樣本的距離越來越遠。
圖2為本文所設計的深度度量學習網絡模型,此模型包含四層(輸入層、神經網絡層、三元組選擇層、損失函數計算層等)。

圖2 深度度量學習模型結構Fig.2 Depth metric learning model structure
深度神經網絡層的任務是提取復合故障信號的特征并降維,因此可供選擇選的網絡結構有很多,可以選擇卷積神經網絡CNN(convolutional neural network),長短期記憶網絡LSTM(long short-term memory),全連接神經網絡,自編碼網絡等。各種網絡所對應的輸入形式如圖3所示。

圖3 預處理方式
而在Liu等[19-20]的研究中均表明將時域信號直接作為輸入數據進行網絡訓練的效果不佳。同時實際試驗時也發現,將時域信號作為輸入,訓練時網絡的損失無法收斂,且準確率僅有30%。
Zhao等[21]在診斷齒輪箱單一故障時,經過傅里葉變換FFT把頻域信號作為輸入數據進行網絡訓練得到了不錯的效果。復合故障信號是頻率隨著時間改變的非平穩信號,它比單一故障信號更加復雜,只使用頻域信號難以準確的診斷齒輪箱內的復合故障信息。頻域信號只提取了信號中各個頻率的成分,丟失了各個頻率出現的時間信息。因此時域相差很大的兩個信號,頻域信號可能一樣。
本文使用短時傅里葉變換STFT(short-time Fourier transform)將非平穩信號看成是一系列短時信號的疊加,把信號劃分在若干個小時段間隔里,在傳統的傅里葉變換的基礎上,通過滑動時窗來計算頻譜,確定在某個時間間隔里的頻率,進行信號的時頻描述,從而不會丟失時間信息。STFT對信號處理時,假定一非平穩信號S(t),則S(t)的短時傅里葉變換定義為
(2)
式中:t為時間平移參數;h(t)為以t為中心的窗函數,通過窗函數截斷信號,將信號分為多段,截取得到信號可以表示為
St=S(τ)h(τ-t)
(3)
式中:St為原始信號對應固定時間t上的信號;S(T)為執行時間對應T的信號。對St作傅里葉變換,獲得St的頻譜,其表達式為
(4)
通過改變平移參數t的大小,可改變窗函數的中心位置,得到不同時刻的傅里葉變換。在每個不同的時間間隔里,都可得到一個不同頻譜,這些頻譜的總體就構成了一個時頻分布,即時頻圖。
經過多次分析和試驗,在選擇合適的窗函數和窗寬后,把復合故障信號經過STFT轉化成時頻圖,最后通過雙線性插值壓縮生成80×80×3的圖片以輸入網絡(圖片大小為80×80,顏色為彩色的RGB3通道)。

圖4 預處理結果Fig.4 Pretreatment result
卷積網絡層的結構直接影響了網絡模型的效果,因此網絡結構參數的選擇尤為重要。本文經過試驗分析,選擇合理的卷積核大小,通過5折交叉驗證等對結果進行多次對比,最終選取的卷積網絡層的具體結構如圖5所示。
表1為最終卷積網絡層采用的具體結構參數。網絡采用Relu作為激活函數,初始化網絡參數時使用uniform均勻分布,范圍是[-0.1,0.1]。網絡使用adam優化器,學習率設置為0.06。Dropout設置為0.7,用來避免網絡出現過擬合現象。這種結構既保證網絡能學習到盡可能多的特征,同時也防止了過擬合現象。

圖5 卷積網絡結構

表1 網絡結構參數
卷積網絡層后是三元組選擇層,它們共享卷積網絡輸出的32維特征,生成一個個用于優化的三元組。本文采取的是1.2節中提到的在線更新Triplet loss的方法來解決三元組的選擇問題。
最后一層是損失函數計算層,通過L2范式對輸出的特征進行歸一化,最后計算Triplet loss。Triplet loss作為網絡的損失函數(超參數margin=1),以最小化Triplet loss作為網絡的優化目標,通過誤差反向傳播(back propagation,BP)算法來不斷更新神經網絡的權值,從而訓練出最優特征。在訓練出來的新的特征空間中,不同故障類型的數據之間距離很遠,而相同故障類型數據間距離很近。
本文設計了基于Triplet loss的深度度量學習模型訓練與診斷故障的流程圖,如圖6所示,具體步驟如下。
步驟1:對采集得到的數據做預處理,從而得到多張80×80×3的復合故障數據的時頻圖。
步驟2:通過卷積神經網絡對圖像數據進行處理,以Triplet loss作為損失函數,采用反向傳播算法不斷迭代,直到模型收斂得到最優解并保存模型相關權重參數。
步驟3:選擇最優的模型參數后將所有故障數據進行前向傳播,得到其32維的故障特征(經過多次試驗,神經網絡結構中的全連接層最后輸出32維,既保證有足夠的特征來描述信號的特點,同時計算量也較為合理),并加入模板庫中。未知故障數據經過神經網絡后也能獲得一個32維的特征,計算未知數據的特征和模板特征之間的歐式距離,模板庫中與未知數據歐式距離最小者即為該未知故障的故障種類。
步驟4:設置閾值是為了防止未知故障數據是一種全新的故障類型,它的32維故障數據特征離模板里每一個32維特征的歐式距離都很遠,而模型會選擇一個最近的故障類型作為輸出。這個最小值如果大于提前設置好的閾值(閾值的選擇見3.4節表5),則將該故障的32維特征向量存入模板庫,并且標簽記為未知故障①(之后以此類推),診斷結果輸出“未知故障①”,再次遇到該故障類型的未知數據時深度度量學習模型就能準確診斷。如果這個最小值小于提前設置好的閾值ε,則診斷結果輸出為離故障數據最近的模板的故障類別(兩個故障數據特征間的歐式距離越小說明故障種類越相似)。

圖6 模型訓練與診斷流程Fig.6 Model training and diagnostic process
深度學習網絡的訓練需要大量的數據支持,訓練數據的質量會直接影響模型的效果。因此本文以Spectra Quest公司生產的動力傳動故障診斷試驗臺(DDS)為研究對象(如圖7所示)。安裝加速度傳感器(SQI608A11-3F)時,本研究參考凱斯西儲大學軸承數據的采集方式,通過螺栓聯接將加速度傳感器安裝在齒輪箱定軸的左右兩側,這樣能確保雙通道的振動信號時間差最大(如圖7中傳感器1、2的位置)。采樣頻率為20 kHz,采樣時間為20 s。

圖7 動力傳動故障診斷試驗臺Fig.7 Power transmission fault diagnosis test bench
試驗中通過更換齒輪箱內的故障齒輪(缺齒、斷齒、偏心、過度磨損、裂紋、正常等情況)和故障軸承(內圈故障、外圈故障、滾動體故障、復合故障、正常等情況),模擬齒輪箱可能會發生的30(5×6)種故障情況,如圖8所示(每個齒輪與軸承均只存在一種故障)。為了模擬更真實的生產環境,會在隨機時間,用金屬敲擊齒輪箱、工作臺或桌面的方式進行人為噪聲污染,污染信號約占總信號的5%。

圖8 故障軸承及齒輪Fig.8 Bearing faulty bearings and gears
同時為了增加樣本的多樣性,在數據采集時通過控制前端的驅動電機來改變轉速;通過控制負載調節器來改變負載,從而盡可能的模擬實際生產中可能發生的工況類型。每種故障樣本在4種不同電動機轉速(1 700 r/min、1 800 r/min、3 400 r/min和3 800 r/min)與4種不同負載①、②、③、④(4種負載具體的電壓和電流參數見表2)下采集。
每種工況下采集得到左右兩個通道的時域信號,最終采集到960個(30種多故障組合類型×4種不同轉速×4種不同負載×2(左右雙通道))振動信號文件,每個信號文件中包含409 600個信號點。

表2 負載種類
試驗數據的數量和全面性是模型能夠高效完成故障診斷的前提,DDS試驗臺共采集得到960組復合故障數據,每組復合故障文件中包含409 600個信號點,現對每個信號文件中的409 600個信號點進行切分為200段,每段為[0,2 000]的時域信號。本試驗的數據采集都是在電機轉速穩定后進行采集,不包含升降速階段,所以在每小段時間里仍具有故障數據的完整特征。
(1) 按百分比切分數據集時,每類故障數據都包含了充足的工況信息(轉速、負載信息),將原始信號按1∶4劃分測試集和訓練集,即隨機選取每個信號文件中的25%作為測試集,75%作為訓練集對模型進行訓練,使得模型能充分學習到各類工況下的故障特征。
(2) 按負載情況切分數據集時,訓練集中每類故障數據中只包含了3種負載信息,包含另一種負載信息的故障數據則作為測試集。
(3) 按轉速情況切分數據集時,訓練集中每類故障數據中只包含了3種轉速信息,包含另一種轉速信息的故障數據則作為測試集。
按上述方式切分后獲得試驗數據如表3所示。
本文為了對比卷積神經網絡+Softmax分類器的診斷模型和基于Triplet loss的深度度量學習模型對齒輪箱復合故障的診斷效果制作了兩類標簽(兩個模型中卷積網絡結構和參數完全一致)。
(1) 按故障種類分為30類(5種軸承故障和6種齒輪故障)。分別制作訓練集和測試集的標簽。輸入Softmax的標簽需要對數據的標簽進行編碼,本文采用One-Hot編碼方式。
(2) 按故障種類分為30類(5種軸承故障和6種齒輪故障)。分別制作訓練集和測試集的標簽。輸入Triplet loss的標簽是Ones矩陣,因為標簽在Triplet loss中沒有實際意義,只用作統計準確率。
本試驗訓練和測試的硬件環境為i7-7700HQ CPU、英偉達GTX1050Ti顯卡(顯存4G)、16G內存,軟件編程環境為python3.6、Tensorflow1.2、CUDA8.0。網絡訓練時輸入樣本大小為80×80×3,設置Batch-size為512。

表3 試驗數據切分
使用表3中的數據分別輸入卷積神經網絡+Softmax分類器的診斷模型和基于Triplet loss的深度度量學習模型中進行模型訓練(兩個模型中卷積網絡結構和參數完全一致),并統計了試驗中準確率變化,表4中列出了各個試驗取得的測試集平均準確率(每個試驗重復了10次,取均值)。

表4 兩種模型試驗結果對比
從表4中試驗結果可以看出,當按百分比切分數據(即訓練數據充足,包含各種轉速和負載情況),并且對數據進行歸一化處理時(即表4試驗10),卷積神經網絡+Softmax分類器的診斷模型準確率可以達到93.26%(見圖9),且未發生過擬合;而基于Triplet loss的深度度量學習模型準確率高達96.82%。

圖9 試驗10傳統網絡的準確率Fig.9 Accuracy of traditional network in experiment 10
使用缺失某種負載的數據訓練網絡,且使用該缺失負載數據進行網絡測試時(試驗2~5,11~14),兩種模型在測試集上能夠獲得較高的準確率,但深度度量學習模型依然效果更好,可以達到96±0.6%的準確率,而卷積網絡+Softmax分類器模型的準確率只有92±1%。當使用缺失某種轉速的數據訓練網絡,且使用該缺失轉速數據進行網絡測試時(試驗6~9,15~18),從圖10中可以看出卷積神經網絡+Softmax分類器的診斷模型產生了嚴重的過擬合現象,測試集準確率很低,試驗15只有67.14%。

圖10 試驗15傳統網絡的準確率Fig.10 Accuracy of traditional network in experiment 15
但深度度量學習模型具有很強的泛化能力。如圖11所示,該模型在模擬實際應用中可能遇到的缺失某種工況數據的情況下依然能獲得較高的診斷準確率,即使在缺失轉速數據的試驗中(試驗15~18)也能取得90%左右的準確率。
本文提出方法能夠取得較高診斷精度的根本原因是:
(1) 通過STFT將振動信號轉化為時頻圖,使用卷積神經網絡提取了時頻圖中的特征,從而有效利用了故障信號中的頻率信息和時間信息。為了更加直觀的驗證提出方法在特征提取上的能力,隨機選取了2種不同故障種類的信號A和B(A為斷齒+內圈故障,B為正常齒輪+外圈故障),將其輸入到表4試驗10取得的最高準確率的網絡模型中,將圖6中卷積層C1和卷積層C3輸出的特征進行可視化。如圖12、13所示,從圖中的可視化結果可以看出,淺層學習得到的是時頻圖中整體的特征,每一個feature map在整體和輪廓上進行分析(如圖12、13中的淺層特征);而深層能學習到局部的細節特征,每一個feature map在局部的細枝末節上進行分析(如圖12、13中的深層特征)。

圖11 深度度量學習模型在不同數據下的準確率

圖12 故障A的特征可視化Fig.12 Feature visualization of fault A

圖13 故障B的特征可視化Fig.13 Feature visualization of fault B
(2) 使用Triplet loss度量各類故障之間的距離,使得同類故障特征間的距離很近,異類故障特征間的距離很遠,從而使得診斷變得更精準更容易。而傳統卷積神經網絡+Softmax分類器的模型并沒有度量故障特征間距離的作用。為了證明該模型能夠使得故障數據的特征滿足同類樣本間的距離越來越近,同時異類樣本間的距離越來越遠。本文隨機選取5種故障類型A、B、C、D、E。A為正常齒輪+滾動體故障;B為缺齒+外圈故障;C為缺齒+正常軸承;D為過度磨損+內圈故障;E為偏心+滾動體故障。每種故障類型隨機選取1 600個數據(共5×1 600=8 000個數據)。圖14為T-sne可視化8 000個數據點的原始分布情況。

圖14 處理前T-sne可視化Fig.14 T-sne visualization before processing
圖15為T-sne可視化8 000個數據點經過深度度量學習模型處理過后的分布情況。

圖15 處理后T-sne可視化Fig.15 T-sne visualization after processing
圖16為8 000個數據點經過使用交叉熵損失函數的傳統卷積神經網絡模型處理后的分布情況,從圖中可以看出同類故障數據之間有較大間隔,且不在同一區域。

圖16 采用普通損失函數的T-sne可視化Fig.16 T-sne visualization with common loss function
因為T-sne可視化圖中的距離不能代表真實多維空間中的距離,所以本文在訓練好的模型中經過一次前向傳播得到這8 000個故障數據的特征,計算這8 000個故障數據特征間的歐式距離。
(8)
計算同類故障特征間的歐式距離時取同類數據歐式距離的平均值,計算異類故障特征間的歐式距離時取異類數據歐式距離的平均值,具體數值見表5。從表中可以看出對角線上的數值代表相同故障類型的特征之間的距離,其值遠小于不同故障類型的特征之間的距離。這說明該模型確實很好的完成了故障診斷任務。此外,在多次計算故障數據間的歐式距離后,閾值ε設置為50~60較為合理,本文設置為55。

表5 故障數據間的歐式距離
本文首次使用深度度量學習模型同時對齒輪箱內軸承和齒輪故障進行診斷,并通過不同的方式對采集得到的數據進行切分,來模擬實際應用中可能遇到的缺失某種工況數據的情況,從而驗證網絡模型的性能,同時構建了卷積神經網絡+Softmax分類器的模型進行對比分析,結論如下。
(1) 當數據種類不存在缺失時,深度度量學習模型在應對齒輪箱復合故障時,能夠自適應的提取特征。對復合故障的診斷準確率能夠達到96.82%,高于使用卷積網絡+Softmax分類器模型進行診斷的效果。
(2) 當使用缺失某種負載的數據訓練網絡,且使用該缺失負載數據進行網絡測試時,依然能夠獲得96±0.6%準確率;而卷積網絡+Softmax分類器模型的準確率只有92±1%。
(3) 當使用缺失某種轉速的數據訓練網絡,且使用該缺失轉速數據進行網絡測試時,卷積網絡+Softmax分類器模型產生了嚴重的過擬合現象,測試集準確率很低,只有60%左右。而深度度量學習模型并未出現過擬合,在測試集上的準確率依然有90%左右。
(4) 本文所采集的齒輪箱多故障數據集具有一定的研究價值,可用于評估針對此類問題的模型。