摘要:寶信和英特爾相關(guān)團隊利用Analytics Zoo在無監(jiān)督的基于時間序列異常檢測用例上進行了有益的合作探索,本文分享了合作項目的結(jié)果和經(jīng)驗。
背景----
在工業(yè)制造行業(yè),有多種方法來避免由于設(shè)備失效導(dǎo)致的生產(chǎn)中斷。常見的方法是定期檢修維護,或者提前更換設(shè)備零部件,這些方法都可能會增加設(shè)備維護和更換的投入。然而,另一個可行的方法是收集不同設(shè)備的大量振動數(shù)據(jù),并使用這些數(shù)據(jù)自動檢測設(shè)備狀態(tài)的異常。因此,有效地收集大量的時間序列數(shù)據(jù)并且大規(guī)模地進行異常和失效檢測,對于降低工業(yè)制造行業(yè)中的的很多不必要的成本是非常關(guān)鍵的。
Recurrent neural networks (RNNs)循環(huán)神經(jīng)網(wǎng)絡(luò),特別是Long short term memory models (LSTMs)長短期記憶模型現(xiàn)在被廣泛應(yīng)用于信號處理,時間序列分析等場景。作為connectionist模型,RNNs可以提取網(wǎng)絡(luò)節(jié)點中的動態(tài)序列。在這個項目中,我們利用LSTM來模擬震動信號的統(tǒng)計學(xué)規(guī)律, 并且使用了來自辛辛那提大學(xué)的IMS全生命周期數(shù)據(jù) (http://ti.arc.nasa.gov/c/3/)來展示設(shè)備異常檢測的分析流程。
Analytics Zoo解決方案
Analytics Zoo (https://github.com/intel-analytics/analytics-zoo)是一個基于Apache Spark和BigDL等構(gòu)建的analytics (分析)+AI(人工智能)的平臺,由英特爾開源,該平臺能夠方便地讓用戶將端到端的基于大數(shù)據(jù)的深度學(xué)習(xí)應(yīng)用直接部署在已有的Hadoop/Spark的大數(shù)據(jù)集群上,而無需安裝專用的GPU設(shè)備。
我們已經(jīng)在Apache Spark和Analytics Zoo上創(chuàng)建了端到端的基于LSTM的異常檢測流程,可以應(yīng)用于大規(guī)模時間序列數(shù)據(jù)的無監(jiān)督深度學(xué)習(xí)。作為LSTM模型的輸入數(shù)據(jù)的是一系列設(shè)備震動信號,比如在當(dāng)前時間點之前50秒的信號數(shù)據(jù),通過這些信號數(shù)據(jù),經(jīng)過訓(xùn)練的模型可以預(yù)測下一個數(shù)據(jù)點。當(dāng)下一個數(shù)據(jù)點和模型預(yù)測的數(shù)據(jù)點有較大偏差,我們認為該數(shù)據(jù)為異常數(shù)據(jù)。圖1所示為一個端到端的數(shù)據(jù)處理流程。
圖1:基于Analytics Zoo的振動時間序列異常檢測處理流程. |
1. 處理流程從Spark集群讀取原始數(shù)據(jù)并構(gòu)造RDD(resilient distributed datasets)彈性分布式數(shù)據(jù)集,并抽取特征,最后把特征輸出到Dataframe。在原始數(shù)據(jù)集中,每個數(shù)據(jù)描述了一個檢測失效(test-to-failure)的實驗,并包含了時長為1秒的20K赫茲采樣的即時振動信號(如圖2所示)。為了訓(xùn)練深度學(xué)習(xí)模型,每一秒的統(tǒng)計數(shù)據(jù)被提取作為特征數(shù)據(jù),包括均方根(Root Mean Square), 峰度(Kurtosis),峰值( Peak), 以及小波包分解得到的8個頻段的能量值。
2. 處理流程進一步在RDD中處理這些特征數(shù)據(jù),包括數(shù)值的小波去噪處理、標準化處理(normalize)和滑動平均處理,以50秒為基準展開特征數(shù)據(jù)序列,以便于深度學(xué)習(xí)模型可以通過前50秒的模式來預(yù)測下一個數(shù)據(jù)點,并最終把數(shù)據(jù)轉(zhuǎn)換為Sample RDD。(https://bigdl-project.github.io/master/#APIGuide/Data/#sample).
3. 處理流程使用Analytics Zoo中提供的類Keras API來創(chuàng)建時間序列異常檢測模型,包括如圖所示的三個LSTM層和一個密集層,并通過數(shù)據(jù)訓(xùn)練這個模型(前50個點訓(xùn)練下一個點)。
val model = Sequential[Float]() model.add(LSTM[Float](8, returnSequences = true, inputShape = inputShape)) model.add(Dropout[Float](0.2)) model.add(LSTM[Float](32, returnSequences = true)) model.add(Dropout[Float](0.2)) model.add(LSTM[Float](15, returnSequences = false)) model.add(Dropout[Float](0.2)) model.add(Dense[Float](outputDim = 1))
4. 接下來是模型評估:使用測試數(shù)據(jù)或者全部數(shù)據(jù)來檢測異常。異常數(shù)據(jù)是指遠離RNN模型預(yù)測的數(shù)據(jù)點。在這個項目中,我們指定異常數(shù)據(jù)為整體數(shù)據(jù)集的10%,也就是距離模型預(yù)測數(shù)值最遠的那10%數(shù)據(jù)為異常數(shù)據(jù)。這個篩選比例設(shè)置為可調(diào)整參數(shù),可以為每個單獨案例進行調(diào)整。
圖2:時間點2004.02.13.14.32.39上四通道的振動數(shù)據(jù) |
測試結(jié)果
圖3顯示了原始振動數(shù)據(jù)和LSTM模型預(yù)測數(shù)據(jù)的對比。只有峰值和均方根這兩個統(tǒng)計數(shù)值顯示出來,其他統(tǒng)計數(shù)值具有相似的波動。圖中所示紅點為被識別的異常數(shù)據(jù),橙色線條為LSTM模型的預(yù)測數(shù)值,藍色線條為原始數(shù)值。經(jīng)過訓(xùn)練的模型最終成功預(yù)測了設(shè)備的失效,以及在經(jīng)過600個時間點之后的震動尖峰,在時間序列早期的一些波動可以作為設(shè)備失效的預(yù)警信息。
a), peak |
b), RMS |
圖3: RNN預(yù)測數(shù)值和原始震動數(shù)值的比較 |
結(jié)論
通過利用無監(jiān)督深度學(xué)習(xí),以及Analytics Zoo提供的端到端處理流程,我們可以有效地在大數(shù)據(jù)集和標準大數(shù)據(jù)集群(Hadoop, Spark等)上應(yīng)用時間序列異常檢測。通過收集、處理大量的時間序列數(shù)據(jù)(比如日志,傳感器讀數(shù)等),應(yīng)用RNN來學(xué)習(xí)數(shù)據(jù)模式,最終預(yù)判數(shù)據(jù)和判定異常數(shù)據(jù),Analytics Zoo提供的端到端處理流程能夠為許多新興的智能系統(tǒng)如智能制造、智能運維、物聯(lián)網(wǎng)等提供解決方案。基于時間序列的異常檢測在設(shè)備的智能監(jiān)控和
預(yù)測性維護上可以得到重要應(yīng)用。
參考文獻
1. https://github.com/intel-analytics/analytics-zoo
2. https://github.com/intel-analytics/BigDL
3. https://www.kaggle.com/victorambonati/unsupervised-anomaly-detection
4. https://iwringer.wordpress.com/2015/11/17/anomaly-detection-concepts-and-techniques/
-
Hadoop
+關(guān)注
關(guān)注
1文章
90瀏覽量
15944 -
Apache
+關(guān)注
關(guān)注
0文章
64瀏覽量
12437 -
SPARK
+關(guān)注
關(guān)注
1文章
105瀏覽量
19859
發(fā)布評論請先 登錄
相關(guān)推薦
評論