王亞朝 趙 偉 徐海洋 劉建業(yè)
全源導航系統(tǒng)中傳感器種類和數(shù)量繁多,在進行導航時要使用多個傳感器的數(shù)據(jù)來進行組合導航.如果傳感器發(fā)生故障,那么將會引起導航解算錯誤.因此,在進行導航解算前,必須先對傳感器進行故障檢測.
故障檢測方向一直有許多學者研究,主要分為兩種方法.一種方法是建立對應的數(shù)學模型,根據(jù)系統(tǒng)狀態(tài)量之間的關系來判斷傳感器是否發(fā)生故障.如張紹杰等[1]、Avram 等[2]、湯文濤等[3]、Sadeghzadeh-Nokhod beriz 等[4]都是先建立系統(tǒng)的數(shù)學模型,然后對系統(tǒng)的誤差特性進行分析,進而實現(xiàn)故障診斷.該方法比較復雜,需要了解系統(tǒng)的工作原理,但實際中許多系統(tǒng)難以抽象出數(shù)學模型,因此應用范圍比較小.
另一種方法是基于人工智能方法,其采用特征工程與機器學習方法或深度學習進行故障診斷.Yan 等[5]、Swischuk 等[6]和鄭曉飛等[7]先采用特征工程進行信息提取,然后采用機器學習方法進行識別;Jing 等[8]和Guo 等[9]采用深度學習的方法對原始數(shù)據(jù)進行故障檢測.一方面特征工程比較復雜;另一方面這些方法都側(cè)重于對單個傳感器數(shù)據(jù)的故障診斷,且難以準確識別出間歇性故障和漸變性故障.
針對以上研究中出現(xiàn)的問題,本文基于導航數(shù)據(jù)預處理平臺[10],提出了一種基于多階段注意力機制的編碼器-解碼器(Encoder-decoder)模型算法,該算法可以利用多類傳感器數(shù)據(jù)之間的關系進行傳感器的狀態(tài)互檢測,不僅可以準確檢測出故障傳感器,并且可以檢測出其故障類型.
全源導航系統(tǒng)中有多類型、多數(shù)量的傳感器,如光纖陀螺、加速度計、GPS 接收機、高度計、磁力羅盤、相機和激光雷達等,每個傳感器都會產(chǎn)生出大量的數(shù)據(jù),如加速度、相對速度、絕對速度、角速率、位移、經(jīng)緯度和高度等.
在載體坐標系下,載體的加速度、相對速度、絕對速度、位移、經(jīng)度、緯度和高度存在著一定的關系.根據(jù)組合導航基本原理[11],多數(shù)導航系統(tǒng)都是以慣性導航傳感器為主,與其余類型傳感器組合進行導航.因此,當一個傳感器出現(xiàn)故障時,可以利用其余的傳感器數(shù)據(jù)來進行輔助判斷.本文的研究目的是根據(jù)多個傳感器數(shù)據(jù)的輸入進行故障互檢測,不僅要檢測出故障傳感器,也要識別出其故障類型.
對于目標傳感器數(shù)據(jù)的狀態(tài),本文利用其余傳感器數(shù)據(jù)來判斷其數(shù)據(jù)是否出錯.即對于輸入x,要判斷這組輸入數(shù)據(jù)的狀態(tài):
其中,f(·)是要學習的非線性關系.
傳感器數(shù)據(jù)是時間序列數(shù)據(jù),在時間維度上存在相互依賴性,而循環(huán)神經(jīng)網(wǎng)絡(Recurrent neural network,RNN)具有記憶性,可以高效地捕捉序列數(shù)據(jù)在時間上的相互依賴性,進而對序列數(shù)據(jù)的非線性特征進行學習,因此采用循環(huán)神經(jīng)網(wǎng)絡來擬合其非線性關系.
循環(huán)神經(jīng)網(wǎng)絡是一類以序列數(shù)據(jù)為輸入,在序列的演進方向進行遞歸且所有循環(huán)單元按鏈式連接的遞歸神經(jīng)網(wǎng)絡.循環(huán)神經(jīng)網(wǎng)絡具有記憶性,且可以參數(shù)共享和圖靈完備,因此能以很高的效率對序列的非線性特征進行學習.
傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡具有長期依賴問題,無法捕捉長時間跨度的非線性關系.長短期記憶網(wǎng)絡(Long-short-term memory,LSTM)[12]增加了3 個控制單元來對輸入數(shù)據(jù)進行非線性變換,解決了傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡單元會出現(xiàn)的長期依賴問題.
針對本文的多傳感器故障診斷任務,其故障類型有間歇型、漸變型和階躍型三種故障類型.其中間歇型故障沒有明確的模式和頻率,隨機地出現(xiàn)和消失;漸變型故障對數(shù)據(jù)的影響隨著時間推移而增大,在故障早期難以發(fā)現(xiàn).LSTM 單元雖然可以準確地捕捉傳感器數(shù)據(jù)在時間上的相互依賴性,從而判斷出數(shù)據(jù)狀態(tài);但由于間歇型和漸變型故障的復雜性,僅僅使用LSTM 單元會造成一定程度的誤判.為了解決該問題,本文采用基于注意力機制[13]的編碼器-解碼器(Encoder-decoder)[14]結(jié)構(gòu).
一方面,采用注意力機制可以捕捉到輸入數(shù)據(jù)在空間維度和時間維度上的內(nèi)在關系,從而對輸入進行重構(gòu),使模型可以更好地學習輸入數(shù)據(jù)之間的相互關系;另一方面,編碼器-解碼器結(jié)構(gòu)中編碼器將輸入數(shù)據(jù)編碼成狀態(tài)向量,解碼器將狀態(tài)向量解碼后傳輸給多層感知機[15]進行分類處理,該結(jié)構(gòu)在產(chǎn)生每一個輸出的時候,能夠充分利用輸入序列攜帶的信息,可以降低過擬合現(xiàn)象,提高模型的整體性能.
綜上分析,對于多傳感器故障診斷任務,本文采用基于注意力機制的編碼器-解碼器結(jié)構(gòu)來實現(xiàn),該結(jié)構(gòu)以LSTM 為基本單元,采用多階段的注意力機制來構(gòu)建數(shù)據(jù)之間的相互關系,其輸出經(jīng)過多層感知機進行分類,進而判斷出傳感器的數(shù)據(jù)狀態(tài).
對于多傳感器故障診斷任務,本文從傳感器的空間維度和時間維度來研究.在傳感器的空間維度上,每種類型的傳感器數(shù)據(jù)在同一時刻具有相互依賴性;在時間維度上,每一類的傳感器數(shù)據(jù)在不同時間段的數(shù)據(jù)對其余時間段的數(shù)據(jù)的狀態(tài)貢獻程度不一樣;因此可以從這兩個角度來判斷傳感器的數(shù)據(jù)狀態(tài).本文設計的基于多階段注意力的編碼器-解碼器結(jié)構(gòu)如圖1 所示.首先,將多傳感器的數(shù)據(jù)傳送給局部注意力和全局注意力機制,用于捕捉傳感器數(shù)據(jù)在空間和時間維度上的相互依賴性;然后將數(shù)據(jù)傳輸給帶有時間注意力機制的編碼器-解碼器模型,其中編碼器-解碼器用于對數(shù)據(jù)進行狀態(tài)編碼和狀態(tài)解碼,時間注意力機制是為了防止編碼器-解碼器模型的性能會隨著輸入數(shù)據(jù)的長度而急劇衰減;將解碼后的狀態(tài)信息傳輸給多層感知機進行分類,根據(jù)分類結(jié)果就可以確定出故障傳感器和故障類別.
圖1 多階段注意力結(jié)構(gòu)圖Fig.1 Multi-stage attention structure
對于所有的傳感器數(shù)據(jù),每個傳感器數(shù)據(jù)在t時刻的數(shù)據(jù)不僅與其在 [t,t+T] 時間段的數(shù)據(jù)具有相關性,且與其余傳感器數(shù)據(jù)在t時刻的數(shù)據(jù)存在空間相關性.例如t時刻的位移數(shù)據(jù)與其在[t,t+T]時間段內(nèi)的數(shù)據(jù)具有相互依賴性,且與t時刻的速度和加速度數(shù)據(jù)具有一定的關系.根據(jù)該特性,本節(jié)從空間維度上出發(fā),通過引入編碼器模塊中LSTM 單元對應輸入的前一個時刻的隱藏態(tài)ht-1和細胞態(tài)st-1,構(gòu)建局部注意力機制來捕捉傳感器數(shù)據(jù)序列之間的空間相關性.局部注意力機制的結(jié)構(gòu)如圖2 所示.
圖2 局部注意力機制Fig.2 Local attention mechanism
如圖2 所示,其中和的計算式為
其中,ve∈RT,we∈RT×2H,ue∈RT×T,be∈RT都是待訓練的參數(shù),其中H表示LSTM 中的隱藏單元數(shù),ve,we,ue表示對狀態(tài)量和輸入做線性變換,be表示載體對傳感器數(shù)據(jù)狀態(tài)造成的影響.表示第k個輸入特征在t時刻的特征權重,其經(jīng)過softmax 函數(shù)歸一化后成為,即所有傳感器數(shù)據(jù)在同一時刻內(nèi)的權重之和為1.因此,局部注意力機制構(gòu)建出的新的輸入為
當對傳感器的數(shù)據(jù)狀態(tài)進行判斷時,不同時間段內(nèi)的傳感器數(shù)據(jù)對整體的數(shù)據(jù)狀態(tài)貢獻是不一樣的.例如當判斷 [t+3T/4,t+T] 時間段內(nèi)的數(shù)據(jù)是否正常時,[t+2T/4,t+3T/4] 時間段內(nèi)的數(shù)據(jù)對其貢獻程度比較大,而 [t,t+T/4] 之內(nèi)的數(shù)據(jù)狀態(tài)對其貢獻相對較小,即每個時間段內(nèi)的數(shù)據(jù)對其余時間段內(nèi)數(shù)據(jù)狀態(tài)的貢獻程不一樣.根據(jù)該特性,本節(jié)從時間維度出發(fā),通過引入上一個時刻編碼器模塊中LSTM 單元對應輸入的的隱藏態(tài)ht-1和細胞態(tài)st-1來為每一時刻的輸入分配權重.全局注意力機制的結(jié)構(gòu)如圖3 所示.
如圖3 所示,其中gt和βt的計算式為
圖3 全局注意力機制Fig.3 Global attention mechanism
其中,vg∈Rn,wg∈Rn×2H,ug∈R1+T,bg∈Rn×T都是待訓練的參數(shù),其中vg,wg,ug表示對狀態(tài)量和輸入做線性變換,bg表示每類傳感器數(shù)據(jù)的誤差特性對數(shù)據(jù)狀態(tài)的影響.gt表示t時刻輸入數(shù)據(jù)的特征權重,即xt的特征權重,其經(jīng)過softmax 函數(shù)歸一化后成為,即所有傳感器數(shù)據(jù)在T時刻內(nèi)的權重之和為1.因此,全局注意力機制構(gòu)建出的輸入為
對于編碼器模塊,本文將局部注意力機制和全局注意力機制構(gòu)建出的輸入進行維度拼接后做為其新的輸入,即
為了判斷傳感器數(shù)據(jù)在T時間段內(nèi)的數(shù)據(jù)狀態(tài),本文采用解碼器模塊解碼來自編碼器模塊的編碼信息.由于編碼器-解碼器模型的性能會隨著輸入數(shù)據(jù)的長度而急劇衰減,因此需要在解碼器模型前引入時間注意力機制[16],使其可以動態(tài)地選擇編碼器模塊的相關輸出序列并賦予不同的權重,從而對其進行準確的解碼.本文的時間注意力機制如圖4 所示.
圖4 時間注意力機制Fig.4 Time attention mechanism
如圖4 所示,和的計算式為
其中,vd∈RH,wd∈RH×2H,ud∈RH×2T都是待訓練的參數(shù),是解碼器模塊的t-1 時刻的隱藏態(tài)和細胞態(tài),是編碼器模塊在t時刻的輸出,為t時刻第i個隱藏態(tài)其對應的權重.
解碼器模型的輸入為
當采用解碼器模型進行解碼后,將其輸出傳送給多層感知機,對其進行非線性變化,再采用softmax 函數(shù)進行分類,根據(jù)softmax 輸出則可以判斷出傳感器的數(shù)據(jù)狀態(tài).
在導航系統(tǒng)中,無論載體是飛機、汽車或者輪船,其傳感器數(shù)據(jù)都具有空間相關性和時間相關性,只是載體運動規(guī)律不同,其故障診斷的方法幾乎都是一樣的.因此,為了驗證本文設計的基于多階段注意力機制的故障診斷算法,實驗數(shù)據(jù)采用對MIT 的開源車載數(shù)據(jù)[17]進行預處理之后的數(shù)據(jù),即對其開源車載數(shù)據(jù)注入故障.該開源數(shù)據(jù)由一輛裝配多種導航傳感器的汽車在城市進行采集的,并且已經(jīng)進行了傳感器的數(shù)據(jù)對準.本文選取其中四個傳感器的數(shù)據(jù),即陀螺儀、加速度計、GPS 接收機和相機,其對應的導航量為三軸角速率、三軸加速度、經(jīng)度、緯度、高度、速度和雙軸光流速度,共12 類傳感器數(shù)據(jù),且每類傳感器的數(shù)據(jù)個數(shù)為221 280.
當傳感器發(fā)生故障時,一般是由于其溫度、工作環(huán)境和元器件老化等多種原因造成的,且該故障對傳感器數(shù)據(jù)造成的影響很難用具體的數(shù)學模型來描述.與工業(yè)系統(tǒng)相似,許多研究學者將其故障模型抽象和理想化為階躍響應、斜坡響應和加速度響應等數(shù)學模型.因此,對于本文研究的3 種傳感器故障,即間歇型故障、漸變型故障和階躍型故障,采用理想化的數(shù)學模型,如式(12)~(14)所示.
考慮到各種故障類型的特性,模型中參數(shù)的取值如下:其中 0<k1<k2<T,0<k3<T,k1和k3取每類傳感器數(shù)據(jù)在一個時間段T內(nèi)的均值的0.1 倍,k2取0.1,t1取T/4,t2取T/2,t3取 3T/4.
為了模擬故障的傳感器數(shù)據(jù),一方面需要對正常的傳感器進行數(shù)據(jù)預處理;另一方面需要列出所有可能的傳感器故障組合.首先,從同一時間段內(nèi)傳感器故障數(shù)量的角度上將傳感器的故障類型分為兩大類,即單故障和多故障.單故障是指同一時間段內(nèi)只有一個傳感器數(shù)據(jù)發(fā)生故障,多故障是指同一時間段內(nèi)有多個傳感器數(shù)據(jù)發(fā)生故障.
對于單故障類型的數(shù)據(jù),對每類傳感器數(shù)據(jù)在不同時刻分別添加這3 種故障,即在一個時間段內(nèi),只有一個傳感器發(fā)生故障,且為3 種故障中的一種,則預處理的傳感器數(shù)據(jù)如圖5 所示.
對于多故障數(shù)據(jù),由于傳感器的故障類型有3 種,傳感器數(shù)據(jù)有12 種,若使多個傳感器發(fā)生不同類型的故障,對其進行一一列舉,則整體傳感器的數(shù)據(jù)狀態(tài)會達到上百種,會對訓練網(wǎng)絡帶來一定的難度,主要體現(xiàn)在實驗平臺的計算力上.因此,為了避免過多的傳感器數(shù)據(jù)狀態(tài)對訓練網(wǎng)絡帶來的困難,本文設多故障數(shù)據(jù)中傳感器的故障數(shù)量為3,其故障類型為間歇性、漸變性和階躍性故障,則多故障數(shù)據(jù)如圖6 所示.
如圖5 和圖6 所示,輸入x=(x1,x2,···,xn)T=(x1,x2,···,xT)∈Rn×T共有47 種數(shù)據(jù)狀態(tài),即46種故障狀態(tài)和1 種正常狀態(tài).本文根據(jù)時間窗口T的大小,將預處理的數(shù)據(jù)集按照8 :1 :1 分為訓練集、驗證集和測試集,每個數(shù)據(jù)集中每種狀態(tài)的數(shù)據(jù)個數(shù)應基本相等,其中訓練集和驗證集用來訓練和驗證模型,測試集用來評估最終的模型性能.
圖5 傳感器數(shù)據(jù)狀態(tài)圖Fig.5 Status of sensor data
圖6 傳感器數(shù)據(jù)狀態(tài)圖Fig.6 Status of sensor data
本文中有多個參數(shù)需要確定.對于數(shù)據(jù)集的時間窗口T,設其區(qū)間設置為T={64,96,128,144,168,196};對于編碼器和解碼器模塊中的LSTM 單元,設其數(shù)目相同且將其范圍設置為H={64,96,128,192,256};對于多層感知機,設其每層隱藏單元數(shù)相等且設范圍為h={3,5,7,9}.此外,采用多層LSTM 單元來增強模型的性能,設其層數(shù)為q.最后,經(jīng)過網(wǎng)格搜索調(diào)參,本文選取T=144,H=128,h=7,q=2.
對模型進行訓練時,本文采用Adam 優(yōu)化器,初始學習率為0.001,每訓練1 200 步學習率減小為原來的0.8,Dropout 取0.7,批大小選擇128,訓練20 個Epochs,采用交叉熵作為損失函數(shù).
此處將本文設計出來的多階段注意力機制故障診斷算法稱為FDRNN (Fault diagnosis recurrent neural network).為了驗證多階段注意力機制對故障識別準確率的提升,本文對FDRNN 的子模型進行如下定義:
FDRNN-N1:表示無局部注意力機制的網(wǎng)絡;
FDRNN-N2:表示無全局注意力機制的網(wǎng)絡;
FDRNN-N3:表示無時間注意力機制的網(wǎng)絡.
對FDRNN 及三個子模型、深度置信網(wǎng)絡(Deep belief network,DBN)[7]和深度卷積神經(jīng)網(wǎng)絡(Deep convolutional neural network,DCNN)[8]進行對比實驗,結(jié)果如表1 所示.
表1 不同模型的實驗對比Table 1 Comparison of experimental results of different models
如表1 所示,FDRNN 的準確率可以達到97.5%,召回率可以達到96.6%.當沒有局部注意力機制時,其準確率和召回率會出現(xiàn)下降,其主要原因是未將同一時刻不同傳感器數(shù)據(jù)之間的空間相關性結(jié)合起來,僅僅依靠單個傳感器的數(shù)據(jù)對其數(shù)據(jù)狀態(tài)做出判斷,因此準確率比較低.當沒有全局注意力機制時,其準確率和召回率也會降低,其原因在進行數(shù)據(jù)的狀態(tài)判斷時未考慮數(shù)據(jù)在時間維度上的前后相關性.而當沒有時間注意力時,其準確率和召回率也會出現(xiàn)較大程度的下降,關鍵原因是隨著時間步的增長,編碼器的特征向量的語義信息會降低且解碼器無法動態(tài)地從編碼器模塊中提取有用信息,從而會降低模型的性能.對于DBN 而言,其采用DBN 網(wǎng)絡對傳感器數(shù)據(jù)進行在線估計,根據(jù)估計值與真實值之間的殘差來判斷是否故障,其結(jié)果很大程度上受殘差閾值的影響,且對多傳感器故障的在線估計比較差,因此僅有80.5%的準確率和78.9%的召回率.對于DCNN而言,其準確率可達84.7%,召回率可以達到83.6%,其原因是卷積網(wǎng)絡中的卷積層和池化層一定程度上可以捕捉到多傳感器數(shù)據(jù)之間的空間相關性和時間相關性,但是其捕捉是基于隨機搜索,缺乏指導性,所以其故障識別率相對于有多重注意力機制的編碼器-解碼器模型較低.因此,針對多傳感器故障診斷任務,FDRNN可以準確地識別出故障傳感器數(shù)據(jù)和故障類型.
本文構(gòu)建出的FDRNN 通過引入多階段注意力機制將多個傳感器數(shù)據(jù)在空間維度和時間維度之間的相互依賴性聯(lián)系起來,采用編碼器-解碼器結(jié)構(gòu)對多傳感器數(shù)據(jù)進行編碼和解碼,再采用多層感知機進行分類.該結(jié)構(gòu)不僅可以準確識別出故障傳感器,并且可以識別出故障類型.
本文提出的基于多階段注意力機制的編碼器-解碼器模型在空間維度和時間維度上采用編碼器來提取多傳感器數(shù)據(jù)之間的空間相關性和時間相關性,采用帶有時間注意力機制的解碼器來解碼來自編碼器的輸出,并采用多層感知機來判斷時間窗口內(nèi)數(shù)據(jù)的狀態(tài)信息.該方法通過多階段注意力機制來捕捉多類傳感器數(shù)據(jù)之間的關系,采用多個傳感器數(shù)據(jù)來輔助判斷目標傳感器,形成多傳感器之間的故障互檢測,不僅可以準確地檢測出故障的傳感器數(shù)據(jù),并且可以識別出其故障類型.對比實驗證明,每階段注意力機制都對判斷數(shù)據(jù)的狀態(tài)信息都具有非常重要的作用.因此,針對本文的多傳感器故障診斷任務,FDRNN 可以準確地進行故障檢測.