范學滿,張 會
(海軍潛艇學院,山東 青島 266199)
對于潛艇而言,其威脅主要來自于自導、線導等重型魚雷以及空投、火箭助飛、艦艇管裝等輕型魚雷。自航式聲誘餌不僅能夠模擬潛艇的輻射噪聲特性和聲反射特性,還能模擬潛艇的運動特性,對魚雷具有很強的欺騙性,已成為潛艇防御聲自導魚雷的主要手段之一[1]。潛艇發射自航式聲誘餌后,根據本艇、魚雷和誘餌的實時態勢準確預判魚雷能夠發現本艇,對本艇下一步戰術決策影響重大。
本文以離線仿真數據作為訓練樣本集,利用機器學習構建誘餌干擾效果的在線預測模型。考慮到單一分類器在精度和泛化能力方面的不足,本文采用典型的集成學習[2]算法——AdaBoost[3],綜合利用多個基分類器提升預測性能。目前,AdaBoost在機械故障診斷[4]、發電系統孤島檢測[5]和步態識別[6]等多個領域取得成功的應用,但AdaBoost通常采用均勻分布的方式進行樣本權重初始化,這并不適應于本文這類不均衡分類問題。為此,本文為AdaBoost引入數據預處理操作,專門進行樣本權重初始化,從而降低類別不均衡對AdaBoost性能的影響。在基分類器選擇方面,為了保證模型的可解釋性,以REPTree決策樹[7]作為基學習算法。基于離線仿真數據尋優確定了預測模型的參數,進行交叉校驗實驗驗證了預測模型的有效性。
潛艇的魚雷防御方案可表示為四元組(αm,αy1,ty1,αy2),其中,αm、αy1、ty1、αy2分別為潛艇轉向角,誘餌的第一次轉向角、第一段直航時間和第二次轉向角。防御過程為:潛艇魚雷報警后立即發射誘餌,并轉向αm角度規避,誘餌出水后首先轉向αy1角度,然后直航ty1時間,然后再轉向αy2角度,然后再直航至航程終了。
使用安全余量作為效能和方案優化指標。安全余量分為瞬時安全余量和過程安全余量兩種。瞬時安全余量定義為

(1)
式中,M為潛艇位置點,C為魚雷搜索扇面,d(M,C)為點M到扇面C的距離。過程安全余量定義為整個過程中安全余量的最小值。
潛艇規避成功當且僅當整個規避過程的安全余量大于0。進而根據潛艇、誘餌和魚雷的運動控制邏輯,建立計算潛艇使用自航式聲誘餌防御魚雷效果的多實體有限狀態機模型。利用該模型可仿真得到不同相對態勢下誘餌的干擾效果。
在機器學習領域,根據本艇、誘餌和魚雷的相對態勢,預測誘餌的干擾效果即魚雷能否發現本艇,是一個典型的二分類問題。本艇、誘餌和魚雷的相對態勢可以歸納為本艇到魚雷的距離Dts、本艇相對誘餌的舷角φds、誘餌相對本艇的舷角φsd、魚雷到誘餌的距離Ddt和魚雷相對誘餌的舷角φdt這5個特征參數,構成5維特征向量x,表示一個樣本。y∈{-1,1}表示樣本x的真實類標簽,其中,-1代表誘餌發揮了誘騙效果,魚雷沒有發現本艇;1代表誘餌未發揮誘騙效果,魚雷發現本艇。
仿真中,Dts,φds,φsd,Ddt,φdt分別均勻地取10個值,共仿真生成105個樣本,作為誘餌干擾效果預測數據集。其中,真實類標簽為-1的樣本19527個,真實類標簽為1的樣本80473個。
AdaBoost是集成學習領域處理分類問題的重要工具,可以集成多個基分類器的優勢,提升整體的準確率和泛化性能。本文將AdaBoost用于預測本艇發射誘餌后,魚雷能否發現本艇。構建AdaBoost模型通常包括數據預處理、基分類器選取和基分類器集成3個步驟。
X={x1,x2,…,xN}為樣本集,N=105為樣本總數,類標簽y=-1的樣本數N0=19 527,類標簽y=1的樣本數N1=80 473,類別比例ρ=N1/N0≈4.12。一般而言,如果類別不平衡比例超過4∶1,那么分類器性能會因數據不平衡而受到影響。因此,在構建分類器之前,需要對類別不平衡問題進行處理[8]。


(2)
式中,w0、w1分別為類別-1和類別1的樣本權重;N0、N1分別為類別-1和類別1的樣本數。
將N0=19 527、N1=80 473代入式(2),得w0≈2.56e-5、w1≈6.21e-6。
根據穩定性可將分類算法分為穩定和不穩定分類算法兩類。其中,穩定分類算法是指當訓練集發生較小變化時,訓練所得分類器不會發生較大變化。不穩定分類算法是指當訓練集發生較小變化時,訓練所得分類器會發生明顯變化。常見的分類算法中支持向量機、k最近鄰法屬于穩定分類算法,決策樹和神經網絡屬于不穩定分類算法[9]。為了保證基分類器集合的多樣性,AdaBoost集成學習中通常選用不穩定分類算法,另外考慮到決策樹相對神經網絡具有可解釋性的優勢,本文在后續集成分類器的構建過程中均采用Weka中的錯誤率降低剪枝決策樹REPTree作為基分類算法[10]。
下面基于P2數據集[11]進行實驗,驗證REPTree的不穩定性和剪枝技術的重要性。P2問題是個二分類問題,兩個類分別定義在由多項式和三角函數分割開的多個決策區域上,這些函數定義如下:
(3)
如圖1(a)所示,類別1由五個區域組成,類別2由三個區域組成,兩個類別對應的區域面積近似相等。生成一個包含900個樣本的原始數據集,其中類別1包含452個樣本,類別2包含448個樣本。將原始數據集隨機劃分為等大的兩部分,分別記為訓練集和測試集。在訓練集中添加15%類別噪聲數據,添加噪聲后的數據集如圖1(b)所示。

圖1 P2問題
基于添加噪聲后的訓練集,通過有放回采樣生成4個等大小但不相同的子訓練集;利用這些子訓練集,訓練出4個未剪枝的決策樹分類器和4個REPTree分類器,并基于測試集分別評估它們的泛化分類錯誤率。8個決策樹的決策邊界以及分類錯誤率如圖2、圖3所示。可見無論是否剪枝,基于不同訓練子集生成的決策樹的分類邊界都有明顯差異,證明了決策樹分類算法的不穩定性。對比圖2和圖3可以發現,未剪枝決策樹的分類錯誤率都高于對應的REPTree的分類錯誤率,說明通過剪枝的確能提升決策樹的泛化能力。另外,當訓練集存在噪聲時,訓練所得的未剪枝決策樹的決策邊界會出現多個“孤島”,相比之下REPTree的決策邊界與真實邊界的偏差較小,對噪聲表現出更強的魯棒性。綜上所述,本文選取剪枝REPTree作為基分類器。

圖2 未剪枝決策樹分類邊界和錯誤率

圖3 REPTree的分類邊界和錯誤率
AdaBoost是boosting算法的改進,全稱是自適應增強算法,其自適應體現在:前一個基分類器錯誤分類的樣本權重會增大,而正確分類的樣本的權重會減小,加權后的新樣本繼續用來訓練下一個基分類器。同時,在每一輪迭代中,加入一個新的弱分類器,直到達到某個預定的足夠小的錯誤率或達到預先指定的最大迭代次數,才通過加權集成確定最終的強分類器[12]。
總體上,AdaBoost集成主要分為3步:1)初始化樣本集權重;2)自適應訓練多個弱分類器;3)將多個弱分類器集成為強分類器。整個建模過程如圖4所示。

圖4 AdaBoost示意圖
AdaBoost的算法流程如下:
1)按照上文的方法初始化訓練數據的權重分布,此時
D1=(w1,1,w1,1,…,w1,N0,w1,N0+1,…,w1,N)=
(w0,w0,…,w0,w1,…,w1)
(4)
式中,wt,i為第t次迭代時第i個樣本的權重;w0≈2.56e-5、w1≈6.21e-6。
2)進行迭代t=1,2,…,T
① 利用權重分布為Dt的樣本集訓練得弱分類器ht,并計算ht的再代入分類錯誤率et:

(5)
式中,ht(xi)為ht在樣本xi的預測類標簽;yt為樣本xi的真實類標簽。
② 計算ht在最終集成分類器中所占權重at:
(6)
③ 更新訓練樣本集的權重分布Dt+1:

(7)
式中,Zt為歸一化常數。
3)將T個弱分類器按照權重at集成為一個強分類器:
(8)
式中,sign(·)為符號函數。
基于離線仿真數據進行誘餌干擾效果實時預測有兩種思路,一種是直接存儲數據,通過查詢確定結果;另一種是存儲從數據挖掘出的數學模型,利用模型進行預測。第一種思路,受限于存儲空間和泛化能力,很難得到實際應用,本文所采用的是第二種思路。本文實驗主要包括三方面內容:首先,研究迭代次數AdaBoost分類性能的影響;然后,通過與常用機器學習算法對比驗證AdaBoost的有效性;最后,在保證訓練誤差為0的前提下,使模型盡可能精簡,確定AdaBoost的參數,構建最終的預測模型。實驗在IntelliJ IDEA平臺上利用Java調用Weka API混合編程實現。
AdaBoost集成的基分類器個數取決于迭代次數T,因此有必要研究迭代次數對AdaBoost分類性能的影響。基于離線仿真數據集進行5折交叉校驗,研究訓練誤差和測試誤差隨迭代次數T的變化。具體操作是,將原始數據集隨機分為等大的5份,輪流將其中4份作為訓練集,剩下1份作為測試集,每輪得到一組訓練誤差和測試誤差,取5次預測結果的均值作為模型預測效果的估值。實驗中將REPTree設置為剪枝、不限層數,其余參數采用Weka默認值。實驗結果如圖5所示。

圖5 迭代次數T對分類正確率Pc的影響
由圖5可見,隨著迭代次數即基分類器個數的增加,AdaBoost集成模型在訓練集和測試集上的分類正確率,總體上都呈現出先迅速上升后趨于穩定的變化趨勢。當基分類器個數達到10個時,集成模型在訓練集上的分類正確率達到100%,隨后一直保持100%不變;集成模型在測試集上的分類正確率也不再有明顯變化,上下稍有波動趨于穩定。綜合考慮集成模型在測試集和訓練集上的分類性能,本文取AdaBoost得迭代次數為10,即AdaBoost由10個REPTree集成得到。
將AdaBoost與典型的分類算法k最近鄰(kNearest Neighbor,kNN)、支持向量機(Support Vector Machine,SVM),典型集成算法Bagging以及單個REPTree進行對比實驗,實驗中的k取3,Bagging與AdaBoost均以10個剪枝REPTree作為基分類器,其余參數采用weka中的默認設置。進行10折交叉校驗實驗,利用測試正確率衡量算法的泛化能力,結果如圖6所示。可見,SVM的泛化能力明顯不及另外4種算法,因此重點觀察另外4種算法的實驗結果,如圖7所示。

圖6 5種算法的對比實驗結果

圖7 4種算法的對比實驗結果
由圖6和圖7可見,就5種算法的泛化能力而言,總體上AdaBoost>Bagging>REPTree>kNN>SVM,另外5種算法10折交叉校驗的平均分類正確率99.879%(AdaBoost)>99.836%(Bagging)>99.799%(REPTree)>99.680%(kNN)>96.473%(SVM)進一步驗證了AdaBoost的泛化能力最強。
在上文中確定了AdaBoost的基分類器個數為10,同時要求REPTree采取剪枝策略,但對各REPTree的層數并沒有限制。REPTree的層數是影響AdaBoost集成預測效率的重要因素,同時層數過多也會造成過擬合影響集成模型的泛化能力,因此在保證分類正確率的前提下應盡可能減少REPTree的層數。基于離線仿真數據集進行5折交叉校驗,研究訓練誤差和測試誤差隨REPTree最大深度D的變化,實驗結果如圖8所示。

圖8 REPTree最大深度D對分類正確率Pc的影響
由圖8可見,當基分類器的最大深度達到10時,集成模型在訓練集上的分類正確率趨于100%,并保持穩定;集成模型在測試集上的分類正確率也趨于穩定。因此本文取REPTree最大深度為10。
綜上所述,本文AdaBoost模型的最終參數為:以最大深度為10的剪枝REPTree作為基分類器,基分類器個數為10。基于上述參數,在離線仿真數據全集上訓練得到最終的AdaBoost模型,用于潛射誘餌魚雷干擾效果的預測。
本文采用AdaBoost集成學習將潛射誘餌魚雷干擾效果預測問題轉化為典型的二分類問題,以本艇、誘餌和魚雷的相對態勢作為分類特征,通過離線仿真生成訓練數據集,以REPTree作為基分類器,構建了集成預測模型。通過與Bagging、REPTree、Knn、SVM這4種機器學習算法對比,驗證了AdaBoost算法的有效性。研究了迭代次數和決策樹的最大深度對AdaBoost分類性能的影響,實驗結果表明迭代次數和決策樹最大深度都取10可以兼顧效率和泛化能力。本文的決策問題雖然只是潛艇作戰指揮決策的冰山一角,但集成學習在該問題上的適應性可以推知機器學習等智能算法在潛艇作戰智能輔助決策領域的廣闊前景。