戴海發,卞鴻巍,馬 恒,王榮穎
(海軍工程大學電氣工程學院, 武漢 430033)
綜導系統是艦艇收集各導航傳感器數據、進行集中處理并分發到各個用戶的重要部件。艦載導航傳感器的種類和數量較多,再加上海洋和電磁環境復雜多變,因此導航傳感器的實際測量數據總是存在一些異常的值,這些異常測量值一般稱為野值。如果不對這些野值進行處理,直接輸入到綜導系統的信息集成模塊進行融合,就會影響信息融合的結果,甚至使融合結果完全不可信。因此,在信息融合之前對野值進行檢測和處理具有相當重要的必要性。
在實際工程上,處理野值的方法主要有兩種思路:一是利用外部傳感器的輔助進行野值的檢測。主要的方法有基于差值的3σ準則法、基于卡爾曼濾波器的χ2檢驗法[1-4]、基于小波分析的方法[5-6]等,其中3σ準則法需要基準數據,而χ2檢驗法依賴準確的系統噪聲和測量噪聲矩陣,基于小波分析的方法對漸變故障的檢測效果不理想。上述方法最大的問題是都依賴穩定無野值的參考系統,如果參考系統也有可能產生野值,那么在檢測到野值時,將無法判斷具體是哪個系統發生了信息故障。
另一種思路是只利用傳感器自身的歷史測量值自主地判斷野值。工程上比較常用的是差分技術、時間多項式外推法、ARMA模型預測法[7]、Lagrange插值法[8]等。差分技術利用前后時刻的值作差分,通過判斷差分值是否合理來判斷測量值是否為野值,該方法只對粗大的野值點有效。ARMA模型預測法通過歷史數據訓練ARMA模型用于預測當前測量值,但是要求測量數據滿足平穩性條件。Lagrange插值法利用歷史數據通過插值公式預測當前測量值,對于野值離散的野值點效果較好,但是對于野值連續的情況則效果不理想,有可能出現嚴重的失真現象。文獻[9-10]提出了基于模糊系統的遙感數據野值檢測方法,但是模糊規則的確定需要一定的技巧,限制了它的使用范圍。
因此,本文提出了一種基于支持向量回歸(Support Vector Regression, SVR)的導航傳感器野值剔除方法。與Lagrange插值法相比,SVR可以自動地學習艦船的運動趨勢,連續受野值點的影響較小,而且能夠在沒有其他傳感器輔助的條件下完成野值檢測。該方法的思路是利用在線訓練好的模型預測當前的導航參數,如果測量值偏離預測值(殘差)且超過一定限度,則認為測量值是異常值,并用預測值代替測量值;如果連續檢測出異常值超過長T,則認為系統發生故障,除非故障被清除,否則不再使用該設備的信息。此外,傳統的閾值一般是靠經驗設定,而本文利用了歷史殘差數據計算出殘差的統計量,然后利用3σ準則構建閾值。
本文首先介紹了SVR及算法的基本原理,然后推導了基于SVR的野值剔除方法,并通過實際海試數據驗證了本文所提方法的有效性。
利用支持向量機作回歸分析的原理是通過非線性映射x→Φ(x),將多維非線性關系樣本組x投影到高維特征空間G中變成線性關系,然后在這個高維特征空間中進行線性回歸。給定n個數據樣本{xi,yi},i=1,2,…,n,其中,xi為實際觀測值,yi為期望值。采用式(1)來估計SVR的回歸函數f[11]
y=f(x)=(ω,Φ(x))+b,
Φ∶Rn→G,ω∈G
(1)
式中,b為偏置量;ω為高維特征空間G中的矢量;Rn為n維實數空間。
如圖1所示,SVR回歸的目標是找到一個超平面使得到超平面最遠的樣本點距離最小,因此得到優化目標函數為
(2)
滿足以下條件
(3)
上述優化模型可以看成一個二次規劃問題,利用 Lagrange對偶形式,并引入核函數表達式,則式(2)可轉化為
(4)

圖1 SVR示意圖Fig.1 Support vector regression diagram
其約束條件為
(5)

(6)
上述過程需滿足KKT(Karush-Kuhn-Tucker)條件[12],即
(7)
由式(7)可以看出,對任意一個樣本(xi,yi)都有(C-αi)ξi=0,且αi(f(xi)-yi-ε-ξi)=0。于是,在得到αi后,若0<αi (8) 導航設備的當前導航參數與過去的導航參數具有相關性,理論上可以找到某個函數來表達這種關系,但是這種函數往往是高度非線性的,關于模型的階次缺少先驗知識,而且相關的自變量一般是多維的,傳統的回歸方法很難解決這類問題。此外,對于樣本(x,y),傳統回歸模型通常直接基于模型輸出f(x)與真實輸出y之間的差別來計算損失,當且僅當f(x)與y完全相同時,損失才為零;與此不同,SVR假設能容忍f(x)與y之間最多有ε的偏差,即僅當f(x)與y之間的差值絕對值大于ε時才計算損失。正是由于這一特點,使得SVR避免了過擬合的問題[13]。因此,本文采用了SVR的方法來建立這樣的函數關系。 對于導航傳感器的輸出時間序列{x1,x2,…,xt} ,如果根據xt的歷史數據預測當前時刻的數據xt+1,則可以建立映射f∶Rm→R,滿足[14] (9) 式中,m為預測函數中使用的歷史數據的個數,即模型的階次。 為了利用第1節的SVR算法來訓練預測函數,需要采用窗口大小為N的滑動窗技術,并對k時刻存儲的歷史窗數據序列{xk-N,xk-N+1,…,xk-1}進行重構,將數據序列轉化為矩陣形式,作為SVR的學習樣本。構造的學習樣本(X,Y)為 (10) 對SVR進行訓練的回歸函數為 (11) 其中,Xi表示矩陣X的第i行,Yt表示矩陣Y的第t行。本文選取的核函數為高斯徑向基核函數,其表達式為 (12) 通過對樣本的學習可以得到SVR的模型,從而得到當前時刻的預測值為 (13) 式中,Xk=[xk-m,xk-m+1,…,xk-1]。 計算預測值與實際測量值之間的差值 (14) 野值判定原則為 (15) (16) 進而確定閾值為 T=3σδx (17) 通常對于野值的處理都是直接剔除,然而這樣會導致信息的缺失,不利于后續的信息融合。因此,本文選擇重構的思路,具體的重構方法為當檢測出測量值為野值時,利用SVR的預測結果代替測量值。 為了驗證本文所提出算法的有效性,選取船舶的實測數據做實驗,并與Lagrange插值法進行對比。實測數據是在某次航海試驗中采集得到的數據,船上搭載的導航設備有慣導、衛導、電磁計程儀和天文導航系統等。海試的航行軌跡如圖2所示。高斯徑向基核函數的寬度參數取為σ=4;損失函數ε=0.01;滑動窗寬N=20;模型階數m=5。本文所使用的算法是在開源代碼庫LibSVM的基礎上進行修改實現的,使用的仿真平臺為MATLAB。 圖2 海試航行軌跡Fig.2 Sea trial sailing track 以電磁計程儀的速度信息為例(圖3),原始測量數據中含有較多的野值點。取其中長度均為1000個樣本的2段數據進行分析,其中一段只含有少量離散的野值點,另一段含有幾處連續的野值點,分別利用Lagrange插值和SVR的方法對數據進行野值處理。 圖3 電磁計程儀原始數據Fig.3 Electromagnetic log raw data 1)場景1 在場景1中,樣本中的速度測量值含有少量離散的點,且速度保持在基本平穩的狀態下,Lagrange插值法的插值點數設為n=2,得到的結果如圖4所示。 圖4 場景1不同野值處理方法結果對比Fig.4 Comparison of different outliers processing methods in scenario 1 從圖4中可以看出,在該場景中Lagrange插值法和SVR算法都能夠有效地去除離散的野值點,而且SVR算法對波動值的估計值更加平滑。從表1可以看出,SVR算法的計算時間比Lagrange插值法只多了11ms,但是檢測成功率提高了8%。這表明SVR算法建立的預測模型比較準確,在一定程度上能夠抑制噪聲的影響。 表1 不同檢測方法的性能對比 2)場景2 如圖5所示,場景2中,艦船運動狀態不穩定,存在加速和減速運動,速度的測量值存在3處連續的野值群(如圖6中藍色虛線橢圓所標示)。此時,不能夠確定Lagrange插值法的插值點數,因此分別設定了幾種插值點方案,得到的結果與真實測量值的對比如圖5所示。圖6展示了使用本文所提出的方法估計的結果與真實測量值的對比情況。 圖5 場景2 Lagrange插值結果Fig.5 Lagrange interpolation results in scenario 2 圖6 場景2 SVR結果Fig.6 SVR results in scenario 2 從圖5可以看出,利用Lagrange插值法得到的結果剛開始與實際測量值比較接近,說明該方法能夠剔除少數離散的野值點;但是從第500個數據點開始,估計值逐漸偏離真實值,而且隨著插值點數量n的增加,偏離得越激烈。這是因為此時出現了較多連續的野值點,而Lagrange插值法會將誤差逐漸累積,插值點個數越高,模型的階次越高,誤差膨脹得越快。在1000s時,速度誤差分別達到160m/s、1.6×104m/s、3×106m/s,已經完全失去了修正功能,這說明任意插值點數的Lagrange插值法無法檢測出連續的野值點。 從圖6可以看出,藍色橢圓虛線標示出的3處連續的野值已經被基于SVR的方法有效剔除,得到的結果與真實測量值比較吻合,而且平滑性較好,較好地反映了艦船的真實運動速度。這表明基于SVR的方法對于導航傳感器連續野值點的情況具有較好的抑制作用。表2展示了不同野值檢測方法在場景2下的計算時間和檢測成功率,從表2中可以看出,SVR算法在該場景下依然具有較少的計算時間和較高的檢測成功率。 表2 不同檢測方法的性能對比 針對Lagrange插值法無法處理連續野值的問題,本文提出了一種基于改進SVR的導航傳感器自適應野值檢測方法。該方法結合了SVR只需要小樣本數據就能夠準確建模和3σ準則計算簡易的優點,利用SVR在線建立艦船的運動模型對測量值進行實時預測,并利用3σ準則自適應地計算閾值;然后通過比較閾值與預測殘差來判別測量值是否為野值點,如果測量值被檢測為野值點,則用SVR的預測值替代該野值點。海試實測數據表明,本文提出的方法能夠在存在連續野值點的情況下檢測出野值點,同時得到較好的傳感器真實測量值的估計,而且算法簡單容易實現,具有較好的工程應用價值。2 基于SVR的野值剔除方法




3 試驗與分析







4 結論