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

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


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

圖1 P2問(wèn)題
基于添加噪聲后的訓(xùn)練集,通過(guò)有放回采樣生成4個(gè)等大小但不相同的子訓(xùn)練集;利用這些子訓(xùn)練集,訓(xùn)練出4個(gè)未剪枝的決策樹(shù)分類(lèi)器和4個(gè)REPTree分類(lèi)器,并基于測(cè)試集分別評(píng)估它們的泛化分類(lèi)錯(cuò)誤率。8個(gè)決策樹(shù)的決策邊界以及分類(lèi)錯(cuò)誤率如圖2、圖3所示??梢?jiàn)無(wú)論是否剪枝,基于不同訓(xùn)練子集生成的決策樹(shù)的分類(lèi)邊界都有明顯差異,證明了決策樹(shù)分類(lèi)算法的不穩(wěn)定性。對(duì)比圖2和圖3可以發(fā)現(xiàn),未剪枝決策樹(shù)的分類(lèi)錯(cuò)誤率都高于對(duì)應(yīng)的REPTree的分類(lèi)錯(cuò)誤率,說(shuō)明通過(guò)剪枝的確能提升決策樹(shù)的泛化能力。另外,當(dāng)訓(xùn)練集存在噪聲時(shí),訓(xùn)練所得的未剪枝決策樹(shù)的決策邊界會(huì)出現(xiàn)多個(gè)“孤島”,相比之下REPTree的決策邊界與真實(shí)邊界的偏差較小,對(duì)噪聲表現(xiàn)出更強(qiáng)的魯棒性。綜上所述,本文選取剪枝REPTree作為基分類(lèi)器。

圖2 未剪枝決策樹(shù)分類(lèi)邊界和錯(cuò)誤率

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

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

(5)
式中,ht(xi)為ht在樣本xi的預(yù)測(cè)類(lèi)標(biāo)簽;yt為樣本xi的真實(shí)類(lèi)標(biāo)簽。
② 計(jì)算ht在最終集成分類(lèi)器中所占權(quán)重at:
(6)
③ 更新訓(xùn)練樣本集的權(quán)重分布Dt+1:

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

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

圖6 5種算法的對(duì)比實(shí)驗(yàn)結(jié)果

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

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