王亞朝 趙 偉 徐海洋 劉建業
全源導航系統中傳感器種類和數量繁多,在進行導航時要使用多個傳感器的數據來進行組合導航.如果傳感器發生故障,那么將會引起導航解算錯誤.因此,在進行導航解算前,必須先對傳感器進行故障檢測.
故障檢測方向一直有許多學者研究,主要分為兩種方法.一種方法是建立對應的數學模型,根據系統狀態量之間的關系來判斷傳感器是否發生故障.如張紹杰等[1]、Avram 等[2]、湯文濤等[3]、Sadeghzadeh-Nokhod beriz 等[4]都是先建立系統的數學模型,然后對系統的誤差特性進行分析,進而實現故障診斷.該方法比較復雜,需要了解系統的工作原理,但實際中許多系統難以抽象出數學模型,因此應用范圍比較小.
另一種方法是基于人工智能方法,其采用特征工程與機器學習方法或深度學習進行故障診斷.Yan 等[5]、Swischuk 等[6]和鄭曉飛等[7]先采用特征工程進行信息提取,然后采用機器學習方法進行識別;Jing 等[8]和Guo 等[9]采用深度學習的方法對原始數據進行故障檢測.一方面特征工程比較復雜;另一方面這些方法都側重于對單個傳感器數據的故障診斷,且難以準確識別出間歇性故障和漸變性故障.
針對以上研究中出現的問題,本文基于導航數據預處理平臺[10],提出了一種基于多階段注意力機制的編碼器-解碼器(Encoder-decoder)模型算法,該算法可以利用多類傳感器數據之間的關系進行傳感器的狀態互檢測,不僅可以準確檢測出故障傳感器,并且可以檢測出其故障類型.
全源導航系統中有多類型、多數量的傳感器,如光纖陀螺、加速度計、GPS 接收機、高度計、磁力羅盤、相機和激光雷達等,每個傳感器都會產生出大量的數據,如加速度、相對速度、絕對速度、角速率、位移、經緯度和高度等.
在載體坐標系下,載體的加速度、相對速度、絕對速度、位移、經度、緯度和高度存在著一定的關系.根據組合導航基本原理[11],多數導航系統都是以慣性導航傳感器為主,與其余類型傳感器組合進行導航.因此,當一個傳感器出現故障時,可以利用其余的傳感器數據來進行輔助判斷.本文的研究目的是根據多個傳感器數據的輸入進行故障互檢測,不僅要檢測出故障傳感器,也要識別出其故障類型.

對于目標傳感器數據的狀態,本文利用其余傳感器數據來判斷其數據是否出錯.即對于輸入x,要判斷這組輸入數據的狀態:

其中,f(·)是要學習的非線性關系.
傳感器數據是時間序列數據,在時間維度上存在相互依賴性,而循環神經網絡(Recurrent neural network,RNN)具有記憶性,可以高效地捕捉序列數據在時間上的相互依賴性,進而對序列數據的非線性特征進行學習,因此采用循環神經網絡來擬合其非線性關系.
循環神經網絡是一類以序列數據為輸入,在序列的演進方向進行遞歸且所有循環單元按鏈式連接的遞歸神經網絡.循環神經網絡具有記憶性,且可以參數共享和圖靈完備,因此能以很高的效率對序列的非線性特征進行學習.
傳統的循環神經網絡具有長期依賴問題,無法捕捉長時間跨度的非線性關系.長短期記憶網絡(Long-short-term memory,LSTM)[12]增加了3 個控制單元來對輸入數據進行非線性變換,解決了傳統循環神經網絡單元會出現的長期依賴問題.
針對本文的多傳感器故障診斷任務,其故障類型有間歇型、漸變型和階躍型三種故障類型.其中間歇型故障沒有明確的模式和頻率,隨機地出現和消失;漸變型故障對數據的影響隨著時間推移而增大,在故障早期難以發現.LSTM 單元雖然可以準確地捕捉傳感器數據在時間上的相互依賴性,從而判斷出數據狀態;但由于間歇型和漸變型故障的復雜性,僅僅使用LSTM 單元會造成一定程度的誤判.為了解決該問題,本文采用基于注意力機制[13]的編碼器-解碼器(Encoder-decoder)[14]結構.
一方面,采用注意力機制可以捕捉到輸入數據在空間維度和時間維度上的內在關系,從而對輸入進行重構,使模型可以更好地學習輸入數據之間的相互關系;另一方面,編碼器-解碼器結構中編碼器將輸入數據編碼成狀態向量,解碼器將狀態向量解碼后傳輸給多層感知機[15]進行分類處理,該結構在產生每一個輸出的時候,能夠充分利用輸入序列攜帶的信息,可以降低過擬合現象,提高模型的整體性能.
綜上分析,對于多傳感器故障診斷任務,本文采用基于注意力機制的編碼器-解碼器結構來實現,該結構以LSTM 為基本單元,采用多階段的注意力機制來構建數據之間的相互關系,其輸出經過多層感知機進行分類,進而判斷出傳感器的數據狀態.
對于多傳感器故障診斷任務,本文從傳感器的空間維度和時間維度來研究.在傳感器的空間維度上,每種類型的傳感器數據在同一時刻具有相互依賴性;在時間維度上,每一類的傳感器數據在不同時間段的數據對其余時間段的數據的狀態貢獻程度不一樣;因此可以從這兩個角度來判斷傳感器的數據狀態.本文設計的基于多階段注意力的編碼器-解碼器結構如圖1 所示.首先,將多傳感器的數據傳送給局部注意力和全局注意力機制,用于捕捉傳感器數據在空間和時間維度上的相互依賴性;然后將數據傳輸給帶有時間注意力機制的編碼器-解碼器模型,其中編碼器-解碼器用于對數據進行狀態編碼和狀態解碼,時間注意力機制是為了防止編碼器-解碼器模型的性能會隨著輸入數據的長度而急劇衰減;將解碼后的狀態信息傳輸給多層感知機進行分類,根據分類結果就可以確定出故障傳感器和故障類別.

圖1 多階段注意力結構圖Fig.1 Multi-stage attention structure
對于所有的傳感器數據,每個傳感器數據在t時刻的數據不僅與其在 [t,t+T] 時間段的數據具有相關性,且與其余傳感器數據在t時刻的數據存在空間相關性.例如t時刻的位移數據與其在[t,t+T]時間段內的數據具有相互依賴性,且與t時刻的速度和加速度數據具有一定的關系.根據該特性,本節從空間維度上出發,通過引入編碼器模塊中LSTM 單元對應輸入的前一個時刻的隱藏態ht-1和細胞態st-1,構建局部注意力機制來捕捉傳感器數據序列之間的空間相關性.局部注意力機制的結構如圖2 所示.

圖2 局部注意力機制Fig.2 Local attention mechanism
如圖2 所示,其中和的計算式為

其中,ve∈RT,we∈RT×2H,ue∈RT×T,be∈RT都是待訓練的參數,其中H表示LSTM 中的隱藏單元數,ve,we,ue表示對狀態量和輸入做線性變換,be表示載體對傳感器數據狀態造成的影響.表示第k個輸入特征在t時刻的特征權重,其經過softmax 函數歸一化后成為,即所有傳感器數據在同一時刻內的權重之和為1.因此,局部注意力機制構建出的新的輸入為

當對傳感器的數據狀態進行判斷時,不同時間段內的傳感器數據對整體的數據狀態貢獻是不一樣的.例如當判斷 [t+3T/4,t+T] 時間段內的數據是否正常時,[t+2T/4,t+3T/4] 時間段內的數據對其貢獻程度比較大,而 [t,t+T/4] 之內的數據狀態對其貢獻相對較小,即每個時間段內的數據對其余時間段內數據狀態的貢獻程不一樣.根據該特性,本節從時間維度出發,通過引入上一個時刻編碼器模塊中LSTM 單元對應輸入的的隱藏態ht-1和細胞態st-1來為每一時刻的輸入分配權重.全局注意力機制的結構如圖3 所示.
如圖3 所示,其中gt和βt的計算式為

圖3 全局注意力機制Fig.3 Global attention mechanism

其中,vg∈Rn,wg∈Rn×2H,ug∈R1+T,bg∈Rn×T都是待訓練的參數,其中vg,wg,ug表示對狀態量和輸入做線性變換,bg表示每類傳感器數據的誤差特性對數據狀態的影響.gt表示t時刻輸入數據的特征權重,即xt的特征權重,其經過softmax 函數歸一化后成為,即所有傳感器數據在T時刻內的權重之和為1.因此,全局注意力機制構建出的輸入為

對于編碼器模塊,本文將局部注意力機制和全局注意力機制構建出的輸入進行維度拼接后做為其新的輸入,即

為了判斷傳感器數據在T時間段內的數據狀態,本文采用解碼器模塊解碼來自編碼器模塊的編碼信息.由于編碼器-解碼器模型的性能會隨著輸入數據的長度而急劇衰減,因此需要在解碼器模型前引入時間注意力機制[16],使其可以動態地選擇編碼器模塊的相關輸出序列并賦予不同的權重,從而對其進行準確的解碼.本文的時間注意力機制如圖4 所示.

圖4 時間注意力機制Fig.4 Time attention mechanism
如圖4 所示,和的計算式為

其中,vd∈RH,wd∈RH×2H,ud∈RH×2T都是待訓練的參數,是解碼器模塊的t-1 時刻的隱藏態和細胞態,是編碼器模塊在t時刻的輸出,為t時刻第i個隱藏態其對應的權重.
解碼器模型的輸入為

當采用解碼器模型進行解碼后,將其輸出傳送給多層感知機,對其進行非線性變化,再采用softmax 函數進行分類,根據softmax 輸出則可以判斷出傳感器的數據狀態.
在導航系統中,無論載體是飛機、汽車或者輪船,其傳感器數據都具有空間相關性和時間相關性,只是載體運動規律不同,其故障診斷的方法幾乎都是一樣的.因此,為了驗證本文設計的基于多階段注意力機制的故障診斷算法,實驗數據采用對MIT 的開源車載數據[17]進行預處理之后的數據,即對其開源車載數據注入故障.該開源數據由一輛裝配多種導航傳感器的汽車在城市進行采集的,并且已經進行了傳感器的數據對準.本文選取其中四個傳感器的數據,即陀螺儀、加速度計、GPS 接收機和相機,其對應的導航量為三軸角速率、三軸加速度、經度、緯度、高度、速度和雙軸光流速度,共12 類傳感器數據,且每類傳感器的數據個數為221 280.
當傳感器發生故障時,一般是由于其溫度、工作環境和元器件老化等多種原因造成的,且該故障對傳感器數據造成的影響很難用具體的數學模型來描述.與工業系統相似,許多研究學者將其故障模型抽象和理想化為階躍響應、斜坡響應和加速度響應等數學模型.因此,對于本文研究的3 種傳感器故障,即間歇型故障、漸變型故障和階躍型故障,采用理想化的數學模型,如式(12)~(14)所示.

考慮到各種故障類型的特性,模型中參數的取值如下:其中 0<k1<k2<T,0<k3<T,k1和k3取每類傳感器數據在一個時間段T內的均值的0.1 倍,k2取0.1,t1取T/4,t2取T/2,t3取 3T/4.
為了模擬故障的傳感器數據,一方面需要對正常的傳感器進行數據預處理;另一方面需要列出所有可能的傳感器故障組合.首先,從同一時間段內傳感器故障數量的角度上將傳感器的故障類型分為兩大類,即單故障和多故障.單故障是指同一時間段內只有一個傳感器數據發生故障,多故障是指同一時間段內有多個傳感器數據發生故障.
對于單故障類型的數據,對每類傳感器數據在不同時刻分別添加這3 種故障,即在一個時間段內,只有一個傳感器發生故障,且為3 種故障中的一種,則預處理的傳感器數據如圖5 所示.
對于多故障數據,由于傳感器的故障類型有3 種,傳感器數據有12 種,若使多個傳感器發生不同類型的故障,對其進行一一列舉,則整體傳感器的數據狀態會達到上百種,會對訓練網絡帶來一定的難度,主要體現在實驗平臺的計算力上.因此,為了避免過多的傳感器數據狀態對訓練網絡帶來的困難,本文設多故障數據中傳感器的故障數量為3,其故障類型為間歇性、漸變性和階躍性故障,則多故障數據如圖6 所示.
如圖5 和圖6 所示,輸入x=(x1,x2,···,xn)T=(x1,x2,···,xT)∈Rn×T共有47 種數據狀態,即46種故障狀態和1 種正常狀態.本文根據時間窗口T的大小,將預處理的數據集按照8 :1 :1 分為訓練集、驗證集和測試集,每個數據集中每種狀態的數據個數應基本相等,其中訓練集和驗證集用來訓練和驗證模型,測試集用來評估最終的模型性能.

圖5 傳感器數據狀態圖Fig.5 Status of sensor data

圖6 傳感器數據狀態圖Fig.6 Status of sensor data
本文中有多個參數需要確定.對于數據集的時間窗口T,設其區間設置為T={64,96,128,144,168,196};對于編碼器和解碼器模塊中的LSTM 單元,設其數目相同且將其范圍設置為H={64,96,128,192,256};對于多層感知機,設其每層隱藏單元數相等且設范圍為h={3,5,7,9}.此外,采用多層LSTM 單元來增強模型的性能,設其層數為q.最后,經過網格搜索調參,本文選取T=144,H=128,h=7,q=2.
對模型進行訓練時,本文采用Adam 優化器,初始學習率為0.001,每訓練1 200 步學習率減小為原來的0.8,Dropout 取0.7,批大小選擇128,訓練20 個Epochs,采用交叉熵作為損失函數.
此處將本文設計出來的多階段注意力機制故障診斷算法稱為FDRNN (Fault diagnosis recurrent neural network).為了驗證多階段注意力機制對故障識別準確率的提升,本文對FDRNN 的子模型進行如下定義:
FDRNN-N1:表示無局部注意力機制的網絡;
FDRNN-N2:表示無全局注意力機制的網絡;
FDRNN-N3:表示無時間注意力機制的網絡.
對FDRNN 及三個子模型、深度置信網絡(Deep belief network,DBN)[7]和深度卷積神經網絡(Deep convolutional neural network,DCNN)[8]進行對比實驗,結果如表1 所示.

表1 不同模型的實驗對比Table 1 Comparison of experimental results of different models
如表1 所示,FDRNN 的準確率可以達到97.5%,召回率可以達到96.6%.當沒有局部注意力機制時,其準確率和召回率會出現下降,其主要原因是未將同一時刻不同傳感器數據之間的空間相關性結合起來,僅僅依靠單個傳感器的數據對其數據狀態做出判斷,因此準確率比較低.當沒有全局注意力機制時,其準確率和召回率也會降低,其原因在進行數據的狀態判斷時未考慮數據在時間維度上的前后相關性.而當沒有時間注意力時,其準確率和召回率也會出現較大程度的下降,關鍵原因是隨著時間步的增長,編碼器的特征向量的語義信息會降低且解碼器無法動態地從編碼器模塊中提取有用信息,從而會降低模型的性能.對于DBN 而言,其采用DBN 網絡對傳感器數據進行在線估計,根據估計值與真實值之間的殘差來判斷是否故障,其結果很大程度上受殘差閾值的影響,且對多傳感器故障的在線估計比較差,因此僅有80.5%的準確率和78.9%的召回率.對于DCNN而言,其準確率可達84.7%,召回率可以達到83.6%,其原因是卷積網絡中的卷積層和池化層一定程度上可以捕捉到多傳感器數據之間的空間相關性和時間相關性,但是其捕捉是基于隨機搜索,缺乏指導性,所以其故障識別率相對于有多重注意力機制的編碼器-解碼器模型較低.因此,針對多傳感器故障診斷任務,FDRNN可以準確地識別出故障傳感器數據和故障類型.
本文構建出的FDRNN 通過引入多階段注意力機制將多個傳感器數據在空間維度和時間維度之間的相互依賴性聯系起來,采用編碼器-解碼器結構對多傳感器數據進行編碼和解碼,再采用多層感知機進行分類.該結構不僅可以準確識別出故障傳感器,并且可以識別出故障類型.
本文提出的基于多階段注意力機制的編碼器-解碼器模型在空間維度和時間維度上采用編碼器來提取多傳感器數據之間的空間相關性和時間相關性,采用帶有時間注意力機制的解碼器來解碼來自編碼器的輸出,并采用多層感知機來判斷時間窗口內數據的狀態信息.該方法通過多階段注意力機制來捕捉多類傳感器數據之間的關系,采用多個傳感器數據來輔助判斷目標傳感器,形成多傳感器之間的故障互檢測,不僅可以準確地檢測出故障的傳感器數據,并且可以識別出其故障類型.對比實驗證明,每階段注意力機制都對判斷數據的狀態信息都具有非常重要的作用.因此,針對本文的多傳感器故障診斷任務,FDRNN 可以準確地進行故障檢測.