楊欣宇,李愛萍,段利國(guó),趙菊敏
(太原理工大學(xué) 信息與計(jì)算機(jī)學(xué)院,山西 晉中 030600)
作為物聯(lián)網(wǎng)(internet of things,IoT)[1]的重要組成部分,無線傳感網(wǎng) (wireless sensor networks,WSN)[2]已被普遍應(yīng)用于環(huán)境監(jiān)測(cè)、軍事防御、智慧農(nóng)業(yè)等各個(gè)領(lǐng)域,應(yīng)用普及產(chǎn)生的數(shù)據(jù)量與日俱增,由此造成的存儲(chǔ)、傳輸、處理等需求也越來越大,WSN數(shù)據(jù)壓縮的研究多年來一直是IoT應(yīng)用推廣最為關(guān)鍵的技術(shù)之一。
近年來,已有多種方法進(jìn)行WSN數(shù)據(jù)的壓縮[3]研究,但壓縮效果仍有進(jìn)一步提升的空間。LUO等[4]提出將壓縮感知(compressed sensing,CS)[5]理論應(yīng)用于大規(guī)模WSN數(shù)據(jù)收集,該方法能大幅、有效提高數(shù)據(jù)壓縮比,但針對(duì)不同應(yīng)用場(chǎng)景中監(jiān)測(cè)數(shù)據(jù)的特征差異,采用固定的稀疏基運(yùn)算時(shí)會(huì)出現(xiàn)稀疏表示結(jié)果不精確、數(shù)據(jù)重構(gòu)精度低的問題。此外,感知節(jié)點(diǎn)處理能力有限,經(jīng)典的基于CS的WSN數(shù)據(jù)壓縮方法直接在感知節(jié)點(diǎn)上進(jìn)行稀疏變換、矩陣測(cè)量等大量運(yùn)算,不僅縮短網(wǎng)絡(luò)壽命而且延緩了傳輸時(shí)間。
基于上述問題,提出一種基于字典學(xué)習(xí)和CS的WSN數(shù)據(jù)壓縮模型。模型改進(jìn)K-SVD初始字典,利用歷史數(shù)據(jù)集訓(xùn)練適應(yīng)數(shù)據(jù)特征的K-SVD稀疏基,從而保證在減少數(shù)據(jù)傳輸量的同時(shí)提高數(shù)據(jù)恢復(fù)精度;優(yōu)化基于CS的WSN數(shù)據(jù)收集模型,把復(fù)雜的稀疏變換由感知節(jié)點(diǎn)轉(zhuǎn)移到基站,延長(zhǎng)網(wǎng)絡(luò)壽命。在Berkeley實(shí)驗(yàn)室的溫度數(shù)據(jù)集[6]上做對(duì)比實(shí)驗(yàn),其結(jié)果表明,針對(duì)時(shí)空相關(guān)性較強(qiáng)的監(jiān)測(cè)數(shù)據(jù)的壓縮和恢復(fù)效果,本文方法比已有的OEGMP、基于DCT稀疏基的CS壓縮等方法有明顯提升。
WSN由部署在監(jiān)測(cè)區(qū)域內(nèi)的眾多感知節(jié)點(diǎn)和功能強(qiáng)大的融合中心(基站或匯聚節(jié)點(diǎn))構(gòu)成,感知節(jié)點(diǎn)之間以多跳自組的方式,把監(jiān)測(cè)數(shù)據(jù)傳送到融合中心[2]。WSN感知節(jié)點(diǎn)的計(jì)算、存儲(chǔ)能力、通訊帶寬及電源能量都很有限,需要盡可能節(jié)省能耗。因此,有必要對(duì)WSN中感知層收集的大量數(shù)據(jù)在傳輸之前進(jìn)行壓縮,然后在應(yīng)用層進(jìn)行解壓后再使用。
一般的WSN數(shù)據(jù)具有數(shù)據(jù)量大、實(shí)時(shí)性強(qiáng)、時(shí)空相關(guān)性等性質(zhì),且不同場(chǎng)景下的WSN,產(chǎn)生的監(jiān)測(cè)數(shù)據(jù)特征也各不相同。
壓縮感知理論于2006年由Donoho等[5]正式提出以來,已被廣泛應(yīng)用于無線通信、圖像處理、數(shù)據(jù)采集等領(lǐng)域,其主要內(nèi)容包括3部分:信號(hào)的稀疏變換、矩陣測(cè)量和信號(hào)重構(gòu),如圖1所示。
圖1 CS理論組成部分
設(shè)N×1維信號(hào)X是稀疏的,或者在某個(gè)變換域上可進(jìn)行稀疏分解得到式(1)
X=Ψθ
(1)
θ是稀疏度為K(K?N) 的N×1維列向量,即θ中只有K個(gè)非零項(xiàng)。然后將該稀疏系數(shù)投影到另一個(gè)與變換基Ψ不相關(guān)的、維數(shù)為M×N(M?N) 的觀測(cè)矩陣Φ上,得到M×1維觀測(cè)集合y, 如式(2)所示,其中ACS稱為傳感矩陣
y=Φθ=ΦΨTX=ACSX
(2)
Candès、Tao等給出式(2)存在確定解的充分必要條件是:Φ與Ψ互不相關(guān)[7],那么可以憑借這些觀測(cè)值求解式(3)而得到信號(hào)X的精確恢復(fù)
(3)
信號(hào)的稀疏性或可壓縮性,是CS應(yīng)用的基礎(chǔ)和前提,也是數(shù)據(jù)重構(gòu)的關(guān)鍵,所以尋找一個(gè)能夠把信號(hào)有效稀疏表示的稀疏基,成為研究CS的重要內(nèi)容之一。
隨著WSN應(yīng)用規(guī)模不斷擴(kuò)大,數(shù)據(jù)量不斷倍增,已有許多工作人員對(duì)提高數(shù)據(jù)壓縮效率,減少數(shù)據(jù)傳輸量展開了深入研究[3,8]。
WSN監(jiān)測(cè)數(shù)據(jù)大多在時(shí)間和空間上具有相關(guān)性。消除時(shí)間冗余較經(jīng)典的算法,有預(yù)測(cè)編碼類[9]、線性回歸算法[10]等。通常通過路由結(jié)構(gòu)來處理具有空間相關(guān)性的數(shù)據(jù),LEACH(low energy adaptive clustering hierarchy)算法[11]在目前WSN數(shù)據(jù)壓縮領(lǐng)域得到了良好的應(yīng)用。喬建華等[8]全面闡述了基于CS的WSN壓縮數(shù)據(jù)收集算法,表明CS理論在WSN中的適用性,總結(jié)出壓縮比較小、稀疏基不適、數(shù)據(jù)恢復(fù)不精確等問題。Xie等[12]將差分矩陣用作稀疏基,結(jié)合改進(jìn)的LEACH算法對(duì)WSN數(shù)據(jù)作壓縮研究,實(shí)驗(yàn)結(jié)果表明該方法有效減少了數(shù)據(jù)傳輸量,但壓縮步驟較復(fù)雜。因此,使用路由算法是提高數(shù)據(jù)壓縮率的有效方法之一,同時(shí),將稀疏變換轉(zhuǎn)移到基站可有效降低壓縮復(fù)雜度并減少節(jié)點(diǎn)能耗。
數(shù)據(jù)能否精確重構(gòu)不僅取決于重構(gòu)算法,還依賴于數(shù)據(jù)能否稀疏表示。K-SVD字典學(xué)習(xí)算法[13]與壓縮感知理論的結(jié)合已在多個(gè)領(lǐng)域進(jìn)行了大量研究,朱路等[14]將其用于圖像降噪,弓震等[15]使用該技術(shù)對(duì)地震資料去噪。在壓縮感知框架下,K-SVD字典對(duì)各類數(shù)據(jù)都展現(xiàn)出了較好的稀疏表示效果。綜上,本文訓(xùn)練K-SVD字典對(duì)WSN數(shù)據(jù)進(jìn)行稀疏表示,結(jié)合壓縮感知進(jìn)行WSN數(shù)據(jù)壓縮研究。
信號(hào)的稀疏性是運(yùn)用CS的前提,雖然在物理環(huán)境采集的大多信號(hào)并不稀疏,但在某個(gè)變換域上可進(jìn)行稀疏分解的信號(hào)就是可壓縮的。K-SVD學(xué)習(xí)算法能夠適應(yīng)數(shù)據(jù)本身特征,對(duì)數(shù)據(jù)稀疏表示。
K-SVD字典學(xué)習(xí)的主要思想[13]:根據(jù)原始樣本數(shù)據(jù)Y訓(xùn)練完備字典矩陣D∈Rn×n,D包含n個(gè)原子di∈{d1,d2,…,dn},S為樣本Y在字典D上的稀疏表示,如式(4)所示
Y=DS
(4)
(5)
式中:包含兩個(gè)自變量:字典D和稀疏系數(shù)S, 要求得使目標(biāo)函數(shù)取最小值時(shí)自變量的值,一般是固定其中一個(gè)變量,求解另一個(gè)變量,如此迭代進(jìn)行。字典D通過SVD分解或者最小二乘法逐列更新,可以利用已有的經(jīng)典方法求解稀疏系數(shù)S, 如正交匹配追蹤[16](orthogonal matching pursuit,OMP)、基追蹤等算法。本文擬采用OMP算法求解S。
本文提出一種基于K-SVD字典和壓縮感知的WSN數(shù)據(jù)壓縮模型,如圖2所示,模型主要分為3個(gè)部分:①在基站,使用改進(jìn)的K-SVD字典學(xué)習(xí)算法訓(xùn)練歷史數(shù)據(jù)集,得到適合該數(shù)據(jù)類型的稀疏變換基Ψ;②在感知層,各個(gè)簇內(nèi)的感知節(jié)點(diǎn)收集一段時(shí)間內(nèi)的監(jiān)測(cè)數(shù)據(jù)xi傳輸?shù)酱仡^,簇頭只需保存觀測(cè)矩陣Φ進(jìn)行CS壓縮;③壓縮數(shù)據(jù)yj經(jīng)過多跳傳輸在基站完成重構(gòu)。
圖2 基于K-SVD字典和CS的WSN數(shù)據(jù)壓縮模型
本文模型改進(jìn)字典學(xué)習(xí)算法,將離散余弦變換[17](discrete cosine transform,DCT)設(shè)定為K-SVD字典學(xué)習(xí)算法的初始字典,能夠消除數(shù)據(jù)相關(guān)性,加快算法收斂速度,訓(xùn)練效果更佳;利用LEACH算法[11]將感知節(jié)點(diǎn)分簇,對(duì)一段時(shí)間內(nèi)采集的數(shù)據(jù),傳輸?shù)酱仡^進(jìn)行CS壓縮,可以同時(shí)消除數(shù)據(jù)間的時(shí)空冗余,提高壓縮率;改變經(jīng)典的壓縮感知框架,假設(shè)WSN數(shù)據(jù)在某個(gè)變換基上是稀疏可壓縮的,在各個(gè)簇頭只進(jìn)行壓縮感知矩陣測(cè)量,將復(fù)雜的稀疏變換由感知層轉(zhuǎn)移到基站。該模型符合WSN中,感知節(jié)點(diǎn)硬件資源和能耗有限、基站計(jì)算能力較強(qiáng)的特點(diǎn),有效減輕感知節(jié)點(diǎn)負(fù)擔(dān),減少壓縮步驟。
由于WSN數(shù)據(jù)時(shí)空相關(guān)性較強(qiáng),在某個(gè)變換基上可以稀疏表示,具有CS理論的可壓縮性前提,所以需要對(duì)WSN數(shù)據(jù)進(jìn)行稀疏變換。傳統(tǒng)的稀疏基結(jié)構(gòu)固定,如DCT、DWT等,不能對(duì)各種信號(hào)都進(jìn)行準(zhǔn)確的稀疏表示,影響數(shù)據(jù)重構(gòu)效果,使用K-SVD字典學(xué)習(xí)算法可以有效解決這個(gè)問題。不需要事先固定稀疏基的形式,而是通過不斷迭代和更新,根據(jù)已有信號(hào)的特征訓(xùn)練出合適的稀疏變換字典,提高數(shù)據(jù)重構(gòu)精度。本文的K-SVD算法在基站利用歷史數(shù)據(jù)訓(xùn)練稀疏基,不僅為感知節(jié)點(diǎn)減輕負(fù)擔(dān),而且為稀疏變換提供了更可靠和強(qiáng)大的計(jì)算能力。
傳統(tǒng)的K-SVD字典學(xué)習(xí)算法,隨機(jī)抽取樣本的數(shù)據(jù)設(shè)置為初始字典進(jìn)行字典訓(xùn)練,由于WSN監(jiān)測(cè)數(shù)據(jù)通常具有較大的時(shí)空冗余,數(shù)值間的變化幅度較小,數(shù)值過于相似,初始字典中存在一定的線性相關(guān)性,因此會(huì)影響稀疏系數(shù)的求解效果,造成字典迭代更新時(shí)停滯不變的狀況。離散余弦變換基[17]結(jié)構(gòu)固定,擁有較強(qiáng)的“能量集中”性質(zhì),將時(shí)域轉(zhuǎn)換為頻域,信號(hào)的能量通常匯集在頻域較低的部分,因此能夠有效去除數(shù)據(jù)間的相關(guān)性。為解決字典訓(xùn)練效果不佳的問題,本文將DCT設(shè)置為初始字典,如式(6)
(6)
式中:u表示DCT矩陣維度,x(n) 是原始數(shù)據(jù)值。對(duì)于高度相關(guān)的WSN數(shù)據(jù),DCT具有非常好的能量緊湊性,作為初始字典可以有效消除數(shù)據(jù)間的相關(guān)性,提高稀疏字典收斂速度和稀疏表示效果。
(7)
(8)
(9)
對(duì)E′k采用奇異值(SVD)分解,分解完成后的左矩陣的第一列賦值給dk, 將新的dk更新到字典D的第k列,即完成了字典的第k列原子的更新。上述過程與稀疏編碼循環(huán)執(zhí)行,直到字典中的各列原子全部更新完畢,本文的字典訓(xùn)練過程如算法1所示。學(xué)習(xí)字典訓(xùn)練時(shí),因?yàn)樵谒惴ㄖ星短變蓪友h(huán)以更新字典,其中第一層是更新稀疏編碼,第二層在當(dāng)前編碼下更新字典,要更新字典的n列原子,那么在更新過程中,學(xué)習(xí)字典的更新需要進(jìn)行n次,因此該算法時(shí)間復(fù)雜度為O(n2), 空間復(fù)雜度為O(n)。
算法1:改進(jìn)的K-SVD字典學(xué)習(xí)算法
Input:原始樣本、初始字典、稀疏系數(shù)
Output:稀疏字典
Begin
(1)初始化:初始字典←DCT稀疏基,j=1;
(2)稀疏編碼:根據(jù)上一步得到的字典,求解稀疏編碼;
(3)字典更新:逐列更新字典
3)Ek只選擇索引ωk對(duì)應(yīng)的列得到E′k
5)j=j+1.
(4)判斷樣本稀疏表示后誤差是否達(dá)到指定閾值, 若達(dá)到輸出字典, 否則繼續(xù)執(zhí)行步驟(2)、 步驟(3)。
End
通常,WSN感知節(jié)點(diǎn)部署密集,收集監(jiān)測(cè)數(shù)據(jù)時(shí)間間隔較短,數(shù)據(jù)在時(shí)間和空間上存在較高的冗余度,為了處理數(shù)據(jù)的時(shí)空相關(guān)性,本文采用LEACH[11]路由算法將感知節(jié)點(diǎn)分簇。該算法是以循環(huán)的方式隨機(jī)選擇簇頭節(jié)點(diǎn),簇頭向周邊節(jié)點(diǎn)廣播信息后自組分簇。每個(gè)簇內(nèi),感知節(jié)點(diǎn)將各自采集的一段時(shí)間內(nèi)的數(shù)據(jù)傳輸?shù)酱仡^,在簇頭接收并整合原始數(shù)據(jù)后,使用CS理論實(shí)現(xiàn)WSN數(shù)據(jù)的壓縮,壓縮數(shù)據(jù)通過多跳的方式傳送到基站。
鑒于WSN中感知節(jié)點(diǎn)計(jì)算能力和處理能力有限,本文模型對(duì)傳統(tǒng)的CS數(shù)據(jù)壓縮算法作出改進(jìn),假設(shè)WSN監(jiān)測(cè)數(shù)據(jù)都具有可壓縮性,采集到的數(shù)據(jù)集可以直接進(jìn)行矩陣觀測(cè),不再需要在感知層完成稀疏變換,該方法可以有效縮短傳輸時(shí)延,降低數(shù)據(jù)壓縮復(fù)雜度,減輕感知節(jié)點(diǎn)負(fù)擔(dān)。WSN數(shù)據(jù)壓縮分為4個(gè)步驟:①感知節(jié)點(diǎn)間根據(jù)自身所剩能量角逐簇頭節(jié)點(diǎn),劃分簇群;②簇內(nèi)節(jié)點(diǎn)傳輸一段時(shí)間內(nèi)的監(jiān)測(cè)數(shù)據(jù)到簇頭節(jié)點(diǎn);③在簇頭節(jié)點(diǎn)完成CS矩陣測(cè)量,實(shí)現(xiàn)數(shù)據(jù)壓縮;④壓縮信息以多跳的方式傳輸?shù)交尽?/p>
具體壓縮過程如下:第i個(gè)節(jié)點(diǎn)在一段時(shí)間內(nèi)采集的數(shù)據(jù)序列的表示如式(10)所示,則簇內(nèi)n個(gè)節(jié)點(diǎn)在這段時(shí)間內(nèi)采集的數(shù)據(jù)可表示成一個(gè)m×n維矩陣X, 如式(11)所示
xi=[xi1,xi2,…,xim]T
(10)
(11)
其中,矩陣的列向量代表簇內(nèi)每個(gè)節(jié)點(diǎn)的時(shí)間序列數(shù)據(jù),行向量代表各個(gè)節(jié)點(diǎn)在相同時(shí)間感知的數(shù)據(jù),這樣收集來的數(shù)據(jù)具備了較強(qiáng)的時(shí)空相關(guān)性,完成數(shù)據(jù)壓縮可以同時(shí)消除時(shí)間和空間冗余,提高數(shù)據(jù)壓縮率。為了方便CS矩陣測(cè)量,我們將矩陣X的元素按列的順序展開表示,得到N×1(N=m*n) 維列向量,如式(12)所示
vec(X)=[x11,x12,…,x1m,x21,x22,…,xnm]T
(12)
如圖2所示,在每個(gè)簇頭節(jié)點(diǎn),觀測(cè)矩陣Φ與簇頭數(shù)據(jù)vec(X) 相乘,即可完成WSN數(shù)據(jù)的壓縮步驟,得到壓縮數(shù)據(jù)y, 如式(13)所示
y=Φ·vec(X)
(13)
壓縮數(shù)據(jù)經(jīng)過多跳傳輸,到達(dá)基站。為了保證數(shù)據(jù)可以精確重構(gòu),本文使用與大部分正交基高度不相關(guān)的高斯矩陣[5]作為觀測(cè)矩陣。此處觀測(cè)矩陣設(shè)定為M×N(M?N) 維,則壓縮數(shù)據(jù)是M×1維,壓縮后的數(shù)據(jù)傳輸量遠(yuǎn)遠(yuǎn)小于原始數(shù)據(jù)量。通過上述分析可得,WSN數(shù)據(jù)的壓縮率取決于觀測(cè)矩陣的維度,當(dāng)數(shù)據(jù)總量N固定時(shí),觀測(cè)矩陣行數(shù)M越小,則數(shù)據(jù)壓縮比越小,壓縮效率越高。
數(shù)據(jù)重構(gòu)是在基站對(duì)壓縮數(shù)據(jù)的解壓縮過程。根據(jù)上述分析,基站已知觀測(cè)矩陣Φ、適用于該環(huán)境數(shù)據(jù)的稀疏基Ψ(即字典D)和來自感知層的壓縮數(shù)據(jù)y。由于原始數(shù)據(jù)X在稀疏基上是可稀疏變換的,可以表示成稀疏基Ψ和稀疏系數(shù)θ相乘的形式,如式(1)所示,結(jié)合式(13),原始數(shù)據(jù)X的求解可以轉(zhuǎn)換為式(14)
(14)
由于M?N, 方程的個(gè)數(shù)遠(yuǎn)小于未知數(shù)的個(gè)數(shù),沒有確定性解,式(14)的l0范數(shù)問題屬于NP難問題,難以求解。通常,學(xué)者們會(huì)把l0范數(shù)問題看作是l1范數(shù)問題或l2范數(shù)問題來解決。Candès給出式(14)存在確定解的充分必要條件[7]是:Φ與Ψ互不相關(guān),即滿足有限等距性質(zhì)(restricted isometry property,RIP),那么可以憑借這些壓縮數(shù)據(jù)求解式(14)而得到信號(hào)X的精確恢復(fù)。本文選用經(jīng)典的OMP[16]算法對(duì)壓縮數(shù)據(jù)實(shí)現(xiàn)重構(gòu),加入閾值比較機(jī)制來控制算法進(jìn)程,當(dāng)數(shù)據(jù)恢復(fù)到理想效果,重構(gòu)誤差小于設(shè)定閾值時(shí),不管迭代次數(shù)是否達(dá)到初始設(shè)定總次數(shù),迭代都可以提前結(jié)束,不用再進(jìn)行后續(xù)求解。具體的重構(gòu)過程如算法2所示。
算法2:OMP重構(gòu)算法
OMP重構(gòu)算法
Input:r0,t,Λ0,U0,A,k,ε
Begin
(1)r0←y,t←1,Λ0←?,U0←?;
(2)A的每列aj與rt-1相乘, 找到乘積最大時(shí)對(duì)應(yīng)元素的下標(biāo), 即λt=argmax|
(3)令索引Λt=Λt-1∪λt, 索引矩陣Ut=Ut-1∪aλ;
(6)t=t+1, 比較rt與ε,rt<ε則執(zhí)行步驟(8), 否則步驟(7);
(7)t>k繼續(xù)執(zhí)行步驟(8), 否則返回步驟(2);
End
其中r0表示初始?xì)埐?,t表示迭代次數(shù),Λ0表示索引集合,U0表示按Λ0選出的矩陣,A=ΦΨ,k為算法需要迭代次數(shù)。ε代表重構(gòu)誤差閾值,和迭代次數(shù)k同時(shí)控制著重構(gòu)算法的進(jìn)度。稀疏基Ψ是經(jīng)過對(duì)歷史樣本的字典學(xué)習(xí)訓(xùn)練而得,所求的稀疏系數(shù)θ更為精確。這里,θ是k稀疏的,即在該向量中只有k個(gè)項(xiàng)是非零的,且重構(gòu)迭代次數(shù)為k。 數(shù)據(jù)解壓縮過程中,重構(gòu)迭代的次數(shù)越多,恢復(fù)的數(shù)據(jù)越精確,同時(shí)消耗的時(shí)間越多。但在實(shí)際應(yīng)用中,需要根據(jù)場(chǎng)景的恢復(fù)精度需求選擇合適的迭代次數(shù),加入閾值機(jī)制可節(jié)省重構(gòu)時(shí)間,數(shù)據(jù)恢復(fù)達(dá)到指定效果即可停止重構(gòu)。重構(gòu)算法中傳感矩陣A的每列aj與rt-1相乘,A有n列,且需要找到乘積最大時(shí)對(duì)應(yīng)元素的下標(biāo),因此OMP算法的時(shí)間復(fù)雜度為O(n2)。
本文使用數(shù)據(jù)集[6]進(jìn)行實(shí)驗(yàn),該數(shù)據(jù)集包含在Intel Berkeley實(shí)驗(yàn)室中部署的傳感器收集的溫度、濕度、光強(qiáng)等數(shù)據(jù)信息。所涉及的算法通過Python編程語言實(shí)現(xiàn),實(shí)驗(yàn)環(huán)境為Intel Core i7-8550U CPU@1.8 GHz,運(yùn)行內(nèi)存8 GB,64位Windows10操作系統(tǒng),PyCharm開發(fā)平臺(tái)。
本文選擇3個(gè)評(píng)價(jià)指標(biāo)來檢測(cè)本文模型的有效性。壓縮率(compression ration,CR)是指簇頭節(jié)點(diǎn)進(jìn)行壓縮過后傳輸給匯聚節(jié)點(diǎn)的數(shù)據(jù)量與壓縮之前的原始數(shù)據(jù)量之比;均方根誤差(root mean square error,RMSE)用來權(quán)衡重構(gòu)值與實(shí)際值之間的偏差,RMSE越小,則偏差值越小,恢復(fù)數(shù)據(jù)越精確;相對(duì)重構(gòu)誤差(relative reconstruction error,RRE)反映數(shù)據(jù)恢復(fù)的可信程度。分別如式(15)~式(17)所示
(15)
(16)
(17)
4.3.1 K-SVD字典訓(xùn)練
實(shí)驗(yàn)處理數(shù)據(jù)集,取8個(gè)相鄰節(jié)點(diǎn)(編號(hào)14~21),每個(gè)節(jié)點(diǎn)每隔一分鐘產(chǎn)生的溫度數(shù)據(jù)作為樣本訓(xùn)練集,選取DCT作為初始字典,設(shè)定迭代次數(shù)和誤差閾值,實(shí)驗(yàn)參數(shù)配置見表1。
表1 實(shí)驗(yàn)參數(shù)配置
樣本訓(xùn)練集如下,可以看出,監(jiān)測(cè)數(shù)據(jù)間的時(shí)空相關(guān)性較強(qiáng),相鄰數(shù)值相似,作為K-SVD字典學(xué)習(xí)算法的初始字典線性相關(guān)較高,影響字典訓(xùn)練效果,選取DCT作為初始字典可消除數(shù)據(jù)相關(guān),提高字典的稀疏表示能力
利用算法2訓(xùn)練K-SVD字典,得出適應(yīng)該數(shù)據(jù)集特征的稀疏變換字典。生成1024×1024維字典如下
4.3.2 簇的大小對(duì)數(shù)據(jù)重構(gòu)效果的影響
為了確定使用本文模型對(duì)WSN數(shù)據(jù)壓縮時(shí)最優(yōu)簇的大小,需要分析不同簇的大小對(duì)數(shù)據(jù)重構(gòu)結(jié)果的影響。簇內(nèi)數(shù)據(jù)量分別取32、64、128、256、512和1024,比較在不同壓縮率下的均方根誤差值。當(dāng)簇內(nèi)數(shù)據(jù)量為32,壓縮率為0.9時(shí),均方根誤差為0.74,恢復(fù)數(shù)據(jù)與真實(shí)數(shù)據(jù)偏差較大,實(shí)驗(yàn)結(jié)果表明,由于采集數(shù)據(jù)量較少,該模型不適用于簇內(nèi)數(shù)據(jù)量小于32的情況。其它取值的實(shí)驗(yàn)結(jié)果如圖3所示。
圖3 不同簇的大小對(duì)數(shù)據(jù)重構(gòu)結(jié)果的影響
分析圖3結(jié)果,伴隨數(shù)據(jù)量的增長(zhǎng),RMSE逐漸趨于平穩(wěn)狀態(tài)。當(dāng)簇內(nèi)數(shù)據(jù)量較大時(shí),如簇的大小為512和1024,計(jì)算量也隨之增長(zhǎng),影響數(shù)據(jù)的恢復(fù)精度。因此當(dāng)簇內(nèi)數(shù)據(jù)量為128和256時(shí),使用該模型壓縮效果更優(yōu)。
4.3.3 重構(gòu)迭代次數(shù)對(duì)數(shù)據(jù)重構(gòu)效果的影響
由圖3可知,當(dāng)簇內(nèi)原始數(shù)據(jù)量為512時(shí),重構(gòu)數(shù)據(jù)與原始數(shù)據(jù)之間的均方根誤差約為0.14,此時(shí)本文模型的重構(gòu)收斂速度如圖4所示。選取不同壓縮率,并在該壓縮條件下設(shè)置重構(gòu)算法的不同迭代次數(shù),記錄在不同壓縮率下采取不同迭代次數(shù)時(shí),重構(gòu)數(shù)據(jù)的RMSE。圖4固定重構(gòu)數(shù)據(jù)的RMSE為0.14,代表數(shù)據(jù)已經(jīng)有一個(gè)良好的恢復(fù)效果,統(tǒng)計(jì)在不同壓縮率下,達(dá)到RMSE為0.14時(shí),OMP算法所需進(jìn)行的迭代次數(shù)。由于改進(jìn)的K-SVD字典的自適應(yīng)特性和良好的稀疏表示能力,當(dāng)數(shù)據(jù)壓縮率為0.2時(shí),使用OMP算法重構(gòu)數(shù)據(jù)所需的迭代次數(shù)僅為5次,重構(gòu)數(shù)據(jù)的RMSE即可達(dá)到0.14,表明本文模型能較快收斂于最優(yōu)解。
圖4 重構(gòu)迭代次數(shù)和數(shù)據(jù)壓縮率的關(guān)系
4.3.4 對(duì)比其它WSN數(shù)據(jù)壓縮算法
為了比較本文模型與其它WSN數(shù)據(jù)壓縮算法的性能,將本文提出的壓縮模型分別與OEGMP[9]算法、固定稀疏基DCT算法、隨機(jī)選取K-SVD初始字典的CS數(shù)據(jù)壓縮算法進(jìn)行對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)?zāi)M了簇內(nèi)收集數(shù)據(jù)量為256時(shí),不同壓縮率下數(shù)據(jù)的恢復(fù)情況。如圖5所示,其中加入均方根誤差值(RMSE)為0.1的水平基線,OEGMP算法同樣采用數(shù)學(xué)的方法只需傳輸少量信息到基站,使用預(yù)測(cè)類算法解壓數(shù)據(jù),但是只有在壓縮率高于0.5時(shí),OEGMP算法的數(shù)據(jù)恢復(fù)精度較高,壓縮率低于0.5時(shí),該算法的數(shù)據(jù)重構(gòu)誤差遠(yuǎn)大于本文算法;基于DCT稀疏基的CS壓縮算法,由于DCT正交基結(jié)構(gòu)固定,沒有自適應(yīng)能力,不適應(yīng)本文實(shí)驗(yàn)的WSN數(shù)據(jù)特征,壓縮重構(gòu)效果較差;選取原始樣本作初始字典,未做改進(jìn)的K-SVD字典學(xué)習(xí)算法直接訓(xùn)練出的稀疏變換字典用于本實(shí)驗(yàn),樣本數(shù)據(jù)的相關(guān)性使得訓(xùn)練字典稀疏表示不夠精確,重構(gòu)效果不佳;本文模型改進(jìn)K-SVD算法,初始字典選擇DCT稀疏基,消除數(shù)據(jù)相關(guān)性,訓(xùn)練出的字典稀疏表示效果更優(yōu),可以看出在壓縮率為0.2時(shí),RMSE即低于0.1,重構(gòu)效果優(yōu)于K-SVD初始字典隨機(jī)選取的算法,改進(jìn)后的K-SVD字典對(duì)算法性能有一定的提升。
圖5 本文壓縮模型和其它壓縮算法的對(duì)比
4.3.5 本文模型壓縮數(shù)據(jù)恢復(fù)效果
取8個(gè)感知節(jié)點(diǎn)分一個(gè)簇,每個(gè)點(diǎn)向簇首傳輸32個(gè)數(shù)據(jù),使用本文提出的基于字典學(xué)習(xí)和壓縮感知的WSN數(shù)據(jù)壓縮模型對(duì)簇首數(shù)據(jù)進(jìn)行壓縮并恢復(fù)。分別計(jì)算在不同壓縮率下,重構(gòu)數(shù)據(jù)與原始數(shù)據(jù)的相對(duì)誤差,如表2(有效數(shù)字取小數(shù)點(diǎn)后三位)所示,隨著壓縮率的增大,數(shù)據(jù)相對(duì)重構(gòu)誤差越小。在壓縮率為0.2,OMP算法重構(gòu)迭代次數(shù)為5時(shí),數(shù)據(jù)重構(gòu)僅耗時(shí)0.0687 s,重構(gòu)數(shù)據(jù)與原始數(shù)據(jù)對(duì)比效果如圖6所示。
表2 恢復(fù)數(shù)據(jù)相對(duì)重構(gòu)誤差
圖6 溫度恢復(fù)數(shù)據(jù)與原始數(shù)據(jù)對(duì)比
由圖6可知,本文模型在選取壓縮率為0.2時(shí),能夠有效恢復(fù)原始數(shù)據(jù),重構(gòu)數(shù)據(jù)與原始數(shù)據(jù)的RMSE為0.098,可以滿足大部分實(shí)際應(yīng)用需求。
本文針對(duì)WSN監(jiān)測(cè)環(huán)境的數(shù)據(jù)收集問題,提出一種基于改進(jìn)K-SVD字典和CS的WSN數(shù)據(jù)壓縮模型。該模型利用字典學(xué)習(xí)的自適應(yīng)性,改進(jìn)K-SVD字典學(xué)習(xí)算法,根據(jù)監(jiān)測(cè)數(shù)據(jù)本身的特點(diǎn)訓(xùn)練出適合該類數(shù)據(jù)的稀疏基,同時(shí)為了減輕感知節(jié)點(diǎn)負(fù)擔(dān),將CS中的稀疏變換轉(zhuǎn)移在基站進(jìn)行,為基于CS的WSN數(shù)據(jù)壓縮提供了一種新思路。
結(jié)合理論分析和實(shí)驗(yàn)驗(yàn)證,本文模型在WSN數(shù)據(jù)壓縮收集中使用不僅提高了壓縮效率、減少網(wǎng)絡(luò)傳輸能耗,而且能以較高精度恢復(fù)原始數(shù)據(jù)。但文中使用的高斯觀測(cè)矩陣所需存儲(chǔ)空間較大、計(jì)算復(fù)雜度較高,在本階段工作中沒有考慮到,今后我們將研究更適合WSN使用的內(nèi)存小、結(jié)構(gòu)簡(jiǎn)單的觀測(cè)矩陣。