汪曉臣,段鵬宇,李 樊,孫同慶
1(中國(guó)鐵道科學(xué)研究院集團(tuán)有限公司 電子計(jì)算技術(shù)研究所,北京100081) 2(北京理工大學(xué) 計(jì)算機(jī)學(xué)院,北京100081)
物聯(lián)網(wǎng)是將各種傳感器接入互聯(lián)網(wǎng)而組成的一個(gè)網(wǎng)絡(luò),能夠?qū)崿F(xiàn)人、物的互聯(lián)互通.物聯(lián)網(wǎng)技術(shù)廣泛地應(yīng)用于智能交通、智能樓宇、智慧城市[1]等領(lǐng)域.其中攝像頭作為重要的圖像采集設(shè)備,為監(jiān)控、分析、識(shí)別等功能提供了大量的數(shù)據(jù).
攝像頭的故障預(yù)測(cè)與健康管理(Prognostics Health Management,PHM)是其重要的支撐技術(shù),如果能夠預(yù)測(cè)系統(tǒng)發(fā)生故障的時(shí)間,就能提前進(jìn)行相應(yīng)的準(zhǔn)備以避免故障或減少故障帶來(lái)的損失,具有很大的實(shí)用價(jià)值.
目前已有的故障預(yù)測(cè)方法有基于機(jī)理模型的預(yù)測(cè)方法和基于數(shù)據(jù)模型的預(yù)測(cè)方法.基于機(jī)理模型的預(yù)測(cè)方法是根據(jù)設(shè)備的內(nèi)部結(jié)構(gòu),使用數(shù)學(xué)或物理的公式、定理,對(duì)設(shè)備建立模型,從而對(duì)故障進(jìn)行預(yù)測(cè).在工業(yè)系統(tǒng)中,很多設(shè)備本身內(nèi)部結(jié)構(gòu)非常復(fù)雜,這使得針對(duì)整個(gè)系統(tǒng)或者某些單個(gè)部件建立數(shù)學(xué)或物理模型都十分困難,或者建立的機(jī)理模型參數(shù)非常復(fù)雜,使用機(jī)理模型進(jìn)行預(yù)測(cè)難以實(shí)現(xiàn).
基于數(shù)據(jù)模型的預(yù)測(cè)方法是根據(jù)設(shè)備的數(shù)據(jù),如環(huán)境數(shù)據(jù)、設(shè)備狀態(tài)數(shù)據(jù)、歷史故障數(shù)據(jù)等,使用預(yù)測(cè)算法對(duì)故障進(jìn)行預(yù)測(cè).隨著信息技術(shù)的發(fā)展,獲取設(shè)備數(shù)據(jù)越來(lái)越方便,所以基于數(shù)據(jù)模型的預(yù)測(cè)方法就成為了目前的研究熱點(diǎn).
時(shí)間序列是指按事件的發(fā)生時(shí)間先后順序排列成的序列,通常使用時(shí)間序列進(jìn)行預(yù)測(cè).
目前常用的序列預(yù)測(cè)算法傳統(tǒng)方法和深度學(xué)習(xí)方法,常用傳統(tǒng)方法有自回歸移動(dòng)平均(Autoregressive Integrated Moving Average,ARIMA)、支持向量回歸(Support Vector Regression,SVR)等.深度學(xué)習(xí)是指模型具有較深的層次,常用的深度學(xué)習(xí)方法有循環(huán)神經(jīng)網(wǎng)絡(luò)[2](Recurrent Neural Network,RNN)等.ARIMA算法模型簡(jiǎn)單,但只能處理穩(wěn)定數(shù)據(jù)或差分后穩(wěn)定的數(shù)據(jù),而且只能捕捉線性關(guān)系;SVR算法泛化能力強(qiáng),但困難在于核函數(shù)的選擇;LSTM是RNN的一種,增強(qiáng)了其處理歷史數(shù)據(jù)的能力,適合處理時(shí)間序列,但仍難以處理長(zhǎng)序列,而且時(shí)間復(fù)雜度高.
本文針對(duì)故障發(fā)生時(shí)間序列數(shù)據(jù),提出了一種基于LSTM神經(jīng)網(wǎng)絡(luò)[3]的故障預(yù)測(cè)方法,并使用網(wǎng)格搜索的方法對(duì)參數(shù)進(jìn)行選擇,使得預(yù)測(cè)結(jié)果的均方根誤差最小.使用軌道交通通信集中告警系統(tǒng)日志數(shù)據(jù)進(jìn)行實(shí)驗(yàn),并與ARIMA和SVR模型進(jìn)行對(duì)比.實(shí)驗(yàn)結(jié)果表明LSTM算法在故障預(yù)測(cè)中性能明顯高于ARIMA和SVR算法.
關(guān)于故障預(yù)測(cè)的研究主要集中于兩個(gè)方面:基于機(jī)理模型預(yù)測(cè)和基于數(shù)據(jù)模型預(yù)測(cè).
國(guó)內(nèi)外已經(jīng)有了很多對(duì)故障預(yù)測(cè)的研究,大多是通過對(duì)設(shè)備建立數(shù)學(xué)或物理學(xué)模型進(jìn)行預(yù)測(cè)的,比如機(jī)械設(shè)備或電池等.K.Xu[4]等人對(duì)汽車發(fā)動(dòng)機(jī)和柴油機(jī)渦輪增壓器建立了故障模型.Pecht[5]等人對(duì)電子系統(tǒng)的PHM進(jìn)行了研究.Lee[6]等人研究了鋰離子電池的PHM.Fausto P.Garciaa[7]等人使用向量自回歸模型對(duì)鐵路重點(diǎn)機(jī)械裝置故障進(jìn)行預(yù)測(cè).
很多復(fù)雜系統(tǒng)由于內(nèi)部結(jié)構(gòu)復(fù)雜,無(wú)法使用數(shù)學(xué)或物理方法構(gòu)建機(jī)理模型,或者機(jī)理模型參數(shù)非常復(fù)雜,無(wú)法基于機(jī)理模型進(jìn)行預(yù)測(cè),就出現(xiàn)了基于數(shù)據(jù)模型的預(yù)測(cè)方法.近年來(lái)隨著機(jī)器學(xué)習(xí)技術(shù)的不斷發(fā)展,越來(lái)越多的機(jī)器學(xué)習(xí)方法被運(yùn)用到了基于數(shù)據(jù)模型的預(yù)測(cè)方法中,特別是機(jī)器學(xué)習(xí)領(lǐng)域中的深度學(xué)習(xí),LSTM就是深度學(xué)習(xí)的一種模型.
圖1 模型總體架構(gòu)Fig.1 Model architecture
Rui Zhao[8]等人使用SVM對(duì)風(fēng)力發(fā)電機(jī)進(jìn)行故障預(yù)測(cè).Yuan Di[9]等人對(duì)電力電子系統(tǒng)進(jìn)行故障預(yù)測(cè).Xue Lige[10]等人使用神經(jīng)網(wǎng)絡(luò)對(duì)道路機(jī)械故障進(jìn)行預(yù)測(cè).夏筱筠[11]等人研究了數(shù)控機(jī)床滾動(dòng)軸承的故障預(yù)警系統(tǒng).Li Rui[12]等人對(duì)民航飛機(jī)進(jìn)行故障預(yù)測(cè).王銳光[13]等人使用卷積神經(jīng)網(wǎng)絡(luò)和隨機(jī)森林等方法對(duì)飛機(jī)故障進(jìn)行建模.徐丙鳳[14]等人對(duì)飛機(jī)雷達(dá)控制系統(tǒng)和噴淋防火系統(tǒng)的故障進(jìn)行事件特性分析.王博[15]等人對(duì)衛(wèi)星定位系統(tǒng)軟件進(jìn)行了建模.Hu Liqiang[16]等人使用專家系統(tǒng)對(duì)軌道電路進(jìn)行故障預(yù)測(cè).王燾等人針對(duì)云計(jì)算系統(tǒng)建立了故障預(yù)測(cè)系統(tǒng)[17],并對(duì)分布式軟件系統(tǒng)建立了故障模型[18].
本節(jié)主要介紹故障預(yù)測(cè)模型.其中3.1節(jié)介紹故障預(yù)測(cè)的系統(tǒng)架構(gòu);3.2節(jié)介紹參數(shù)選擇方法.表1是本文出現(xiàn)的參數(shù)表.
預(yù)測(cè)模型的總體架構(gòu)如圖1所示.
輸入模塊將原始的故障時(shí)間序列劃分訓(xùn)練集和測(cè)試集,將訓(xùn)練集進(jìn)行處理后作為L(zhǎng)STM的輸入;
LSTM訓(xùn)練后根據(jù)測(cè)試集進(jìn)行預(yù)測(cè);
將預(yù)測(cè)的結(jié)果和實(shí)際的結(jié)果輸入到Adam優(yōu)化器中,對(duì)LSTM的參數(shù)進(jìn)行優(yōu)化;
同時(shí)將每一步預(yù)測(cè)的結(jié)果組合起來(lái),得到預(yù)測(cè)的序列,與實(shí)際的序列進(jìn)行對(duì)比,評(píng)估模型的效果.
輸入模塊需要將原始序列進(jìn)行標(biāo)準(zhǔn)化和分割,標(biāo)準(zhǔn)化采用z-score公式進(jìn)行,原始故障時(shí)間序列為T={t1,t2,…,tm},標(biāo)準(zhǔn)化后的時(shí)間序列為F={F1,F2,…,Fm},其中
(1)
將標(biāo)準(zhǔn)化之后的序列進(jìn)行分割,使其能夠作為L(zhǎng)STM的輸入
(X,Y)={(X1,Y1),(X2,Y2),…,(Xm-1,Ym-1)}
={(F1,0),(F2,F1),…,(Fm-1,Fm)}
將分割后的序列前n項(xiàng)作為訓(xùn)練集,第n+1項(xiàng)作為測(cè)試集進(jìn)行訓(xùn)練和優(yōu)化
(Xtrain,Ytrain)={(X1,Y1),(X2,Y2),…,(Xn,Yn)}
(Xtest,Ytest)={(Xn+1,Yn+1)}
再將序列前n+1項(xiàng)作為新的訓(xùn)練集,第n+2項(xiàng)作為新的測(cè)試集,再對(duì)模型進(jìn)行訓(xùn)練和優(yōu)化
(Xtrain,Ytrain)={(X1,Y1),(X2,X2),…,(Xn+1,Yn+1)}
(Xtest,Ytest)={(Xn+2,Yn+2)}
將每一步的輸出組合成標(biāo)準(zhǔn)化的預(yù)測(cè)序列
P={Pn,Pn+1,…,Pm-1}
Pi=LSTM(Xtrain,Ytrain,Xtest),n≤i≤m-1
再進(jìn)行反標(biāo)準(zhǔn)化就得到預(yù)測(cè)的時(shí)間序列
(2)
將預(yù)測(cè)的序列與原始序列后m-n項(xiàng)對(duì)比,計(jì)算均方根誤差(Root Mean Squard Error,RMSE)作為評(píng)估模型的標(biāo)準(zhǔn),均方根誤差是均方誤差(Mean Squared Error,MSE)的平方根.
(3)
(4)
(5)
(6)
LSTM層的結(jié)構(gòu)如圖2所示.使用一個(gè)LSTM神經(jīng)元,每次輸入一個(gè)數(shù)據(jù),根據(jù)此時(shí)的輸出對(duì)模型參數(shù)進(jìn)行調(diào)整,訓(xùn)練集中所有數(shù)據(jù)都輸入一次為訓(xùn)練一輪.
圖2 LSTM層的結(jié)構(gòu)Fig.2 Structure of LSTM layer
LSTM神經(jīng)元的結(jié)構(gòu)如圖3所示.C為模型狀態(tài),h為隱藏狀態(tài),xn為第n個(gè)輸入,yn為第n個(gè)輸出,σ是sigmod激活函數(shù),tanh是tanh激活函數(shù).神經(jīng)元使用MSE作為損失函數(shù).
圖3 LSTM神經(jīng)元結(jié)構(gòu)Fig.3 Structure of LSTM neuron
優(yōu)化器用于根據(jù)輸出與實(shí)際值的差距,更新模型的權(quán)重,常用的優(yōu)化算法有隨機(jī)梯度下降(Stochastic Gradient Descent,SGD),批量梯度下降(Batch Gradient Descent,BGD),自適應(yīng)梯度算法(Adaptive Gradien,Adagrad),RMSProp(Root Mean Square Propagation)等,本文使用適應(yīng)性動(dòng)量估計(jì)算法(Adaptive Moment Estimation,Adam)對(duì)模型權(quán)重進(jìn)行更新.Adam算法是基于梯度的參數(shù)優(yōu)化算法,結(jié)合了Adagrad和RMSProp的優(yōu)點(diǎn),并且占用的存儲(chǔ)空間較少.相比于其他優(yōu)化方法,Adam算法表現(xiàn)更好.
使用LSTM進(jìn)行建模和預(yù)測(cè)的算法如算法1所示.
算法1.LSTM建模及預(yù)測(cè).
輸入:故障時(shí)間序列T,第一次建模訓(xùn)練輪數(shù)ep,更新模型訓(xùn)練輪數(shù)up,Adam學(xué)習(xí)率lr
輸出:預(yù)測(cè)序列及模型的RMSE
1.將T進(jìn)行標(biāo)準(zhǔn)化,得到F
2.將F分割為訓(xùn)練集(Xtrain,Ytrain)和測(cè)試集(Xtest,Ytest)
3.使用(Xtrain,Ytrain)、ep、lr建立模型LSTM
4.使用LSTM在測(cè)試集(Xtest,Ytest)上進(jìn)行預(yù)測(cè),預(yù)測(cè)結(jié)果是Pi
5.將Pi進(jìn)行反標(biāo)準(zhǔn)化得到Qi,將Qi加入到預(yù)測(cè)序列Q中
6.將(Xtest,Ytest)加入到(Xtrain,Ytrain)中,F(xiàn)中后一組數(shù)據(jù)作為新的(Xtest,Ytest)
7.根據(jù)新的(Xtrain,Ytrain)、up、lr更新LSTM模型權(quán)值
8.使用新的模型在新的測(cè)試集上進(jìn)行預(yù)測(cè),預(yù)測(cè)結(jié)果是Pi+1
9.將Pi+1進(jìn)行反標(biāo)準(zhǔn)化得到Qi+1,將Qi+1加入到預(yù)測(cè)序列Q中
10.重復(fù)6-9步,直到F中最后一組數(shù)據(jù)產(chǎn)生的預(yù)測(cè)結(jié)果進(jìn)行了反標(biāo)準(zhǔn)化并加入到預(yù)測(cè)序列Q中
11.計(jì)算RMSE(Q,T)
在構(gòu)建LSTM模型中,有3個(gè)參數(shù)ep、up、lr,分別是初次訓(xùn)練的輪數(shù),每次更新訓(xùn)練的輪數(shù),優(yōu)化器的學(xué)習(xí)率.本文采用網(wǎng)格搜索的方法對(duì)這3個(gè)參數(shù)進(jìn)行選擇,目標(biāo)是使RMSE最小.
(7)
ep、up、lr這3個(gè)參數(shù)的范圍構(gòu)成了三維搜索空間,每個(gè)參數(shù)根據(jù)固定的步長(zhǎng)進(jìn)行窮舉,每組參數(shù)分別建立模型并進(jìn)行預(yù)測(cè)和評(píng)估.算法如算法2所示.
算法2.LSTM參數(shù)選擇.
輸入:故障時(shí)間序列T,第1次建模訓(xùn)練輪數(shù)最大值和步長(zhǎng)epmax,sep,更新模型訓(xùn)練輪數(shù)最大值和步長(zhǎng)upmax,sup,Adam學(xué)習(xí)率最大值和步長(zhǎng)lrmax,slr
輸出:RMSE最小的模型對(duì)應(yīng)的參數(shù)
1.設(shè)置各個(gè)參數(shù)最大值和步長(zhǎng)epmax,sep,upmax,sup,lrmax,slr
2.根據(jù)最大值和步長(zhǎng)遍歷ep所有可能的取值
3. 根據(jù)最大值和步長(zhǎng)遍歷up所有可能的取值
4. 根據(jù)最大值和步長(zhǎng)遍歷lr所有可能的取值
5. 根據(jù)3個(gè)參數(shù)建立LSTM模型并預(yù)測(cè),進(jìn)行評(píng)估
6.選擇RMSE最小的模型對(duì)應(yīng)的參數(shù)進(jìn)行輸出
首先介紹本文使用的故障信息數(shù)據(jù)集,再對(duì)比不同參數(shù)下LSTM模型的效果,最后再與ARIMA和SVR模型進(jìn)行比較.
本文使用軌道交通通信集中告警系統(tǒng)的告警日志作為數(shù)據(jù)集,其中包含了地鐵站內(nèi)的攝像頭在一段時(shí)間內(nèi)的故障記錄,原始日志共約800萬(wàn)條,其中故障信息約90條.
其中,橫軸為故障次數(shù),縱軸為距離上次故障的時(shí)間.
表1展示了不同參數(shù)下LSTM模型的表現(xiàn),在不同的參數(shù)下模型表現(xiàn)差距很大,但大多數(shù)模型的RMSE在40以下.
根據(jù)模型訓(xùn)練的輪數(shù)不同,訓(xùn)練時(shí)間差距也很大,但訓(xùn)練輪數(shù)越多模型表現(xiàn)不一定越好.
由表格可知經(jīng)過參數(shù)選擇后模型的精度明顯提高,訓(xùn)練時(shí)間也保持在較低的水平.
ARIMA模型是時(shí)間序列預(yù)測(cè)的傳統(tǒng)模型,可以表示為ARIMA(p,d,q),p、d、q均為整數(shù).其中p、q可以通過觀察自相關(guān)函數(shù)(Auto Correlation Function,ACF)和偏自相關(guān)函數(shù)(Partial Auto Correlation Function,PACF)確定.
序列的ACF圖和PACF圖如圖4所示.圖4中灰色長(zhǎng)方形是置信區(qū)間,ACF曲線與置信區(qū)間上限交點(diǎn)的橫坐標(biāo)為p值,PACF曲線與置信區(qū)間上限交點(diǎn)的橫坐標(biāo)為q值.d為使序列平穩(wěn)所需的差分次數(shù),由于原始序列已經(jīng)平穩(wěn),所以d為0.
SVR是一種可以用于時(shí)間序列預(yù)測(cè)的機(jī)器學(xué)習(xí)算法,其通過核函數(shù)將輸入向量映射到高維空間,在高維空間進(jìn)行回歸運(yùn)算,進(jìn)而得到輸入和輸出的非線性映射關(guān)系.本文使用高斯徑向基函數(shù)(Radial Basis Function,RBF)作為核函數(shù),使用網(wǎng)格搜索的方法確定參數(shù),目標(biāo)是使模型均方根誤差最小.
圖4 序列的自相關(guān)圖和偏自相關(guān)圖Fig.4 Autocorrelation graph and partial autocorrelation graph of sequence
表1 不同參數(shù)下模型的表現(xiàn)Table 1 Performance of the model under different parameters
高斯徑向基函數(shù)如公式(8)所示.
(8)
網(wǎng)格搜索算法如算法3所示.
算法3.SVR參數(shù)選擇.
輸入:故障時(shí)間序列T,核系數(shù)gamma最大值和步長(zhǎng)gmax,sg,懲罰參數(shù)c最大值和步長(zhǎng)cmax,sc
輸出:RMSE最小的模型對(duì)應(yīng)的參數(shù)
1.設(shè)置各個(gè)參數(shù)最大值和步長(zhǎng)gmax,sg,cmax,sc
2.根據(jù)最大值和步長(zhǎng)遍歷gamma所有可能的取值
3. 根據(jù)最大值和步長(zhǎng)遍歷c所有可能的取值
4. 根據(jù)3個(gè)參數(shù)建立SVR模型并預(yù)測(cè),進(jìn)行評(píng)估
5.選擇RMSE最小的模型對(duì)應(yīng)的參數(shù)進(jìn)行輸出
圖5 ARIMA、LSTM、SVR模型預(yù)測(cè)結(jié)果Fig.5 ARIMA、LSTM、SVRModel Prediction Results
ARIMA模型、LSTM模型、SVR模型對(duì)比如圖5所示.橫軸為故障的序號(hào),縱軸為當(dāng)次故障距離上次故障的時(shí)間間隔.
表2 3種模型的表現(xiàn)對(duì)比Table 2 Performance comparison of three models
3種模型的表現(xiàn)對(duì)比如表2所示.
本文提出了一種基于LSTM的故障預(yù)測(cè)方法,包括對(duì)原始數(shù)據(jù)的處理、分割、訓(xùn)練模型、權(quán)重優(yōu)化、參數(shù)優(yōu)選、模型評(píng)估等內(nèi)容.實(shí)驗(yàn)結(jié)果表明:
1)與傳統(tǒng)的ARIMA和SVR序列預(yù)測(cè)方法相比,本文的方法以增加運(yùn)行時(shí)間的代價(jià)提高了準(zhǔn)確性,均方根誤差下降了89%,運(yùn)行時(shí)間增加了60-300倍,存儲(chǔ)空間增加了約1倍.
2)LSTM算法對(duì)參數(shù)的變化較為敏感,選擇不同的參數(shù)可以使模型表現(xiàn)相差很大,學(xué)習(xí)率和訓(xùn)練輪數(shù)過高或過低可能會(huì)導(dǎo)致過擬合或欠擬合,從而影響模型的表現(xiàn).
3)本文使用了網(wǎng)格搜索的方法確定參數(shù),選擇合適的參數(shù)可以使均方根誤差下降90%以上,根據(jù)需要還可以降低一半的運(yùn)行時(shí)間,在可接受的時(shí)間內(nèi),比較準(zhǔn)確的預(yù)測(cè)故障.
未來(lái)可以改善參數(shù)搜索的方法,更高效地找到表現(xiàn)更好的參數(shù)組合,也可以改變神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),嘗試多隱藏層的LSTM模型,還可以將LSTM與其他機(jī)器學(xué)習(xí)算法相結(jié)合,找到運(yùn)行時(shí)間更短,預(yù)測(cè)結(jié)果更準(zhǔn)確的模型.此外,還可以針對(duì)模型的結(jié)果,與設(shè)備信息、運(yùn)行狀態(tài)等數(shù)據(jù)結(jié)合,分析設(shè)備的故障規(guī)律,從而減少故障的發(fā)生.