邱 勁,吳宏杰
(蘇州科技大學電子與信息工程學院,江蘇 蘇州215009)
當今無線通信網絡快速發展,特別是無線傳感器具有環境感知、無線傳輸和數據處理等諸多優勢已廣泛應用在工業、農業等多個領域[1]。一般情況下,該網絡主要由兩個節點所構成,分別是匯聚、傳感器兩個節點,工作模式就是由傳感器節點來進行數據的采集,最后用匯聚節點整合經過采集所得到的所有數據,再把整合好的數據傳到數據中心。因為無線傳感器網絡復雜性較高,且數據呈現海量化,無法實時監控該網絡,導致該網絡被攻擊的概率上升[2],尤其是對節點或是拓撲進行攻擊后,會導致級聯故障的出現,從而有可能會導致網絡癱瘓[3]。無線傳感器網絡級聯故障是指當某一節點超過負載時,其負載會根據相關資源分配規則由該節點轉移至其它節點,而當資源負載超過其它節點負載時,會導致新一輪的負載轉移從而導致節點故障,一旦受到攻擊,會導致整個網絡嚴重受損,因此對無線傳感網絡級聯故障識別新方法的研究就顯得十分重要[4]。
針對無線傳感網絡級聯故障識別方案研究,文獻[5]提出了一種基于節點和鏈路容量的無線傳感器網絡級聯故障識別方法。該方法主要獲取無線傳感器網絡流量數據,以此獲取網絡負載分析結果。在此基礎上構建網絡級聯抗毀性模型并對故障節點進行了識別,當識別到的節點數量達到閾值的情況下得到無線傳感器網絡級聯故障識別結果。但是該方法存在無線傳感器網絡級聯故障識別正確率較低的問題,實際應用效果較差。文獻[6]提出了一種基于蟻群算法和BP神經網絡模型的無線傳感器網絡級聯故障識別方法。首先,利用蟻群算法通過節點位置尋優實現無線傳感器網絡節點定位,采用隨機搜索算法對節點性質進行判斷,以此區分故障節點與正常節點,構建BP神經網絡模型并對其進行訓練,利用訓練好是模型識別無線傳感器網絡級聯故障,但是該方法過于繁復,導致識別時間消耗上升。文獻[7]提出基于改進蛙跳算法的無線傳感器網絡級聯故障識別方法。分析了線傳感器網絡級聯結構以及故障分類體系,利用蛙跳算法改進了BP小波神經網絡,將無線傳感器網絡節點數據輸入至該網絡中,BP小波神經網絡輸出即為無線傳感器網絡級聯故障識別結果。但是該方法存在無線傳感器網絡級聯故障識別正確率較低,與理想的應用效果相差甚遠。
因此針對上述問題,本文給出了一種基于多任務深度學習的無線傳感器網絡級聯故障識別新方法,它整體設計方案如下:
首先先算出無線傳感器網絡節點負載并采用重分發策略調整它。根據節點負載調整結果,利用指數型關系函數優化的流量調整方法使調整參數達到最優情況下構建無線傳感器網絡負載模型。
其次,建立多任務深度學習新模型并采用聯合訓練方式對模型進行訓練,利用批歸一化方法優化該模型并將無線傳感器網絡負載數據輸入到優化后的模型中,實現級聯故障識別。
最后,將識別正確率以及識別時間消耗作為評價指標,對于該方法的實際應用效果進行了驗證。
設無線傳感器網絡負載為G(V;E),網絡中的各個元素即為節點,且每個節點間所存在的關系為邊。G(V;E)中的V、E分別表示邊與頂點的集合。任意時刻每個節點對都可通過最短路徑完成流量交換與信息傳輸,當m、n兩個節點間有多個最短路徑時,會對流量進行平均分配,使得每條最短路徑上所傳輸的流量平等[8]。
t時刻節點v的負載定義如下

(1)

節點容量Cv計算公式如下:
Cv=αLv(0),v=1,2,…,N
(2)
字母N表示初始網絡節點的數目,α表示的是容忍參數,α≥1[10]。網絡節點有正常和故障兩種狀態,當正常節點不能及時完成處理自身負載,則它將轉為故障節點從而導致正常通信受到影響;節點可以正常運傳輸信息是在Lv≤Cv的情況下[11]。當發生故障節點狀態時,為了保證業務與流量的正常運行和傳輸,將遵照相應次序把負載重新分配到別的節點上。執行完該操作后節點y的負載被調整為:
Lj(t)=Lj(t-1)+ΔLij
(3)
一般負載的重分有局部與全局兩種負載重分發策略,是通過節點掌握信息的程度進行劃分的。其中局部負載重分發策略指的是只掌握鄰居節點的信息,而全局負載重分發策略可以掌握全盤信息。此外通過鄰居節點的度可以故障節點負載分配到鄰居節點上,這也是局部負載重分發策略用的最多的手段,其最好的案例是交通網絡堵塞之后的分流機制[12]。在全局負載重分發策略中,若產生故障的是關鍵路由器,控制系統將會重新選擇路由,但不會局限于相鄰的路由器,將數據傳送到目標地。針對上述,本文主要應用全局負載重分發策略進行負載的重新分配,具體如下:

(4)
lij表示i與j兩節間的距離,kj代表j的度,Ωi表示所有正常節點的集合。
要計算節點j在t時刻的負載,需要把式(4)進行帶入,帶到式(3)中,如下所示

(5)
對于j節點,假設Lj(t-1)+ΔLij>Cj,將會導致Lj(t-1)+ΔLij的負載被分配到其它節點另更多節點失效。由式(5)可知,與故障節點關系密切的節點則更受負載重分發策略青睞,從而會使這部分節點分到更多的負載[13]。
若網絡流量Ssd(t)的初始值是1,則隨著ρ、μ的增加而減小,在AR策略中最短路徑長度的增減將導致網絡流量呈現指數衰減,并且在生活屮也能找到佐證。故流量調整策略優化后,也會用指數型關系函數進行如下描述

(6)
式中,在t時刻i、j兩節點間的最短路徑長度用dij表示,Δdij(t)=dij(t)-Δdij(t-1)指的是節點i與j之間最短路徑長度增減值,Δdij(t) ≥0,其中在ML模型中,節點都是沿著最短路徑進行敘述的,重選后的最短路徑長度只有兩種情況,變長或是不變[14]。i與j兩節點間的最短路徑數目在t時刻的變化分別由nij(t)、Δnij(t)=nij(t)-nij(t)-1表示,只有變少或者不變兩種最短路徑數目的變化,所以Δnij(t)≤0。在t時刻i、j兩節點間的流量大小用sij(t)表示,其中距離的調整系數與相對應的數目調整系數分別由ρ與μ表示,分別依據i、j兩節點間的最短路徑長度和數目變化來調整流量[15]。
如果將參數調整到最優值,則FR策略效果將發揮得更好,相對剩余流量R如下所示

(7)
將網絡中傳送的流量定義為所有節點所承擔的負載[16,17],可以得到下式

(8)
無線傳感器網絡負載模型描述如下所示
(9)
本文研究內容為無線傳感器網絡級聯故障,級聯故障較為復雜,因此本文構建了多任務深度學習模型并以此來提升識別正確率與效率如圖1所示。

圖1 多任務深度學習模型
圖1方框A代表通過兩個卷積層來提取任務1和2共享特征的共享層,方框B、C分別是識別無線傳感器網絡節點與級聯故障的任務1層與2層。各網絡層結構參數如表1所示。

表1 多任務深度學習網絡結構參數
采用聯合訓練的方式訓練上述模型,用交叉熵損失函數來定義損失函數Loss1及損失函數Loss2,公式如下:

(10)

(11)
式中,其中p(x)代表目標實際分布,q(x)代表模型預測分布。
本文采用加權平均方法對Loss1和Loss2進行重組,如下(12)。

(12)
批歸一化(Batch Normalization,BN)是解決深度學習領域較好方法,它操作過程與標準化過程類似:即用所在層輸入減去其 mini-batch 的均值,再除以標準差。對標準化后得到的值乘以縮放系數γ,然后加上乘性偏置項β,使縮放的區間變得更寬,其目的是大幅提高網絡模型表達能力。
下面是卷積層使用BN算法的過程,設第l個BN層的輸入為yl=(yl(i,1),…,yl(i,j),…,yl(i,p)),操作如下式:

(13)

(14)

(15)

(16)
式中,常數項用ε表示;Zl(i,j)、γl(i)和βl(i)分別是BN層的輸出值、縮放系數和偏置項;
在連接層使用BN算法時,設首個BN層的輸入為yl(i),則:

(17)

(18)

(19)

(20)
當BN算法用在卷積層時,其導數公式為:

(21)

(22)

(23)

(24)

(25)

(26)
當BN算法用到連接層時,導數公式為

(27)

(28)

(29)

(30)

(31)

(32)
利用訓練好的多任務深度學習模型識別無線傳感器網絡級聯故障,將無線傳感器網絡負載數據輸入至該模型中從而得到無線傳感器網絡級聯故障識別結果。
為了驗證本文提出的新方法的有效性,進行了實驗測試,整體實驗方案如下:
1)實驗環境:為了提升實驗的真實性和可靠性,此次實驗需要在同一環境中進行,其參數為:操作系統、仿真軟件是Windows 10、Matlab R2014a,CPU是Intel Core i5-7300HQ,內存與運行內存是32G與8G,硬盤、主頻是500GB、2.1GHz。
2)實驗數據:實驗平臺采用WSN實驗網絡,由星型拓撲結構和以CC2530為核心的滿足Zig Bee協議的5個節點和1個協調器所組成的,提取該網絡的參數作為實驗樣本數據。部分故障特征樣本如表2所示。

表2 故障特征樣本
表2中,D1~D2000、K1~K5分別是故障特征樣本的編號和不同的故障類型;S1~S8代表8個故障特征屬性。在此基礎上,將部分數據輸入至仿真軟件中,經過多次測試后獲取最優仿真參數,將該參數作為初始參數,以此提升仿真的可靠性。
3)實驗方法:對比文獻[5]、[6]、[7]方法以及本文方法,通過比較不同方法的無線傳感器網絡級聯故障識別正確率以及時間消耗作為實驗指標,以驗證不同方法的應用效果。
3.2.1 無線傳感器網絡級聯故障識別正確率
為了驗證本文方法的有效率,比較了文獻[5]方法、文獻[6]方法、文獻[7]方法以及本文方法的無線傳感器網絡級聯故障識別正確率,得到結果如圖2所示。

圖2 無線傳感器網絡級聯故障識別正確率
由分析圖2可知,不同方法下無線傳感器網絡級聯故障識別正確率存在一定的差異。當實驗次數為10次時,文獻[5]方法、文獻[6]方法、文獻[7]方法的無線傳感器網絡級聯故障識別正確率分別為45.2%、58.3%、73.1%,本文方法正確率為93.8%;當實驗次數為50次時,文獻[5]方法、文獻[6]方法、文獻[7]方法的識別正確率分別為58.2%、27.1%、25.5%,本文方法的識別正確率90.2%。與其它方法相比,使用本文方法得出的無線傳感器網絡級聯故障識別正確率較高,可以在實際中得到進一步推廣。
3.2.2 無線傳感器網絡級聯故障識別時間消耗
為了驗證本文方法的有效率,比較了文獻[5]方法、文獻[6]方法、文獻[7]方法以及本文方法的無線傳感器網絡級聯故障識別時間消耗,得到結果如表3所示。

表3 無線傳感器網絡級聯故障識別時間消耗(單位:s)
分析表2中的數據可知,文獻[5]方法的無線傳感器網絡級聯故障識別時間消耗平均值為2.57s,是四種方法中時間消耗最高的。文獻[6]方法的無線傳感器網絡級聯故障識別時間消耗平均值為1.40s,文獻[7]方法的無線傳感器網絡級聯故障識別時間消耗平均值為1.57s,與這三種方法相比,本文新方法的無線傳感器網絡級聯故障識別時間消耗平均值為0.73s,它是四種方法中時間消耗最低的,可以實現無線傳感器網絡級聯故障快速識別。
當今現代科技水平快速提升,而無線傳感器與人們日常工作與生活密不可分,在無線傳感器網絡中,一旦節點發生故障或是其拓撲結構發生改變將造成網絡負載異常變化并導致新的節點故障問題出現,傳統無線傳感器網絡級聯故障識別方法存在識別正確率低以及時間消耗長等多種問題,因此設計一種無線傳感器網絡級聯故障識別新方法就顯得尤為重要。本文設計了一種基于多任務深度學習的無線傳感器網絡級聯故障識別研究新方法。通過實驗證明該方法具有高識別正確率以及低識別時間消耗的特點,它既能實現無線傳感器網絡級聯故障快速正確識別,又能保證無線傳感網絡的安全與穩定。由于實驗過程中所使用的數據還不夠多,因此在未來還需引進一些新技術新手段對該方法進行優化并以此來大幅提升無線傳感器網絡級聯故障識別效果。