魏連鎖 李華 吳迪 郭媛
(齊齊哈爾大學計算機與控制工程學院, 齊齊哈爾 161000)
誤差補償是保證水下傳感器網絡時鐘同步精度的一個重要保障, 現有研究方法主要采用線性擬合和最小二乘法對時鐘同步參數進行誤差補償, 但該類方法并未考慮受海流影響時節點移動所導致的時鐘同步精度問題.針對此問題, 本文提出一種基于BP神經網絡模型的時鐘同步誤差補償算法.首先采用深海拉格朗日洋流模型描述水下節點運動規律, 模擬水下節點運動速度, 進而建立時鐘同步參數模型, 最后構建符合水下環境的BP神經網絡時鐘同步誤差補償模型, 通過定義激勵函數, 引入正則項因子和補償性因子避免模型過擬合, 建立誤差反向傳播的BP神經網絡模型時鐘同步誤差補償算法.仿真實驗表明, 本文提出的算法與TSHL算法、MU-sync算法、MM-sync算法相比, 在時鐘同步精度(即時鐘同步時間與標準時間的誤差)上分別提升了37.42%, 17.29%和21.86%, 并且均方誤差得到顯著降低.
海洋是未來世界各國競爭的核心基地[1-3], 擁有大量的資源, 對海洋資源的開發利用離不開水下 無 線 傳 感 器 網 絡(underwater wireless sensor networks, UWSNs), UWSNs是由許多水下節點構成的無線網絡, 該網絡在人類獲取海洋信息中扮演著不可忽視的角色.同時時鐘同步對水下傳感器網絡有著非常重要的意義, 時鐘同步對傳感器網絡許多關鍵技術起著非常重要的作用, 如: 節點定位、數據融合等[4-6], 但由于水下環境條件惡劣、聲波通信受到較多不確定因素影響, 目前現有的時鐘同步研究成果在誤差補償方面仍存在如下挑戰:1)水下節點會隨著海洋或者潮汐的運動而發生移動, 故水下節點具有移動性; 2)單向同步數據報文算法交換少, 時鐘頻偏估算精度高, 但相偏估算誤差大; 3)雙向同步數據報文算法時鐘相偏估計精度高, 但數據報文交換多次, 時鐘頻偏估算誤差較大, 而且傳輸延遲不一致也降低了時鐘相偏的估算精度; 4) UWSNs普通節點能源有限, 傳輸距離過長導致能耗高.
水下無線傳感器網絡節點具有移動性, 導致網絡節點始終處于時變狀態.在同步轉發過程中, 節點發送和接收數據報文的位置會發生變化, 從而產生相對移動距離, 導致動態時延增大.如此隨著轉發次數增多, 時鐘的誤差(主要由傳送時間、傳播時間和接收時間組成)也逐漸增大, 造成水下傳感器無線網絡同步精度(節點估算的參考時間與實際參考時間的偏差)逐漸降低.現存的水下無線傳感器網絡時鐘同步算法, 并沒有充分考慮到節點隨洋流運動而產生的動態時延, 只是利用時間戳機制求解時鐘同步參數, 然后利用傳統的線性擬合對同步參數進行求精處理, 如TSHL[7], MM-sync[8]和MU-sync[9]等算法.對動態時延的精確求解是同步精度的一個關鍵因素.利用傳統的優化算法(如最小二乘法)對同步參數進行求精, 容易陷入局部最優, 進而使得同步精度不高.因此現有傳統的時鐘同步算法研究不能很好地解決由于節點移動性導致的時鐘同步精度問題.
因此, 在設計UWSNs時鐘同步算法時, 時鐘同步參數的精度是水下傳感器網絡時鐘同步算法需要著重考慮的因素, 為了提高時鐘同步的參數精度, 需要對同步誤差進行補償.
本文的篇章組織結構如下: 第1節介紹UWSNs時鐘同步算法的研究意義及誤差補償的重要性;第2節詳細給出現有時鐘同步算法及研究現狀;第3節給出了各種模型的搭建過程; 第4節詳細介紹BP神經網絡模型時鐘同步誤差補償算法; 第5節通過仿真實驗證明該誤差補償模型的實用性;第6節對整篇文章進行分析總結.
目前, 國內外學者對陸地無線傳感器網絡時鐘同步算法的研究取得了一些成果, 由于水下傳感器網絡獨特的傳播特點, 使得現有的陸地傳感器時鐘同步算法(如: RBS算法, TPSN算法, DMTS算法)[10-12]并不適用于水下復雜的環境.
針對水下無線傳感器網絡時延的隨機性, 研究者們提出了一系列適用水下傳感器網絡的時鐘同步算法.Eidenbenz等提出了高延遲時鐘同步算法TSHL, 該算法首先利用信標節點發送數據報文,然后待同步節點將收到報文的時間與本地時間組成元組, 再利用線性擬合計算頻偏, 最后根據一次雙向數據報文求解相偏, 該算法解決了高時延的問題, 但是因為需要多次發送數據報文, 所以存在能耗較高的問題, 同時該算法忽略了水下節點移動的特點, 因此算法的時鐘精度不高.與此同時, 該算法用的是線性擬合求解方法, 其誤差較大.Sajjad等[13]在分析時間間隔對時鐘同步精度影響的基礎上, 增大了TSHL 算法的同步信號的時間間隔, 減少了同步信號的發送次數, 這種改進版的TSHL算法降低了算法復雜度和能量消耗.文獻[14]針對TSHL算法同步交互信號多, 能量消耗大的不足, 提出了一個Tri-Message 同步算法, 首先改用3次發送-接收交互計算頻偏, 然后使用雙向交換計算相偏, 這可以降低消息開銷并保持一定同步精度, 進一步優化了TSHL算法的性能.文獻[15]提出TSMU算法, 利用卡爾曼濾波對多普勒計算的相對速度求其精度, 再用線性回歸和校準來計算時鐘同步的頻偏和相偏.文獻[16]提出的Hybrid-Sync同步算法, 利用混合時鐘交換數據報文的方式計算相偏和頻偏, 最后利用計算得到的頻偏來進一步校正相偏.與TSHL算法相比, 降低了算法的通信費用, 但是Hybrid-Sync的計算費用較高且時鐘同步精度不高.
上述算法雖然在一定程度上解決了時鐘同步問題, 但都沒有考慮節點移動性導致時鐘同步精度不高的問題.
MM-sync 算法考慮傳感器網絡移動性對同步參數的影響, 推出時鐘同步參數模型, 進而構建出一種適合淺水域的時間同步算法.文獻提出的一個分簇UWSNs時鐘同步算法MU-Sync.該算法先對網絡節點進行分簇, 再利用簇首周期性地廣播同步信號來進行簇內時鐘同步, 利用簇首節點收集到的同步信息進行兩次線性擬合估計往返傳播時延,以此來降低誤差, 通過多次雙向信息交換, 使MUSync 算法獲得了較好的同步精度.Shi等[17]首次將水下時鐘同步問題分為授權、簇內同步和簇間同步三個階段; 在授權階段, 所有的節點相互授權,并確認和刪除惡意節點; 在簇內同步階段, 簇首節點通過發送、接收模式和普通節點進行同步.該算法為了提高同步精度, 利用CESVM (centered hyperellipsoidal support vector machine based anomaly detection)[18]過濾非正常的接收端到接收端的傳播延遲, 同時假設隨機傳輸延遲符合方差為0的高斯分布, 進行時鐘同步求精.
文獻[19]提出D-sync時鐘同步算法, 是基于水下通信產生的多普勒效應, 利用該效應計算節點間的相對速度, 估計傳播延遲完成時鐘同步.但由于水聲環境影響因素過多, 該算法測量的誤差會較大.因此, NU-sync算法[20]加入了更準確的多普勒測量的方法因素, 通過計算節點的相對速度解決延遲多變的問題, 利用潛水器作為信標節點對節點進行同步, 極大降低了誤差.
綜上所述, 現今水下無線傳感器網絡時鐘同步算法的研究需要綜合考慮節點移動對同步精度的影響, 同時也要避免傳統時鐘同步算法使用線性擬合思想造成誤差較大的問題.因此, 本文綜合考慮節點的移動性、誤差補償等因素構建符合水下網絡的BP神經網絡時鐘同步誤差補償算法, 從而設計出一個精度高、誤差小的水下傳感器網絡時鐘同步算法.
本節首先分析洋流運動對節點運動的影響, 然后根據速度計算公式計算待同步節點的移動速率.
由于水下環境復雜多變, 水下物體運動并不是完全無規律的, 而是呈現出半周期的運動特性.文獻[21]中提出一種權威的洋流模型, 本文用此模型對節點的運動進行分析.模型公式為

其中,l表示位移率,B(t) 表示曲線的寬度,ω表示洋 流 場 的 頻 率,ε表 示 振 幅.R= 1.2,l= 0.12,ω=0.4,ε=0.3,k=2π/7.5[22].一般情況下只考慮節點在x和y方向上的位移, 節點在水平方向的速率為

節點在x和y方向的運動情況如圖1、圖2所示.

圖1 x方向的速率Fig.1.The velocity in the x direction.
對普通節點來說, 難與浮標節點通信, 但利用自身的相關性, 可以獲取移動速度.假定節點i想要取得自身的速度 [vx(i),vy(i)] , 其中vx(i),vy(i) 分別是x軸和y軸上的速度分量.如果節點i能夠獲取附近簇首節點的速度, 就可以使用(3)式計算得到自身速度:

其中,m為鄰近簇首節點的數量,ξij為差值系數,可以用(4)式得到:

其中rij為簇首節點與普通節點的距離, 可以使用歐幾里得[23]計算.

圖2 y方向的速率Fig.2.The velocity in the y direction.
本文傳感器節點以線性模型為例, 根據文獻[24]節點的時鐘t與標準時間T的關系為

其中,a表示時鐘漂移,b表示時鐘偏移.
本文采用先分簇后對簇群進行時鐘同步, 分為浮標節點、簇首節點、普通節點.簇首節點可以直接獲取浮標節點的標準時間, 故只需要考慮簇群的時鐘同步.報文交換過程如圖3所示.
普通節點分別向各個節點發送數據報文進行時間同步, 簇首節點收到后向普通節點發送多個數據分組.信息交互過程如圖3所示.C在T1時刻向簇首節點發起同步進程,Q在T2時刻收到該信息,并隨即向節點C發送多個數據包, 其時間戳用t[i]表示,C收到數據報文的時間戳用T[i] 表示.當節點Q第一次發送數據報文的發送時間是t[1] , 經過時間d1后, 到達節點C.節點C記錄下到達本地的時間T[1].過一段時間后, 節點C再向節點Q發送同步數據報文, 由于節點受到洋流的影響會發生移動, 故數據報文傳播延遲不再是t1而是t2.則可以得


圖3 數據報文交換過程Fig.3.Data message exchange process.
由于水下節點具有移動性, 故假設簇首Q的移動速率為Vmi, 待同步節點C的移動速率為VAi,水聲傳播速度為u, 則可得

整理后可得:

其中,Vmi和VAi可以由(3)式計算得到.求出di后,漂移可由(8)式求得:

收集的時間戳為Ta,Tb,Tc,Td, 如圖4所示, 并使用下式計算出頻偏:

其中a是(9)式中的列矩陣, 考慮到水下傳感器網絡時鐘同步的時效性精準性,Tb1和b1只有在計算頻偏的時候才會使用.由(10)式可推出:

其中Tbi和Tai是收集的一系列剪短時間戳, 主要是為了更精準地求出頻偏.本次時鐘同步通過單向數據報文交換來減少雙向交換的次數, 從而減少數據報文能耗, 但沒有考慮時延帶來的誤差, 導致{a,b}精度不高.本文將針對該誤差提出補償模型.
基于BP神經網絡的時鐘同步誤差補償模型,是將根據時鐘同步參數模型中的(9)式和(11)式計算得到的m個同步參數估計值作為網絡學習樣本, 經過大量重復不斷地學習, 沿著誤差減小的方向, 不斷調整各層神經元之間的權值和閾值, 目的是得到一個最佳預測補償模型.
針對3.2節時鐘同步參數模型精度不高提出的BP神經網絡時鐘同步誤差補償模型如圖5所示.
3.3.1 激活函數的設定
激活函數對本文算法網絡尤為重要, 常用的sigmoid和tanx雖然易于實現, 但存在不可避免的缺陷.基于此本文為避免陷入局部計算以及綜合節點移動對水下傳感器時鐘同步產生的影響, 本文提出f(x) 作為激活函數:

其中,φ∈(0,1) 通過先驗知識賦值.
3.3.2 代價函數、誤差補償模型和誤差方向傳播更新過程
1)代價函數
本文有m個輸入樣本{t=[t1,t2,t3,···,ti,···,tm]}、{a=[a1,a2,a3,···,ai,···,am]}、{b=[b1,b2,b3,···,bi,···,bm]},d(i) 為 期 望 輸 出, 輸 出 向 量g={g1,g2,···,gk,···,gm}, 某層神經元輸出:h(l)=本文屬于線性回歸的問題, 故采用平方誤差作為代價函數.
2)時鐘同步誤差補償模型
為避免過擬合現象造成的誤差無法達到極小值, 參數的更新過程采用隨機梯度下降算法.考慮到水下傳感器節點資源有限并結合BP神經網絡結構, 構造時鐘同步誤差補償模型為:

其中

其中,P1表示正則化項懲罰因子,P2表示補償性因子, ||表示交叉熵運算.

P1,P2計算方法如下:

其中,hk為隱藏層 個 數,τ為稀疏性 因 子, 滿足τ∈(0,1),

3)誤差方向傳播參數迭代更新過程

圖5 BP神經網絡時鐘同步誤差補償結構圖Fig.5.BP neural network clock synchronization error structure diagram.

其中α∈(0,1) 是學習率.為提高收斂速度, 從局部極小值中跳出來, 根據文獻[25]提出優化學習率的變換公式:

式中,r是迭代次數,G和λ是常數, 根據本文的學習樣本, 選取G= 20,λ=0.002.
另外,

同理可得:

本文構建的BP神經網絡時鐘同步誤差補償模型是一種正向傳遞和誤差反向傳播的網絡[26],采用隨機梯度下降原理對參數進行調節, 經過多次反復訓練就可以得到滿足補償條件的BP神經網絡.具體過程為: 模型搭建階段、模型學習階段、模型預測階段.
如表1所示, 輸入層節點個數設置為2, 輸出層節點的個數設置為1, 隱藏層的神經元個數使用了經驗公式[27]

式中q是輸入層神經元的個數,s是輸出層神經元的個數,c∈[1,10] , 根據本文實際需求與經驗公式(27)式可知, 隱藏層的層數設置為2, 神經元個數為6個.收集學習樣本, 利用時鐘同步參數模型輸出得到的m={ai,bi}組學習樣本作為數據集, 再對學習樣本進行數據歸一化.

表1 模型搭建階段Table 1.Model construction phase.
如表2所示, 分別對w∈(0,1),b∈(0,1),α∈(0,1),λ∈(0,1) ,σ∈(0,1) 隨機賦初值, 同時設迭代次數r= 3000,ρ=0.001.使用隨機分成的訓練集對誤差補償網絡模型進行訓練, 然后再用測試集對網絡模型進行預測檢測.結合水下傳感器網絡時鐘同步的特點對激活函數重新定義, 最終設為(12)式.設定時鐘同步誤差補償模型J.然后開始對誤差補償網絡進行訓練, 將訓練集輸入到輸入層神經元, 然后逐層將信號正向傳播并計算輸出, 直到有輸出層的結果并計算輸出層的誤差, 再利用誤差反向傳播并根據(20)式、(21)式更新各層神經元的權重和閾值.反復進行該過程直到滿足迭代終止條件才停止訓練, 得到的誤差補償模型參數幾乎不再發生變化.此時得到一個滿足誤差補償條件且精準度較高的BP神經網絡時鐘同步模型J.

表2 模型訓練階段Table 2.Model training stage.
如表3所示, 模型預測階段具體過程如下: 當網絡達到迭代終止條件, 即E小于期望誤差ρ時,得到一個滿足條件的補償模型J.使用測試集對J進行預測, 最后只需將從時鐘同步參數模型得到的第i+1 個同步估計參數 [ai+1,bi+1] 輸入J中, 通過輸出得到時鐘同步參數補償值

表3 模型預測階段Table 3.Model prediction stage.
本文使用python語言, pycharm集成開發環境, 做了算法時間復雜度分析和兩種仿真實驗描述.實驗一: 將本文提出的算法與傳統線性擬合在誤差控制和預測方面做對比, 分別計算均方誤差并分析它們對水下傳感器時鐘同步誤差補償的效果.實驗二: 本文算法與TSHL[7]算法、MM-sync[8]算法、MU-sync[9]算法在同步精度和數據報文能耗方面進行對比分析.
時間復雜度是衡量一個算法的度量指標, 本節主要分析基于BP神經網絡模型時鐘同步誤差算法.本文算法的核心是網絡的前向傳播和誤差反向調整權重和閾值部分.前向信號傳播時間復雜度為O(n) , 誤差反向傳播的時間復雜度為O(m).故本文算法的時間復雜度為O(n2).
本文仿真實驗的相關參數如表4所示.

表4 實驗參數Table 4.Experimental parameter setting.
5.2.1 本文算法和線性擬合作同步時間與標準時間的誤差對比分析
為了比較BP神經網絡時鐘同步誤差補償的效果, 引入利用傳統線性擬合對數據報文交換進行誤差補償[28], 同時使用傳統線性擬合對m組訓練樣本進行擬合.
由圖6可知, 精度在0.001時幾乎看不出變化,因為使用BP神經網絡模型的補償效果幾乎與標準時間一致, 為了更好地看出BP補償效果與傳統補償效果的區別, 將其擴大 1 04倍.開始時BP神經網絡誤差大于線性擬合, 是因為開始時網絡參數設置是隨機設定.當節點個數達到5時, BP神經網絡的補償效果明顯優于線性擬合.當節點個數達到90時, BP神經網絡的誤差補償效果相比于線性擬合更加具有優勢.

圖6 誤差對比分析Fig.6.Error comparison and analysis.

圖7 BP神經網絡預測Fig.7.BP neural network prediction.

圖8 線性擬合預測Fig.8.Linear fitting prediction.
同時本文使用10個樣本對已經訓練好的補償模型和線性擬合作對比預測, 對比它們之間的均方誤差.
如圖7和圖8所示, 節點一開始是隨機拋灑,故需要將訓練好的BP神經網絡誤差補償模型和傳統線性擬合去逼近節點真實值, 通過比較并計算可得圖7的均方誤差R2=0.6972 , 圖8的均方誤差R2=0.9116.比較可得, 使用BP神經網絡時鐘同步誤差補償模型的效果遠高于線性擬合.
5.2.2 本文算法與其他時間同步算法的對比分析
本節針對時鐘同步精度和數據報文能耗, 將本文算法與TSHL[7]算法、MU-sync[9]算法、MMsync[8]算法進行對比實驗分析.
圖9和圖10分別表示時鐘頻偏a計算偏差隨節點移動速度的變化情況和時鐘漂移b計算偏差隨節點移動速度的變化情況.

圖9 時鐘頻偏計算偏差隨節點移動的變化Fig.9.The variation of clock-frequency offset calculation deviation with node move.

圖10 時鐘漂移計算偏差隨節點移動變化情況Fig.10.The clock drift calculation deviation changes with the node movement.
由圖9可知, 本文算法的誤差明顯小于其他算法, 分別比TSHL[7]算法、MU-sync[9]算法、MMsync[8]算法降低37.42%, 17.29%和21.86%.因為隨著節點速度增大, 而TSHL忽視了節點的移動性問題, 在時鐘同步期間假定節點位置不變, 即傳播過程時延沒有發生變化, 導致速度增大時, TSHL的誤差會異常明顯.MU-sync是針對節點移動性提出的算法, 但忽視了傳播時延, 采用不變的值去計算頻偏, 再用線性擬合去除相應的傳播時延, 從而求得時鐘漂移, 當速度明顯增大時, 算法表現就會減弱.MM-sync算法在誤差補償中, 假設節點做勻速運動, 當節點速度增大時, 誤差補償效果減弱.本文算法基于BP神經網絡的時鐘同步誤差補償模型, 考慮了節點移動性帶來的時延問題, 同時通過BP神經網絡反復訓練得到一個精度較高的誤差補償模型.
由圖10可以看出, 本文算法明顯優于其余三種算法, 當節點速度越大, 誤差幾乎不在發生變化,其運動軌跡和移動模型更加符合實際, 并且時鐘同步精度也更高, 因而計算偏差越小.
圖11給出本文算法、MU-sync[9]算法、MMsync[8]算法和TSHL[7]算法在完成同步后, 本地時鐘增長的誤差趨勢.

圖11 時鐘同步后本地時鐘誤差增長趨勢變化Fig.11.The increasing trend of local clock error changes after clock synchronization.
由圖11可知, 本文算法的誤差明顯小于其他算法, 分別降低47.12%, 31.37%和12.89%.其他算法誤差較大的主要是原因為: TSHL法假設網絡為靜態網絡, 這勢必會導致更大的同步誤差; MUsync使用兩次線性回歸來估計時鐘頻偏和相偏,但該算法假設每一輪消息交換到的傳播時延是一致的, 沒有考慮往返時間不一致的傳播時延, 這會導致更大的同步誤差; MM-sync算法雖然考慮節點移動性, 但是在誤差估計階段, 將節點運動狀態單一化的歸結為勻速運動, 如此隨著網絡的動態變化, 該算法的性能也隨之下降; 這三種算法并沒過多考慮節點隨洋流運動而產生的動態時延, 導致誤差較大.本文算法通過引入洋流模型估計待同步節點的速率, 提高了動態傳播延時的精度, 且使用BP神經網絡反復訓練, 得到一個誤差補償精度很高的模型.
圖12給出本文算法與其余三種算法在同步35次后產生的數據報文數, 以此來分析數據報文能耗的高低.

圖12 同步次數與數據報文的變化Fig.12.Changes in synchronization times and datagram.
由圖12可知, 本文算法在能耗方面少于其他三種算法[7-9].分別比其余三種算法降低了37.46%,61.26%和18.75%.本文算法只需要BP神經網絡反復訓練即可, 與其余三種算法的原理不同, 需要的數據報文較少.隨著同步次數的增加, TSHL算法在同步過程的第二階段需要參考節點和普通節點進行一次雙向數據報文交換, 用來計算時鐘漂移.MU-sync算法為追求更高的精度, 通過增加了雙向數據報文的交換次數, 導致當同步次數增加時, 數據報文量快速增加.MM-sync需要提高線性擬合的次數來提高精度, 導致數據報文的消耗大.
水下傳感器網絡具有移動性、能耗有限、高時延和隨機動態時延的特點, 給設計水下傳感器網絡節點時鐘同步帶來巨大挑戰.本文創新性地提出利用BP神經網絡對時鐘同步誤差進行補償, 從而提高時鐘同步精度.本文算法首先考慮節點隨洋流運動的影響, 采用深海拉格朗日洋流模型描述水下節點運動規律, 并算出待同步節點的運動速率, 進而建立時鐘同步參數模型, 最后利用BP神經網絡對時鐘同步參數模型進行誤差補償.與現有同步算法對比, 本文算法能高效補償同步誤差提高時鐘同步精度, 且避免了節點的雙向數據報文交換, 從而也降低了數據能耗.與此同時, 由于本文算法考慮了節點受洋流運動的影響, 故節點在運動的情況下,依然能有效進行誤差補償, 從而保持時鐘一定的同步精度.實驗表明, 算法在水下復雜環境時候, 本文算法對水下傳感器網絡時鐘同步具有很好地適用性, 同時也為時鐘同步誤差補償的理論提供了新思路.