陸 超,李曉瑜,姚艷玲,唐曉瀾,彭 宇,王書福
(1. 中國航發(fā)四川燃氣渦輪研究院高空模擬技術(shù)重點實驗室 四川 綿陽 621000;2. 電子科技大學信息與軟件工程學院 成都 610054;3. 西南石油大學計算機科學學院 成都 610500)
航空發(fā)動機是飛機最重要的部件之一,在飛機飛行發(fā)生的故障中發(fā)動機故障占相當大的比例,且一旦發(fā)生故障會致命。航空發(fā)動機中各傳感器的數(shù)據(jù)曲線反應(yīng)了當前該發(fā)動機是否處于正常的工作狀態(tài)。因此,通過有效的手段監(jiān)控航空發(fā)動機傳感器數(shù)據(jù)變化趨勢對飛機飛行安全有著重大的意義。
由于航空發(fā)動機傳感器數(shù)據(jù)屬于時序數(shù)據(jù),因此對于航空發(fā)動機傳感器數(shù)據(jù)的預(yù)測可以看作是時序數(shù)據(jù)預(yù)測。傳統(tǒng)的時間序列預(yù)測模型主要為線性模型,如AR(autoregressive)、MR(moving average)、ARMA(autoregressive moving average)、ARIMA(autoregressive integrated moving average)等[1-8],針對平穩(wěn)時間序列預(yù)測有著較好的效果。但大部分數(shù)據(jù)如股市數(shù)據(jù)、水文數(shù)據(jù)或者航空發(fā)動機傳感器數(shù)據(jù)都具有非線性特征,傳統(tǒng)的線性預(yù)測很難得到較好的預(yù)測結(jié)果。神經(jīng)網(wǎng)絡(luò)和自適應(yīng)算法等非線性模型的提出解決了此問題[9-20]。其中通過基于深度學習構(gòu)建神經(jīng)網(wǎng)絡(luò)模型因其自身強大的特征提取能力和自我學習能力,對具有非線性特征的時間序列數(shù)據(jù)的預(yù)測有著良好的效果。文獻[21]提出了基于LSTM的預(yù)測模型,對有明顯的非線性和不確定性波動的PM2.5濃度進行了預(yù)測。文獻[22]提出了一種基于注意力機制的CNN(convolutional neural networks)和LSTM(long short-term memory)的聯(lián)合模型,在真實的熱電聯(lián)產(chǎn)供熱時序數(shù)據(jù)上進行預(yù)測,相較于傳統(tǒng)的時序預(yù)測模型得到了更為精確的預(yù)測結(jié)果。
本文就發(fā)動機高壓壓氣機轉(zhuǎn)子轉(zhuǎn)速(N2)、發(fā)動機燃燒室燃油噴嘴壓力(Ptk)、發(fā)動機渦輪后溫度(Tt6)等航空發(fā)動機主要傳感器數(shù)據(jù),使用滑動窗口算法構(gòu)建數(shù)據(jù)集并對其進行標準化,并提出了一種基于Seq2Seq的面向航空發(fā)動機多傳感器預(yù)測神經(jīng)網(wǎng)絡(luò)模型(aeroengine multi-sensor data prediction neural network, AMSDPNN)。Seq2Seq模型是基于編解碼器架構(gòu)的常用于時序數(shù)據(jù)預(yù)測的神經(jīng)網(wǎng)絡(luò)模型,其隱藏層可以由CNN、RNN(recurrent neural networks)、LSTM等構(gòu)成,本文采用LSTM,最終以0.1%左右的均方誤差實現(xiàn)了對多個傳感器數(shù)據(jù)的預(yù)測。
由于數(shù)據(jù)是時間序列數(shù)據(jù),因此在模型隱藏層的網(wǎng)絡(luò)模型選擇上優(yōu)先考慮時序數(shù)據(jù)的首選神經(jīng)網(wǎng)絡(luò)——循環(huán)神經(jīng)網(wǎng)絡(luò)RNN[23]。這是因為RNN中的每一個Cell能夠記住時序數(shù)據(jù)中每一個時刻的數(shù)據(jù)信息,當前Cell的隱藏層不僅由該時刻的輸入決定,也由上一時刻隱藏層的輸出決定。通過這樣的方式,RNN能有效分析出時序數(shù)據(jù)的語義特征信息。一般的DNN不具備此功能。但RNN在長時序信息的保存和特征提取上表現(xiàn)并不好,容易產(chǎn)生梯度消失或梯度爆炸的問題,從而影響訓練效果。因此本文采用了RNN的一個變種模型,即長短時記憶神經(jīng)網(wǎng)絡(luò)模型(LSTM)[24-25]。相較于RNN,LSTM使用了輸入門、輸出門和遺忘門來控制是否遺忘或保留序列中的歷史信息,很好地解決了長期依賴問題。其單元結(jié)構(gòu)如圖1所示。
相較于一般RNN結(jié)構(gòu),每個循環(huán)網(wǎng)絡(luò)單元變得復雜了,這是因為多了3道控制門,分別是遺忘門、輸入門、輸出門。這里的“門”是帶有激活函數(shù)的全連接層,能夠選擇性地對信息進行過濾,激活函數(shù)一般是使用Sigmoid函數(shù)(圖1中σ表示),并且相較于原始RNN,LSTM多出了一個單元狀態(tài)變量C,用于保存長期的狀態(tài),稱為單元狀態(tài)(cell state)。
圖1 LSTM單元體結(jié)構(gòu)示意圖
上面提到的深度神經(jīng)網(wǎng)絡(luò)模型不論是RNN還是LSTM模型,它們都可以生成與輸入長度一樣長的固定長度序列,如果想要獲得不定長的序列通常需要維度變換,效果不理想。為了解決不定長的預(yù)測序列數(shù)據(jù)的生成,文獻[24]提出了Seq2Seq模型,該模型采用編解碼器結(jié)構(gòu),可以采取CNN、RNN、LSTM等不同模型作為隱藏層。本文采用LSTM,其工作原理是首先輸入一個序列到編碼器的LSTM層,取其最后一個LSTM單元的輸出為編碼向量,該向量為二維向量,再將該特征向量復制生成與預(yù)測序列長度一樣長的三維特征向量輸入到解碼器的LSTM層中,最終得到預(yù)測序列向量。Seq2Seq模型中的主要架構(gòu)編解碼器如圖2所示。
圖2 Seq2Seq模型中的主要架構(gòu)編解碼器
本文采用的數(shù)據(jù)格式為時間序列數(shù)據(jù),是在不同時間點上收集到的數(shù)據(jù),簡稱時序數(shù)據(jù)。這類數(shù)據(jù)反映了某一事物、現(xiàn)象等隨時間的變化狀態(tài)或程度。對于一般時序數(shù)據(jù)預(yù)測模型的訓練而言,其數(shù)據(jù)集是由原數(shù)據(jù)集截取得到的一個個固定長度的子序列構(gòu)成。本文采用滑動窗口算法實現(xiàn)了對航空發(fā)動機不同傳感器數(shù)據(jù)的子序列截取來構(gòu)建模型訓練所需的數(shù)據(jù)集。該數(shù)據(jù)集包括由真實數(shù)據(jù)組成的待預(yù)測子序列和預(yù)測子序列,前者作為模型輸入序列,得到預(yù)測序列數(shù)據(jù)后,后者會作為用于計算與預(yù)測序列數(shù)據(jù)之間均方誤差的對比序列。其子序列個數(shù)由滑動窗口的滑動步長決定。為了能夠得到更多的訓練數(shù)據(jù),本文設(shè)置滑動窗口步長為1。
當使用滑動窗口成功構(gòu)建數(shù)據(jù)集后,需將數(shù)據(jù)集劃分為訓練集和測試集。一般傳統(tǒng)的數(shù)據(jù)集劃分方式是先將數(shù)據(jù)集里的數(shù)據(jù)打亂隨機排序,再按照比例進行劃分,目的是防止模型訓練時過擬合以及能夠提高模型的魯棒性。但本文研究的傳感器數(shù)據(jù)屬于時間序列數(shù)據(jù),其數(shù)據(jù)具有高度自相關(guān)的特性,前后相鄰的數(shù)據(jù)有著一定的關(guān)聯(lián)度,如果打亂訓練會引入來自未來的數(shù)據(jù)而導致模型容易發(fā)生嚴重的過擬合現(xiàn)象,從而影響訓練效果。因此,本文劃分數(shù)據(jù)集的方法是將選擇一個合適的時間點,取該時間點前的來自過去的數(shù)據(jù)作為模型的訓練集,時間點后的來自未來的數(shù)據(jù)作為模型的測試集,按照訓練集和測試集4∶1的比例進行劃分。
最后在劃分好訓練集和測試集后還需要標準化處理。目的是消除由于量綱不同、不同傳感器數(shù)值范圍差距過大而引起的誤差,使其有利于學習率的調(diào)整,特別是在尋找模型損失函數(shù)最優(yōu)解的過程中避免梯度更新時帶來數(shù)值問題,從而提高模型的訓練效果。一般情況下,如果數(shù)據(jù)沒有進行標準化,會因為數(shù)據(jù)中不同特征值的量綱差距過大,從而導致在進行梯度下降時,梯度的方向會偏離最快下降方向,使訓練時間變得很長。而在數(shù)據(jù)標準化后,其模型目標函數(shù)呈現(xiàn)會變“圓”,這樣梯度的下降方向能更貼近理想的最快下降方向,便能更快地找到最優(yōu)解。為了防止在數(shù)據(jù)標準化的過程中引入未來數(shù)據(jù)導致訓練時發(fā)生過擬合現(xiàn)象,本文對數(shù)據(jù)進行標準化所用的均值和標準差均來自訓練集。
本文針對航空發(fā)動機多傳感器數(shù)據(jù)預(yù)測多維多步預(yù)測問題,提出了一種基于Seq2Seq的多傳感器數(shù)據(jù)預(yù)測神經(jīng)網(wǎng)絡(luò)模型(AMSDPNN),實現(xiàn)了航空發(fā)動機多傳感器數(shù)據(jù)的提前預(yù)測。模型的總體結(jié)構(gòu)如圖3所示。
圖3 AMSDPNN模型的整體結(jié)構(gòu)
將奧卡姆剃刀原理延伸到深度學習模型的構(gòu)建上,選擇適當復雜程度的模型能有效地防止過擬合,得到滿意的效果?;诒疚哪P偷腅ncoder和Decoder模型都由一層LSTM層構(gòu)成,其中間結(jié)果為編碼器中最后一個LSTM單元的輸出向量,而解碼器的輸入則都為該中間輸出向量,且解碼器的輸出能夠根據(jù)需求輸出對應(yīng)時間步大小的矩陣向量,最后通過一層全連接層得到與需求輸出相對應(yīng)的特征個數(shù)的預(yù)測序列數(shù)據(jù)。
而在模型的激活函數(shù)選擇上并沒有使用如Relu、Sigmoid、Tanh等激活函數(shù),而是直接輸出值。這是因為首先在LSTM層中本身默認使用了Tanh函數(shù)進行最后輸出的激活,因此并沒有再次使用Tanh函數(shù)和與之類似的Sigmoid函數(shù);Relu函數(shù)本身常用于避免深度神經(jīng)網(wǎng)絡(luò)訓練中經(jīng)常出現(xiàn)的梯度消失問題,而本文模型是屬于淺層神經(jīng)網(wǎng)絡(luò),故沒有采用。
關(guān)于損失函數(shù)的選擇上則采用均方誤差函數(shù)MSE。這里假設(shè)預(yù)測的序列數(shù)據(jù)為yp,與之對應(yīng)的真實數(shù)據(jù)為yi。此時損失函數(shù)L的表達式為:
選擇AMSDPNN模型來搭建時序預(yù)測模型,相較于傳統(tǒng)的基于LSTM的時序預(yù)測模型有兩點優(yōu)勢:1) 基于編解碼器結(jié)構(gòu)的Seq2Seq模型輸入和輸出都是序列且長度可變,而傳統(tǒng)的LSTM模型通常需要將輸出的矩陣向量經(jīng)過一系列的矩陣變換才能做到;2)1.2節(jié)提到的解碼器工作時每個LSTM單元里都會帶入編碼器輸出的編碼向量,其編碼向量可以看作是包含了輸入序列全部語義的語義向量,能夠在解碼器生成預(yù)測序列時充分吸納上一序列的語義信息,得到更好的預(yù)測結(jié)果。
本文實驗所使用的操作系統(tǒng)為Windows10,CPU為i7-6700K,主頻4 GHZ,GPU型號GTX 1060,顯存6 GB,電腦內(nèi)存16 GB。主要采用的編程語言為Python3.6,神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的搭建選用Keras2.2.3。
在數(shù)據(jù)集方面,本文以多型渦扇發(fā)動機在空中慣性起動、空中風車起動、進氣畸變條件下的地面起動,及起動失速/喘振等12個不同場景下,約30萬條故障數(shù)據(jù)作為本文模型的訓練及測試數(shù)據(jù)。
模型采用的訓練方法是基于批次的梯度下降法,批量大小根據(jù)整個數(shù)據(jù)集的規(guī)模而定,整個試驗采用Python的第三方工具庫Matplotlib對整個訓練過程進行可視化。
使用梯度下降法時,根據(jù)訓練效果來控制學習速率是模型能否訓練成功的關(guān)鍵。本文選取了Adadelta、Adam、Adagrad、RMSprop這4種優(yōu)化算法進行比較,每個優(yōu)化算法在整個訓練過程中的Loss曲線如圖4所示。
從圖4可以看到,相較于其余3個優(yōu)化算法,Adam優(yōu)化效果最好,其損失函數(shù)Loss能降至0.01左右,且收斂過程也較為穩(wěn)定,故在模型搭建時,選擇Adam作為模型的優(yōu)化函數(shù)。
圖4 不同優(yōu)化算法的loss曲線對比
模型訓練完成后,某發(fā)動機發(fā)生喘振時多個傳感器的真實數(shù)據(jù)曲線以及預(yù)測數(shù)據(jù)曲線對比如圖5所示。
圖5 某發(fā)動機真實數(shù)據(jù)曲線與預(yù)測數(shù)據(jù)曲線對比
為了對模型的最終效果進行整體評估。本文以均方差MSE作為評估指標,將本文模型AMSDPNN與其他神經(jīng)網(wǎng)絡(luò)CNN、RNN、LSTM的測試結(jié)果對比,結(jié)果如表1所示。
表1 各個算法的數(shù)據(jù)預(yù)測誤差對比
由表1的實驗結(jié)果可知,AMSDPNN模型相較其他3個模型,其預(yù)測誤差更小,說明使用基于Seq2Seq的AMSDPNN模型數(shù)據(jù)預(yù)測效果更好。
本文模型的最終目標是能夠預(yù)測發(fā)動機多傳感器的未來數(shù)據(jù)。因此需要通過模型的單次預(yù)測耗時計算出可以預(yù)測多長時間之后的數(shù)據(jù)。經(jīng)實驗得到模型單次數(shù)據(jù)預(yù)測的耗時平均約為80 ms,由于預(yù)測序列的時間跨度達到了400 ms,因此經(jīng)過計算模型可以提前預(yù)測320 ms后發(fā)動機的傳感器數(shù)據(jù),如圖6所示。
圖6 AMSDPNN模型單次預(yù)測耗時曲線
本文基于航空發(fā)動機傳感器數(shù)據(jù)集使用滑動窗口算法截取子序列構(gòu)建時序數(shù)據(jù)集,并對其進行標準化。提出了一種面向航空發(fā)動機多傳感器數(shù)據(jù)預(yù)測神經(jīng)網(wǎng)絡(luò)模型AMSDPNN,該模型主要基于Seq2Seq模型構(gòu)成,其隱藏層使用LSTM網(wǎng)絡(luò)結(jié)構(gòu)。實驗結(jié)果表明,該模型能夠以極短的時間預(yù)測出航空發(fā)動機未來的傳感器數(shù)據(jù)。