?

一種基于堆疊自編碼器的WiFi室內定位算法

2021-06-19 08:15馬佩勛
導航定位學報 2021年3期
關鍵詞:定位精度離線指紋

馬佩勛

(長沙民政職業技術學院 軟件學院,長沙 410004)

0 引言

隨著無線保真(wireless fidelity, WiFi)的廣泛覆蓋,以及多數移動設備支持電氣和電子工程師協會(Institute of Electrical and Electronic Engineers,IEEE)802.11標準,基于WiFi的室內定位系統得到了廣泛關注[1]。如文獻[2-3]分別提出了基于傳播的 WiFi定位和指紋匹配定位。相比于基于傳播的WiFi定位,指紋匹配定位算法具有高的定位精度。

指紋匹配定位算法先記錄 WiFi 接入點(access points, APs)信號(指紋),再利用指紋信息匹配設備的位置。典型的指紋匹配WiFi定位算法由離線階段和在線階級構成:在離線階段,獲取各點APs的接收信號強度(received signal strength,RSS),并記錄每點位置所對應的RSS值,構成位置數據庫;在在線階段,通過測量用戶位置的RSS值,再將 RSS值輸入數據庫,進行匹配,進而估計用戶位置,如圖1所示。

圖1 WiFi定位流程圖

然而,由于無線信號內的固有噪聲,指紋匹配WiFi定位算法仍面臨著挑戰[4]。為此,研究提出了不同的策略應對挑戰,旨在提高定位精度[5]。例如,文獻[6]通過概率技術統計信號的內在噪聲,其性能優于文獻[7]的方案。然而,這些技術方案假定不同的AP間的信號彼此獨立[8]。為解決AP間信號彼此不獨立的問題,本文提出基于堆疊自編碼器的WiFi室內定位(stacked denoising autoencoders WiFi-based indoor localization, SDIL)算法,其能夠應用于不同設備的異構環境,獲取強健的定位精度。SDIL算法先通過深度學習,自動捕獲在不同AP與不同的指紋位置間的非線性關系,并且無需假定各點獨立;再通過指紋匹配定位算法估計節點位置。同時為了實現強健的定位精度,利用堆疊式去噪聲自編碼建立深度學習模型,獲取含噪聲WiFi信號與不同指紋點位置間關系;最后引用概率模型進一步處理輸入信號的噪聲。實驗數據表明,提出的SDIL算法能夠獲得約1.21 m的定位精度。

1 系統模型及問題形式化表述

1.1 系統模型

考慮如圖2所示的系統結構。整個系統由離線訓練階段和在線定位階段構成。在離線訓練階段,建立N個深度神經元,其對應N個指紋訓練點。即一個深度神經元對應一個訓練點。

圖2 系統模型

首先,利用簽名收集(signature collector, SC)模塊掃描 APs,并收集不同指紋位置的 RSS值,將這些測量值傳輸至云端的服務器;其次,利用預處理(preprocessor, PR)模塊,將WiFi測量值轉換成適合深度網絡訓練模型的格式;最后,將預處理后的數據傳輸至噪聲嵌入(noise injector, NI)模塊。通過嵌入噪聲,擾亂原始的測量值,再將原始的測量值和經噪聲嵌入后的測量值轉化至模型訓練(model trainer, MT)模塊,即將它們作為訓練模塊的輸入。MT模塊負責為每個指紋點產生和訓練去噪聲預編碼模型。

完成了離線階段后,便進入在線階段。先掃描各Aps信號,并捕獲這些點(盲節點)的RSS值。再將這些數據進行預處理,最后由概率定位模塊估計盲節點位置。

1.2 問題形式化表述

不失一般性,在二維(2D)物理空間Θ內部署M個接入點。在整個Θ空間內部署N個離散指紋位置點,并收集訓練數據。在在線定位階段,持有移動設備的用戶掃描附近APs。令?表示用戶的位置。

用M維的矢量x= (x1,…,xM)代表一個WiFi掃描值。矢量x中元素xi對應一個接入點i的接收信號強度 RSS。因此定位問題可表述為:給定矢量x= (x1,…,xM),尋找位置 ?i,使其能夠獲得最大化概率P(?i|x)。

2 SDIL算法

2.1 預處理模塊

預處理模塊承擔了將記錄的WiFi RSS值xi轉換成相應的特性矢量的任務。由于并非每次掃描都能包括所有的M個APs,當RSS值過低,例如當RSS值小于-100 dB·m時,則無法捕獲該AP的RSS值,這就需采用固定的尺寸矢量,將其作為機器學習模型。并將所捕獲的 RSS值進行歸一化處理,使其分布在[0,1]上。

2.2 離線訓練模型的構建

作為深度學習的變形結構,去噪自編碼器(denoising autoencoder, DA)具有良好的學習數據集特征的能力。將多個DA進行堆疊,便形成堆疊的去噪自編碼器(stacked denoising autoencoder, SDA)。

由于SDA無需吉布斯采樣,訓練更容易,SDA受到廣泛應用。為此,本文提出的SDIL算法也采用SDA,充分利用SDA在訓練過程中的無監督學習和對數據的破壞能力,加強學習到數據集中的特征和數據結構。換而言之,通過SDA降低數據中的噪聲數據,提升學習數據集特征能力,提高離線訓練模型的準確性。

具體而言,令x表示原矢量數據。通過映射,在隱含層產生新的輸出為

式中:x′為對x加入噪聲后的數據;θ={W,b},為映射的參數集;W為權值矩陣;b為偏置向量;s為一個非線性函數。

令gθ′(y)表示解碼器函數,其將y重構為z,即

式中:θ′= {W′,b′},為映射參數集;W′為逆映射的權重,W′=WT;b′為偏置向量。

將x與z進行比較,構建重構誤差,并通過調整模型參數,使誤差最小,即

圖3給出 DA結構。先原始輸入數據進行擾亂,再經自動編碼和解碼后重構成z,并通過最小化誤差,得到原始數據x。

圖3 去噪聲編碼模型

利用離線訓練模型獲取最優的映射參數集,使原始數據與重構后的數據間的誤差最小。即基于最小化的重構誤差原則,當重構誤差不再減少,就結束訓練。離線訓練模型的輸出就是映射參數集θ={W,b}。

2.2.1 基于掩蓋腐化的NI

由于多徑和衰落影響[9],在固定位置所檢測的APs數隨時間變化。利用掩蓋腐化方法仿真波動的接入點[10]。圖4為一個掩蓋腐化的NI示例。

圖4 基于掩蓋腐化的NI示例

如圖4所示,先由腐化參數f產生隨機的二值變量矢量,再將二值矢量與原始矢量x相乘。這就使得0值所對應的AP點的數據丟失。這正好符合有些AP點、用戶無法捕獲它的RSS值的情況。當沒有檢測到AP點的RSS值,就將該RSS值設為零。

2.2.2 模型訓練

由SDA構成深度學習模型。每個堆棧對應一個指紋位置。利用西格莫伊德(Sigmoid)函數,將輸出值限定于0至1的范圍內,即

式中x表示任意實數值。

引用微調策略(fine-tuning stage, FTS),對模型進行端到端的訓練。先隨機初始化權重值,然后將每個輸入的訓練值遍歷網絡,進而得到重構數據。再將原始數據與重構數據差值的平方和作為調整權重的損耗函數。同時,引用梯度下降算法對不同層的權重系數進行調整。

2.3 在線定位階段

在在線定位階段,實現對用戶位置的估計。具體而言,將未知位置用戶所獲取的 WiFi掃描值,輸入至每個指紋匹配位置的深度模型,再依據概率模型,選擇與重構值相似度最高的位置作為用戶位置。

假定用戶在位置?i接收到了WiFi信號,用信號強度矢量x= (x1,…,xM)表示這些信號,其中M是環境的 APs總數。為了估計用戶位置,先計算概率P(?i|x),這表示在給定信號強度矢量x下,用戶位于指紋位置?i的概率。依據貝葉斯(Bayesian)理論[11],先驗概率P(?i|x)為

式中:p(?i) 為用戶位于位置?i的先驗概率;p(x|?i) 為位置?i時出現信號強度矢量x的概率;p(x)為出現信號強度矢量x= (x1,…,xM)的概率;N為指紋數據庫里的位置數,即訓練的位置數。假定所有位置是等概率的,則式(5)可改寫為

傳統的指紋匹配算法,例如文獻[6]是假定所有APs間的RSS信號值彼此獨立,并沒有考慮到不同APs間的相關性。換而言之,SDIL算法是通過重構離線深度學習模型,來估計條件概率P(?i|x)。即從每個深度模型獲取初始值的重構值,再計算重構值與初始值的相似度。由于矢量x= (x1,…,xM)包含了M個APs點的信號值, 重構值考慮這M個Aps信號值與用戶所在的位置的相關性。下面用相似函數表述此相關性。由于徑向基核(radial basis kernel, RBK)函數的輸出值介于0至 1范圍內,將徑向基核函數作為相似函數。用P(x′|?i) 表示相似函數,即

式中:xij、分別為第j個 WiFi掃描的原始數據及重構后的數據;σ為輸入掃描的方差;λ表示徑向基函數參數值;n是總位置數。由式(7)可知,P(x′|?i)包含了n個掃描點位置信息,即在估計決策用戶位置時考慮了各掃描點間的相關性。

將用戶位于?i位置的概率作為其權值,把所有指紋點的中心位置作為用戶位置[12],即

3 性能分析

3.1 實驗場景

選擇約1 600m2的康復醫療區域,在此區域內部署122個APs, 進行數據實測,如圖5所示,其中黑色空圓心表示AP所在位置。由5個志愿者使用不同的安卓手機,在 48個不同位置收集數據。由這些數據的7 200抽樣值構成訓練數據庫。

圖5 康復醫療的平面圖

用戶通過安卓系統的軟件開發工具包(software development kit, SDK)軟件,掃描 APs,獲取WiFi信號數據。這些數據包括MAC地址,RSS以及時間戳。具體的實驗參數如表1所示。

表1 實驗參數

為了更好地分析SDIL算法性能,選擇文獻[6]提出的基于概率指紋匹配定位(probabilistic fingerprinting based Indoor localization, PFIL)和文獻[13]提出的基于深度學習的定位(deeplearning based indoor localization, DLIL)算法進行參照。PFIL算法假定APs間彼此獨立,在訓練數據時,沒有考慮APs所采集數據的關聯性。DLIL算法也采用深度學習算法,但沒有處理數據中的噪聲。

3.2 定位精度

圖6顯示各算法在不同定位誤差下的累積分布函數(cumulative distribution function, CDF)曲線。

圖6 各算法的CDF曲線

從圖6可知,相比于PFIL和DLIL算法,SDIL算法獲得了更好的定位精度。表2列出PFIL、DLIL和SDIL算法的平均定位精度。

表2 不同方法的定位精度 單位:m

由圖6和表 2可知,SDIL算法的定位精度優于PFIL和DLIL算法。原因在于:PFIL算法沒有捕獲不同APs與指紋位置間的相關性;DLIL算法沒有考慮無線信號的內在噪聲。因此,對DLIL算法加入噪聲后,其定位性能急速下降。SDIL算法不僅對數據中的噪聲進行了處理,也考慮了不同APs與指紋位置間的相關性,提高了定位精度。

3.3 運行時間

利用矩陣實驗室(matrix laboratory, MATLAB)軟件編寫算法軟件,在主頻為172.6 GHz、隨機存儲器(random access memory, RAM)為16 GB、顯卡為恩維迪亞(Nvidia)GTX 960M的電腦上運行該軟件。圖7顯示了匹配122個APs時,PFIL算法、DLIL算法和SDIL算法的運行時間。

圖7 運行時間

從圖7可知,PFIL算法的運行時間最低,而 DLIL算法的運行時間介于 PFIL與 SDIL算法之間。本文提出的 SDIL算法運行時間最長,達到412 ms,但412 ms的定位時間是可以滿足要求的。

4 結束語

針對室內定位問題,提出基于深度學習的WiFi室內定位SDIL算法。SDIL算法引用堆疊去噪聲自編碼深度學習法訓練模型,并利用概率技術應對信號中的噪聲。仿真數據表明,提出的 SDIL算法能夠達到 1.21 m的定位精度。相比于PFIL算法和DLIL算法,SDIL算法提高了定位精度。但是,SDIL算法的運算時間長,達到412 ms。在基于位置服務的應用中,412 ms的定位時間可以滿足要求。目前還沒有單獨考慮離線訓練的性能以及x中添加的噪聲對訓練性能的影響,后期將考慮訓練點數以及添加噪聲對性能的影響。

猜你喜歡
定位精度離線指紋
北方海區北斗地基增強系統基站自定位精度研究
小米8手機在城市環境下的單點定位精度研究
基于卷積神經網絡的離線筆跡鑒別系統
新版Windows 10補丁離線安裝更簡單
為什么每個人的指紋都不一樣
GPS定位精度研究
GPS定位精度研究
唯一的指紋
好進難出 應對迅雷“口袋戰”
可疑的指紋
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合