李建偉 魯一萍 郭 宏
(1.太原科技大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院 太原 030024)(2.太原科技大學(xué)機(jī)械工程學(xué)院 太原 030024)
工業(yè)設(shè)備中,一把刀在監(jiān)測過程中會產(chǎn)生幾千萬甚至上億的數(shù)據(jù)[1,7],而且生成十分迅速,較難捕捉到異常數(shù)據(jù),刀具的監(jiān)測往往需要采用實(shí)時的方法進(jìn)行。傳統(tǒng)工業(yè)中常用的3σ建模方法[1]已經(jīng)不能滿足現(xiàn)有的刀具異常數(shù)據(jù)監(jiān)測。
目前,異常數(shù)據(jù)的檢測方法多種多樣,有基于距離的異常檢測[2],基于密度的異常檢測[3]等。近幾年也有一些針對流數(shù)據(jù)的異常處理方法,如基于多分辨率網(wǎng)格的異常檢測方法[4],基于在線集成學(xué)習(xí)和隔離機(jī)制的流數(shù)據(jù)異常檢測算法[5~6],基于ST與孤立森林的流數(shù)據(jù)異常檢測算法[7~8],基于聚類的異常檢測算法[9],基于稀疏表征的異常點(diǎn)檢測方法[10]等。
此外,Hassan Sarmadi 等提出一種基于自適應(yīng)馬哈拉諾比斯平方距離和一類稱為AMSD-kNN 的kNN規(guī)則的新穎異常檢測方法[11],用于在變化的環(huán)境條件下SHM[11],為SHM 創(chuàng)建了一種新穎的無監(jiān)督學(xué)習(xí)策略,這是針對一類變化的異常檢測,不是普遍適用的。還有k 近鄰的方法解決查找相似日志數(shù)據(jù)的異常[12],自適應(yīng)的離群值檢測[13],基于統(tǒng)計模式的系統(tǒng)調(diào)用跟蹤特征提取方法[14],用于心電檢測的一維的卷積神經(jīng)網(wǎng)絡(luò)的異常檢測[15]。
LSTM[16]適用于對時間性要求較高的數(shù)據(jù)檢測,因此本文提出一種基于LSTM 的刀具異常檢測方法。
LSTM最顯著的特征便是可以快速學(xué)習(xí)數(shù)據(jù)的新特點(diǎn),實(shí)時地調(diào)節(jié)更新網(wǎng)絡(luò),以保證模型的準(zhǔn)確性、有效性。本實(shí)驗選擇一個合適的時間窗口,將數(shù)據(jù)分組進(jìn)行預(yù)測,利用差值進(jìn)行分布建模,求出閾值,之后進(jìn)行比較,來直觀地觀察判斷每個數(shù)據(jù)異常的可能性。
用pt表示t時刻模型接收到的實(shí)時數(shù)據(jù),pt是來自傳感器網(wǎng)絡(luò)采集的傳感器數(shù)據(jù),因此模型的輸入為ptt,ptt+1,ptt+2……為了可以清楚地計算出每個異常數(shù)據(jù)的可能性,將每個數(shù)據(jù)預(yù)測建模求出一個值,與閾值進(jìn)行比對。
LSTM可以通過輸入大量訓(xùn)練的流數(shù)據(jù)進(jìn)行多次迭代來調(diào)整自身的參數(shù),得到一個訓(xùn)練數(shù)據(jù)的模型。LSTM網(wǎng)絡(luò)在隱含層中加入了一個狀態(tài)來存儲長期狀態(tài),避免了梯度消失的問題。
LSTM邏輯架構(gòu)示意圖如圖1所示。
圖1 LSTM邏輯架構(gòu)示意圖
首先是遺忘門,它用來控制LSTM是否讓前一時刻學(xué)到的信息ct-1通過。然后是輸入門,通過sig?mod 決定哪些值這一層進(jìn)行更新,一個tanh 層用來生成新的候選值ct,ct作為當(dāng)前層產(chǎn)生的候選值添加到cell state 中,把這兩部分產(chǎn)生的值結(jié)合來進(jìn)行更新。ct的更新公式如式(1)所示:
最后是決定模型的輸出,通過sigmod層得到一個初始輸出,再使用tanh 將值縮放到-1~1 之間,與sigmod得到的輸出逐對相乘,從而得到模型的輸出ht,ht的計算公式如式(2)所示:
輸出門和單元狀態(tài)ct共同決定LSTM的輸出。
和其他的神經(jīng)網(wǎng)絡(luò)類似,疊加隱含層可以使得整個模型更加深入,得到較為準(zhǔn)確的輸出。本文有兩個隱含層,其堆疊模型如圖2所示。
圖2 LSTM堆疊模型結(jié)構(gòu)
為了解決2.1 節(jié)提出的問題,運(yùn)用LSTM 進(jìn)行刀具數(shù)據(jù)預(yù)測,及時地調(diào)整網(wǎng)絡(luò)結(jié)構(gòu),避免預(yù)測不準(zhǔn)確。除此之外,預(yù)測之后的差值不直接作為與閾值進(jìn)行比較的對象,而是將差值進(jìn)行正態(tài)分布建模,再依據(jù)差值在分布內(nèi)的概率密度函數(shù)值來分配當(dāng)前時刻數(shù)據(jù)的異常值,具有可靠性。
首先將從傳感器采集到的刀具數(shù)據(jù)進(jìn)行預(yù)測得到預(yù)測值pt',將pt'與t時刻的數(shù)據(jù)pt進(jìn)行比較,計算預(yù)測差值xt。得到xt后,選擇一個合適的時間窗口[t1,t2],計算這段時間內(nèi)差值xt的均值和方差,再用求得的均值和方差進(jìn)行正態(tài)分布建模,計算得到差值xt的概率密度函數(shù)值F(xt),F(xiàn)(xt)為pt的異常值;之后將F(xt)與異常值閾值A(chǔ)S(AS∈[0,1])進(jìn)行比較,大于閾值,則pt屬于異常數(shù)據(jù),否則pt為正常數(shù)據(jù)。
圖3 方法整體流程
實(shí)驗共采集了六把刀的數(shù)據(jù),其中用前三把刀的數(shù)據(jù)來訓(xùn)練LSTM 模型,后三把刀依次送入訓(xùn)練好的模型中,做異常檢測。閾值A(chǔ)S是由前三把刀的歷史正常數(shù)據(jù)訓(xùn)練得出,具有一定的代表性。
通常情況下,預(yù)測與實(shí)際的差值xt轉(zhuǎn)換為統(tǒng)一量度的異常值概率密度函數(shù)F(xt),然后將異常值與之前求得的閾值進(jìn)行比較,大于閾值A(chǔ)S的即為異常數(shù)據(jù)。
但是由于數(shù)據(jù)量較大,容易出現(xiàn)概念漂移的現(xiàn)象,正常數(shù)據(jù)和異常數(shù)據(jù)的模式都會受到一定的影響,單一將差值作為計算異常值的點(diǎn),會使得在發(fā)生概念漂移之后的異常數(shù)值不是十分準(zhǔn)確。因此本文選擇一個合適的時間窗口,將窗口內(nèi)的差值序列進(jìn)行一個正態(tài)分布建模,計算F(xt)。
這樣每個數(shù)據(jù)的異常分?jǐn)?shù)就取決于t時刻以及之前的一段時間的預(yù)測差值分布,所求得的異常分?jǐn)?shù)可以根據(jù)刀具數(shù)據(jù)的變化而變化,提高了預(yù)測的準(zhǔn)確性。F(xt)計算如式(3):
其中μ和σ2是時間窗口中差值序列的平均值和方差,x是滑動窗口里的實(shí)際時間序列數(shù)據(jù)。
本文選取第n個異常所在時間區(qū)間作為建模分布的區(qū)間,維持這個區(qū)間有利于讓差值序列更符合模擬數(shù)據(jù)的實(shí)時模式。實(shí)驗分別對后三把刀進(jìn)行了一個異常檢測,由于初檢測的時候,刀具適應(yīng)傳感器需要一定的時間,所以在檢測異常的時候選取中間30s~60s的時間段作為時間窗口,AS根據(jù)公式求得0.13789,結(jié)果如圖4~圖6所示。
圖4 第四把刀的異常檢測
圖5 第五把刀的異常檢測
圖6 第六把刀的異常檢測
異常檢測的結(jié)果表明:LSTM 可以有效預(yù)測得出當(dāng)前刀具的異常情況,完成了異常數(shù)據(jù)的識別。
實(shí)驗環(huán)境:本文所用的實(shí)驗環(huán)境為戴爾筆記本,CPU:Intel 酷睿i7 7700HQ,內(nèi)存32GB,GPU:GeForceGTX1080Ti×4,操作系統(tǒng)為Windows10,開發(fā)環(huán)境為使用Python3.6 語言的jupyter notebook 集成的開發(fā)工具,使用Keras 提供的LSTM 神經(jīng)網(wǎng)絡(luò)模型。
實(shí)驗的流程按照數(shù)據(jù)采集、數(shù)據(jù)預(yù)處理、數(shù)據(jù)歸一化處理、模型的訓(xùn)練、調(diào)參數(shù)、數(shù)據(jù)預(yù)測以及正態(tài)分布建模幾個步驟完成,如圖7所示。
圖7 實(shí)驗流程圖
數(shù)據(jù)采集:利用太原科技大學(xué)機(jī)械工程實(shí)驗室已有的傳感器設(shè)備,采集到六把銑刀的數(shù)據(jù),包括溫度,切削力,振動以及噪聲等時序數(shù)據(jù)。
數(shù)據(jù)預(yù)處理:由于采集到的數(shù)據(jù)在開始的時候會有采集失誤,需要對采集到的原始數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗等操作,得到完整的數(shù)據(jù)。
數(shù)據(jù)標(biāo)準(zhǔn)化處理:由于刀具的切削力、振動等參數(shù)同時作為特征值輸入,一次采集到的數(shù)據(jù)量一般達(dá)到七千萬,而且不能因為刀具數(shù)據(jù)量過大就對預(yù)測影響的比例變大,所以需要對特征序列進(jìn)行最大-最小標(biāo)準(zhǔn)化處理,處理方式如式(4)所示:
調(diào)參數(shù):在數(shù)據(jù)訓(xùn)練的過程中不斷地調(diào)整網(wǎng)絡(luò)框架結(jié)構(gòu)以及LSTM 層中的參數(shù)值,一直到整個模型的預(yù)測效果最佳。
4.2.1 單雙層網(wǎng)絡(luò)對比
1)首先搭建單層的LSTM 神經(jīng)網(wǎng)絡(luò)和全連接層模型,對刀具數(shù)據(jù)進(jìn)行預(yù)測,將前兩把刀的數(shù)據(jù)作為訓(xùn)練集,第三把刀的數(shù)據(jù)作為測試集。慮到模型的準(zhǔn)確度之后,經(jīng)過多次調(diào)試與測試,將網(wǎng)絡(luò)層中的隱藏神經(jīng)元設(shè)置為64,其實(shí)驗結(jié)果如表1 所示。
表1 單層神經(jīng)網(wǎng)絡(luò)預(yù)測結(jié)果
2)實(shí)驗二搭建了兩層的LSTM 網(wǎng)絡(luò)層和全連接層模型,其中第一個LSTM 層隱藏神經(jīng)元和單層的一樣,第二層設(shè)置為128,采用相同的訓(xùn)練集和測試集,放到模型中繼續(xù)訓(xùn)練測試之后,其實(shí)驗結(jié)果如表2所示。
表2 雙層神經(jīng)網(wǎng)絡(luò)預(yù)測結(jié)果
從實(shí)驗二的結(jié)果可以看出,兩層LSTM 模型的預(yù)測性能大大增加,預(yù)測準(zhǔn)確率也增加了約50%。
除此之外,由文獻(xiàn)[17]可知,適當(dāng)?shù)脑黾由窠?jīng)網(wǎng)絡(luò)層數(shù)可以提高預(yù)測的準(zhǔn)確率,但是本文在增加了三層神經(jīng)網(wǎng)絡(luò)后,準(zhǔn)確率只提高了不到0.001%,說明不斷增加神經(jīng)網(wǎng)絡(luò)的層數(shù)并不一定能使預(yù)測的性能達(dá)到改善,相反還增加了計算的冗余。故而,對于像刀具數(shù)據(jù)的這種時間序列來說,綜合計算量和預(yù)測性能,在適當(dāng)?shù)木W(wǎng)路層數(shù)下,可以不必增加網(wǎng)絡(luò)層數(shù)。
最終LSTM 模型使用含有2 個隱含層,每個隱含層的神經(jīng)元個數(shù)分別為128,64,時間步長為165。為了避免過擬合現(xiàn)象采用dropout機(jī)制,drop?out設(shè)置為0.2,提高模型整個的泛化能力。
4.2.2 LSTM算法與PCA降維算法對比
為了證明LSTM 算法的有效性,將LSTM 算法與本組另一個PCA 降維算法在最后的預(yù)測準(zhǔn)確度方面進(jìn)行了對比,準(zhǔn)確度的計算如式(5):
pt是原始數(shù)據(jù),pt'是通過預(yù)測之后的數(shù)據(jù),L是整個時間窗口的長度。準(zhǔn)確度比較結(jié)果如圖8 所示。
圖8 準(zhǔn)確度對比圖
通過對比實(shí)驗可以發(fā)現(xiàn),LSTM 模型的準(zhǔn)確度高于PCA模型,因此我們最終采用LSTM模型。
本文提出了基于LSTM 的刀具異常數(shù)據(jù)檢測模型,通過捕獲時間序列中的關(guān)系,利用差值分布建模得出了閾值與異常值??傮w來說,LSTM 方法準(zhǔn)確度優(yōu)于PCA方法。PCA方法進(jìn)行對比后,刀具異常數(shù)據(jù)檢測的準(zhǔn)確率提高了約20%。實(shí)驗過程中采集的真實(shí)刀具數(shù)據(jù),進(jìn)一步驗證了LSTM 模型的有效性。