姚艷玲,袁化成,陸 超,唐曉瀾,黃愛華
(1.南京航空航天大學 能源與動力學院,江蘇 南京 210016;2.中國航發四川燃氣渦輪研究院,四川 綿陽 621000;3.西南石油大學 計算機科學學院,四川 成都 610500;4.成都航空職業技術學院,四川 成都 610000)
航空發動機是飛機的主要動力裝置,由于其長期在高溫、高壓、高速、強振動等異常惡劣的環境下工作,所以存在較大的風險,易發生機械故障,甚至造成系統崩潰。航空發動機喘振就是影響飛機性能和安全的主要故障現象之一,不僅影響發動機工作狀態,嚴重時還會造成重大安全事故,引起人員和財產的重大損失。因此如果能夠對航空發動機喘振進行及時準確的診斷并采取相應消喘措施,能夠避免發動機因喘振故障而導致嚴重事故的發生。
所涉及的航空發動機傳感器試驗數據屬于多變量時序型數據,可將航空發動機喘振的診斷問題看作是一種特殊的故障檢測和診斷問題。許多學者對機械系統故障檢測和診斷開展了眾多方法研究,可概括為三大類[1]:基于模型的方法[2-4]、基于知識推理的方法[5-7]和基于數據驅動的方法[8-11]。基于模型的方法主要是基于系統動態數學模型的方法,即通過構建數學模型來探尋對象運行規律,適用于具備過程精確的定量數學模型,該類方法也是最早最為深入的方法,優點是充分利用了系統內部的深層知識,利于系統的故障診斷。

基于數據驅動的方法無需建立精確的復雜系統模型,也無需大量的領域專家知識和知識的表達推理機制,但是通常需要大量準確的數據。隨著人工智能技術的飛速發展,深度學習已經在很多領域都取得了卓越的成果,例如:自然語言處理[14]、圖像識別[15]、入侵檢測[16]等,越來越多的學者也開始將深度學習應用于故障診斷和預測。在國外,Elashmawi等[17]提出了一種基于人工神經網絡的故障診斷模型,該模型具有監視、分析和診斷燃氣渦輪發動機故障的在線處理功能,具有雙重優勢。國內的吳斌等[18]以渦扇發動機為對象,引入了深度置信網絡(Deep Belief Network,DBN)對發動機部件性能衰退故障進行診斷研究,解決了淺層神經網絡在診斷時存在泛化能力欠缺的問題,并提高了發動機氣路部件性能衰退故障的診斷精度。Yuan等[19]利用長短時記憶網絡(Long Short Term Memory Network,LSTM)對航空發動機進行故障診斷和剩余壽命預估。Chen等[20]基于卷積神經網絡(Convolutional Neural Networks,CNN)、深度神經網絡(Deep Neural Networks,DNN)和LSTM提出了一種混合深度計算模型(Hybrid Dilated Convolution,HDC),該模型在航空發動機氣路故障診斷上的準確率能達到83%。上述模型雖然都能達到不錯的診斷準確度,但是很難在模型大小、運算效率以及模型診斷準確度上都做得較好。
就某型航空發動機的燃燒室燃油噴嘴壓力(Ptk)、發動機高壓壓氣機轉子轉速(N2)、發動機渦輪后溫度(Tt6)等多個主要傳感器數據,在序列到序列(Sequence to Sequence,Seq2Seq)模型的基礎上提出了一種基于CNN-Seq2Seq的面向航空發動機喘振故障診斷的神經網絡模型。CNN-Seq2Seq是指使用卷積神經網絡對傳統Seq2Seq結構中的LSTM進行替換而改進過的一種Seq2Seq結構。CNN-Seq2Seq簡化了模型結構,使得模型具備并行計算的能力,從而大幅提高計算效率并降低診斷耗時。實驗結果表明該模型在顯著降低模型大小和計算量的同時,在精確率、召回率和F1 Score上仍然獲得了94.3%、92.1%、93.2%的表現,同時單次預測耗時僅需2 ms。
普通循環神經網絡(Recurrent Neural Network,RNN)[21]難以處理長距離的依賴,存在梯度爆炸和梯度消失的問題。LSTM[22],是循環神經網絡的一個變種,成功解決了原始RNN的缺陷,成為當前比較流行的RNN,在語音識別、圖片描述、自然語言處理等時間序列相關領域中成功應用。LSTM通過特殊的“門”結構,記憶一定時間范圍內的有效信息,并適時遺忘無用的“記憶”,解決了“長時依賴”問題。LSTM通過“門”結構控制數據流,“門”結構的實質是一個全連接非線性變換,輸出取值在0~1之間。LSTM有3種“門”結構:① 遺忘門,它決定上一時刻的單元狀態Ct-1保留多少信息到當前時刻Ct;② 輸入門,它決定當前網絡輸入Xt保留多少信息到當前狀態Ct;③ 輸出門,它決定當前單元狀態Ct保存多少到當前輸出值ht。
一個CNN[23]由若干卷積層、池化層、全連接層組成,可以利用這些子結構構造不同的CNN。CNN能夠進行卷積運算,從局部輸入圖塊中提取特征,因此在計算機視覺問題上表現出色。CNN的特性使其在空間問題上特別擅長,時間實際上也可以看作一個空間維度,就像二維圖像的高度和寬度,不包含RGB通道值,被稱為一維CNN。對于分類和時間序列預測等簡單任務,小型的一維CNN已經可以媲美RNN,并且計算代價通常要小很多。一維卷積層可以識別序列中的局部模式,從序列中提取局部的子序列,但其對整體時間步并不敏感(整體時間步是指遠大于子序列的時間步),可將許多卷積層和池化層堆疊起來以學習更長的時間步。如果所處理任務的序列數據整體順序非常重要,例如溫度的連續預測,CNN稍顯力不從心,此時最好采用RNN用以捕獲更長序列的潛在信息。但分析討論內容,航空發動機喘振故障往往只依賴于前面較短時間步的信息,故障的發生往往是瞬時的,在故障發生前的極小段時間內已可見端倪,只不過人類無法定義這種變化,但使用神經網絡來學習并不困難。因此可以使用一維CNN來處理所涉及的時間序列數據。相較于RNN,CNN計算代價要小得多,在序列問題的整體順序不重要時可以替代RNN。針對所研究問題,CNN相較RNN的最大優勢是能夠提供并行計算的能力從而大幅提高計算效率。
Seq2Seq是在輸出長度不確定時采用的模型,一般用于自然語言處理中的機器翻譯、人機對話、聊天機器人等任務。將中文翻譯為英文時,英文句子的長度可能比中文長,也可能比中文短,輸出句子的長度難以確定,輸入序列和輸出序列通常也沒有相同的長度,Seq2Seq的提出就是為了解決這樣的問題,其結構如圖1所示。

圖1 Seq2Seq模型結構
Seq2Seq是一種Encoder-Decoder結構,Encoder負責將輸入序列壓縮成指定長度的上下文向量,這個向量可以輸入序列的語義表達。圖1中將Encoder的最后一個隱藏狀態作為上下文向量C,也可以對最后一個隱藏狀態做一個變換得到上下文變量,也可以對所有的隱藏狀態做變換得到上下文向量。Decoder負責根據上下文向量生成對應的序列,圖中的方式是直接將上下文向量作為初始狀態輸入到Decoder中預測輸出序列,還可以將上下文向量C當作每一步的輸入。
Seq2Seq模型一般采用LSTM作為Encoder和Decoder的組成部分,這是由于RNN設計的目的就是為了處理這樣的時間序列數據,然而這樣的Seq2Seq模型不能進行并行運算,因此存在計算效率低、計算耗時長的問題。相比于RNN,CNN可以實現并行計算,其計算代價要小很多,一維CNN也能用于解決時間問題,因此使用一維CNN代替傳統Seq2Seq模型中的LSTM結構,可以降低喘振診斷模型的網絡復雜度并提高計算效率,達到針對喘振故障能夠在毫秒級時間內進行診斷的效果。
面向航空發動機喘振提出了一種基于CNN-Seq2Seq的故障診斷模型,該模型使用CNN和改進后的Seq2Seq作為主要模塊進行構建。
模型中的CNN為沒有池化層的一維CNN。CNN不僅可處理空間問題,還能被應用到某些時間問題上。Conv1D可以識別時間序列中的局部模式,從序列中提取局部的子序列,但其對整體時間步并不敏感。相較于RNN,一維CNN能夠實現并行計算并且計算代價要小很多。改進后的Seq2Seq模型也主要是依托這樣的一維CNN來構建,旨在提高模型計算速度。故障診斷模型的主要模型結構如圖2所示。

圖2 模型架構圖
由于一般的Seq2Seq模型主要用以自然語言處理,需要對單詞做詞嵌入(Embedding)處理,而模型輸入數據為經過標準化處理后的傳感器時序數據,無需再經過Embedding層,模型將直接計算經過一系列預處理后的數據。Seq2Seq的提出是為了解決不定長序列的生成問題,Seq2Seq的作用是對未來傳感器數據進行預測,通過對Seq2Seq進行改進,將其內部的編碼器和解碼器中的LSTM層更換為CNN層,提供高性能的并行計算,加快訓練速度和預測速度。在Seq2Seq模型中,其模型的輸入為(批量大小、輸入序列長度、序列特征個數)的三維數組,通過編碼器對其進行壓縮得到一個二維的特征向量,也就是圖2中的C,接著將編碼向量C輸入到解碼器中得到預測序列數據結構與其輸入結構一致的三維數組,只是第二維的序列長度稍有變化。CNN層對預測的時間序列數據進行分析,挖掘傳感器采集數據中潛在特征信息,對是否發生喘振故障進行判斷。最后經過一個全連接層和Sigmoid激活函數,將卷積后的數據經過維度變換后最后輸出結構為(批量大小、二分類判定結果)的二維數組。Ligh4S模型將判斷結果轉換為0~1之間的小數,Sigmoid公式定義如下:
(1)
式中:x為輸入至該激活函數的數據值,經過Sigmoid函數處理后的值大于等于0.5時將被判斷為發生喘振故障。上述所提到的批量大小設置為300,輸入序列長度為64,序列特征個數為6,預測序列長度為20。
選取某型航空發動機進行試驗產生的部分歷史數據作為數據集訓練模型,試驗數據由每個時刻從多個傳感器采集到的數值數據組成,包括核心機失速、增加推力、慣性起動切油、起動失速、高溫或低溫起動時爆燃、壓氣機畸變等不同場景下通過試驗獲取到的數據。從多個傳感器中選擇發動機壓氣機(高壓轉子)出口總壓(Pt3)、發動機壓氣機高壓轉子轉速(N2)、發動機油門桿(PLA)等與航空發動機喘振故障密切相關的傳感器。喘振故障時間點由專家根據相應規則和經驗進行人工標注,例如當PLA傳感器的數值曲線趨于平穩的時候,一旦Pt3傳感器出現突升、突降、或劇烈抖動后直到回歸平穩的這段區間便是發生喘振的區間,該區間內的每一個時刻都在發生喘振,其余時刻為正常工作狀態。經人工標注后,數據集中正常點與喘振點的比例約為95∶15。
將數據集打亂并按照7∶2∶1的比例拆分為3部分:訓練集、驗證集、測試集。在訓練數據上訓練模型,在驗證數據上評估模型,一旦找到最佳參數在測試數據上做最終評估。

數據中有時會有缺失值,需要對缺失值進行填充,以發動機每秒的運作頻率為基準,填充方法為使用缺失值前后發動機頻率一半數量的時刻的平均值進行填充,如果選用時刻點過多或過少,得到的缺失值并不具備傳感器數據在該段時刻的局部特征,3個數據集合中均采用該方法對缺失值進行填充。
不同傳感器具有各種不同的取值范圍,將每個傳感器分別做標準化處理,消除量綱帶來的干擾,使其均值為0、標準差為1。

(2)


(3)

最后在時間維度上依次采取如下公式進行數據標準化:
X-=Tmean,X÷=Tstd
(4)
其中,X為3個集合中的任意一個,即驗證集和測試集上的數據在做標準化處理時使用的是訓練集上的平均值和標準差。同時減法和除法操作都是在時間維度上進行。
采用滑動窗口的形式對時序數據進行截取,構造模型的輸入數據。具體方法如圖3所示,是以固定大小的窗口對各傳感器采集到的數據按照固定大小的滑動步長分別獲取數據。以滑動窗口的形式進行數據提取可以增加數據集中的樣本數量,給Ligh4S模型的訓練提供更多數據,試驗數據采集過少時可以通過較小的滑動步長來獲取更多的樣本。同時滑動窗口在采樣時會存在重疊的子窗口,這會使得模型能更容易地學習到故障序列的特征。滑動窗口的大小即為單個訓練樣本的時間步長。

圖3 使用窗口滑動截取數據
實驗所使用CPU為Intel Core i9-9900K Processor@3.60 GHz,內存為16 GB,GPU為Geforce RTX 2080Ti。模型搭建采用簡單易上手的高級深度學習框架Keras,Keras后端引擎選擇TensorFlow。
在數據集方面,研究了多型渦扇發動機在空中慣性起動、空中風車起動、進氣畸變條件下的地面起動,以及起動失速/喘振等12個不同場景下通過試驗獲得的總共30萬條左右的多個傳感器數據,作為模型的訓練數據、測試數據與驗證數據。
使用數據集中正常點與故障點的比例約為95:15,屬性不平衡的分類問題,使用準確率對故障診斷性能進行評估是不合理的。選擇精確率(Precision)、召回率(Recall),以及F1 Socre對故障診斷模型進行性能評價。因為在模型完全識別出正常點并將所有喘振點也判斷為正常點的情況下,此時模型準確率也能達到95%,因此需要選擇其他指標對模型進行評估。
為了能夠將模型與其他模型進行對比評估。以Preoision、Recall和F1 Score作為評估指標,將本文模型與其他神經網絡CNN、RNN、LSTM的測試結果作對比,3個模型的輸入維數都與CNN-Seq2Seq模型一致,均為(批量大小、輸入序列長度、序列特征個數)的三維數組,其中批量大小、輸入序列長度和序列特征個數與2.1節中的CNN-Seq2Seq模型的輸入設置一致。
其中基于CNN的故障診斷模型結構由2層一維卷積層和2層全連接層組成。第1層卷積層設置的卷積核個數為24,卷積核大小為1;第2層卷積層設置的卷積核個數為12,卷積核大小為8;全連接層的節點數分別為32和1。基于RNN的故障診斷模型結構由1層RNN層和2層全連接層組成,其中RNN層的節點數為32,全連接層的節點數為32和1。LSTM由1層LSTM層和2層全連接層組成,其中LSTM層的節點數為32,全連接層的節點數為32和1。結果如表1所示。

表1 各模型的實驗結果對比
由表1的實驗結果可知,本文模型相比其余3個模型來說性能表現更好,這說明在數據集上的表現來看,使用基于CNN-Seq2Seq的喘振診斷模型更好。同時只比較LSTM和CNN來看,CNN在喘振故障預測的效果基本可以媲美LSTM,而傳統RNN的效果較差,這是傳統RNN存在梯度下降或爆炸等問題從而難以處理長時依賴而導致的。
針對航空發動機喘振的診斷過程耗時不能太長,因此模型在做單次運算的時間損耗不能太大,否則就失去了研究意義。對模型做100次測試,其耗時情況如圖4所示。

圖4 AMSDPNN模型預測測試耗時曲線
從圖4中不難發現,模型單次診斷平時耗時僅需2 ms。所以所提出模型在保證Precision、Recall及F1 Score 3個評估指標維持高水準的同時,其預測喘振故障的時間也非常低,因此能夠實現對航空發動機喘振的提前診斷。
基于某型航空發動機上的多傳感器試驗數據,使用窗口滑動的方式截取子序列構建時序數據集并對其進行標準化,之后提出了基于CNN-Seq2Seq的針對航空發動機喘振診斷的神經網絡模型,該模型主要基于使用CNN改進后的Seq2Seq。實驗結果表明,該模型能夠以極短的時間診斷出航空發動機的喘振故障,同時Precision、Recall和F1 Score能達到不錯的水平。