毛永毅,王志祥
(西安郵電大學 電子工程學院,西安 710199)
隨著物聯網產業的快速發展以及智能終端設備的大量普及,室內定位的需求日益高漲。如火災環境中人員位置的確定,地下停車場車位的尋找,工廠中人員及重要物資的快速調取等。包括基于無線保真(wireless fidelity, WiFi)、藍牙、紅外線等無線定位技術已廣泛應用到了室內定位中。由于部署方便,獲取性強等特點,基于WiFi的室內定位技術受到了研究人員的廣泛關注。
國內外學者對基于WiFi的室內定位技術進行了深入研究,如基于WiFi的指紋識別算法作為一種經濟高效的定位選擇,在現實生活中得到了大量應用。為獲得較高的定位精度,除了在線階段的實時定位算法之外,指紋庫的新鮮度對于定位結果也有著舉足輕重的影響。隨著時間和室內環境的變化,可能會導致原有的 WiFi指紋庫失效,而且隨著人們室內活動場景的日益復雜,WiFi指紋庫的規模也日趨擴大,指紋庫的重建過程既費時也費力,不利于室內自動化定位的展開。其中,接入點(access point, AP)移動是造成室內定位精度下降的主要因素,為保證WiFi指紋定位系統具有長期穩定性及較高的定位精度,指紋庫的及時更新成為必不可少的前提。
為解決WiFi指紋庫自動更新的問題,近些年來,人們開展了一系列針對WiFi指紋庫自動更新的研究。文獻[6]通過在特定位置部署固定的錨節點,來獲取一定的標簽數據用于WiFi指紋庫的更新;文獻[7]通過設置額外的探測器來更新WiFi指紋數據,但是,額外部署的參考錨節點和探測器的成本較高,影響了其應用。此外,人們提出了基于眾包數據的WiFi指紋庫更新方法,眾包方法的核心思想是利用大量普通用戶在線收集的指紋數據,完成專業人員所執行的復雜任務,從而實現指紋庫的實時更新。
通過眾包數據實現指紋庫的更新是一種直接有效的方法,如文獻[11]通過使用隱式眾包數據來對指紋庫進行更新,但需要用戶提供具體的位置來識別改變的AP。文獻[12]提出了一種基于遷移學習(transfer learning,TL)的指紋庫更新方法,旨在通過高維空間中數據重新整合的方式對指紋庫進行更新,但仍需人工采集部分標簽數據且對AP移動所帶來的定位誤差問題提升效果不明顯。文獻[13]利用梯度提升決策樹(gradient boosting decision tree,GBDT)回歸學習算法,學習眾包數據中各AP信號強度之間的函數關系,利用學習到的函數關系完成原始指紋庫的更新。但是,隨著WiFi指紋庫規模的擴大,各AP之間信號強度關系的尋找及改變AP的確定,都需要采集大量的眾包數據作為支持,更新過程漫長,不利于室內實時定位的展開。
自動編碼器(auto-encoder,AE)是一種盡可能對輸入信號進行復現的神經網絡,常用于高維復雜數據的處理。通過編碼器對輸入層信息進行編碼,降低原始數據的維度,發現數據之間的規律,利用解碼器對編碼后的信息進行解碼,在保留輸入層信息最大特征表達的情況下,最大程度地對輸入層信息進行復現。它以無監督的方式對輸入層信息進行學習,具有良好的穩定性和魯棒性,如今已在圖像處理、故障識別等領域進行了廣泛應用。為了有效降低由于AP移動對室內WiFi定位的影響,本文嘗試基于稀疏自動編碼器(sparse auto-encoder,SAE)的WiFi指紋庫更新方法,期望通過適量眾包數據,對原始指紋庫進行更新,進而解決由于AP移動所帶來的定位誤差過大和指紋庫實時更新的問題。
基于眾包數據稀疏自編碼的WiFi指紋庫更新方法主要過程如下:1)采用稀疏自動編碼器對一定量的眾包數據進行自編碼,獲取眾包數據中所隱藏的數據特征,用于原始指紋庫的重構;2)利用自編碼完成的稀疏自動編碼器對原始指紋庫進行重構,比較重構完成后的指紋庫與原始指紋庫中各AP下的接收信號強度指示(received signal strength indicator, RSSI)值的變化關系,進而確定移動的AP;3)利用重構完成后指紋庫中移動AP下的RSSI值,替換原始指紋庫中相應AP下的RSSI值,完成指紋庫的更新。更新流程如圖1所示。圖1中,WKNN(weighted k-nearest neighbor algorithm)為加權最鄰近算法。

圖1 WiFi指紋庫更新流程
本文采用仿真的方式產生實驗用數據集。在室內環境下,接收終端接收到的信號強度的損耗和信號傳輸距離成對數關系的變化,信號的路徑損耗可表示為

式中:R(d)為距離發射終端d處接收信號的路徑損耗,單位為dB;γ為傳播損耗系數;d為參考距離,單位為m。
在室內空間環境下,選取γ=3,d=1。根據信號的路徑損耗,針對每個AP在各參考點處生成相應的RSSI數據,以矩陣的形式對這些RSSI數據進行存儲,構建了相應的原始指紋庫和眾包數據集。
自動編碼器是神經網絡的一種,該網絡具有3層網絡結構,分別為輸入層、隱藏層和輸出層。自編碼網絡可以看作由兩部分組成:編碼器和解碼器,其中,編碼器用于輸入層信息的特征提取及轉換,解碼器用于轉換特征的逆向重構,實現輸入層信息的最大復原,其網絡結構示意圖如圖2所示。

圖2 自動編碼器的網絡結構示意

對給定的一個含有P個樣本的數據集 X=[X,X,…,X] 進行自編碼,則對應的編碼器輸出H=[h,h,…,h]及解碼器輸出Y=[y,y,… ,y]分別為

式中: θ = {W,b} 和 θ= {W,b} 分別為編碼和解碼過程中權重和偏置的集合;為激活函數,這里使用最常用的非線性西格莫伊德(Sigmoid)函數,其表達方式為

式中:x為函數的自變量,取值范圍為(-∞,+∞);e為自然對數函數的底數。
通常情況下,自動編碼器的輸出Y并不完全等于輸入 X,只是在滿足一定條件概率的情況下,盡可能地對X進行復現,所以自動編碼器的訓練過程可以理解為對損失函數 J,即重構誤差進行最小化的計算過程,其表達方式為

式中:第1項為輸入輸出樣本誤差的平方和均值;第2項為權重衰減項,用于減少權重的大小以防止過擬合;P為輸入的樣本個數;λ為L正則項的系數。
為了獲取輸入樣本中更有效的特征表達,通過對隱藏層施加一定的限制,使隱藏層滿足一定的稀疏性,使得它能夠在惡劣的環境下學習到最好的樣本特征,從而提高了特征提取的效率,此時,損失函數可表示為

式中:β為稀疏約束項的權重;ρ為稀疏性參數,通常是一個接近于0的較小值;ρ︿為平均激活度,取決于{W,b};h(x)為第 i個輸入樣本所對應的第 j個隱藏層神經元的輸出;K為庫爾貝克-萊布勒(Kullback-Leibler)差異的簡稱,用于衡量相同事件空間里的兩個概率分布的差異情況。
式(6)中的第2項為稀疏約束項,為隱藏層提供了稀疏性約束,使得隱藏層的ρ︿保持在一個較小的范圍內。可以看出,SAE通過稀疏性約束項使得ρ︿向設定的稀疏性參數靠近,從而實現稀疏自編碼的效果。
稀疏自編碼的過程就是對損失函數 J進行最小化的過程,因此,需要對網絡模型參數進行實時優化。首先,通過SAE網絡的前向傳播,可以得到網絡的整體重構誤差,將得到的重構誤差從輸出層進行反向傳播,采用梯度下降算法對權值矩陣W和偏置向量b進行相應優化更新,其表達方式為


式中,α為學習速率。
為了防止網絡出現梯度消失或者梯度爆炸的現象,α會隨著迭代次數的增加而逐漸減小,其更新方式為

式中:μ為提前設置的標量;為迭代的總次數;α為學習速率的初始值;α為第次迭代時的學習速率。
為了得到眾包數據中更有效的特征表達,在AE網絡的訓練過程中加入了一個稀疏性約束項,從而構成了一個SAE網絡,以此提高對眾包數據特征提取的效率。
眾包數據稀疏自編碼的過程即是對式(6)中的重構誤差函數 J進行最小化的過程,通過梯度下降算法對式(9)和式(10)中的權值矩陣和偏置向量進行更新,以最小化重構誤差函數。在得到最小化重構誤差函數之后,通過計算眾包數據自編碼的輸出判斷誤差函數是否收斂,當誤差函數收斂時,則此SAE網絡訓練完成,否則繼續上述步驟,直到誤差函數收斂為止。這里SAE網絡訓練時的主要參數取值分別為 λ=0.05,α=0.1和μ=0.1,其余網絡結構參數通過實驗逐步分析選取。
稀疏自編碼網絡訓練完成之后,利用訓練好的網絡對原始指紋庫進行自編碼,即原始指紋庫的重構。原始指紋庫的重構過程仍同圖2所示,其中[X,X,…,X]為原始指紋庫中每個 AP所對應的RSSI數據;[y,y,…,y]為原始指紋庫重構的輸出,即重構完成的原始指紋庫中每個 AP所對應的RSSI數據;[h,h,…,h]為眾包數據自編碼保留下來的含有特征表達的隱藏神經元。
原始指紋庫經過SAE網絡重構之后會呈現出一個新的數據分布。為體現數據分布變化,引入均方誤差(mean square error, MSE)作為數據分布變化的評判指標,越小,表明數據庫之間數據分布越接近,的計算方法為


式中:和 X′分別為重構前后的原始指紋庫;為AP樣本總數;為原始指紋庫重構前后的均方誤差;為移動后的指紋庫的均方誤差;為 AP移動后的指紋庫。
通過計算得到遠小于,這說明原始指紋庫經過SAE網絡重構之后,數據分布更加接近于AP移動后的指紋數據分布,與原始指紋庫的數據分布差異明顯。這種差異是由移動的AP所帶來的,憑借這種關系來尋找移動的AP。
在確定移動AP之后,將重構之后的原始指紋庫中移動AP下的RSSI值提取出來用以替換原始指紋庫中相應AP下的RSSI值,最終完成原始指紋庫的更新。
在基于 WiFi指紋的室內定位算法中,本文采用一種常用的WKNN來進行定位。WKNN將采集到的指紋數據與指紋庫中的參考數據進行相似度比較,找到相似度最高的個參考點,給予這個參考點的位置坐標不同的權值,從而實現目標位置的估計。本文中,將WKNN中的設置為4。
為了對最終的定位結果進行直觀的量化評判,這里引入了評判誤差函數為

式中:(X,Y)為目標點的真實坐標;(X,Y)為WKNN計算得到的預測坐標。
本文仿真實驗區域為20 m×50 m的室內空間,如圖3所示,每隔1 m設置一個指紋采集節點,共1 000個指紋采集節點,同時在該空間設置AP點18個(AP1至AP18),其中用于移動部署的AP點6個,其余12個AP點均保持不變。

圖3 仿真平面示意
離線階段在指紋采集節點處,對各個AP信號進行采集建立原始指紋庫,建庫格式為針對每個AP按列整理數據,從而形成一個1 000×18的RSSI數據庫矩陣。按照原始指紋庫的建庫格式,通過移動不同數量的AP,在原空間中的指紋采集節點處采集AP移動后的指紋數據,通過對各個AP信號進行采集建立AP移動后的指紋庫,建庫格式為針對每個 AP按列整理數據,同樣形成了一個1 000×18的RSSI數據庫矩陣。在實時定位階段,在移動相應AP后的指紋數據庫中隨機選取100條指紋數據作為眾包數據集,從而形成一個 100×18的RSSI數據庫矩陣。
基于眾包數據稀疏自編碼的 WiFi指紋庫更新系統主要包括以下3個部分,即移動AP的識別、WiFi指紋庫的更新、WiFi指紋庫更新的影響因素。
1)移動AP的識別。在對WiFi指紋庫更新之前,需要找到移動的AP,這里采用稀疏自編碼前后的原始指紋庫作為對比,比較重構前后所有AP的M值的大小關系,用于快速尋找移動的AP。圖6為移動6個AP下不同AP的M值,經過實驗比較,將M值大于15作為尋找移動AP的評判標準,該標準在移動不同數量AP的情況下均有效找到了移動AP。
由圖4可知,各AP重構前后的M值差異明顯,其中AP2、AP3、AP6、AP10、AP13、AP15所對應的M值明顯高于其他AP的M值,均達到了15以上,而其他AP的M值均保持在10以下,由此,可以有效判斷上述AP即為要尋找的移動AP。

圖4 各AP的MSE值對比圖
2)WiFi指紋庫的更新。在確定移動AP之后,需要將稀疏自編碼重構之后指紋庫中移動 AP下的RSSI值提取出來,用于替換原指紋庫中相應AP下的RSSI值,最終完成指紋庫的更新。為體現AP移動后指紋庫更新的效果,在實驗階段,選用稀疏自編碼重構、GBDT回歸預測、附有適量眾包標簽原始指紋庫的稀疏自編碼重構的方式與原始指紋庫進行了有效對比。
圖5為基于不同 WiFi指紋庫更新方法下的CDF誤差曲線,表1總結了不同定位更新方法下定位誤差的平均值、中位數和最大值。

圖5 不同更新方法下的定位精度

表1 不同更新方法下的定位精度 單位:m
由圖5可知,由于存在移動的 AP,原始指紋庫將不再適用于當前的信號空間環境,定位精度也因此最低。通過在原始指紋庫中加入適量帶有標簽的眾包數據以及通過GBDT回歸預測的方法,可以看到定位精度有了明顯提高。為了進一步提升當前環境下的定位精度,采用稀疏自編碼的方法對原始指紋庫進行更新,可以看出該方法對原指紋庫的更新效果明顯,定位精度有了明顯提升。最終,稀疏自編碼的平均定位精度可以達到0.88 m,與原始指紋庫相比提升了72.4%,與GBDT回歸預測相比提升了20.0%,與附有眾包標簽的原始指紋庫相比提升了8.3%,中值誤差和最大誤差也得到了相應明顯改善。最后,通過對附有眾包標簽的原始指紋庫進行稀疏自編碼,可以發現其定位精度有了進一步提升,相較于原始指紋庫的稀疏自編碼定位精度提升了30.7%,適量的帶有標簽的眾包數據可以對整個稀疏自編碼網絡起到一定的調節作用,有利于進一步提升稀疏自編碼網絡的重構效果。
3)WiFi指紋庫更新的影響因素。指紋庫更新的影響因素主要包括稀疏自編碼網絡中隱藏層的單元個數m、稀疏約束項權重β、稀疏性參數ρ、最大迭代次數N以及移動AP的數量。
在實驗中共布置了18個AP,其中6個AP作為移動的 AP,12個 AP作為未移動的 AP,在觀察移動 AP的數量對指紋庫更新影響的測試中,12個未移動的 AP保持不變,僅添加不同數量的移動AP。圖6給出了移動不同AP數量下,指紋庫更新后的CDF誤差曲線。
從圖6中可以發現,隨著移動AP數量的增加,更新后WiFi指紋庫的定位精度有所下降。這是因為隨著移動AP數量的增加,在一定程度上,稀疏自編碼網絡對原始指紋庫的重構難度也隨之上升,但是相較于原始指紋庫仍然保持著較高的定位精度。實驗表明,在移動2個AP、4個AP、6個AP的情況下,相較于原始指紋庫的平均定位精度分別提高了66.1%,75.3%,72.4%。

圖6 移動AP的個數對指紋庫更新的影響
在稀疏自編碼網絡中,隱藏層的單元個數對眾包數據特征的提取及原始指紋庫的重構有著舉足輕重的影響。圖7給出了設置不同隱藏單元個數,指紋庫更新后的CDF誤差曲線。

圖7 隱藏層單元個數對指紋庫更新的影響
從圖7中可以看出,隨著隱藏單元個數的變化,更新后指紋庫的定位精度也會隨之發生變化,當隱藏單元個數 m=4 時,指紋庫會獲得一個比較理想的更新效果。
為了得到眾包數據中更有效的特征表達,通過在自編碼網絡中引入稀疏性約束項的方式,以此提高眾包數據特征提取的效率。圖8和圖9分別給出了不同稀疏性參數和稀疏約束項權重下,指紋庫更新后的平均定位誤差。
從圖8和圖9中可以看出,隨著稀疏性參數和稀疏約束項權重的變化,WiFi指紋庫更新后的定位精度也隨之發生變化,當稀疏性參數設置為ρ=0.05,稀疏約束項權重設置為 β=8時,所獲得的平均定位誤差達到最小。

圖8 稀疏性參數對指紋庫更新的影響

圖9 稀疏約束項權重對指紋庫更新的影響
圖10給出了不同迭代次數下,WiFi指紋庫更新后的平均定位誤差;圖11給出了不同迭代次數下系統所耗費的時間。

圖10 最大迭代次數N對指紋庫更新的影響

圖11 不同迭代次數下系統所耗費的時間
由圖10和圖11可以看出,綜合考慮平均定位誤差及迭代所需時間,將最大迭代次數設置為=500 時,指紋庫會得到一個比較高的更新效率。
本文提出了一種基于眾包數據稀疏自編碼的 WiFi指紋庫更新方法,該方法可以借助眾包數據對原始指紋庫進行重構,進而檢測移動的AP并更新原始指紋庫。相較于未移動AP的RSSI值,眾包數據與原始指紋庫中移動 AP的 RSSI值之間的差值明顯增大。憑借這種關系,對比稀疏自編碼重構前后原始指紋庫中各 AP的M值準確識別了移動的AP。確定移動AP之后,利用重構完成的指紋數據替換原始指紋庫中相應的指紋數據,進而完成指紋庫的更新。仿真實驗表明,文中所提的基于眾包數據稀疏自編碼的WiFi指紋庫更新方法相較于其他相關 WiFi指紋庫更新方法均取得了較高的定位精度和更新效率,為室內 WiFi指紋庫的更新提供了一種切實可行的方案。