馬佩勛
(長沙民政職業(yè)技術(shù)學(xué)院 軟件學(xué)院,長沙 410004)
隨著無線保真(wireless fidelity, WiFi)的廣泛覆蓋,以及多數(shù)移動設(shè)備支持電氣和電子工程師協(xié)會(Institute of Electrical and Electronic Engineers,IEEE)802.11標(biāo)準(zhǔn),基于WiFi的室內(nèi)定位系統(tǒng)得到了廣泛關(guān)注[1]。如文獻(xiàn)[2-3]分別提出了基于傳播的 WiFi定位和指紋匹配定位。相比于基于傳播的WiFi定位,指紋匹配定位算法具有高的定位精度。
指紋匹配定位算法先記錄 WiFi 接入點(access points, APs)信號(指紋),再利用指紋信息匹配設(shè)備的位置。典型的指紋匹配WiFi定位算法由離線階段和在線階級構(gòu)成:在離線階段,獲取各點APs的接收信號強(qiáng)度(received signal strength,RSS),并記錄每點位置所對應(yīng)的RSS值,構(gòu)成位置數(shù)據(jù)庫;在在線階段,通過測量用戶位置的RSS值,再將 RSS值輸入數(shù)據(jù)庫,進(jìn)行匹配,進(jìn)而估計用戶位置,如圖1所示。
圖1 WiFi定位流程圖
然而,由于無線信號內(nèi)的固有噪聲,指紋匹配WiFi定位算法仍面臨著挑戰(zhàn)[4]。為此,研究提出了不同的策略應(yīng)對挑戰(zhàn),旨在提高定位精度[5]。例如,文獻(xiàn)[6]通過概率技術(shù)統(tǒng)計信號的內(nèi)在噪聲,其性能優(yōu)于文獻(xiàn)[7]的方案。然而,這些技術(shù)方案假定不同的AP間的信號彼此獨立[8]。為解決AP間信號彼此不獨立的問題,本文提出基于堆疊自編碼器的WiFi室內(nèi)定位(stacked denoising autoencoders WiFi-based indoor localization, SDIL)算法,其能夠應(yīng)用于不同設(shè)備的異構(gòu)環(huán)境,獲取強(qiáng)健的定位精度。SDIL算法先通過深度學(xué)習(xí),自動捕獲在不同AP與不同的指紋位置間的非線性關(guān)系,并且無需假定各點獨立;再通過指紋匹配定位算法估計節(jié)點位置。同時為了實現(xiàn)強(qiáng)健的定位精度,利用堆疊式去噪聲自編碼建立深度學(xué)習(xí)模型,獲取含噪聲WiFi信號與不同指紋點位置間關(guān)系;最后引用概率模型進(jìn)一步處理輸入信號的噪聲。實驗數(shù)據(jù)表明,提出的SDIL算法能夠獲得約1.21 m的定位精度。
考慮如圖2所示的系統(tǒng)結(jié)構(gòu)。整個系統(tǒng)由離線訓(xùn)練階段和在線定位階段構(gòu)成。在離線訓(xùn)練階段,建立N個深度神經(jīng)元,其對應(yīng)N個指紋訓(xùn)練點。即一個深度神經(jīng)元對應(yīng)一個訓(xùn)練點。
圖2 系統(tǒng)模型
首先,利用簽名收集(signature collector, SC)模塊掃描 APs,并收集不同指紋位置的 RSS值,將這些測量值傳輸至云端的服務(wù)器;其次,利用預(yù)處理(preprocessor, PR)模塊,將WiFi測量值轉(zhuǎn)換成適合深度網(wǎng)絡(luò)訓(xùn)練模型的格式;最后,將預(yù)處理后的數(shù)據(jù)傳輸至噪聲嵌入(noise injector, NI)模塊。通過嵌入噪聲,擾亂原始的測量值,再將原始的測量值和經(jīng)噪聲嵌入后的測量值轉(zhuǎn)化至模型訓(xùn)練(model trainer, MT)模塊,即將它們作為訓(xùn)練模塊的輸入。MT模塊負(fù)責(zé)為每個指紋點產(chǎn)生和訓(xùn)練去噪聲預(yù)編碼模型。
完成了離線階段后,便進(jìn)入在線階段。先掃描各Aps信號,并捕獲這些點(盲節(jié)點)的RSS值。再將這些數(shù)據(jù)進(jìn)行預(yù)處理,最后由概率定位模塊估計盲節(jié)點位置。
不失一般性,在二維(2D)物理空間Θ內(nèi)部署M個接入點。在整個Θ空間內(nèi)部署N個離散指紋位置點,并收集訓(xùn)練數(shù)據(jù)。在在線定位階段,持有移動設(shè)備的用戶掃描附近APs。令?表示用戶的位置。
用M維的矢量x= (x1,…,xM)代表一個WiFi掃描值。矢量x中元素xi對應(yīng)一個接入點i的接收信號強(qiáng)度 RSS。因此定位問題可表述為:給定矢量x= (x1,…,xM),尋找位置 ?i,使其能夠獲得最大化概率P(?i|x)。
預(yù)處理模塊承擔(dān)了將記錄的WiFi RSS值xi轉(zhuǎn)換成相應(yīng)的特性矢量的任務(wù)。由于并非每次掃描都能包括所有的M個APs,當(dāng)RSS值過低,例如當(dāng)RSS值小于-100 dB·m時,則無法捕獲該AP的RSS值,這就需采用固定的尺寸矢量,將其作為機(jī)器學(xué)習(xí)模型。并將所捕獲的 RSS值進(jìn)行歸一化處理,使其分布在[0,1]上。
作為深度學(xué)習(xí)的變形結(jié)構(gòu),去噪自編碼器(denoising autoencoder, DA)具有良好的學(xué)習(xí)數(shù)據(jù)集特征的能力。將多個DA進(jìn)行堆疊,便形成堆疊的去噪自編碼器(stacked denoising autoencoder, SDA)。
由于SDA無需吉布斯采樣,訓(xùn)練更容易,SDA受到廣泛應(yīng)用。為此,本文提出的SDIL算法也采用SDA,充分利用SDA在訓(xùn)練過程中的無監(jiān)督學(xué)習(xí)和對數(shù)據(jù)的破壞能力,加強(qiáng)學(xué)習(xí)到數(shù)據(jù)集中的特征和數(shù)據(jù)結(jié)構(gòu)。換而言之,通過SDA降低數(shù)據(jù)中的噪聲數(shù)據(jù),提升學(xué)習(xí)數(shù)據(jù)集特征能力,提高離線訓(xùn)練模型的準(zhǔn)確性。
具體而言,令x表示原矢量數(shù)據(jù)。通過映射,在隱含層產(chǎn)生新的輸出為
式中:x′為對x加入噪聲后的數(shù)據(jù);θ={W,b},為映射的參數(shù)集;W為權(quán)值矩陣;b為偏置向量;s為一個非線性函數(shù)。
令gθ′(y)表示解碼器函數(shù),其將y重構(gòu)為z,即
式中:θ′= {W′,b′},為映射參數(shù)集;W′為逆映射的權(quán)重,W′=WT;b′為偏置向量。
將x與z進(jìn)行比較,構(gòu)建重構(gòu)誤差,并通過調(diào)整模型參數(shù),使誤差最小,即
圖3給出 DA結(jié)構(gòu)。先原始輸入數(shù)據(jù)進(jìn)行擾亂,再經(jīng)自動編碼和解碼后重構(gòu)成z,并通過最小化誤差,得到原始數(shù)據(jù)x。
圖3 去噪聲編碼模型
利用離線訓(xùn)練模型獲取最優(yōu)的映射參數(shù)集,使原始數(shù)據(jù)與重構(gòu)后的數(shù)據(jù)間的誤差最小。即基于最小化的重構(gòu)誤差原則,當(dāng)重構(gòu)誤差不再減少,就結(jié)束訓(xùn)練。離線訓(xùn)練模型的輸出就是映射參數(shù)集θ={W,b}。
2.2.1 基于掩蓋腐化的NI
由于多徑和衰落影響[9],在固定位置所檢測的APs數(shù)隨時間變化。利用掩蓋腐化方法仿真波動的接入點[10]。圖4為一個掩蓋腐化的NI示例。
圖4 基于掩蓋腐化的NI示例
如圖4所示,先由腐化參數(shù)f產(chǎn)生隨機(jī)的二值變量矢量,再將二值矢量與原始矢量x相乘。這就使得0值所對應(yīng)的AP點的數(shù)據(jù)丟失。這正好符合有些AP點、用戶無法捕獲它的RSS值的情況。當(dāng)沒有檢測到AP點的RSS值,就將該RSS值設(shè)為零。
2.2.2 模型訓(xùn)練
由SDA構(gòu)成深度學(xué)習(xí)模型。每個堆棧對應(yīng)一個指紋位置。利用西格莫伊德(Sigmoid)函數(shù),將輸出值限定于0至1的范圍內(nèi),即
式中x表示任意實數(shù)值。
引用微調(diào)策略(fine-tuning stage, FTS),對模型進(jìn)行端到端的訓(xùn)練。先隨機(jī)初始化權(quán)重值,然后將每個輸入的訓(xùn)練值遍歷網(wǎng)絡(luò),進(jìn)而得到重構(gòu)數(shù)據(jù)。再將原始數(shù)據(jù)與重構(gòu)數(shù)據(jù)差值的平方和作為調(diào)整權(quán)重的損耗函數(shù)。同時,引用梯度下降算法對不同層的權(quán)重系數(shù)進(jìn)行調(diào)整。
在在線定位階段,實現(xiàn)對用戶位置的估計。具體而言,將未知位置用戶所獲取的 WiFi掃描值,輸入至每個指紋匹配位置的深度模型,再依據(jù)概率模型,選擇與重構(gòu)值相似度最高的位置作為用戶位置。
假定用戶在位置?i接收到了WiFi信號,用信號強(qiáng)度矢量x= (x1,…,xM)表示這些信號,其中M是環(huán)境的 APs總數(shù)。為了估計用戶位置,先計算概率P(?i|x),這表示在給定信號強(qiáng)度矢量x下,用戶位于指紋位置?i的概率。依據(jù)貝葉斯(Bayesian)理論[11],先驗概率P(?i|x)為
式中:p(?i) 為用戶位于位置?i的先驗概率;p(x|?i) 為位置?i時出現(xiàn)信號強(qiáng)度矢量x的概率;p(x)為出現(xiàn)信號強(qiáng)度矢量x= (x1,…,xM)的概率;N為指紋數(shù)據(jù)庫里的位置數(shù),即訓(xùn)練的位置數(shù)。假定所有位置是等概率的,則式(5)可改寫為
傳統(tǒng)的指紋匹配算法,例如文獻(xiàn)[6]是假定所有APs間的RSS信號值彼此獨立,并沒有考慮到不同APs間的相關(guān)性。換而言之,SDIL算法是通過重構(gòu)離線深度學(xué)習(xí)模型,來估計條件概率P(?i|x)。即從每個深度模型獲取初始值的重構(gòu)值,再計算重構(gòu)值與初始值的相似度。由于矢量x= (x1,…,xM)包含了M個APs點的信號值, 重構(gòu)值考慮這M個Aps信號值與用戶所在的位置的相關(guān)性。下面用相似函數(shù)表述此相關(guān)性。由于徑向基核(radial basis kernel, RBK)函數(shù)的輸出值介于0至 1范圍內(nèi),將徑向基核函數(shù)作為相似函數(shù)。用P(x′|?i) 表示相似函數(shù),即
式中:xij、分別為第j個 WiFi掃描的原始數(shù)據(jù)及重構(gòu)后的數(shù)據(jù);σ為輸入掃描的方差;λ表示徑向基函數(shù)參數(shù)值;n是總位置數(shù)。由式(7)可知,P(x′|?i)包含了n個掃描點位置信息,即在估計決策用戶位置時考慮了各掃描點間的相關(guān)性。
將用戶位于?i位置的概率作為其權(quán)值,把所有指紋點的中心位置作為用戶位置[12],即
選擇約1 600m2的康復(fù)醫(yī)療區(qū)域,在此區(qū)域內(nèi)部署122個APs, 進(jìn)行數(shù)據(jù)實測,如圖5所示,其中黑色空圓心表示AP所在位置。由5個志愿者使用不同的安卓手機(jī),在 48個不同位置收集數(shù)據(jù)。由這些數(shù)據(jù)的7 200抽樣值構(gòu)成訓(xùn)練數(shù)據(jù)庫。
圖5 康復(fù)醫(yī)療的平面圖
用戶通過安卓系統(tǒng)的軟件開發(fā)工具包(software development kit, SDK)軟件,掃描 APs,獲取WiFi信號數(shù)據(jù)。這些數(shù)據(jù)包括MAC地址,RSS以及時間戳。具體的實驗參數(shù)如表1所示。
表1 實驗參數(shù)
為了更好地分析SDIL算法性能,選擇文獻(xiàn)[6]提出的基于概率指紋匹配定位(probabilistic fingerprinting based Indoor localization, PFIL)和文獻(xiàn)[13]提出的基于深度學(xué)習(xí)的定位(deeplearning based indoor localization, DLIL)算法進(jìn)行參照。PFIL算法假定APs間彼此獨立,在訓(xùn)練數(shù)據(jù)時,沒有考慮APs所采集數(shù)據(jù)的關(guān)聯(lián)性。DLIL算法也采用深度學(xué)習(xí)算法,但沒有處理數(shù)據(jù)中的噪聲。
圖6顯示各算法在不同定位誤差下的累積分布函數(shù)(cumulative distribution function, CDF)曲線。
圖6 各算法的CDF曲線
從圖6可知,相比于PFIL和DLIL算法,SDIL算法獲得了更好的定位精度。表2列出PFIL、DLIL和SDIL算法的平均定位精度。
表2 不同方法的定位精度 單位:m
由圖6和表 2可知,SDIL算法的定位精度優(yōu)于PFIL和DLIL算法。原因在于:PFIL算法沒有捕獲不同APs與指紋位置間的相關(guān)性;DLIL算法沒有考慮無線信號的內(nèi)在噪聲。因此,對DLIL算法加入噪聲后,其定位性能急速下降。SDIL算法不僅對數(shù)據(jù)中的噪聲進(jìn)行了處理,也考慮了不同APs與指紋位置間的相關(guān)性,提高了定位精度。
利用矩陣實驗室(matrix laboratory, MATLAB)軟件編寫算法軟件,在主頻為172.6 GHz、隨機(jī)存儲器(random access memory, RAM)為16 GB、顯卡為恩維迪亞(Nvidia)GTX 960M的電腦上運行該軟件。圖7顯示了匹配122個APs時,PFIL算法、DLIL算法和SDIL算法的運行時間。
圖7 運行時間
從圖7可知,PFIL算法的運行時間最低,而 DLIL算法的運行時間介于 PFIL與 SDIL算法之間。本文提出的 SDIL算法運行時間最長,達(dá)到412 ms,但412 ms的定位時間是可以滿足要求的。
針對室內(nèi)定位問題,提出基于深度學(xué)習(xí)的WiFi室內(nèi)定位SDIL算法。SDIL算法引用堆疊去噪聲自編碼深度學(xué)習(xí)法訓(xùn)練模型,并利用概率技術(shù)應(yīng)對信號中的噪聲。仿真數(shù)據(jù)表明,提出的 SDIL算法能夠達(dá)到 1.21 m的定位精度。相比于PFIL算法和DLIL算法,SDIL算法提高了定位精度。但是,SDIL算法的運算時間長,達(dá)到412 ms。在基于位置服務(wù)的應(yīng)用中,412 ms的定位時間可以滿足要求。目前還沒有單獨考慮離線訓(xùn)練的性能以及x中添加的噪聲對訓(xùn)練性能的影響,后期將考慮訓(xùn)練點數(shù)以及添加噪聲對性能的影響。