汪曉臣,段鵬宇,李 樊,孫同慶
1(中國鐵道科學研究院集團有限公司 電子計算技術研究所,北京100081) 2(北京理工大學 計算機學院,北京100081)
物聯網是將各種傳感器接入互聯網而組成的一個網絡,能夠實現人、物的互聯互通.物聯網技術廣泛地應用于智能交通、智能樓宇、智慧城市[1]等領域.其中攝像頭作為重要的圖像采集設備,為監控、分析、識別等功能提供了大量的數據.
攝像頭的故障預測與健康管理(Prognostics Health Management,PHM)是其重要的支撐技術,如果能夠預測系統發生故障的時間,就能提前進行相應的準備以避免故障或減少故障帶來的損失,具有很大的實用價值.
目前已有的故障預測方法有基于機理模型的預測方法和基于數據模型的預測方法.基于機理模型的預測方法是根據設備的內部結構,使用數學或物理的公式、定理,對設備建立模型,從而對故障進行預測.在工業系統中,很多設備本身內部結構非常復雜,這使得針對整個系統或者某些單個部件建立數學或物理模型都十分困難,或者建立的機理模型參數非常復雜,使用機理模型進行預測難以實現.
基于數據模型的預測方法是根據設備的數據,如環境數據、設備狀態數據、歷史故障數據等,使用預測算法對故障進行預測.隨著信息技術的發展,獲取設備數據越來越方便,所以基于數據模型的預測方法就成為了目前的研究熱點.
時間序列是指按事件的發生時間先后順序排列成的序列,通常使用時間序列進行預測.
目前常用的序列預測算法傳統方法和深度學習方法,常用傳統方法有自回歸移動平均(Autoregressive Integrated Moving Average,ARIMA)、支持向量回歸(Support Vector Regression,SVR)等.深度學習是指模型具有較深的層次,常用的深度學習方法有循環神經網絡[2](Recurrent Neural Network,RNN)等.ARIMA算法模型簡單,但只能處理穩定數據或差分后穩定的數據,而且只能捕捉線性關系;SVR算法泛化能力強,但困難在于核函數的選擇;LSTM是RNN的一種,增強了其處理歷史數據的能力,適合處理時間序列,但仍難以處理長序列,而且時間復雜度高.
本文針對故障發生時間序列數據,提出了一種基于LSTM神經網絡[3]的故障預測方法,并使用網格搜索的方法對參數進行選擇,使得預測結果的均方根誤差最小.使用軌道交通通信集中告警系統日志數據進行實驗,并與ARIMA和SVR模型進行對比.實驗結果表明LSTM算法在故障預測中性能明顯高于ARIMA和SVR算法.
關于故障預測的研究主要集中于兩個方面:基于機理模型預測和基于數據模型預測.
國內外已經有了很多對故障預測的研究,大多是通過對設備建立數學或物理學模型進行預測的,比如機械設備或電池等.K.Xu[4]等人對汽車發動機和柴油機渦輪增壓器建立了故障模型.Pecht[5]等人對電子系統的PHM進行了研究.Lee[6]等人研究了鋰離子電池的PHM.Fausto P.Garciaa[7]等人使用向量自回歸模型對鐵路重點機械裝置故障進行預測.
很多復雜系統由于內部結構復雜,無法使用數學或物理方法構建機理模型,或者機理模型參數非常復雜,無法基于機理模型進行預測,就出現了基于數據模型的預測方法.近年來隨著機器學習技術的不斷發展,越來越多的機器學習方法被運用到了基于數據模型的預測方法中,特別是機器學習領域中的深度學習,LSTM就是深度學習的一種模型.

圖1 模型總體架構Fig.1 Model architecture
Rui Zhao[8]等人使用SVM對風力發電機進行故障預測.Yuan Di[9]等人對電力電子系統進行故障預測.Xue Lige[10]等人使用神經網絡對道路機械故障進行預測.夏筱筠[11]等人研究了數控機床滾動軸承的故障預警系統.Li Rui[12]等人對民航飛機進行故障預測.王銳光[13]等人使用卷積神經網絡和隨機森林等方法對飛機故障進行建模.徐丙鳳[14]等人對飛機雷達控制系統和噴淋防火系統的故障進行事件特性分析.王博[15]等人對衛星定位系統軟件進行了建模.Hu Liqiang[16]等人使用專家系統對軌道電路進行故障預測.王燾等人針對云計算系統建立了故障預測系統[17],并對分布式軟件系統建立了故障模型[18].
本節主要介紹故障預測模型.其中3.1節介紹故障預測的系統架構;3.2節介紹參數選擇方法.表1是本文出現的參數表.
預測模型的總體架構如圖1所示.
輸入模塊將原始的故障時間序列劃分訓練集和測試集,將訓練集進行處理后作為LSTM的輸入;
LSTM訓練后根據測試集進行預測;
將預測的結果和實際的結果輸入到Adam優化器中,對LSTM的參數進行優化;
同時將每一步預測的結果組合起來,得到預測的序列,與實際的序列進行對比,評估模型的效果.
輸入模塊需要將原始序列進行標準化和分割,標準化采用z-score公式進行,原始故障時間序列為T={t1,t2,…,tm},標準化后的時間序列為F={F1,F2,…,Fm},其中
(1)
將標準化之后的序列進行分割,使其能夠作為LSTM的輸入
(X,Y)={(X1,Y1),(X2,Y2),…,(Xm-1,Ym-1)}
={(F1,0),(F2,F1),…,(Fm-1,Fm)}
將分割后的序列前n項作為訓練集,第n+1項作為測試集進行訓練和優化
(Xtrain,Ytrain)={(X1,Y1),(X2,Y2),…,(Xn,Yn)}
(Xtest,Ytest)={(Xn+1,Yn+1)}
再將序列前n+1項作為新的訓練集,第n+2項作為新的測試集,再對模型進行訓練和優化
(Xtrain,Ytrain)={(X1,Y1),(X2,X2),…,(Xn+1,Yn+1)}
(Xtest,Ytest)={(Xn+2,Yn+2)}
將每一步的輸出組合成標準化的預測序列
P={Pn,Pn+1,…,Pm-1}
Pi=LSTM(Xtrain,Ytrain,Xtest),n≤i≤m-1
再進行反標準化就得到預測的時間序列
(2)
將預測的序列與原始序列后m-n項對比,計算均方根誤差(Root Mean Squard Error,RMSE)作為評估模型的標準,均方根誤差是均方誤差(Mean Squared Error,MSE)的平方根.
(3)
(4)
(5)
(6)
LSTM層的結構如圖2所示.使用一個LSTM神經元,每次輸入一個數據,根據此時的輸出對模型參數進行調整,訓練集中所有數據都輸入一次為訓練一輪.

圖2 LSTM層的結構Fig.2 Structure of LSTM layer
LSTM神經元的結構如圖3所示.C為模型狀態,h為隱藏狀態,xn為第n個輸入,yn為第n個輸出,σ是sigmod激活函數,tanh是tanh激活函數.神經元使用MSE作為損失函數.

圖3 LSTM神經元結構Fig.3 Structure of LSTM neuron
優化器用于根據輸出與實際值的差距,更新模型的權重,常用的優化算法有隨機梯度下降(Stochastic Gradient Descent,SGD),批量梯度下降(Batch Gradient Descent,BGD),自適應梯度算法(Adaptive Gradien,Adagrad),RMSProp(Root Mean Square Propagation)等,本文使用適應性動量估計算法(Adaptive Moment Estimation,Adam)對模型權重進行更新.Adam算法是基于梯度的參數優化算法,結合了Adagrad和RMSProp的優點,并且占用的存儲空間較少.相比于其他優化方法,Adam算法表現更好.
使用LSTM進行建模和預測的算法如算法1所示.
算法1.LSTM建模及預測.
輸入:故障時間序列T,第一次建模訓練輪數ep,更新模型訓練輪數up,Adam學習率lr
輸出:預測序列及模型的RMSE
1.將T進行標準化,得到F
2.將F分割為訓練集(Xtrain,Ytrain)和測試集(Xtest,Ytest)
3.使用(Xtrain,Ytrain)、ep、lr建立模型LSTM
4.使用LSTM在測試集(Xtest,Ytest)上進行預測,預測結果是Pi
5.將Pi進行反標準化得到Qi,將Qi加入到預測序列Q中
6.將(Xtest,Ytest)加入到(Xtrain,Ytrain)中,F中后一組數據作為新的(Xtest,Ytest)
7.根據新的(Xtrain,Ytrain)、up、lr更新LSTM模型權值
8.使用新的模型在新的測試集上進行預測,預測結果是Pi+1
9.將Pi+1進行反標準化得到Qi+1,將Qi+1加入到預測序列Q中
10.重復6-9步,直到F中最后一組數據產生的預測結果進行了反標準化并加入到預測序列Q中
11.計算RMSE(Q,T)
在構建LSTM模型中,有3個參數ep、up、lr,分別是初次訓練的輪數,每次更新訓練的輪數,優化器的學習率.本文采用網格搜索的方法對這3個參數進行選擇,目標是使RMSE最小.
(7)
ep、up、lr這3個參數的范圍構成了三維搜索空間,每個參數根據固定的步長進行窮舉,每組參數分別建立模型并進行預測和評估.算法如算法2所示.
算法2.LSTM參數選擇.
輸入:故障時間序列T,第1次建模訓練輪數最大值和步長epmax,sep,更新模型訓練輪數最大值和步長upmax,sup,Adam學習率最大值和步長lrmax,slr
輸出:RMSE最小的模型對應的參數
1.設置各個參數最大值和步長epmax,sep,upmax,sup,lrmax,slr
2.根據最大值和步長遍歷ep所有可能的取值
3. 根據最大值和步長遍歷up所有可能的取值
4. 根據最大值和步長遍歷lr所有可能的取值
5. 根據3個參數建立LSTM模型并預測,進行評估
6.選擇RMSE最小的模型對應的參數進行輸出
首先介紹本文使用的故障信息數據集,再對比不同參數下LSTM模型的效果,最后再與ARIMA和SVR模型進行比較.
本文使用軌道交通通信集中告警系統的告警日志作為數據集,其中包含了地鐵站內的攝像頭在一段時間內的故障記錄,原始日志共約800萬條,其中故障信息約90條.
其中,橫軸為故障次數,縱軸為距離上次故障的時間.
表1展示了不同參數下LSTM模型的表現,在不同的參數下模型表現差距很大,但大多數模型的RMSE在40以下.
根據模型訓練的輪數不同,訓練時間差距也很大,但訓練輪數越多模型表現不一定越好.
由表格可知經過參數選擇后模型的精度明顯提高,訓練時間也保持在較低的水平.
ARIMA模型是時間序列預測的傳統模型,可以表示為ARIMA(p,d,q),p、d、q均為整數.其中p、q可以通過觀察自相關函數(Auto Correlation Function,ACF)和偏自相關函數(Partial Auto Correlation Function,PACF)確定.
序列的ACF圖和PACF圖如圖4所示.圖4中灰色長方形是置信區間,ACF曲線與置信區間上限交點的橫坐標為p值,PACF曲線與置信區間上限交點的橫坐標為q值.d為使序列平穩所需的差分次數,由于原始序列已經平穩,所以d為0.
SVR是一種可以用于時間序列預測的機器學習算法,其通過核函數將輸入向量映射到高維空間,在高維空間進行回歸運算,進而得到輸入和輸出的非線性映射關系.本文使用高斯徑向基函數(Radial Basis Function,RBF)作為核函數,使用網格搜索的方法確定參數,目標是使模型均方根誤差最小.

圖4 序列的自相關圖和偏自相關圖Fig.4 Autocorrelation graph and partial autocorrelation graph of sequence

表1 不同參數下模型的表現Table 1 Performance of the model under different parameters
高斯徑向基函數如公式(8)所示.
(8)
網格搜索算法如算法3所示.
算法3.SVR參數選擇.
輸入:故障時間序列T,核系數gamma最大值和步長gmax,sg,懲罰參數c最大值和步長cmax,sc
輸出:RMSE最小的模型對應的參數
1.設置各個參數最大值和步長gmax,sg,cmax,sc
2.根據最大值和步長遍歷gamma所有可能的取值
3. 根據最大值和步長遍歷c所有可能的取值
4. 根據3個參數建立SVR模型并預測,進行評估
5.選擇RMSE最小的模型對應的參數進行輸出

圖5 ARIMA、LSTM、SVR模型預測結果Fig.5 ARIMA、LSTM、SVRModel Prediction Results
ARIMA模型、LSTM模型、SVR模型對比如圖5所示.橫軸為故障的序號,縱軸為當次故障距離上次故障的時間間隔.

表2 3種模型的表現對比Table 2 Performance comparison of three models
3種模型的表現對比如表2所示.
本文提出了一種基于LSTM的故障預測方法,包括對原始數據的處理、分割、訓練模型、權重優化、參數優選、模型評估等內容.實驗結果表明:
1)與傳統的ARIMA和SVR序列預測方法相比,本文的方法以增加運行時間的代價提高了準確性,均方根誤差下降了89%,運行時間增加了60-300倍,存儲空間增加了約1倍.
2)LSTM算法對參數的變化較為敏感,選擇不同的參數可以使模型表現相差很大,學習率和訓練輪數過高或過低可能會導致過擬合或欠擬合,從而影響模型的表現.
3)本文使用了網格搜索的方法確定參數,選擇合適的參數可以使均方根誤差下降90%以上,根據需要還可以降低一半的運行時間,在可接受的時間內,比較準確的預測故障.
未來可以改善參數搜索的方法,更高效地找到表現更好的參數組合,也可以改變神經網絡的結構,嘗試多隱藏層的LSTM模型,還可以將LSTM與其他機器學習算法相結合,找到運行時間更短,預測結果更準確的模型.此外,還可以針對模型的結果,與設備信息、運行狀態等數據結合,分析設備的故障規律,從而減少故障的發生.