程國(guó)勝,周祥龍
(1.中國(guó)船舶重工集團(tuán)公司第七一○研究所,湖北 宜昌 443003;2.海軍潛艇學(xué)院,山東 青島 266003)
水下無(wú)人航行器(Unmanned Underwater Vehicle,簡(jiǎn)稱(chēng)UUV)在海洋工程裝備領(lǐng)域中的一個(gè)重要作用是對(duì)預(yù)定水域進(jìn)行警戒監(jiān)視,并對(duì)特定目標(biāo)進(jìn)行定位,這需要對(duì)目標(biāo)的運(yùn)動(dòng)要素進(jìn)行解算。在實(shí)際應(yīng)用過(guò)程中,由于受海洋環(huán)境的影響或者收到水文氣象等條件的影響,導(dǎo)致目標(biāo)方位信息的測(cè)量誤差和目標(biāo)的距離誤差,因此,在解算的過(guò)程中,經(jīng)常存在超正常誤差的現(xiàn)象。為了降低誤差,提高目標(biāo)運(yùn)動(dòng)要素解算的精度,通常會(huì)采用一系列的算法剔除嚴(yán)重偏離均值的采樣數(shù)據(jù),例如可以采用最常用的最小二乘估計(jì)原理,可以采用基于小波去噪算法[1]去除采樣數(shù)據(jù)中的白噪聲,可以采用應(yīng)用數(shù)理統(tǒng)計(jì)參數(shù)估計(jì)方法[2]估算出誤差模型,去掉異常數(shù)據(jù),提高估計(jì)精度。此外,研究人員還對(duì)不同的算法的誤差估計(jì)判別準(zhǔn)則進(jìn)行比較分析[3]綜合歸納,給出了應(yīng)用這些判別準(zhǔn)則的建議。還有一些其他目標(biāo)運(yùn)動(dòng)要素解算的方法[4-5]。這些方法能很好地解決一些具體情況,但是都需要構(gòu)造一個(gè)判別的方程,并對(duì)判別方程進(jìn)行反復(fù)修正參數(shù)后獲得較好效果,在實(shí)際應(yīng)用過(guò)程中受到一定約束。
本文則提出了將粒子群(PSO)算法作為BP網(wǎng)絡(luò)的學(xué)習(xí)機(jī)制,形成PSO-BP網(wǎng)絡(luò)算法,并將其應(yīng)用到目標(biāo)運(yùn)動(dòng)要素解算中。這種方法采用粒子群優(yōu)化算法作為BP網(wǎng)絡(luò)的學(xué)習(xí)算法,并將其應(yīng)用于BP網(wǎng)絡(luò)的權(quán)值優(yōu)化,使BP網(wǎng)絡(luò)算法精度更高,收斂速度更快,動(dòng)態(tài)估計(jì)采樣值的殘差矢量,提高運(yùn)動(dòng)要素估計(jì)的質(zhì)量,進(jìn)而提高運(yùn)動(dòng)要素的解算精度。具體算法將在下面詳細(xì)闡述。
神經(jīng)網(wǎng)絡(luò)算法是一種人工智能算法,是一種應(yīng)用于類(lèi)似大腦神經(jīng)突觸連接的結(jié)構(gòu)進(jìn)行信息處理的數(shù)學(xué)模型,主要應(yīng)用在非線(xiàn)性計(jì)算及模型預(yù)測(cè)等領(lǐng)域。神經(jīng)網(wǎng)絡(luò)算法由大量的簡(jiǎn)單基本神經(jīng)元相互聯(lián)接而成的自適應(yīng)非線(xiàn)性動(dòng)態(tài)系統(tǒng)。每個(gè)神經(jīng)元的結(jié)構(gòu)和功能比較簡(jiǎn)單,但大量神經(jīng)元組合產(chǎn)生的系統(tǒng)行為卻非常復(fù)雜,人們根據(jù)對(duì)神經(jīng)網(wǎng)絡(luò)算法的應(yīng)用不同,開(kāi)發(fā)了多種神經(jīng)網(wǎng)絡(luò)模型,例如BP網(wǎng)絡(luò)。BP網(wǎng)絡(luò)全稱(chēng)為Back-Propagation Network,即反向傳播網(wǎng)絡(luò),該網(wǎng)絡(luò)是一個(gè)前向多層網(wǎng)絡(luò),它利用誤差反向傳播算法對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,標(biāo)準(zhǔn)的BP網(wǎng)絡(luò)模型由輸入層、隱含層、輸出層組成。各層次的神經(jīng)元之間形成全互連接,各層次內(nèi)的神經(jīng)元之間沒(méi)有連接[6-7],如圖1所示。
對(duì)于BP模型的輸入層來(lái)說(shuō),其神經(jīng)元的輸出和輸入相同,即oi=ii,中間層隱含層和輸出層的神經(jīng)元的操作特性為
(1)
opj=fj(netpj)
(2)
式中:p表示當(dāng)前的輸入樣本;wji為從神經(jīng)元i到神經(jīng)元j的連接權(quán)值;opi為神經(jīng)元j的當(dāng)前輸入;opj為其輸出;fj為非線(xiàn)性可微非遞減函數(shù),一般取s型函數(shù),即:
fj(x)=1/(1+e-x)
(3)
對(duì)BP網(wǎng)絡(luò)進(jìn)行訓(xùn)練時(shí),首先要提供一組訓(xùn)練樣本,其中的每個(gè)樣本由輸入樣本和理想樣本輸出對(duì)組成。當(dāng)網(wǎng)絡(luò)的所有實(shí)際輸出與理想輸出一致時(shí),表明訓(xùn)練結(jié)束。否則,通過(guò)修正權(quán)值,使網(wǎng)絡(luò)的理想輸出與實(shí)際輸出一致。標(biāo)準(zhǔn)的BP算法沿著目標(biāo)函數(shù)下降最快的方向即負(fù)梯度方向來(lái)調(diào)整權(quán)值,其算法如下:
wk+1=wk-akδk
(4)
式中:wk是當(dāng)前的權(quán)重矢量;δk為當(dāng)前梯度;ak為學(xué)習(xí)速率。
從式(4)可以看出:網(wǎng)絡(luò)連接權(quán)值的修改完全依賴(lài)于梯度值,這種采用非線(xiàn)性梯度優(yōu)化算法,極易導(dǎo)致在調(diào)整權(quán)值中形成局部極小而得不到整體的優(yōu)化。同時(shí),采用這種方法學(xué)習(xí)次數(shù)比較多,因而收斂速度慢。為此本文采用了一種新的學(xué)習(xí)算法:粒子群優(yōu)化算法(Particle Swarm Optimization,簡(jiǎn)稱(chēng)PSO)。
在PSO中,每個(gè)優(yōu)化問(wèn)題的解都是搜索空間中的一只鳥(niǎo),稱(chēng)之為“粒子(Particle)”。所有粒子都有一個(gè)由被優(yōu)化的函數(shù)通過(guò)計(jì)算而決定的適應(yīng)度值(Fitness value),每個(gè)粒子還有一個(gè)速度(Velocity)決定它們飛翔的方向和距離,然后粒子們就追隨當(dāng)前的最優(yōu)粒子在解空間中搜索。PSO在優(yōu)化時(shí),首先要初始化,并賦值為一群隨機(jī)粒子,然后通過(guò)迭代找到最優(yōu)解。在每一次迭代中,粒子通過(guò)跟蹤2個(gè)最優(yōu)值來(lái)更新自己。第一個(gè)就是粒子自己找到的最優(yōu)解,這個(gè)解叫做個(gè)體極值pbest;另一個(gè)極值是整個(gè)種群目前找到的最優(yōu)解,這個(gè)極值是全局極值gbest。
設(shè)粒子群中的每個(gè)粒子在n空間中飛行,則Xi=(xi1,xi2,…,xin)為粒子i的當(dāng)前位置;pi-best=(pi1,pi2,…,pin)為粒子i所經(jīng)歷過(guò)的最好位置;gbest=(gi1,gi2,…,gin)為粒子群所經(jīng)歷過(guò)的最好位置;Vi=(vi1,vi2,…,vin)為粒子i的當(dāng)前飛行速度。
按照以上的定義,粒子群優(yōu)化算法方程為
vij(t+1)=vij(t)+c1r1j(t)(pij(t)-xij(t))+
c2r2j(t)(gj(t)-xij(t))
(5)
xij(t+1)=xij(t)+vij(t+1)
(6)
式中:j表示粒子的第j維;i表示第i個(gè)粒子;c1、c2為加速常數(shù);r1、r2為2個(gè)相互獨(dú)立的隨即函數(shù)。
將式(5)和(6)應(yīng)用到BP網(wǎng)絡(luò)的學(xué)習(xí)機(jī)制中,把BP網(wǎng)絡(luò)的各個(gè)神經(jīng)元之間的連接權(quán)值組合成為一個(gè)向量Wi=[w1,w2…wn],并把這個(gè)向量看成一個(gè)粒子,即Wi=Xi=[x1,x2,…xn],于是,通過(guò)隨機(jī)函數(shù)可以產(chǎn)生多個(gè)粒子X(jué),即產(chǎn)生多組BP網(wǎng)絡(luò)神經(jīng)元連接權(quán)值,并形成粒子群,該粒子群按照式(5)和(6)計(jì)算的飛行速度和飛行方向最終找到最優(yōu)的位置gbest,這個(gè)位置的坐標(biāo)即為該BP網(wǎng)絡(luò)結(jié)構(gòu)中最優(yōu)的連接權(quán)值。由于該方法選取所有粒子中最好的位置,因此其全局優(yōu)化能力更好,此外,由于多個(gè)粒子同時(shí)尋找最優(yōu)位置,所以采用這種方法比標(biāo)準(zhǔn)BP網(wǎng)絡(luò)訓(xùn)練算法具有更快的收斂速度[8]。其收斂速度對(duì)比圖如圖2、圖3所示。
圖2、圖3分別通過(guò)MATLAB語(yǔ)言對(duì)同一組輸入向量和目標(biāo)向量進(jìn)行仿真訓(xùn)練,其訓(xùn)練誤差均為0.01。圖2是采用BP網(wǎng)絡(luò)對(duì)目標(biāo)向量進(jìn)行訓(xùn)練的,當(dāng)誤差達(dá)到0.01時(shí),BP網(wǎng)絡(luò)用了30步,而到達(dá)相同精度的PSO-BP網(wǎng)絡(luò)則只用了10步,這說(shuō)明采用粒子群算法的BP網(wǎng)絡(luò),由于在訓(xùn)練的過(guò)程中是一群粒子同時(shí)在尋找最優(yōu)權(quán)值,所以他的收斂速度要比采用梯度下降的BP標(biāo)準(zhǔn)網(wǎng)絡(luò)訓(xùn)練算法快,而且初始化網(wǎng)絡(luò)時(shí),設(shè)定的粒子數(shù)越多其收斂速度也越快。
在闡述PSO-BP神經(jīng)網(wǎng)絡(luò)在解算目標(biāo)運(yùn)動(dòng)要素之前先介紹一下最常用的最小二乘法解算運(yùn)動(dòng)要素,以便比較采用神經(jīng)網(wǎng)絡(luò)的優(yōu)勢(shì)。
首先介紹最小二乘法的基本算法,假設(shè)需要將觀測(cè)到的數(shù)據(jù)進(jìn)行曲線(xiàn)擬合,并采用n階擬合函數(shù)描述該曲線(xiàn):
f(x)=a0+a1+a2x2+…+anxn
式中a0,a1,a2,an為上式函數(shù)的待定參數(shù),如果通過(guò)測(cè)定得到一組測(cè)量數(shù)據(jù)并形成如下矩陣
并將上述矩陣代入函數(shù)中,可以得到擬合后的函數(shù)值與測(cè)量值的誤差,采用矢量表示為
E=∑e2=∑(f(xi)-yi)2
根據(jù)上式的E值尋找出最小值,采用導(dǎo)數(shù)理論,對(duì)其求導(dǎo),得到導(dǎo)數(shù)方程將系數(shù)計(jì)算出即可[9-10]。這是最小二乘法的基本原理。該方法在觀測(cè)數(shù)據(jù)存在較大誤差,同時(shí)擬合曲線(xiàn)自身也存在誤差的情況下,不能及時(shí)去除大偏差數(shù)據(jù),因此,存在一定的約束性。
下面將闡述PSO-BP神經(jīng)網(wǎng)絡(luò)算法在運(yùn)動(dòng)要素解算中的應(yīng)用,假設(shè)觀測(cè)設(shè)備的初始位置為A點(diǎn),初始方位133°,初始速度4 kn,被觀測(cè)運(yùn)動(dòng)目標(biāo)為B,目標(biāo)B相對(duì)于A的初始方位130°,目標(biāo)B的航行方向?yàn)?50°,航行速度為18 kn,A點(diǎn)與B點(diǎn)的初始距離為8.6 kn,3 min后進(jìn)行第一次機(jī)動(dòng)以獲得不同方位的目標(biāo)信息,機(jī)動(dòng)后的航向?yàn)?0°,速度為4 kn,大約在5 min后再進(jìn)行一次機(jī)動(dòng)以獲得不同方位的目標(biāo)信息,第二次機(jī)動(dòng)后的航向?yàn)?50°,航速為4 kn,觀測(cè)點(diǎn)A和被觀測(cè)目標(biāo)B的初始位置關(guān)系如圖4所示。
對(duì)目標(biāo)運(yùn)動(dòng)要素解算的前提條件是對(duì)各個(gè)模型進(jìn)行初始化和設(shè)定初始參數(shù)。BP網(wǎng)絡(luò)初始化時(shí)要將其參數(shù)歸一化,使得變量參數(shù)統(tǒng)一到[-1,1,]這樣便于加快BP網(wǎng)絡(luò)的計(jì)算速度,待BP網(wǎng)絡(luò)收斂完成后將變量參數(shù)反歸一化處理,將數(shù)據(jù)還原。在測(cè)試中,通常取c1=c2=2,ω=0.8,粒子群中,每個(gè)粒子飛行位置的極限值ximin、ximax分別為變量的極限值,最大飛行速度vmax為參量的最大距離,據(jù)此,該神經(jīng)網(wǎng)絡(luò)的初始值參數(shù)如表1所示。
圖5-7為采用神經(jīng)網(wǎng)絡(luò)算法計(jì)算的運(yùn)動(dòng)目標(biāo)要素解算結(jié)果。圖5是將歷史數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,訓(xùn)練的目標(biāo)精度為誤差期望值不大于0.2訓(xùn),最大迭代次數(shù)不大于1 000,為了簡(jiǎn)化轉(zhuǎn)換計(jì)算量,將迭代頻率設(shè)定為1 Hz,從圖5中可以看出,大約迭代400次后,方位誤差即可以達(dá)到0.2方以?xún)?nèi),滿(mǎn)足要求。圖6為采用歷史數(shù)據(jù)訓(xùn)練過(guò)程中,PSO-BP網(wǎng)絡(luò)的訓(xùn)練曲線(xiàn),從圖6中可以看出,當(dāng)?shù)?00步時(shí),收斂速度加快,并在迭代350步后,誤差達(dá)到期望要求,并趨于平穩(wěn)。圖7為利用PSO-BP算法解算目標(biāo)運(yùn)動(dòng)要素過(guò)程中,對(duì)目標(biāo)方位的計(jì)算結(jié)果,從圖7中可以看出,在570 s時(shí)目標(biāo)方位計(jì)算精度滿(mǎn)足期望要求,并在700 s時(shí),目標(biāo)方位誤差達(dá)到0.128位,具有良好的收斂效果。
本文根據(jù)被測(cè)運(yùn)動(dòng)目標(biāo)的運(yùn)動(dòng)要素解算的特點(diǎn),提出了采用BP神經(jīng)網(wǎng)絡(luò)對(duì)被測(cè)運(yùn)動(dòng)目標(biāo)的運(yùn)動(dòng)要素進(jìn)行解算,同時(shí)為了提高BP網(wǎng)絡(luò)的計(jì)算精度和速度,將PSO算法引入,作為修正BP網(wǎng)絡(luò)權(quán)值的傳遞函數(shù),從試驗(yàn)中可以看出,采用PSO-BP神經(jīng)網(wǎng)絡(luò)算法的計(jì)算精度可以達(dá)到0.128°,相比傳統(tǒng)方法可以提高計(jì)算精度和計(jì)算速度,并為后續(xù)的運(yùn)動(dòng)目標(biāo)運(yùn)動(dòng)要素解算提供了技術(shù)支撐。