王偉麗 楊瑞峰 郭晨霞 秦 浩
1.中北大學儀器與電子學院,太原 030051 2.山西省自動化檢測裝備與系統工程技術研究中心,太原 030051
舵系統是導彈控制系統的重要執行機構,它接收來自飛行控制系統的控制信號,驅動舵面偏轉,從而控制飛行姿態和軌跡。舵機的精確輸出和可靠操縱對于飛行器安全穩定飛行至關重要[1]。舵機性能和質量的好壞直接決定著導彈飛行過程中的動態品質[2],舵機發生故障可能會導致災難性事故。因此,對舵機進行精準異常定位具有重要的現實意義。
目前,針對導彈舵機測試數據進行分析的研究較少。文獻[3]對舵機測試數據進行了特征分析和多故障分類,但未考慮數據分布特征。文獻[4-5]使用自適應采樣方法和支持向量機分類器(Support Vector Machine, SVM)對舵機數據的不均衡進行了研究。該方法雖然使得不均衡數據分類準確度有所提高,但效果不顯著。近年來,深度學習(Deep Learning,DL)技術廣泛應用于各個領域,其中卷積神經網絡(Convolutional Neural Networks, CNN)已經成為熱門的機器學習算法之一[6]。文獻[7]中提到使用CNN對皮膚癌進行分類和診斷,文獻[8]中使用CNN對高光譜圖像進行分類。由此可以看出,CNN以其出色的分類性能,為舵機異常檢測提供了新思路。
針對舵機參數的測試數據量大且樣本不均衡的特點,考慮到CNN優越的特征提取和分類的性能,本文提出使用CNN對舵機測試數據進行異常檢測。我們通過不同網絡層次的對比實驗,得到最優的網絡結構,完成適用于舵機異常檢測的CNN模型設計。本文所提出的CNN模型包含3個卷積層、2個池化層、1個展平層、2個失活層和2個全連接層。
本研究使用的舵機自動化測試平臺能夠自動完成舵機參數的采集。測試設備主要由工控機、電源、采集卡、信號調理電路、驅動器和多功能數據采集卡組成。該平臺最多可同時測試4套舵機,大大提高了測試效率。圖1為舵機測試的簡要流程圖。

圖1 舵機測試過程概述
舵機在使用前必須進行性能評估,以確保所有參數處于正常狀態。若舵機參數測試結果出現異常,則需要立即對舵機進行檢修。通過人工分析數據需要耗費大量的時間和精力,且準確度難以保證。所以,利用機器學習技術自動且高效地完成舵機異常檢測是十分必要的。
實驗中使用到了19490個歷史測試數據。實驗數據集中包含氣動舵機測試項目如下:過渡過程時間、超調量、穩態誤差、空載帶寬、負載帶寬、遲滯特性、零位精度和舵機行程。這些參數反映了氣動舵機的動靜態特性,是評價舵機性能的綜合指標。每條舵機測試數據包含10個“特征”,對應10種不同的測試參數;一個“標簽”,對應11種測試狀態:合格狀態(Q)和異常狀態(FA-FJ)。
提出了一種適用于舵機異常檢測的CNN模型。CNN是受到人類視覺神經系統的啟發,使用卷積核來代替人類的視野,達到降低計算量,高度保留特征的目的。
輸入層:用于接收預處理后的舵機測試數據。
卷積層:該層由多個卷積核組成,執行大量卷積計算。卷積核(W=[w1,w2,w3,…,wN]T)通過在整個數據上滑動一定的步長,以生成新的數據表示,也稱為輸出特征[9]。輸出特征被映射到激活函數,實現網絡層的非線性變換。本實驗所使用的Rectified Linear Unit(ReLU)是神經網絡結構中最常用的激活函數,它的定義如下:
R=max(0,WTx+b)
(1)
式中:R表ReLU函數;W卷積核的權重;x為輸入的舵機測試數據;b表偏差。
池化層:該層用于特征降維,減少訓練過程中的計算負擔,從而減少過擬合,提高模型的容錯率。本實驗選取的池化形式為最大池化。
展平層:將上一層的輸出轉換為矢量。該層通常用于卷積層或池化層到全連接層的過渡。
失活層:使用隱含單元的隨機失活來防止過擬合。這種隨機性的引入迫使網絡變得冗余,也就是使得網絡與訓練樣本不完全匹配,從而增加網絡的泛化能力。
全連接層:它旨在將該層的神經元與其它層的神經元連接。輸出類型決定了使用哪種激活函數。本文設計的模型中存在兩個全連接層。其中,第二個全連接層為輸出層,用于分類,該實驗需要把舵機測試結果分為11類,則該層神經元個數為11個。分類選用Softmax激活函數。該函數對預測輸出進行歸一化,以獲得相應類別的概率分布:
(2)
實驗以8 ∶2的比例劃分數據集,即舵機測試數據15592個被劃分到訓練集,3898個被劃分到測試集。具體設置如下:首先,神經網絡的一次訓練選擇的樣本數量太小,損失函數會振動,導致結果不收斂;在一定范圍內增加一次訓練選擇的樣本數量,不僅可以縮短神經網絡的訓練時間,還可以提高訓練精度。因此,我們將其取值為512。其次,CNN的訓練使用Adam算法進行,訓練的迭代次數為200。
為了搭建適合舵機測試參數的CNN模型,我們進行了不同網絡層次的性能對比實驗。架構示例如圖2所示,每個模塊由一個卷積層和一個池化層組成。圖2(a)命名為SimpleNet-2,圖2(b)命名為SimpleNet-22。

圖2 架構示例圖
對比結果如表1所示。SimpleNet-22結構所得到的測試集準確度最高,相比于SimpleNet-1,SimpleNet-12,SimpleNet-2和SimpleNet-3,測試集準確度分別高出0.421%、0.056%、0.077%和0.143%。由此可以看出,在一定程度上加深網絡層次可以提高模型性能。通過SimpleNet-1和SimpleNet-12對比,以及SimpleNet-2和SimpleNet-22的對比,在第一次池化層前加入兩個卷積層可以允許模型學習到更復雜的特征,完成更優的特征提取。但通過SimpleNet-3的實驗分析可知,過渡加深網絡層次不一定能提高模型的分類性能。

表1 測試集準確度
通過上述實驗,最終選取SimpleNet-22的架構來搭建CNN模型。如圖3所示,本實驗設計的CNN模型的第1層、第2層和第4層為卷積層,分別包含32個、64個和128個卷積核,卷積核尺寸均為2,步長設計為1,選取ReLU為激活函數。第3層和第5層為最大池化層,池化窗大小為2。第6層為展平層。數據以10×1的形式輸入,通過上述六層計算后,數據以384×1的形式輸出。接下來,展平層輸出的數據被輸入到含有256個神經元的全連接層,并以0.25的概率隨機失活。最后的全連接層為輸出層,以0.5的概率隨機失活,使用Softmax作為激活函數,得到11類分類結果。這11類分類結果將數據分為合格和10類故障,實現舵機測試數據的異常檢測。

圖3 CNN模型
舵機異常檢測的本質是多分類問題,為了評估所提出的模型的性能,使用了以下參數:準確度(accuracy)、精確度(precision)、召回率(recall)、F-score和kappa系數[3,10]。
(3)
(4)
(5)
(6)
(7)
式中:Acc代表準確度;Pre代表精確度;Rec代表召回率;F代表F-score;K代表Kappa系數;TP,TN,FP和FN分別代表真陽性、真陰性、假陽性和假陰性;N代表樣本總數。
在神經網絡模型訓練時,將損失函數進行了可視化處理,結果如圖4所示。訓練集交叉熵損失值在迭代200次后趨于平穩,說明BP(Back Propagation)神經網絡和CNN網絡訓練在不引起過度擬合的情況下收斂。也就是說我們的網絡訓練結果是有效的[11]。

圖4 損失函數值曲線
為了對所提出的模型進行廣泛的性能評估,我們將其與KNN、SVM和BP模型相對比。其中,BP模型為去除CNN模型卷積部分的結構,如圖3所示。表2所示的KNN、SVM、BP和CNN模型的分類性能指標是通過5次重復實驗得到的平均值。與KNN和SVM模型相比,實驗設計的CNN模型在準確度上提高了3.494%和1.826%。與BP模型相比,CNN模型的準確度提高了0.42%,這表明,通過卷積層提取數據特征可以有效的提高分類性能。在精確度、召回率和F-score分析中,CNN模型的分類效果均最優。CNN模型的Kappa系數結果為0.99362,與其他三種模型相比最接近1,也就是說明CNN分類結果與真實結果相比幾乎完全一致。綜上所述,我們所設計的CNN模型相比于其他3種模型在舵機測試數據分類中表現最佳。

表2 不同模型分類性能比較
由于舵機測試數據不均衡,為了分析小樣本的分類情況,實驗繪制了如表3所示的CNN模型的混淆矩陣,以及表4所示的不同模型中不同類別的分類性能表。值得注意的是,KNN和SVM模型雖然在整體性能比較中與神經網絡的差距不大,但它們受數據不均衡影響較大。在FE,FF,FG和FJ中分類效果不佳。尤其是KNN模型,在FF類中,準確度只有42.25%,無法達到分類效果。使用CNN模型分類時,FA,FB,FE,FH,FI和FJ的分類準確度和精確度均能達到100%。由此可見,CNN模型幾乎不受訓練樣本量的影響,在小樣本中仍能達到良好的分類效果。

表3 CNN模型的混淆矩陣

表4 不同模型中不同類別的分類性能比較
針對舵機的自動化異常檢測,本文提出了一種適用于舵機參數測試的CNN模型。實驗結果表明,該模型能夠良好改善舵機數據樣本不均衡而導致的小樣本難以準確分類的問題。在4種模型對比實驗中,CNN模型的準確度、精確度、召回率、F-score和kappa系數均最優。由此可以看出,這是深度學習技術在舵機領域的一種新的有效應用。