王 軍, 張志馳
(沈陽化工大學(xué) 計算機科學(xué)與技術(shù)學(xué)院, 遼寧 沈陽 110142)
無線傳感器網(wǎng)絡(luò)(wireless sensor networks,WSN)以傳感器為傳輸節(jié)點,將其大量分布在所要監(jiān)控的區(qū)域內(nèi),對信息進行采集、傳輸和處理,形成一個智能型綜合網(wǎng)絡(luò)信息系統(tǒng)[1].近年來,隨著硬件設(shè)備性能的提升,已有部分裝置應(yīng)用在WSN上,用于工業(yè)和農(nóng)業(yè)生產(chǎn),并且在環(huán)境監(jiān)測、醫(yī)療護理、目標跟蹤等領(lǐng)域迅猛發(fā)展[2].而WSN節(jié)點能量有限,不能隨時更換電池,如何高效地減少能耗、延長網(wǎng)絡(luò)生命周期成為其最主要的研究目標之一[3].
數(shù)據(jù)融合技術(shù)通過特殊的信息獲取手段,對收集到的數(shù)據(jù)進行傳輸、分類、匯總、再生成,最終達到對各領(lǐng)域應(yīng)用實現(xiàn)審核、查詢以及輔助決斷[4].利用數(shù)據(jù)融合技術(shù)可以對冗余數(shù)據(jù)進行篩除,降低無效信息量,節(jié)約網(wǎng)絡(luò)傳輸能耗,提高數(shù)據(jù)的精準度和可信度[5],以此延長網(wǎng)絡(luò)生命周期.
有學(xué)者將BP神經(jīng)網(wǎng)絡(luò)模型引入WSN來處理數(shù)據(jù)融合問題[6].但是BP神經(jīng)網(wǎng)絡(luò)收斂速度慢,訓(xùn)練能力差,樣本依賴性高,在實際應(yīng)用中受到諸多因素影響.王華東等[7]采用蝙蝠算法對BP神經(jīng)網(wǎng)絡(luò)的模型結(jié)構(gòu)、參數(shù)和收斂速度進行優(yōu)化,提出了一種基于蝙蝠算法的在神經(jīng)網(wǎng)絡(luò)模型中的數(shù)據(jù)融合策略 (BPNN data fusion,BPDF),有效提高了節(jié)點存活率.黃廷輝等[8]設(shè)計了一種螢火蟲算法(firefly algorithm-BPNN,FA-BPNN),優(yōu)化了BP神經(jīng)網(wǎng)絡(luò)的求權(quán)值矩陣,在一定程度上提高了數(shù)據(jù)融合的效率.余修武等[9]提出了一種改進蟻群的BP神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)融合算法(information fusion algorithm based on improved ant colony optimization BP neural network in WSN,IFA-IACOBP),通過對蟻群算法啟發(fā)因子的改進,優(yōu)化了螞蟻下一跳節(jié)點選擇概率,對網(wǎng)絡(luò)生命周期有一定的延長.
在經(jīng)典的BP神經(jīng)網(wǎng)絡(luò)模型中,由于誤差函數(shù)本身的復(fù)雜性,導(dǎo)致網(wǎng)絡(luò)節(jié)點訓(xùn)練時間過長和震蕩現(xiàn)象的出現(xiàn).為了加快訓(xùn)練速度,降低感知節(jié)點傳輸?shù)臄?shù)據(jù)量,提高能量利用率,本文提出一種基于BP神經(jīng)網(wǎng)絡(luò)的WSN數(shù)據(jù)融合算法——ALR-BPDFA算法(adaptive learning rate back-propagation data fusion algorithm,ALR-BPDFA),對節(jié)點收集的冗余數(shù)據(jù)進行數(shù)據(jù)融合,減少傳輸能耗,從而延長網(wǎng)絡(luò)生命周期.
BP神經(jīng)網(wǎng)絡(luò)是一種多層前饋式網(wǎng)絡(luò),它的結(jié)構(gòu)主要包括輸入層、隱含層和輸出層.多層BP神經(jīng)網(wǎng)絡(luò)含有正向傳播和反向傳播兩個過程.通過正向傳播時,輸入信息從輸入層到隱含層逐層處理,并傳向輸出層,每一層神經(jīng)元的狀態(tài)只影響下一層神經(jīng)元的狀態(tài)[10];如果在輸出層不能得到期望輸出的結(jié)果,則進行反向傳播,將誤差信號沿著原來的連接通道返回,通過修改各層神經(jīng)元的權(quán)值,最終減小誤差.BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示.
圖1 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
相關(guān)研究已經(jīng)證明,只要隱含層節(jié)點數(shù)充足,具有3層的BP神經(jīng)網(wǎng)絡(luò)就擁有模擬復(fù)雜非線性映射的能力[11].在神經(jīng)網(wǎng)絡(luò)模型中,其中研究的重點在于如何提高其非線性逼近能力和學(xué)習(xí)能力;而神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)流程則是通過樣本點集得到一個學(xué)習(xí)誤差函數(shù),然后優(yōu)化這個函數(shù).
誤差函數(shù)如公式(1)所示.
(1)
將隱含層和輸入層的神經(jīng)元函數(shù)逐步加入誤差公式(1),可得誤差函數(shù)如公式(2)、(3)所示.
(2)
(3)
從上述函數(shù)公式可知,誤差函數(shù)是由預(yù)測輸出與實際輸出之間的誤差值組成,各個隱含層的誤差函數(shù)都與前一層的誤差傳播信號相關(guān),全部是由輸出層的誤差逐層反向傳播而來.
BP神經(jīng)網(wǎng)絡(luò)算法為一種監(jiān)督式的學(xué)習(xí)模式,主要思路是通過梯度搜索技術(shù)對已經(jīng)存在的網(wǎng)絡(luò)入侵樣本進行學(xué)習(xí),最終使網(wǎng)絡(luò)的實際輸出值與期望輸出值的均方值誤差達到最小[12].梯度下降法是常規(guī)的學(xué)習(xí)標準,通過運用反向傳播的方式不斷調(diào)整網(wǎng)絡(luò)的初始權(quán)值和閥值,最終使網(wǎng)絡(luò)的誤差平方和達到最小.其基本的學(xué)習(xí)思路如下:
(1) 初始化網(wǎng)絡(luò)的連接權(quán)值.將其設(shè)置為wij和wjk,閾值為θj和θk.
(2) 隨機選擇第k個輸入樣本和與其對應(yīng)的期望輸出.
(3) 計算隱含層單元輸出yj、輸出層輸出yk:
(4)
(5)
式中:wjk為隱含層第j個神經(jīng)元到輸出層第k個神經(jīng)元之間的連接權(quán)值;xk則為輸入值.
(4) 計算輸出層與隱含層之間的訓(xùn)練誤差δk和δj,式中dk為真實值.
(6)
(5) 修正權(quán)值
wjk(t+1)=wjk(t)+ηδkxj,
wij(t+1)=wij(t)+ηδkxi.
(7)
式中:η表示為學(xué)習(xí)率的大小;wjk為隱含層與輸出層的權(quán)值量;wij為輸入層與隱含層的權(quán)值量.
(6) 判斷平均方誤差e是否滿足所規(guī)定的通過誤差:當e符合條件時,則跳到步驟(7);若不符合,則轉(zhuǎn)向步驟(4).
(7) 算法結(jié)束.
BP神經(jīng)網(wǎng)絡(luò)算法分為訓(xùn)練過程和學(xué)習(xí)過程[13],其流程如圖2所示.在運行訓(xùn)練過程時需要初始化處理BP神經(jīng)網(wǎng)絡(luò):各層權(quán)值隨機賦值,范圍為(-1,1);學(xué)習(xí)速率η=(0,1),訓(xùn)練次數(shù)r=1,對誤差精度Emin賦值.初始化結(jié)束后,將訓(xùn)練樣本的輸入向量與實際輸出填入設(shè)計完成的BP神經(jīng)網(wǎng)絡(luò)模型,運行BP神經(jīng)網(wǎng)絡(luò)中的反向傳播階段,調(diào)整各層權(quán)值.
圖2 BP 神經(jīng)網(wǎng)絡(luò)算法流程
所有樣本進行一次訓(xùn)練后,訓(xùn)練次數(shù)加1,在訓(xùn)練次數(shù)達到預(yù)設(shè)值并且誤差值達到設(shè)計精度時,樣本訓(xùn)練結(jié)束,隨后進入樣本學(xué)習(xí)階段.如果輸出總誤差沒有達到所設(shè)精度,則對樣本重新訓(xùn)練,直至訓(xùn)練結(jié)果與預(yù)測值相符合.
在無線傳感器網(wǎng)絡(luò)中加入BP 神經(jīng)網(wǎng)絡(luò)模型的數(shù)據(jù)融合技術(shù),稱為BPDF(BPNN datafusion) 算法,BPDF 算法模型結(jié)構(gòu)如圖3所示,主要應(yīng)用于LEACH分簇路由協(xié)議[14].網(wǎng)絡(luò)訓(xùn)練及數(shù)據(jù)融合步驟如下:
步驟1 對整個無線傳感器網(wǎng)絡(luò)進行分簇,簇頭節(jié)點向Sink節(jié)點傳輸簇內(nèi)節(jié)點成員信息表,各層節(jié)點將監(jiān)測到的數(shù)據(jù)發(fā)送給與之對應(yīng)的簇頭節(jié)點;
步驟2 Sink節(jié)點根據(jù)簇頭和簇內(nèi)節(jié)點的基本信息,創(chuàng)建BP神經(jīng)網(wǎng)絡(luò)的模型架構(gòu);
步驟3 對簇頭節(jié)點和相應(yīng)的簇內(nèi)成員節(jié)點間應(yīng)用BP算法對數(shù)據(jù)進行融合操作,在融合開始時先對每個感知節(jié)點將監(jiān)測到的數(shù)據(jù)通過輸入層的神經(jīng)網(wǎng)絡(luò)函數(shù)算法進行初始處理;
步驟4 將處理后得到的結(jié)果傳輸給其他的簇頭節(jié)點,簇頭節(jié)點再根據(jù)隱藏層的神經(jīng)元函數(shù)和輸出層的神經(jīng)元函數(shù)進行后續(xù)的數(shù)據(jù)處理;
步驟5 通過簇頭節(jié)點將處理后得到的數(shù)據(jù)發(fā)送給基站,同時更新樣本數(shù)據(jù)庫.
圖3 BPDF 算法模型結(jié)構(gòu)
對基于神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)融合算法的影響因素有很多,也衍生出了諸多的優(yōu)化策略.例如:通過增加隱含層的節(jié)點數(shù)來優(yōu)化BP神經(jīng)網(wǎng)絡(luò)模型;為了避免訓(xùn)練時間過長和震蕩現(xiàn)象的出現(xiàn),對學(xué)習(xí)速率進行動態(tài)化設(shè)置;為了減小誤差,對經(jīng)典的激勵函數(shù)Sigmoid函數(shù)進行改進[15];為了使訓(xùn)練后收斂達到最優(yōu)狀態(tài)、輸出誤差達到最優(yōu)解,對各層神經(jīng)元之間的初始權(quán)值進行優(yōu)化.
本文結(jié)合文獻[16]提出的數(shù)據(jù)融合思想,充分利用BP神經(jīng)網(wǎng)絡(luò)的優(yōu)點,根據(jù)有差異的融合思路對收集的信息執(zhí)行過濾和優(yōu)化處理,最終在網(wǎng)絡(luò)中實現(xiàn)數(shù)據(jù)融合.BP神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)融合流程如圖 4 所示.
圖4 神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)融合流程
網(wǎng)絡(luò)訓(xùn)練前期準備工作:對數(shù)據(jù)進行歸一化處理,目的是為了確保網(wǎng)絡(luò)層中的輸出值在一個正常的范圍內(nèi).在設(shè)定好了訓(xùn)練樣本集的初始值后,采用梯度下降法調(diào)整中心向量、寬度、網(wǎng)絡(luò)系數(shù)以及最后一層的初始權(quán)值.在訓(xùn)練過程中,優(yōu)先選擇較快的學(xué)習(xí)率,如果誤差函數(shù)變大則需要及時調(diào)整學(xué)習(xí)速率,保證數(shù)據(jù)的準確性.
在ALR-BPDFA (adaptive learning rate back-propagation data fusion algorithm)算法中,首先,要在網(wǎng)絡(luò)中設(shè)置某些預(yù)參數(shù)的值,其中包括連接的初始權(quán)值和閾值等數(shù)據(jù).當網(wǎng)絡(luò)的分簇結(jié)構(gòu)穩(wěn)定后,開始對神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,進而獲得對應(yīng)的部分訓(xùn)練參數(shù).其次,Sink節(jié)點將網(wǎng)絡(luò)中各層的訓(xùn)練參數(shù)發(fā)送給對應(yīng)的成員節(jié)點,各個簇首利用訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)模型進行數(shù)據(jù)融合處理,最終再把處理好的數(shù)據(jù)以最短路徑傳送給Sink節(jié)點.ALR-BPDFA算法流程如圖5所示.
圖5 ALR-BPDFA算法流程
在選舉簇首的過程中,考慮節(jié)點當前剩余能量這一因素.根據(jù)計算的T(n)值,使當前能量較高的節(jié)點優(yōu)先當選為簇首,同時記錄當前剩余能量第二高的節(jié)點,并將其設(shè)置為輔助簇首節(jié)點.分簇及簇首選取流程見圖6.
圖6 分簇及簇首選取流程
T(n)的計算方法如下:
(8)
式中:p是節(jié)點成為簇頭的概率;r是目前已經(jīng)完成的輪數(shù);G是在最近1/p輪時還沒有被選為簇頭的節(jié)點集合;u是反映當前節(jié)點能量對T(n)影響程度的參考量,當節(jié)點能量較小時,能量因素的影響就比較小,反之也是如此.
通過設(shè)定系統(tǒng)參數(shù)Nmax的方式限制每個簇的最大節(jié)點數(shù),從而限制成簇的規(guī)模.在此基礎(chǔ)上,筆者提出一種結(jié)合計算最優(yōu)簇首數(shù)的方式進行動態(tài)分簇的理念,具體形成過程如下:當簇首節(jié)點和輔助簇首節(jié)點依序產(chǎn)生后,簇首節(jié)點向自己一跳范圍內(nèi)的所有節(jié)點廣播自己成為簇首的消息,同時所有節(jié)點根據(jù)節(jié)點ID號以及信號的強度計算與簇首的距離,記為RSSI,成員節(jié)點通過RSSI值采取就近原則,接收離自己最近的簇首節(jié)點所發(fā)出的廣播信息,并向該簇首發(fā)送加入消息.
最優(yōu)簇首數(shù)計算公式為
(9)
因為簇首節(jié)點能量不一,所以根據(jù)各個簇首節(jié)點的當前能量值T(n)來限制每個簇的節(jié)點個數(shù),能量大的簇首分配的節(jié)點多,小的則少,進行以能量為參照標準的非均勻分簇模式.
通常對學(xué)習(xí)率的設(shè)置都以穩(wěn)定較緩的固定模式為主,保證最后解的結(jié)果不出現(xiàn)較大的誤差.這樣就可能導(dǎo)致在不同的環(huán)境下出現(xiàn)學(xué)習(xí)效率低、速率慢的弊端,從而加大了能量的損耗;而在實際的應(yīng)用中,確定一個最萬能的學(xué)習(xí)率是不現(xiàn)實的.所以,為了加速收斂過程,一個比較好的思路是使其自適應(yīng)地改變學(xué)習(xí)速率.自適應(yīng)學(xué)習(xí)率算法簡化流程如圖7所示.
圖7 自適應(yīng)學(xué)習(xí)率算法簡化流程
改變學(xué)習(xí)率的方法有很多,其最終目的都是使學(xué)習(xí)速率在訓(xùn)練過程中得到合理的調(diào)節(jié).當誤差曲面較為平緩時,加大學(xué)習(xí)率使其盡快收斂;當誤差曲面較為波動時,減小學(xué)習(xí)率,避免出現(xiàn)解的發(fā)散.通常的自適應(yīng)規(guī)則如下:
(10)
附加動量的自適應(yīng)學(xué)習(xí)率算法如下:
(11)
其中:△E是誤差函數(shù)E的改變量;a和b是適當?shù)恼?shù).
為了解決算法在后期學(xué)習(xí)狀態(tài)不穩(wěn)定的問題,對η值進行動態(tài)修正,使其在網(wǎng)絡(luò)學(xué)習(xí)過程中盡量保持一個相對理想的狀態(tài),達到既能在學(xué)習(xí)初期有較快的收斂性,又能在后期避免出現(xiàn)震蕩現(xiàn)象.
加入的算法公式為
η(t)=η[ΣE(t)/ΣE(t-0.5)].
(12)
進入學(xué)習(xí)后期,η值自動減半,初始值取為1~2之間.
在學(xué)習(xí)因子η的數(shù)值優(yōu)化方法中,除了修正誤差函數(shù)E的變量,還可以通過類似數(shù)列運算的方式更精確地穩(wěn)定網(wǎng)絡(luò)學(xué)習(xí)后期的波動狀態(tài).隨著數(shù)據(jù)量越來越大,網(wǎng)絡(luò)的能耗和不穩(wěn)定性也隨之升高,故選擇附加動量因子δ來更好地控制網(wǎng)絡(luò)學(xué)習(xí)速率.
(13)