蔣 華,蔡 晨,王慧嬌,王 鑫,
(1.桂林電子科技大學(xué) 計(jì)算機(jī)信息與安全學(xué)院,廣西 桂林 541004;2.桂林電子科技大學(xué) 海洋工程學(xué)院,廣西 桂林 541004)
由于地球資源不斷地消耗,世界各國(guó)對(duì)海洋資源日漸重視[1]。水下無(wú)線傳感器網(wǎng)絡(luò)(UWSN,underwater wireless sensor networks)在環(huán)境監(jiān)測(cè)、災(zāi)難預(yù)報(bào)、軍事防御等方面都具有重要的作用,而以上都需要建立在知道精確節(jié)點(diǎn)位置信息的基礎(chǔ)之上[2]。但水下環(huán)境的復(fù)雜性給水下無(wú)線傳感器網(wǎng)絡(luò)定位帶來(lái)了很多挑戰(zhàn)[3]。因此水下節(jié)點(diǎn)定位成為了一個(gè)亟需解決的問題。
近年研究人員與科研機(jī)構(gòu)提出了許多新的節(jié)點(diǎn)定位算法。金磊磊[4]等基于傳統(tǒng)水下測(cè)距定位算法,利用最小二乘法提出適用于UWSN的多模態(tài)信息融合定位算法,有效提高節(jié)點(diǎn)定位精度。Ezzati[5]等基于無(wú)線傳感器網(wǎng)絡(luò)中的接收信號(hào)強(qiáng)度(RSSI),利用深度學(xué)習(xí)、極限學(xué)習(xí)機(jī)和自動(dòng)編碼器高級(jí)提取的特征來(lái)提高定位性能,可以顯著提升節(jié)點(diǎn)定位精度。吳艷玲[6]提出一種根據(jù)鄰居節(jié)點(diǎn)局部網(wǎng)絡(luò)塊的節(jié)點(diǎn)定位算法,與機(jī)器學(xué)習(xí)領(lǐng)域中的降維方法相結(jié)合有效解決無(wú)線傳感器網(wǎng)絡(luò)在錨節(jié)點(diǎn)密度低下定位精度低的問題。朱芳[7]等提出了基于快速支持向量機(jī)的大規(guī)模定位算法,通過引入相似性度量來(lái)構(gòu)造最小跨度,分類速度明顯提高,且有效地解決了邊界問題和覆蓋孔問題。毛科技[8]等提出一種基于支持向量機(jī)“一對(duì)一”節(jié)點(diǎn)定位算法,通過引入分類思想來(lái)解決節(jié)點(diǎn)稀疏環(huán)境下的節(jié)點(diǎn)定位。這些算法均在某一方面提高了在未知節(jié)點(diǎn)的定位精度,但算法整體缺乏魯棒性和對(duì)錨節(jié)點(diǎn)較少情況下定位精度的考慮。
針對(duì)目前已有的機(jī)器學(xué)習(xí)定位算法,提出基于改進(jìn)加權(quán)最小二乘支持向量機(jī)的水下三維節(jié)點(diǎn)定位算法(WSTA,underwater 3D node location algorithm based on improved weighted least squares support vector machine)。WSTA算法以加權(quán)最小二乘支持向量機(jī)為基礎(chǔ),錨節(jié)點(diǎn)與水下空間立方體網(wǎng)格頂點(diǎn)之間的距離向量為訓(xùn)練集,通過改進(jìn)的多類別模式識(shí)別方法訓(xùn)練分類模型。將未知節(jié)點(diǎn)到錨節(jié)點(diǎn)的距離向量作為測(cè)試集預(yù)測(cè)節(jié)點(diǎn)坐標(biāo)類別,最終以立方體網(wǎng)格的質(zhì)心作為未知節(jié)點(diǎn)的預(yù)測(cè)坐標(biāo)。
支持向量機(jī)[9](SVM,support vector machine)是由統(tǒng)計(jì)學(xué)習(xí)理論發(fā)展而來(lái),可用于解決有效樣本學(xué)習(xí)問題,受到了越來(lái)越廣泛的關(guān)注。加權(quán)最小二乘支持向量機(jī)[10]定位算法是由SVM衍生的一種無(wú)線傳感器網(wǎng)絡(luò)的定位算法。這種算法求解是線性方程的求解,計(jì)算量小,通訊開銷較小可以適用于水下無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)定位。
將原SVM的不等式約束問題轉(zhuǎn)化為等式約束:
s.t.vk=wTφ(xk)+b+ek,k=1,…,N
(1)
其中:φ(xk)為非線性映射函數(shù);b為偏差項(xiàng);w為權(quán)重;ek為隨機(jī)誤差;γ為正則化參數(shù)。
由于LS-SVM以二次損失函數(shù)作為經(jīng)驗(yàn)風(fēng)險(xiǎn),這會(huì)導(dǎo)致模型對(duì)噪聲特別敏感。因此將誤差變量ek=ak/γ引入權(quán)值μk。
構(gòu)建拉格朗日函數(shù)如(2)所示:
(2)
根據(jù)KKT條件,將L(w,b,e,a)分別對(duì)w,b,e,a求偏導(dǎo),由此:
(3)
將式(3)代入式(2)中,消去w和ek,可得矩陣等式(4):
(4)
其中:Vγ為對(duì)角矩陣:
(5)
權(quán)值μk是根據(jù)誤差變量ek=ak/γ來(lái)確定。
(6)
(7)
其中:IQP是ek的25%與75%分點(diǎn)之間的間距,依照Mercer定理,有映射φ及核函數(shù):
K(xk,xn)=φ(xk)Tφ(xN)
(8)
得出相應(yīng)的判別函數(shù)為:
(9)
其中:a與b是通過式(4)計(jì)算所得。
由此可見,權(quán)值的引入增加了算法的魯棒性與稀疏性,且計(jì)算量并沒有增加,十分適合水下節(jié)點(diǎn)定位。
2.2.1 訓(xùn)練集準(zhǔn)備階段
假定錨節(jié)點(diǎn)Si(i=1,2,…,k)到所有劃分立方體網(wǎng)格頂點(diǎn)Kj(j=1,2,…,l)的距離設(shè)定為hij(Si,Kj),則錨節(jié)點(diǎn)Si到其他所有立方體網(wǎng)格頂點(diǎn)的距離可以組成距離向量:
di[hi1(Si,K1),hi2(Si,K2),…,hij(Si,Kj)]
對(duì)于水下三維環(huán)境節(jié)點(diǎn)坐標(biāo)求解,需要對(duì)3個(gè)維度上的坐標(biāo)進(jìn)行分別求取。因此以水下環(huán)境為基礎(chǔ)建立坐標(biāo)軸,將X、Y、Z方向上的三維空間等分為M個(gè)類別,因此X軸上存在M個(gè)分類{cx0,cx1,…,cxM-1}。假定每一個(gè)分類中包含該分類上的所有節(jié)點(diǎn)坐標(biāo)。同理,Y、Z上同樣存在M個(gè)類別{cy0,cy1,…,cyM-1}、{cz0,cz1,…,czM-1}。此時(shí)水下無(wú)線傳感器網(wǎng)絡(luò)已經(jīng)被我們分解成若干個(gè)立方體,每一個(gè)立方體便代表著算法中的一個(gè)類別,錨節(jié)點(diǎn)的類別記為[cxq,cyt,czv]。
錨節(jié)點(diǎn)的距離向量di與坐標(biāo)類別構(gòu)成訓(xùn)練集:
Tx={(di,cxq)|i=1,2,…,k}
Ty={(di,cyt)|i=1,2,…,k}
Tz={(di,czv)|i=1,2,…,k}
2.2.2 核函數(shù)選取
支持向量機(jī)算法均需要合適的核函數(shù)。本文采用目前應(yīng)用較多的高斯核函數(shù),又名徑向基(RBF,radial basis function)函數(shù)作為核函數(shù):
(10)
RBF核函數(shù)可用于線性不可分的情況??蓪颖居成涞礁呔S的空間,且具有較寬的收斂域以及唯一最佳逼近的特征。因此,RBF函數(shù)針對(duì)不同維度與大小的樣本均可實(shí)現(xiàn)較好的分類效果。
2.2.3 訓(xùn)練階段
由公式(9)可知判別函數(shù)y(x)可用于判斷m1、m2兩類樣本,若y(x)>0,則判x屬于m1類,記m1類一票,否則記錄m2為一票,最后根據(jù)樣本得票多的一方作為分類結(jié)果。但由于節(jié)點(diǎn)分類是一個(gè)多分類問題,對(duì)于多分類的支持向量機(jī),則需要多個(gè)分類器。傳統(tǒng)的“一對(duì)一”分類方式需要每?jī)蓚€(gè)類別的數(shù)據(jù)訓(xùn)練出一個(gè)二分類器,這樣區(qū)分M個(gè)類別需要的分類器個(gè)數(shù)為:
P=M(M-1)/2
(11)
為降低運(yùn)算量,對(duì)錨節(jié)點(diǎn)訓(xùn)練集進(jìn)行判別后,這里使用改進(jìn)的多類別模式識(shí)別方法[11]進(jìn)行分類。通過這種方法也對(duì)類別進(jìn)行多輪的篩選比較,但相比“一對(duì)一”分類方法,該方法每一輪并非將所有類別都進(jìn)行比較。而是進(jìn)行單循環(huán)相鄰比較,每輪中均去掉得票最低的類別,留下的類別才能參加下輪比較。
如圖2(a),相鄰的類別進(jìn)行比較。設(shè)C為得票最少的類別,如圖2(b),在第二輪只將B與D進(jìn)行比較訓(xùn)練,其余類別則繼續(xù)沿用上一輪的結(jié)果。在各個(gè)類別兩輪票數(shù)相加后,假設(shè)B為第二輪得票最少的類別。如圖2(c)所示,去掉B后將A與D作為比較,其他比較仍然沿用原有的結(jié)果。
若第三輪本輪累計(jì)統(tǒng)計(jì)票數(shù)后D被淘汰,如圖2(d),便無(wú)需再進(jìn)行新的比較。只需將之前A與E比較重得票數(shù)高的類別作為分類結(jié)果。
由此可知,若單個(gè)坐標(biāo)軸方向上有M個(gè)類別,除去第一輪需要M次比較,以后每輪僅需一次比較。且由于最后一輪可根據(jù)前幾輪投票結(jié)果進(jìn)行判定,最終使用多類別模式識(shí)別的分類方法判斷未知節(jié)點(diǎn)H的類別需要比較的次數(shù)為:
P=2M-3
(12)
由此可見,M的值越大,相比“一對(duì)一”投票的分類過程則會(huì)愈加簡(jiǎn)便。且改進(jìn)的多類別模式識(shí)別的分類方法在不降低精度的情況下減少分類次數(shù),其結(jié)果可靠性更好,十分適用水下無(wú)線傳感器網(wǎng)絡(luò)的節(jié)點(diǎn)坐標(biāo)分類。
2.2.4 測(cè)試階段
根據(jù)2.2.3節(jié),所有錨節(jié)點(diǎn)訓(xùn)練樣本分類完成且對(duì)水下網(wǎng)格類別進(jìn)行編號(hào),分類模型即構(gòu)造成功。
根據(jù)訓(xùn)練的模型,將測(cè)試集帶入進(jìn)行預(yù)測(cè)未知節(jié)點(diǎn)的類別編號(hào),并將該類別的質(zhì)心作為未知節(jié)點(diǎn)的坐標(biāo),完成定位。
根據(jù)多類別模式識(shí)別的分類方法對(duì)未知節(jié)點(diǎn)進(jìn)行分類,判斷未定位節(jié)點(diǎn)的分類信息,從而計(jì)算未知節(jié)點(diǎn)的坐標(biāo)信息?;诟倪M(jìn)加權(quán)最小二乘支持向量機(jī)的水下三維節(jié)點(diǎn)定位算法(WSTA算法)的核心定位流程如下:
Step1:將水下立方體環(huán)境分割為等大立方體網(wǎng)格,通過RSSI測(cè)距算法在每個(gè)錨節(jié)點(diǎn)內(nèi)生成到所有立方體頂點(diǎn)的距離向量,生成訓(xùn)練集。
Step2:在水下環(huán)境上建立三維坐標(biāo)軸,并對(duì)坐標(biāo)軸上的每一格進(jìn)行分類。以X軸為例,設(shè)該維度上存在M個(gè)分類。其中每一分類包含X軸上,坐標(biāo)在[q×D/M,(q+1)×D/M]的所有錨節(jié)點(diǎn),D為區(qū)域邊長(zhǎng)。同理Y軸與Z軸上的單一分類均包含Y、Z坐標(biāo)在該分類的所有節(jié)點(diǎn)。記節(jié)點(diǎn)的分類類別為[cxq,cyt,czv]。
Step3:分別在3個(gè)維度上利用錨節(jié)點(diǎn)的距離向量作為訓(xùn)練集來(lái)訓(xùn)練分類器。并使用改進(jìn)的多類別模式識(shí)別的分類方法進(jìn)行分類。
Step4:根據(jù)訓(xùn)練得到的分類器,將未知節(jié)點(diǎn)與所有錨節(jié)點(diǎn)之間的距離向量作為測(cè)試集預(yù)測(cè)未知節(jié)點(diǎn)類別。
Step5:可得未知節(jié)點(diǎn)類別[cxq,cyt,czv],因此即可判斷未知節(jié)點(diǎn)的坐標(biāo)范圍:[q×D/M,(q+1)×D/M]×[t×D/M,(t+1)×D/M]×[v×D/M,(v+1)×D/M](q,t,v∈[0,M-1])。計(jì)算該網(wǎng)格質(zhì)心坐標(biāo),將坐標(biāo)作為未知節(jié)點(diǎn)坐標(biāo):((q+2-1)×D/M,(t+2-1)×D/M,(v+2-1)×D/M)。
WSTA算法定位流程如圖3所示。
實(shí)驗(yàn)仿真選擇在Windows 10 PC機(jī)上通過MATLAB工具實(shí)現(xiàn)基于改進(jìn)加權(quán)最小二乘支持向量機(jī)的水下無(wú)線傳感器網(wǎng)絡(luò)定位方法。對(duì)本文的WSTA算法與基于SVM的定位算法[7]和經(jīng)典RSSI定位算法的平均誤差率進(jìn)行比較,以及劃分立方體網(wǎng)格寬度t對(duì)WSTA算法定位誤差的影響。
仿真區(qū)域?yàn)檫呴L(zhǎng)分別為80 m、100 m、120 m、140 m、160 m、180 m的正方形區(qū)域,隨機(jī)部署50個(gè)傳感器節(jié)點(diǎn),節(jié)點(diǎn)通信距離R為30 m,網(wǎng)絡(luò)通信模型為Regular Model,實(shí)驗(yàn)參數(shù)如表1所示。
表1 實(shí)驗(yàn)參數(shù)設(shè)置
設(shè)節(jié)點(diǎn)預(yù)測(cè)坐標(biāo)為(x′,y′,z′),節(jié)點(diǎn)的實(shí)際坐標(biāo)為(x,y,z)。因此節(jié)點(diǎn)定位誤差可使用如下公式進(jìn)行計(jì)算:
(13)
網(wǎng)格寬度是影響機(jī)器學(xué)習(xí)定位算法的一大因素。圖4展示了在90 M的網(wǎng)絡(luò)范圍內(nèi)WSTA算法和SVM定位算法在不同網(wǎng)格寬度下的平均定位誤差的比較。由仿真實(shí)驗(yàn)結(jié)果可知,在傳感器稀薄的水下無(wú)線傳感器網(wǎng)絡(luò)中,隨著網(wǎng)格寬度的逐漸增大,WSTA算法和SVM定位算法的平均定位誤差均逐漸增大。但在t=12 M時(shí),SVM定位算法的平均定位誤差已經(jīng)將近30%,增長(zhǎng)急速。WSTA算法則較為穩(wěn)定,且整體定位精度優(yōu)于SVM定位算法。
4.2.1 網(wǎng)絡(luò)范圍對(duì)平均定位誤差的影響
圖5是RSSI定位算法、SVM定位算法、WSTA算法3種定位算法的平均定位誤差受網(wǎng)絡(luò)區(qū)域邊長(zhǎng)的影響。在范圍廣、節(jié)點(diǎn)稀疏的水下無(wú)線傳感器網(wǎng)絡(luò)中,RSSI定位算法在80~120 m的范圍內(nèi)較為平緩,但隨著區(qū)域邊長(zhǎng)變大,定位誤差急劇增加。SVM定位算法定位誤差增長(zhǎng)較大,對(duì)大范圍環(huán)境適應(yīng)性較差。WSTA定位算法變化較為平緩,對(duì)于范圍較大的區(qū)域也能保持較好且穩(wěn)定的定位精度,魯棒性較好。
4.2.2 網(wǎng)絡(luò)范圍對(duì)平均定位誤差的影響
圖6是RSSI定位算法、SVM定位算法、WSTA算法是3種定位算法的在不同測(cè)距誤差下的定位誤差的變化情況。在傳感器節(jié)點(diǎn)稀疏的水下無(wú)線傳感器網(wǎng)絡(luò)中,WSTA算法的節(jié)點(diǎn)定位率最高,且節(jié)點(diǎn)定位率穩(wěn)定,優(yōu)于其他兩種定位算法。在測(cè)距誤差為0.05時(shí),SVM定位算法與WSTA算法較為接近,但隨著測(cè)距誤差的增加,平均定位誤差急劇增加到最高。WSTA算法在測(cè)距誤差0.2時(shí)平均定位誤差逐漸趨于平穩(wěn),受誤差影響較小。
4.2.3 錨節(jié)點(diǎn)比例對(duì)平均定位誤差的影響
圖7是RSSI定位算法、SVM定位算法、WSTA算法3種定位算法的在不同錨節(jié)點(diǎn)比例時(shí)定位誤差的對(duì)比情況。在傳感器節(jié)點(diǎn)稀疏的水下無(wú)線傳感器網(wǎng)絡(luò)中,RSSI定位算法在錨節(jié)點(diǎn)比例5%時(shí),定位誤差最高。隨著錨節(jié)點(diǎn)比例的增加,定位精度急劇提高,逐漸接近于SVM定位算法。WSTA算法在錨節(jié)點(diǎn)比例較低時(shí),與SVM定位算法較為接近。在錨節(jié)點(diǎn)增長(zhǎng)到25%時(shí),定位誤差趨于穩(wěn)定,整體精度高于其他兩種算法。
在傳感器節(jié)點(diǎn)稀疏的水下無(wú)線傳感器網(wǎng)絡(luò)中,WSTA算法整體平均定位誤差低于SVM定位算法與RSSI定位算法。環(huán)境變化對(duì)WSTA算法精度影響較低,算法魯棒性高。因此,WSTA算法整體具有較好的定位性能。
本文基于改進(jìn)加權(quán)最小支持向量機(jī)提出一種水下三維定位算法。在該算法中,引入加權(quán)最小二乘支持向量機(jī)的同時(shí)通過改進(jìn)的多類別模式識(shí)別方法對(duì)節(jié)點(diǎn)進(jìn)行快速分類,提高定位精度與算法魯棒性并降低區(qū)域大小對(duì)定位精度的影響。將WATA算法與SVM定位算法、RSSI定位算法進(jìn)行仿真對(duì)比,結(jié)果證明WATA算法在水下傳感器定節(jié)點(diǎn)位中的確實(shí)具有較好的魯棒性,能夠有效提升水下節(jié)點(diǎn)定位的準(zhǔn)確性。