匡俊搴 趙 暢 楊 柳 王海峰 錢 驊*
①(中國科學院上海高等研究院 上海 201210)
②(上海科技大學信息科學與技術學院 上海 201210)
③(中國科學院大學 北京 100049)
④(中國科學院大學微電子學院 北京 100049)
⑤(中國科學院上海微系統與信息技術研究所 上海 200050)
隨著物聯網應用在實際生活與生產中的普及,其以數據為中心的特點日益凸顯。密集部署的傳感器節點會產生大量的傳感器數據,由于節點能量受限、監測環境較為復雜、節點容易遭受外界攻擊等,經常出現異常值[1]。由于物聯網系統的運行主要依賴傳感器數據,數據冗余和數據異常值會大大降低物聯網應用的有效性。因此,必須采用數據清洗技術來去除異常值對物聯網系統的影響。數據清洗的研究內容包括:重復數據檢測、異常數據檢測、缺失數據處理、不一致數據處理、邏輯錯誤檢測等,是從事后診斷角度提升和保證數據質量的主要手段[2,3]。設計物聯網異常數據清洗算法,是物聯網數據分析中的關鍵問題。
目前,在基于無線傳感器網絡的物聯網領域中,基于異常值的數據清洗技術與異常點檢測技術類似,可分為以下幾類:第1類是基于統計學的方法[4],假定數據集服從某種概率分布模型,把具有低概率的對象視為異常點,但實際情況不一定符合統計規律。第2類是基于聚類的方法[5],如果某些聚類簇的數據樣本量比其他簇少得多,而且這個簇里的數據的特征也與其他簇差異很大,則該簇里的大部分樣本點可視為異常點,但該方法需要事先確定閾值,這對于不同的數據集往往是比較困難的。第3類是基于專門的異常點檢測算法,包括一類支持向量機(One-Class SVM)[6]、孤立森林(Isolation forest)[7]等。One-Class SVM通過建立分類模型得到一組精確的異常值,技術難點在于計算復雜度高和選擇合適的核函數,更適用于中小型數據集的原型分析;Isolation Forest具有線性時間復雜度,可以部署在大規模分布式系統上來加速運算,但不適用于特別高維的數據,在某些局部的異常點較多的時候可能不準確。
此外,基于遞歸主成分分析(Recursive Principal Component Analysis, R-PCA)的異常數據清洗算法也得到了很多應用。Zhou等人[8]提出穩定的主成分追蹤的方法來解決有噪情況下R-PCA算法數據恢復準確性的問題,采用低秩-稀疏矩陣分解(Low-Rank and Sparse Matrix Decomposition,LRaSMD)的技術,將2維的測量矩陣分解為低秩矩陣、稀疏矩陣和噪聲矩陣,然后設計算法進一步處理。該方法旨在從有稀疏干擾的數據中恢復出低秩矩陣,但需要準確估計正常模式的相關矩陣,計算量特別大。Xu等人[9]提出一種基于LRaSMD的字典重建和異常提取方法,利用完備字典和稀疏編碼構造低秩矩陣達到清洗異常值的目的,不過字典學習的計算量巨大,恢復精度較低。
本文針對傳統異常數據清洗算法需要先驗統計知識、計算量大、精度低的弊病,在LRaSMD模型的基礎上,提出了一種基于深度神經網絡的迭代閾值收縮算法框架,對物聯網中時-空相關數據進行快速清洗。迭代閾值收縮算法(Iterative Shrinkage-Thresholding Algorithm, ISTA)是梯度下降法的延伸,求解的是1范數稀疏性正則化約束下的反問題[10]。其在圖像處理[11]、壓縮感知[12]以及信號處理[13]等領域有著廣泛的應用。由于LRaSMD可以轉換為上述反問題,所以可以引入ISTA來進行異常數據清洗問題的求解。雖然1范數約束問題是凸的,使得ISTA具有全局收斂性,但是其也存在不足,比如收斂速度慢、對初始參數敏感等。為了解決這些問題,本文進一步將ISTA展開為定長的深度神經網絡,以神經網絡層數來代替迭代次數,從而構造出ISTANet框架。在實際數據集上對該框架進行了評估,結果表明,該數據清洗方法能夠得到高質量的有效數據,算法收斂速度快,精度更高。
本文的其余部分組織如下。第2節介紹了系統模型和優化問題。第3節描述了所提出的基于深度神經網絡的快速異常數據清洗算法框架。第4節使用真實數據集進行實驗仿真,驗證了算法的性能。第5節對全文進行了總結。
在本文中,將針對特定的無線傳感器網絡(Wireless Sensor Networks,WSNs)應用場景,利用數據的時-空相關性,設計適合多傳感器數據的離線異常數據清洗算法。本場景中數據清洗的對象為多傳感器數據,算法需滿足3個條件:只利用測量數據的時-空相關性;只考慮存在異常點的情況;算法的輸出為逼近真實的數據,達到較高的精度。
如圖1所示,橢圓形代表監測區域,橢圓形內的若干個小圓圈代表傳感節點,無線傳感器網絡主要由部署在監測區域內的大量傳感器節點組成。這些傳感節點負責采集環境數據,匯聚節點將周圍若干個傳感節點的數據集中起來,再經由基站以無線通信的方式傳輸給后臺數據中心。

圖1 傳感節點數據采集和傳輸示意圖
由于傳感器在某一時刻觀測到的讀數與在前一個時刻觀測到的讀數相似,并且相鄰的多個傳感節點的測量值相似,所以無線傳感器的數據具有時-空相關性。當在某個域中表示時,信號有很多系數接近或等于零,因此假設時-空相關數據是低秩的[14]。



圖2 無噪情況下的低秩-稀疏模型
對于大規模問題,很難快速計算出每次的迭代解。而式(8)中ISTA算法的迭代解依賴閾值參數λ1和λ2的選擇。因此快速計算出合適的閾值參數是提高該算法收斂速度的關鍵。
迭代展開(Unfolding)的概念于2012年被首次提出[18],顯著地改進了收斂性。一個迭代算法可以看作一個神經網絡,其中的第k次迭代被視作第k層。迭代展開的方法利用了深度學習和基于模型框架的強大功能,在一些應用領域[19]中提高了算法性能,已經有研究人員對交替方向乘子法[20]、近似梯度法[21]等方法進行了展開。
ISTA與深度神經網絡在結構上具有相似之處。深度學習其實是有著超過3層隱藏層的神經網絡。將ISTA中的每一次迭代看作一個時間層,軟閾值函數等價于激活函數,那么ISTA可以用神經網絡展開。圖3展示了ISTA的迭代解的數據流圖,其中K代表深度神經網絡的層數。
選擇歸一化均方誤差(Normalized Mean Square Error, NMSE)作為訓練過程的損失函數。對于給定數據集中的第i個數據幀,使用迭代閾值收縮算法(ISTA)分解Ri,每次迭代過程中,需要學習的參數是λ1和λ2,最終得到該數據幀所對應的矩陣LK和SK,分別用L?i和S?i表示。網絡輸出值和真實值間的損失函數定義為

為了獲得最優參數,使用后向傳播策略計算梯度或者參數。首先初始化網絡權值和神經元的閾值。在前向傳播中,使用已經更新的參數,按照式(8)計算隱藏層神經元和輸出神經元的輸入和輸出,并計算NMSE。在反向傳播中,根據式(9)中NMSE的定義,再利用二次方自適應學習率優化算法,來更新每個階段中的每個閾值參數。
具體的ISTA-Net異常數據恢復算法如表1所示,其中步驟(5)-步驟(8)的目的是參照式(8)計算出第k層神經網絡的輸出Lk和Sk,之后這兩個值將作為第k+1層神經網絡的輸入來參與運算。需要說明的是,每層神經網絡的閾值參數λ1和λ2的更新是獨立的。同時為了取得更好的訓練效果[22],實際中用于SVT和軟閾值操作的閾值分別為σ(λk1)·bL·max(Lk)和σ(λk2)·bS ·mean(Sk),其中σ(x)是sigmoid函數,bL和bS是固定值,這里分別設置為0.1和1.5。
為了驗證本文所采用的ISTA-Net算法在解決物聯網異常數據清洗問題中的有效性,采用Intel Berkeley Research Lab[23]所測的溫度數據進行仿真實驗。該數據集包含54個傳感器采集的14400條溫度數據,每個傳感器每隔30 s采集1次數據,每小時采集120次數據,溫度范圍在13.69~37.68°C。假定該數據集代表真實數據,采集過程中的噪聲為高斯白噪聲。選取其中49個傳感器連續采集5天的溫度數據,再加上隨機異常值作為標注。將傳感器1小時采集的數據看作1批數據,則5天總共有120批數據,選取的用于訓練和測試的測量矩陣R的維度為49×120。仿真實驗中,前80批數據為訓練數據集,后40批數據為測試數據集。

表1 ISTA-Net異常數據恢復算法

圖3 數據流圖

其中,TP指的是確實包含異常值且被算法檢測出的數據個數,FP指的是本身不包含異常值卻被算法判定為異常的數據個數,FN指的是本身包含異常值但是算法卻沒有檢測出的數據個數。從以上定義可以看出,F1分數越接近1,檢測的正確率越高。
圖4(b)描述了ISTA和ISTA-Net算法的F1分數隨迭代次數(或神經網絡層數)的變化關系。從圖中可以看出兩種算法的F1均是隨著迭代次數的增加而逐漸增大,檢測的準確率越來越高,收斂之后達到了0.9以上。不過,ISTA-Net的增加速度明顯快于ISTA,并且收斂之后前者的F1還要大于后者。
在上述的對比中,ISTA-Net算法要優于ISTA的原因是ISTA算法本身是一個固定閾值的計算過程,算法的最終性能嚴重依賴分解軟閾值時收縮閾值的初始值;而ISTA-Net算法受益于神經網絡內部權重更新,對參數選擇相對能夠快速自動更新收縮閾值。因此ISTA-Net算法收斂更快,數據清洗的精度更高,性能得到了顯著的提升。
需要指出的是,ISTA-Net前向傳播的每一層的運算量和ISTA算法的1次迭代的運算量相同,通過網絡訓練得到最佳迭代參數后,ISTA-Net的計算過程與ISTA算法完全一致。此外,將ISTA算法展開為神經網絡后,可以加快收斂速度,大大減少所需的迭代次數,這降低了整個算法的計算量。
在網絡訓練過程中,不同學習率下的ISTA-Net算法的損失隨著訓練數據批次數的變化如圖5所示。其中,異常值、噪聲以及初始閾值的設置均與上述相同,神經網絡層數為25。由圖5看出,不同學習率下的算法損失隨著訓練批次的增加而逐漸下降,同時學習率越大,損失函數收斂得越快,但是波動也越大。因此,在ISTA-Net算法的訓練過程中,選擇合適的學習率能夠實現算法的收斂速度和恢復精度之間的平衡。
值得強調的是雖然對于Intel Berkeley Research Lab所測的溫度數據集,ISTA-Net只需25層固定長度的深度神經網絡就達到了優于傳統ISTA算法的性能,但是對于不同的數據集,ISTA-Net需要的神經網絡層數并不一定相同。不過盡管如此,ISTA-Net算法的收斂性仍遠快于傳統ISTA算法。這里選取由國家青藏高原科學數據中心提供的大納倫河流域修正后的溫度數據集[24],相關參數設置與前述相同。圖6將ISTA和ISTA-Net算法在該數據集中測試階段的損失函數隨迭代次數(或神經網絡層數)的變化情況進行了對比。可以看出在大納倫河流域數據集中ISTA-Net達到收斂所需的神經網絡層數為60,不同于前一數據集的25層,但是相對于傳統ISTA算法的近600次迭代才能收斂而言,性能的提升是比較顯著的。

圖4 ISTA和ISTA-Net算法的性能對比
為了證實所提算法方案的優越性,本文將ISTA, ISTA-Net算法和孤立森林算法進行了對比。這里用到的性能指標仍是上面提到的F1分數,數據集使用Intel Berkeley Research Lab所測的溫度數據集,數據中異常值比例將逐漸增加,其他的設置(比如噪聲以及初始閾值的設置)均與上述相同,ISTA-Net用到的神經網絡層數為25。圖7描述了隨著數據中異常值比例的增加,3種算法的F1分數的變化情況。可以看出,在異常值比例比較小時,ISTA和孤立森林算法的F1分數比較低。這是因為此時實際上被疊加了異常值的數據占的比重小,因此TP比較小,而此時兩種算法的FP和FN相較于TP而言較高,進而導致F1分數比較低。但隨著異常值比例的逐漸增加,TP的比重提升,ISTA和孤立森林算法的F1分數逐漸升高。值得強調的是,雖然在異常值比例較低時,孤立森林算法的F1分數略高于ISTA,但是隨著異常值比例的提升,前者性能逐漸弱于后者,并且差距逐漸拉大。對于ISTA-Net算法而言,其F1分數也是隨著異常值比例的增加而逐漸升高,并且其起始點要遠高于另外兩種算法,性能差距比較明顯。

圖5 ISTA-Net損失隨訓練數據批次數的變化情況

圖6 ISTA和ISTA-Net算法的NMSE比較

圖7 3種算法的F1分數隨異常值比例的變化情況
由上述對比可以看出,ISTA-Net算法確實能夠取得比ISTA以及孤立森林算法更好的性能,而且其對不同異常值比例的情況都表現得比較好,具有較好的魯棒性。
本文針對傳統異常數據清洗方法需要先驗統計知識以及計算量大的問題,提出了一種基于神經網絡的迭代閾值收縮算法,從而對物聯網中時-空相關數據進行快速異常數據清洗。利用了感知數據的時-空相關性和異常值的稀疏性,根據低秩-稀疏矩陣分解模型,采用迭代收縮閾值算法(ISTA)求解優化問題,進一步將ISTA展開為定長的深度神經網絡。在實際數據集上對算法進行了評估,仿真結果表明,該方法能夠自動更新奇異值分解過程中的軟閾值參數,克服了傳統ISTA算法對初始參數敏感以及收斂速度慢的問題。在選擇適當的閾值參數后,算法收斂速度更快,數據清洗的精度更高。