呂云開,武 兵,2*,李聰明,2
(1.太原理工大學 機械與運載工程學院,山西 太原 030024;2.太原理工大學 新型傳感器與智能控制教育部重點實驗室,山西 太原 030024)
當前,故障診斷技術廣泛應用于汽車、航空航天、電氣、制造業(yè)等多個領域。
在使用滾動軸承的機械裝備中,大約有30%的機械故障是由滾動軸承的損壞引起的,可見滾動軸承的工作狀態(tài)在很大程度上影響著整個機械設備的運行狀態(tài)。因此,軸承故障診斷技術的研究一直是機械故障診斷中的重中之重。
目前,故障診斷技術主要是基于信號處理的方法以及基于人工智能的方法[1]。其中,基于信號處理的方法是利用信號分析技術來分析時域、頻域以及時頻域的特征。
夏理健等人[2]對滾動軸承振動信號進行完備總體經(jīng)驗模態(tài)分解后,選擇固有模態(tài)函數(shù)分量,求出了其散布熵和Hjorth參數(shù),最后將其輸入到支持向量機中,實現(xiàn)了對軸承故障的分類診斷。彭程程[3]通過構建軸承振動信號的二階頻率變化模型,以及觀察短時傅里葉變換時頻圖,進行了軸承的故障診斷。LI W等人[4]利用數(shù)學形態(tài)學中的開運算、閉運算,對信號進行了濾波、去噪,利用香農(nóng)熵的定義獲得了歸一化形態(tài)譜熵,采用改進的準解析復小波變換分解,實現(xiàn)了對軸承的故障診斷。NI Q等人[5]采用廣義高斯循環(huán)分析模型和廣義高斯分析模型,并結合特定的統(tǒng)計閾值,近似確定了模態(tài)數(shù),然后定義了故障特征幅值比,確定了最優(yōu)帶寬控制參數(shù),并將信號進行了變分模態(tài)分解,最后進行了軸承的故障診斷。
近年來,基于深度學習的軸承故障診斷方法備受人們的關注,因為該方法可以克服人工分析方法相對耗時、主觀的缺點,具有能夠自適應地從振動信號中提取故障特征的能力。FANG Q等人[6]采用3層卷積神經(jīng)網(wǎng)絡與門控循環(huán)單元相結合來提取特征,并且引入自注意力機制,并輸入到自歸一化網(wǎng)絡,對軸承進行了故障診斷。賈峰等人[7]采用深度卷積神經(jīng)網(wǎng)絡,提取了軸承的樣本特征,然后采用加權領域鑒別器,解決了“目標域中出現(xiàn)額外故障樣本會影響軸承故障診斷精度”的問題。LING Hai-tao等人[8]首先通過連續(xù)小波變換生成了時頻圖,之后采用卷積神經(jīng)網(wǎng)絡以及雙向長短時記憶網(wǎng)絡,提取了故障特征,最后將其輸入到數(shù)字膠囊網(wǎng)絡中,從而完成了對軸承故障的分類診斷。
為了實現(xiàn)以上深度學習的方法,需要用到大量的、有標注的訓練樣本,而在小樣本數(shù)據(jù)下,采用這些方法會產(chǎn)生模型欠擬合問題,同時采用該方法獲得的分類準確率也較低。
為了解決以上問題,筆者提出一種結合孿生神經(jīng)網(wǎng)絡與長短時記憶網(wǎng)絡的軸承故障診斷方法,即以一對帶有正負標簽的原始振動信號樣本作為診斷方法的輸入,使用參數(shù)共享的卷積層、池化層以及長短時記憶網(wǎng)絡層,提取輸入樣本對的特征,通過計算二者之間的曼哈頓距離,判斷輸入樣本對的相似度,最后在小樣本數(shù)據(jù)下,實現(xiàn)對不同狀態(tài)軸承的分類診斷。
卷積神經(jīng)網(wǎng)絡(convolutional neural networks,CNN)[9]具有強大的特征提取能力,是深度學習中的代表網(wǎng)絡。
一般情況下,卷積神經(jīng)網(wǎng)絡主要由卷積層、池化層、全連接層等組成。卷積層是采用一定數(shù)量大小的卷積核,對上一層輸出的樣本進行卷積運算,加上偏置向量,通過激活函數(shù)的激活,然后作為下一層的輸入。
卷積核數(shù)量的多少對應著下一層的深度,卷積的數(shù)學公式如下所示:
Xl=f(Wl*X(l-1)+bl)
(1)
式中:X(l-1)—第l-1層的輸入;Wl—第l層里卷積核的權重矩陣;bl—偏置向量;f()—第l層的激活函數(shù);Xl—經(jīng)過卷積計算后第l層的輸出,也是下一層的輸入。
經(jīng)過卷積運算后,需要用到非線性激活函數(shù)進行非線性變換,來增強模型的擬合能力。常見的激活函數(shù)有ReLU、sigmoid、SoftMax等,其數(shù)學公式分別如下所示:
(2)
(3)
(4)
在上式中:ReLU激活函數(shù)由于其簡單的運算被用于卷積層、池化層等進行激活,可以加速模型的收斂速度。
sigmoid激活函數(shù)在輸入較大的情況下會出現(xiàn)軟飽和性,從而導致梯度無法向后傳遞、更新參數(shù),進而導致梯度消失。因此,sigmoid激活函數(shù)一般不作為卷積層的激活函數(shù),通常在二分類問題中作為輸出層的激活函數(shù)來輸出概率。
SoftMax激活函數(shù)則常用于多分類問題中,作為輸出層的激活函數(shù)來輸出概率。
經(jīng)過卷積層后的特征維度一般比較大,使用池化層可以有效地降低特征維度,防止由于模型參數(shù)過多從而產(chǎn)生的過擬合問題。
池化層的運算如下所示:
O(l+1)=Fpool(Xl)
(5)
式中:Xl—第l層經(jīng)過卷積層進行激活后的輸出;O(l+1)—經(jīng)過池化層后的輸出。
常用的池化層有最大池化層以及平均池化層,筆者所采用的是最大池化層。
孿生神經(jīng)網(wǎng)絡是為了解決小樣本學習問題[10]而提出的一種網(wǎng)絡結構。
現(xiàn)階段,孿生神經(jīng)網(wǎng)絡主要用于食品識別、語音識別、人臉識別、表情識別等領域[11]。而將孿生神經(jīng)網(wǎng)絡用于軸承故障診斷的研究目前還比較少。
孿生神經(jīng)網(wǎng)絡的結構如圖1所示。
圖1 孿生神經(jīng)網(wǎng)絡原理圖
這是一種可以學習2個樣本之間相似度的網(wǎng)絡。輸入的樣本是一個樣本對(x1,x2,y)。其中:y=1表示2個樣本是來自同一類;y=0表示2個樣本來自不同類。
將一對樣本輸入到參數(shù)共享的兩個神經(jīng)網(wǎng)絡中,通過網(wǎng)絡輸出得到fw(x1),fw(x2),之后將其輸入到能量函數(shù)E中,表達式如下所示:
Ew(x1,x2)=‖fw(x1)-fw(x2)‖
(6)
式中:Ew(x1,x2)—兩個輸入之間的相似度。
能量函數(shù)E可以是任意相似性度量函數(shù),常見的有:曼哈頓距離、歐氏距離、閔可夫斯基距離、余弦相似度等。其中,歐式距離等既要涉及加減運算,還需要進行開方運算,從而容易導致計算相對麻煩。
而曼哈頓距離只涉及加減運算,并且可以消除開方過程中取近似值帶來的誤差。因此,此處筆者所用的是曼哈頓距離。
曼哈頓距離表達式如下所示:
df(x1,x2)=|fw(x1)-fw(x2)|
(7)
式中:輸出—fw(x1),fw(x2)兩個向量之間的曼哈頓距離。
孿生神經(jīng)網(wǎng)絡的輸出是樣本對的相似性,也是樣本對來自相同類的概率,其公式如下所示:
P(x1,x2)=sigm(FC(df(x1,x2)))
(8)
式中:FC—全連接層;sigm—sigmoid激活函數(shù)。
孿生神經(jīng)網(wǎng)絡中,常見的損失函數(shù)為二元交叉熵損失函數(shù)以及對比損失函數(shù)[12],二者單次訓練的損失函數(shù)公式分別如下所示:
Loss1(P(x1,x2),y)=-ylog(P(x1,x2))-(1-y)log(1-P(x1,x2))
(9)
(10)
式中:P(x1,x2)—一對樣本的預測相似度;y—真實標簽0或1;Ew(x1,x2)—能量函數(shù);margin—超參數(shù)閾值:當輸入的兩個樣本不相似、二者距離大于這個閾值時損失為零。
由于對比損失函數(shù)需要調(diào)整超參數(shù),此處筆者選用二元交叉熵損失函數(shù)。
最后,通過相似度的分析[13],就可以判斷測試樣本應該屬于哪一類。
長短時記憶網(wǎng)絡[14]是為了改善在循環(huán)神經(jīng)網(wǎng)絡中,長序列樣本在訓練過程中存在的梯度消失、梯度爆炸等問題,而提出的改進網(wǎng)絡。
長短時記憶網(wǎng)絡的核心思想是,可以通過遺忘不同程度的長時記憶,并加上此刻產(chǎn)生的短時記憶,從而來控制此時刻經(jīng)過長短時記憶網(wǎng)絡所產(chǎn)生的輸出值。
長短時記憶網(wǎng)絡主要由遺忘門、輸入門和輸出門來控制其輸出值。
遺忘門用來記錄長時記憶的遺忘程度,決定上一時刻的記憶細胞狀態(tài)有多少保留到此刻的記憶細胞狀態(tài)。
遺忘門的公式如下所示:
ft=σ(Wf·[ht-1,xt]+bf)
(11)
式中:ht-1—上一時刻的輸出;xt—當前時刻的輸入;Wf—遺忘門的權重矩陣;bf—偏置向量;σ—sigmoid激活函數(shù);ft—遺忘門的輸出。
輸入門用來記錄當前時刻的短時記憶,決定這一時刻有多少信息被保留。
輸入門公式如下所示:
it=σ(Wi·[ht-1,xt]+bi)
(12)
(13)
(14)
輸出門用來作為長短時記憶網(wǎng)絡最后的輸出,其公式如下所示。
ot=σ(Wo·[ht-1,xt]+bo)
(15)
ht=ot·tanh(ct)
(16)
式中:Wo—輸出門的權重矩陣;bo—輸出門的偏置向量;ht—最后的輸出,由輸出門的輸出和該時刻的記憶細胞狀態(tài)決定。
最終,筆者所確定的網(wǎng)絡結構如圖2所示。
圖2 SNN-LSTM網(wǎng)絡原理圖
網(wǎng)絡的輸入是原始振動信號的一對樣本,標簽為0或1。筆者采用比較二者相似度的方法來擴充訓練樣本個數(shù),使其更適用于小樣本數(shù)據(jù)。
筆者通過共享提取樣本對特征的網(wǎng)絡參數(shù)來完成孿生神經(jīng)網(wǎng)絡的搭建,經(jīng)過卷積層、池化層提取特征后,用長短時記憶網(wǎng)絡層進一步提取有關時間序列的特征,最后進行全連接,并計算二者曼哈頓距離,從而輸出0到1之間的值,利用真實標簽和二元交叉熵損失函數(shù),進行梯度反向傳播,更新網(wǎng)絡參數(shù)。
SNN-LSTM網(wǎng)絡主要參數(shù)如表1所示。
表1 SNN-LSTM網(wǎng)絡主要參數(shù)
SNN-LSTM采取小而深的網(wǎng)絡結構,第一層卷積核過小,容易受到高頻噪聲的干擾;而過大,則容易丟失局部特征。因此,筆者認為采用中等大小的卷積核比較合適[15]。
基于SNN-LSTM的故障診斷模型訓練以及測試步驟,如圖3所示。
圖3 SNN-LSTM網(wǎng)絡故障診斷模型流程圖
基于SNN-LSTM的故障診斷具體步驟如下:
(1)劃分數(shù)據(jù)集。對采集到的原始振動信號進行劃分,劃分出訓練集與測試集;
(2)模型訓練。每次在訓練集中抽取兩個樣本,形成樣本對輸入到SNN-LSTM網(wǎng)絡中,通過損失函數(shù)進行梯度下降,反向傳播到網(wǎng)絡中,從而更新網(wǎng)絡參數(shù)。當模型訓練到一定次數(shù)或者收斂時,停止訓練,保存模型;
(3)測試樣本故障分類。在測試集中隨機選擇一個樣本作為測試樣本。
在訓練集中,每一類分別選擇一個樣本,將其與測試樣本一起,輸入到SNN-LSTM網(wǎng)絡中,得到測試樣本屬于每一類的概率值,選擇概率最大那個類作為測試樣本的類別。
為了驗證基于SNN-LSTM的故障診斷方法在軸承故障診斷中的有效性,筆者設計了一個軸承故障診斷實驗,采集了不同轉(zhuǎn)速、不同狀態(tài)下的軸承振動數(shù)據(jù)[16]。
數(shù)據(jù)來源于Machinery Fault Simulator-Lite軸承故障診斷實驗臺。
實驗臺結構如圖4所示。
圖4 Machinery Fault Simulator-Lite軸承故障診斷實驗臺
筆者選用DEWE 43V采集卡采集傳感器上的加速度信號。
其中,傳感器品牌及型號為:KISTLER-8766A050。電動機轉(zhuǎn)速分別為:1 200 r/min、1 800 r/min、2 400 r/min。軸承型號為:ER12K-HFF深溝球軸承。
采樣頻率為12 kHz,正常軸承采樣時間為4 min,其他有故障的軸承采樣時間為2 min。
傳感器采集軸承基座上的振動信號,所采集到的故障類型是單一故障。其在1 200 r/min轉(zhuǎn)速下,采集正常、滾動體故障、內(nèi)圈故障和外圈故障4種狀態(tài)的軸承振動信號;在1 800 r/min轉(zhuǎn)速下,采集滾動體故障、內(nèi)圈故障和外圈故障3種狀態(tài)的軸承振動信號。
故障尺寸大小為1.5×0.8 mm,為電火花點蝕加工。
每種狀態(tài)下所截取的信號長度為120 000個點,一半數(shù)據(jù)生成訓練集,另一半生成測試集。每2 048個點為一個樣本,在訓練集上采用大小為2 048個點、滑動步長為80個點的滑動窗口生成訓練樣本,通過重疊采樣的辦法,可以擴充訓練樣本數(shù)量。
測試集上用同樣大小的窗口生成測試樣本,不采取重疊滑動。一共有7種不同狀態(tài)類別,每個類別包括300個訓練樣本和100個測試樣本。
數(shù)據(jù)集描述如表2所示。
表2 數(shù)據(jù)集描述
實驗中,筆者采集到了在1 200 r/min轉(zhuǎn)速下的4種狀態(tài)的軸承振動信號時域波形圖,如圖5所示。
圖5 在1 200 r/min轉(zhuǎn)速下的軸承振動信號時域波形圖
實驗中,采集到在1 800 r/min轉(zhuǎn)速下3種狀態(tài)的軸承振動信號時域波形圖,如圖6所示。
圖6 1 800 r/min轉(zhuǎn)速下的軸承振動信號時域波形圖
筆者在訓練集里選擇35、70、140、210、350、420、700、1 400、2 100個訓練樣本,以及全部700個測試樣本,并將其輸入到網(wǎng)絡中。
為了驗證在小樣本數(shù)據(jù)下,基于SNN-LSTM網(wǎng)絡的方法的優(yōu)越性,筆者建立與SNN-LSTM子網(wǎng)絡結構一致的CNN-LSTM網(wǎng)絡,與上述方法進行對比。同時,建立去掉長短時記憶網(wǎng)絡層后的SNN網(wǎng)絡,與上述方法進行對比;每次實驗重復10次后,取平均值得到準確率。
實驗結果如圖7所示。
圖7 在不同訓練樣本數(shù)量下各個網(wǎng)絡的準確率
對比SNN-LSTM和SNN可以發(fā)現(xiàn):
在不同訓練樣本數(shù)量下,SNN-LSTM的準確率都要高出SNN大概2%~4%,說明加入長短時記憶網(wǎng)絡層,可以提高軸承故障分類的準確率;
對比SNN-LSTM和CNN-LSTM可以看出:
當訓練樣本數(shù)量超過700個時,兩個網(wǎng)絡的準確率相差只有不到1%,并且二者的準確率都超過95%。隨著訓練樣本數(shù)量的增加,二者的準確率也隨著增加;
當訓練樣本數(shù)量在35~140個時,SNN-LSTM的準確率要明顯高于CNN-LSTM的準確率;
在訓練樣本數(shù)量僅為35個時,SNN-LSTM仍然有61.28%的準確率,而CNN-LSTM只有41.25%的準確率,高出20.03%。
該結果說明,SNN-LSTM在樣本數(shù)量較多的時候網(wǎng)絡的性能沒有多少損失;同時,在小樣本數(shù)據(jù)下比CNN-LSTM的準確率高得多。
以上結果證明,基于SNN-LSTM的方法比現(xiàn)有的神經(jīng)網(wǎng)絡方法更適合于小樣本數(shù)據(jù)。
為了更直觀地表示神經(jīng)網(wǎng)絡在故障診斷中的效果,筆者采用t-SNE降維的方法,對SNN-LSTM在140個訓練樣本情況下的全連接層進行降維可視化。
模型全連接層的t-SNE可視化如圖8所示。
圖8 模型全連接層的t-SNE可視化
同時,筆者給出在700個測試樣本下的混淆矩陣,如圖9所示。
圖9 測試結果混淆矩陣
從圖(8,9)中可以看出:
SNN-LSTM故障診斷方法除了將1類中的接近一半測試樣本誤分成3類外,對于其余6個類的分類效果尚可:其中,對于0類的分類準確率最高接近100%;
對于3類的分類準確率較低為70%,其中,將20%的測試樣本誤分到1類里。
在小樣本數(shù)據(jù)下的軸承故障診斷中,采用基于經(jīng)典神經(jīng)網(wǎng)絡方法時,存在模型欠擬合和分類準確率低等問題,為此,筆者提出了一種基于SNN-LSTM的軸承故障診斷方法,并將其應用于小樣本數(shù)據(jù)下的軸承故障診斷中。
研究結果表明:
(1)神經(jīng)網(wǎng)絡的輸入是原始振動信號,從而減少了經(jīng)過數(shù)據(jù)處理或者數(shù)據(jù)轉(zhuǎn)化時產(chǎn)生的數(shù)據(jù)誤差,同時避免了相對主觀的人工提取方法;
(2)經(jīng)過實驗驗證,在網(wǎng)絡中加入長短時記憶網(wǎng)絡層后,在不同訓練樣本數(shù)量的條件下,均可以提高網(wǎng)絡的準確率,提高2%~5%;
(3)通過對比SNN-LSTM和CNN-LSTM在不同訓練樣本數(shù)量下的準確率,可以看到:當訓練樣本數(shù)量在700~2 100個之間時,二者的準確率均超過95%,并且相差不大;當訓練樣本數(shù)量在35~140個之間時,SNN-LSTM比CNN-LSTM的準確率高出20%左右;在訓練樣本數(shù)量僅為35個時,SNN-LSTM的準確率仍有61.28%,而CNN-LSTM的準確率只有41.25%。
在后續(xù)的研究過程中,筆者將加入三一集團有限公司不對中滾動軸承數(shù)據(jù)來進行故障的分類,研究實際工程數(shù)據(jù)對上述診斷模型的影響。