王鳳芹,高 龍,徐廷學(xué),王麗娜
(1. 海軍航空大學(xué) 航空基礎(chǔ)學(xué)院,煙臺 264001;2. 海軍航空大學(xué) 作戰(zhàn)勤務(wù)學(xué)院,煙臺 264001)
隨著無人機(jī)技術(shù)、計算機(jī)技術(shù)和通信技術(shù)的飛速發(fā)展,無人機(jī)在民用和軍用領(lǐng)域都得到了廣泛應(yīng)用,尤其在軍事領(lǐng)域扮演著重要角色。然而,無人機(jī)在發(fā)揮重大作用的同時,其面臨的安全問題也日漸突出。2020年6月24日,美國空軍一架MQ-9“死神”無人機(jī)在非洲墜毀,此次事故造成了1129萬美元的損失。如何提升無人機(jī)飛行安全成為無人機(jī)領(lǐng)域一大研究課題。
當(dāng)前,為保證無人機(jī)飛行安全,一種常見的做法是對飛行數(shù)據(jù)進(jìn)行監(jiān)控,即監(jiān)控飛行數(shù)據(jù)中的異常情況[1]。當(dāng)出現(xiàn)異常飛行數(shù)據(jù)時,說明無人機(jī)組成部件或者操控人員的操作出現(xiàn)了問題,針對問題及時查找原因,避免飛行事故的發(fā)生,從而保證飛行安全。如何從大量的無人機(jī)歷史飛行數(shù)據(jù)中挖掘出飛機(jī)異常狀態(tài)的數(shù)據(jù)模式是亟待解決的問題。
針對無人機(jī)飛行數(shù)據(jù)缺少標(biāo)簽而且異常數(shù)據(jù)較少的情況,一種可行的方法是采用無監(jiān)督機(jī)器學(xué)習(xí)算法。傳統(tǒng)的用于異常檢測的機(jī)器學(xué)習(xí)算法有基于距離的檢測算法(如K-Means聚類算法)和基于映射的方法(如單類支持向量機(jī),One Class Support Vector Machine,OC-SVM)。這兩類方法通?;跇颖緝?nèi)在的屬性判斷是否異常,難以綜合考慮樣本之間的關(guān)系,因此對數(shù)據(jù)的趨勢變化不敏感,且難以處理時序數(shù)據(jù)。
由于異常數(shù)據(jù)通常會違反時序數(shù)據(jù)的依賴關(guān)系,因此,近幾年比較流行的一種深度學(xué)習(xí)方法是利用長短時記憶網(wǎng)絡(luò)(Long Short-Term Memory, LSTM)捕獲正常時序數(shù)據(jù)之間的依賴關(guān)系,從而實現(xiàn)飛行數(shù)據(jù)的異常檢測[2]。文獻(xiàn)[3]利用深度學(xué)習(xí)網(wǎng)絡(luò)LSTM來檢測廣播式自動相關(guān)監(jiān)視(Automatic Dependent Surveillance Broadcast, ADS-B)時序數(shù)據(jù)中的異常。該方法的主要問題在于對數(shù)據(jù)樣本敏感,容易對異常數(shù)據(jù)產(chǎn)生過擬合。
另一種比較流行的深度學(xué)習(xí)方法是基于重構(gòu)的深度學(xué)習(xí)算法。文獻(xiàn)[4]在采用自動編碼器(Auto Encoder, AE)的基礎(chǔ)上引入變分自動編碼器(Variational Auto Encoder, VAE),將變分與深度學(xué)習(xí)結(jié)合起來進(jìn)行異常檢測。該方法應(yīng)用在異常檢測問題上的主要困難在于確定低維空間維度,存在偏差,有變分下界,不能很好地捕獲樣本的數(shù)據(jù)模式。
生成性對抗網(wǎng)絡(luò)(Generative Adversarial Nets,GAN)是另一種深度學(xué)習(xí)生成模型[7],該模型由用于捕獲正常樣本數(shù)據(jù)分布的生成網(wǎng)絡(luò)和用于估計樣本異常概率的判別網(wǎng)絡(luò)兩部分組成。相比VAE方法,GAN是漸進(jìn)一致的、沒有變分下界。但是到目前,尚未發(fā)現(xiàn)使用GAN網(wǎng)絡(luò)進(jìn)行無人機(jī)飛行數(shù)據(jù)異常檢測的文獻(xiàn)。
為了提升現(xiàn)有無人機(jī)飛行數(shù)據(jù)異常檢測能力,針對LSTM網(wǎng)絡(luò)存在對數(shù)據(jù)樣本敏感、易產(chǎn)生擬合異常數(shù)據(jù)的問題,本文提出了一種異常檢測算法LSTM-GAN,通過訓(xùn)練LSTM網(wǎng)絡(luò)和GAN網(wǎng)絡(luò)組成的循環(huán)網(wǎng)絡(luò),構(gòu)建無人機(jī)飛行數(shù)據(jù)的正常樣本模式,以檢測離線狀態(tài)下無人機(jī)異常數(shù)據(jù),從而及早發(fā)現(xiàn)飛行問題或故障部件,為無人機(jī)預(yù)防性維修提供數(shù)據(jù)支持,保證飛行安全。
與有人機(jī)相比,無人機(jī)最大特點是無人駕駛,飛行數(shù)據(jù)在這一過程中發(fā)揮著重要作用。飛行數(shù)據(jù)是指與飛機(jī)性能和飛行狀態(tài)相關(guān)的飛行參數(shù)一段時間內(nèi)的取值,由無人機(jī)上設(shè)置的大量傳感器進(jìn)行采集,經(jīng)由飛機(jī)數(shù)據(jù)總線傳輸至飛行數(shù)據(jù)存儲器,或者經(jīng)過數(shù)據(jù)鏈傳輸至地面控制站。采集得到的飛行數(shù)據(jù)按照數(shù)據(jù)的信號源不同,分為動力系統(tǒng)數(shù)據(jù)、導(dǎo)航飛控數(shù)據(jù)、電氣系統(tǒng)數(shù)據(jù)、任務(wù)設(shè)備數(shù)據(jù)、測控系統(tǒng)數(shù)據(jù)和位置信息系統(tǒng)數(shù)據(jù)。各類數(shù)據(jù)如表1所示。飛行數(shù)據(jù)是每隔幾十毫秒采集一次,所以數(shù)據(jù)具有時間相關(guān)性。為了驗證算法的有效性,本文以最常用的高度信息為例,分析傳感器采集到的高度數(shù)據(jù)中的異常。
表1 飛行數(shù)據(jù)分類表Tab.1 Flight data classification table
按照飛行數(shù)據(jù)異常發(fā)生時間的范圍,飛行數(shù)據(jù)的異常分為瞬時異常和序列異常。飛行數(shù)據(jù)的瞬時異常是指在某個時間點出現(xiàn)的單個異常點或者某一短暫時間出現(xiàn)的異常點。最簡單的瞬時異常檢測方法是基于數(shù)據(jù)標(biāo)準(zhǔn)值范圍的異常檢測,通過比較各個參數(shù)值與相應(yīng)的標(biāo)準(zhǔn)數(shù)值范圍查找異常。這種方法簡單,但不能發(fā)現(xiàn)飛行數(shù)據(jù)的序列異常。飛行數(shù)據(jù)的序列異常是指在某段飛行時間內(nèi),飛行數(shù)據(jù)存在異常模式的子序列。序列異常檢測需要首先構(gòu)建每一個飛行數(shù)據(jù)項的正常序列數(shù)據(jù)模式,然后利用正常數(shù)據(jù)模式去檢測時間數(shù)據(jù)序列,對于不符合已構(gòu)建的正常數(shù)據(jù)模式的子序列識別為異常序列。
基于LSTM-GAN進(jìn)行飛行數(shù)據(jù)異常檢測的算法架構(gòu)如圖1所示,由訓(xùn)練網(wǎng)絡(luò)和異常檢測兩部分組成。GAN訓(xùn)練過程包括生成網(wǎng)絡(luò)GN和判別網(wǎng)絡(luò)DN的訓(xùn)練,生成網(wǎng)絡(luò)GN以隨機(jī)生成的噪聲時序Z為輸入,目標(biāo)是盡可能偽裝成真實的飛行數(shù)據(jù)時序以欺騙判別網(wǎng)絡(luò),判別網(wǎng)絡(luò)以真實飛行數(shù)據(jù)訓(xùn)練樣本為輸入,盡可能辨別出真實飛行數(shù)據(jù)和隨機(jī)噪聲數(shù)據(jù),GAN的訓(xùn)練過程即為生成網(wǎng)絡(luò)GN和判別網(wǎng)絡(luò)DN不斷博弈過程,直至達(dá)到納什均衡,最終得到的GAN網(wǎng)絡(luò)中,生成網(wǎng)絡(luò)GN將捕獲訓(xùn)練序列的隱藏多元分布,判別網(wǎng)絡(luò)DN也被訓(xùn)練成高靈敏度地檢測異常數(shù)據(jù)。異常檢測部分以真實飛行數(shù)據(jù)測試樣本XTest為輸入,利用訓(xùn)練好的生成網(wǎng)絡(luò)GN計算測試樣本的重構(gòu)損失(Reconstruction Loss, RL),判別網(wǎng)絡(luò)計算測試樣本的判別損失(Discrimination Loss, DL),兩部分相結(jié)合計算出異常分?jǐn)?shù),根據(jù)異常分?jǐn)?shù)判定是否為異常數(shù)據(jù)序列。
圖1 LSTM-GAN飛行數(shù)據(jù)異常檢測算法架構(gòu)Fig.1 Flight data anomaly detection model architecture of LSTM-GAN
圖1中的LSTM-GAN訓(xùn)練網(wǎng)絡(luò)包括生成網(wǎng)絡(luò)GN和判別網(wǎng)絡(luò)DN兩部分,該兩個網(wǎng)絡(luò)的具體組成如圖2所示。
圖2 LSTM-GAN訓(xùn)練網(wǎng)絡(luò)架構(gòu)Fig.2 Training model architecture of LSTM-GAN
生成網(wǎng)絡(luò)GN建立兩個映射函數(shù)G1:X→Z和G2:Z→X,函數(shù)G1是將真實飛行數(shù)據(jù)訓(xùn)練樣本X進(jìn)行編碼降維到潛在空間Z,函數(shù)G2是將潛在空間Z生成隨機(jī)時序數(shù)據(jù)X,其中,Z服從多元正態(tài)分布,即z~N(0,1),利用映射函數(shù)G1和G2實現(xiàn)時序數(shù)據(jù)X的重構(gòu),即:
判別網(wǎng)絡(luò)DN建立兩個判別函數(shù)Dx:X→P和Dz:Z→P,Dx判定給定的樣本X是真實數(shù)據(jù)樣本的概率為P,其目標(biāo)是盡可能區(qū)分真實數(shù)據(jù)樣本和G生成的隨機(jī)數(shù)據(jù)樣本;Dz判定給定的向量Z是由真實數(shù)據(jù)樣本編碼得到的概率為P,其目標(biāo)是盡可能區(qū)分真實樣本編碼得到的潛在向量和隨機(jī)數(shù)據(jù)樣本。為了避免網(wǎng)絡(luò)擬合異常數(shù)據(jù)風(fēng)險,網(wǎng)絡(luò)中引入掩蔽Mask層和Dropout層,隨機(jī)對神經(jīng)元進(jìn)行遮蔽和丟棄,提高訓(xùn)練網(wǎng)絡(luò)的穩(wěn)定性。
經(jīng)典GAN網(wǎng)絡(luò)的損失函數(shù)采用Wasserstein對抗損失,如式(2)所示:
利用Wasserstein損失函數(shù)WL作為訓(xùn)練網(wǎng)絡(luò)的目標(biāo)損失函數(shù),存在梯度爆炸的風(fēng)險,為避免該問題,在訓(xùn)練判別網(wǎng)絡(luò)時,利用Wasserstein距離,針對兩個生成函數(shù)和判別函數(shù)分別設(shè)計目標(biāo)損失函數(shù)。
對于生成函數(shù)G1:X→Z和判別函數(shù)D z:Z→P,目標(biāo)損失函數(shù)設(shè)定為:
其中,
Dz表示1-Lipschitz連續(xù)函數(shù)集,即:對?x1,x2?dom f
1-Lipschitz連續(xù)函數(shù)對函數(shù)值的上界進(jìn)行了約束,同時函數(shù)具有平滑性,由此可以使網(wǎng)絡(luò)權(quán)重的更新不會發(fā)生很大的變化,這就降低了梯度爆炸的風(fēng)險,生成時序數(shù)據(jù)樣本的分布與真實飛行數(shù)據(jù)的數(shù)據(jù)分布相匹配,使得網(wǎng)絡(luò)訓(xùn)練更加穩(wěn)定可靠。
對于生成函數(shù)G2:Z→X和判別函數(shù)D x:X→P,目標(biāo)損失函數(shù)設(shè)定為:
其中,
訓(xùn)練GAN網(wǎng)絡(luò)的目的是能較好地重構(gòu)輸入時序,采用以上兩個目標(biāo)損失函數(shù),映射函數(shù)的搜索空間很大,為了縮小搜索空間,引入循環(huán)一致性損失函數(shù),如式(8)所示:
其中,‖·‖2表示原始樣本x與重構(gòu)樣本差的L2范數(shù)。
綜合式(3)(6)(8),得到GAN網(wǎng)絡(luò)的目標(biāo)損失函數(shù)為:
算法基礎(chǔ)網(wǎng)絡(luò)采用長短時記憶網(wǎng)絡(luò)(LSTM)[9],是一種遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN),是將RNN隱藏層的每個節(jié)點神經(jīng)元之間構(gòu)建了3個門——遺忘門f、輸入門i和輸出門o,通過門結(jié)構(gòu)控制信息在網(wǎng)絡(luò)中的狀態(tài),三個門組成的記憶單元如圖3所示。
在時間步t時,LSTM隱藏層的輸入向量為xt,輸出向量為ht,記憶單元為ct,其中,
遺忘門:
輸入門:
輸出門:
其中?表示向量元素對應(yīng)乘;W表示權(quán)重;σ是sigmod函數(shù),b是偏置項。tanh是雙曲正切函數(shù),通過記憶單元和門控單元實現(xiàn)歷史信息和長期狀態(tài)的保存,通過遺忘門使得LSTM能夠?qū)W習(xí)連續(xù)任務(wù),并對內(nèi)部狀態(tài)進(jìn)行重置。
基于LSTM-GAN網(wǎng)絡(luò)的異常檢測算法描述如下:
輸入:真實飛行數(shù)據(jù)樣本X={X1,X2,…...,Xt}
步驟:
Step1:使用滑動窗口將訓(xùn)練樣本XTrain劃分為子序列,滑動窗口大小設(shè)為m,則訓(xùn)練樣本序列分解為:X1~m,Xm+1~2m,…,X(n-1)m+1~nm,
其中,
Step2:隨機(jī)生成服從正態(tài)分布的噪聲序列Z,每組序列長度也為m,即為:
其中,
Step3:訓(xùn)練GAN網(wǎng)絡(luò)
置迭代次數(shù)初始值為1;
當(dāng)?shù)螖?shù)小于最大迭代次數(shù),重復(fù)做以下操作:
真實訓(xùn)練樣本X生成潛在空間:
重構(gòu)真實訓(xùn)練樣本X:G2(X TrainL);
隨機(jī)噪聲Z生成偽時序數(shù)據(jù):
ZS=G2(Z1~m,Zm+1~2m,…,Z(n-1)m+1~nm)
判別DZ(X TrainL);
判別D X(ZS);
針對目標(biāo)損失函數(shù):
調(diào)整網(wǎng)絡(luò);
記錄生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)的權(quán)重和偏置;
迭代次數(shù)增1。
Step4:異常檢測
使用滑動窗口將測試樣本XTest劃分為子序列,滑動窗口大小為m,則測試樣本序列分解為:X1~m,Xm+1~2m,…,X(k-1)m+1~km;
計算判別損失DLTest=DZ(X TestL);
計算異常分?jǐn)?shù)ADScore=αRLTest+(1-α)DLTest;
依據(jù)異常分?jǐn)?shù)輸出異常飛行數(shù)據(jù)序列:
(1)實驗內(nèi)容
為了評估LSTM-GAN異常檢測算法的性能,在選定實驗數(shù)據(jù)集上,與飛行數(shù)據(jù)異常檢測算法:K-Means、OC-SVM、LSTM、Auto-Encoder的異常檢測性能進(jìn)行對比分析。其次,通過網(wǎng)絡(luò)損失值的變化驗證目標(biāo)損失函數(shù)設(shè)定的合理性。
(2)評估指標(biāo)
實驗采用準(zhǔn)確率(Accuracy,Acc)、精確率(Precision,Pre)、召回率(Recall,Rec)和F1分?jǐn)?shù)來評估LSTM-GAN的異常檢測性能。四個評估指標(biāo)的計算公式分別如式(16)-(19)所示。
其中,TP表示真正例數(shù),即實際情況和檢測結(jié)果都是正常樣本;FP表示假正例數(shù),即實際情況為異常樣本而檢測結(jié)果為正常樣本;TN表示真反例數(shù),表示實際情況和檢測結(jié)果都為異常樣本;FN表示假反例數(shù),表示實際情況為正常樣本而檢測結(jié)果為異常樣本。對應(yīng)混淆矩陣如表2所示。
表2 混淆矩陣Tab.2 Confusion matrix
準(zhǔn)確率越高則算法檢測效果相對較好,但對于正常樣本多異常樣本少的數(shù)據(jù)分布不平衡情況,正常樣本類別會主導(dǎo)準(zhǔn)確率的計算,所以還需其他指標(biāo)綜合評判;精確率是衡量算法正確檢測正樣本精度的能力指標(biāo);召回率是衡量算法檢測正樣本全度的能力指標(biāo);理想狀況下,精確率和召回率兩者越高越好,但實際情況是兩者相互制約,精確率高則召回率就低,為了平衡精確率和召回率的相互影響,引入F1分?jǐn)?shù),是衡量算法精確率和召回率平衡后的能力指標(biāo),值越大越好。對于飛行數(shù)據(jù)異常檢測,則要保證精確率的條件下,提升召回率和F1分?jǐn)?shù)。
(3)實驗數(shù)據(jù)
從圖中可以看出,從第2次迭代網(wǎng)絡(luò)損失值迅速下降到0.15以下,后續(xù)迭代中,目標(biāo)損失函數(shù)值的下降都相對穩(wěn)定,這說明在三個損失函數(shù)的共同作用下,循環(huán)異常檢測網(wǎng)絡(luò)更加穩(wěn)定,有效避免了網(wǎng)絡(luò)的梯度爆炸情況,使得LSTM-GAN網(wǎng)絡(luò)的異常檢測性能更加穩(wěn)定。
為了提升現(xiàn)有無人機(jī)飛行數(shù)據(jù)異常檢測能力,針對LSTM異常檢測算法對數(shù)據(jù)樣本敏感、容易產(chǎn)生擬合異常數(shù)據(jù)的問題,提出了一種基于LSTM-GAN的無監(jiān)督異常檢測算法。該算法以GAN網(wǎng)絡(luò)為算法框架,設(shè)計了生成網(wǎng)絡(luò)、判別網(wǎng)絡(luò)和重構(gòu)網(wǎng)絡(luò)三組網(wǎng)絡(luò)來循環(huán)構(gòu)建正常樣本的數(shù)據(jù)模式,通過生成網(wǎng)絡(luò)分別與判別網(wǎng)絡(luò)、重構(gòu)網(wǎng)絡(luò)之間的博弈,有效避免了網(wǎng)絡(luò)對數(shù)據(jù)敏感和擬合異常數(shù)據(jù)的風(fēng)險。算法針對無人機(jī)缺乏帶標(biāo)簽的飛行數(shù)據(jù)樣本且數(shù)據(jù)樣本分布不平衡的特點,以LSTM作為基礎(chǔ)網(wǎng)絡(luò),能有效捕獲到飛行數(shù)據(jù)之間潛在交互作用和時間相關(guān)性。實驗結(jié)果表明,本文提出的LSTM-GAN異常檢測算法,比目前流行的基于距離的異常檢測K-means算法、基于SVM的OC-SVM算法、基于深度學(xué)習(xí)的LSTM和Auto-Encoder異常檢測的準(zhǔn)確率、精確率、召回率和F1分?jǐn)?shù)均高,說明基于LSTM-GAN算法的異常檢測性能好,同時算法設(shè)計的兩個判別損失函數(shù)和一個重構(gòu)損失函數(shù)組合構(gòu)成的網(wǎng)絡(luò)訓(xùn)練目標(biāo)損失函數(shù),有效避免了網(wǎng)絡(luò)出現(xiàn)梯度爆炸的問題。本文較好解決了飛行數(shù)據(jù)無監(jiān)督異常檢測問題,可以對無人機(jī)飛后的狀態(tài)監(jiān)控、安全評估和事故分析提供數(shù)據(jù)支持,由于深度學(xué)習(xí)的網(wǎng)絡(luò)復(fù)雜性帶來檢測時間相對長,未來需要研究如何降低檢測時間,實現(xiàn)無人機(jī)的在線異常狀態(tài)檢測,同時探索深度學(xué)習(xí)網(wǎng)絡(luò)模型的可視化技術(shù),提高異常檢測算法的理解和解釋能力。