宋斌斌,余 敏,何肖娜,薛 峰 ,阮 超
(1.江西師范大學(xué) 軟件學(xué)院,南昌 330022;2.江西師范大學(xué) 計(jì)算機(jī)信息工程學(xué)院,南昌 330022)
基于位置的服務(wù)(location based services,LBS)需求呈爆發(fā)式增長(zhǎng),對(duì)于空曠的室外環(huán)境,如知名的全球定位系統(tǒng)(global positioning system,GPS)、蓬勃發(fā)展的北斗衛(wèi)星導(dǎo)航系統(tǒng)(BeiDou navigation satellite system,BDS)等都能為用戶(hù)提供較好的米級(jí)位置服務(wù),解決在復(fù)雜的道路上導(dǎo)航定位的問(wèn)題[1]。然而有研究表明,人們大約有80 %的時(shí)間處于室內(nèi)環(huán)境,但受制于技術(shù)、成本等各方面因素,室內(nèi)定位沒(méi)有被大范圍地應(yīng)用。目前,國(guó)內(nèi)外學(xué)者提出了基于無(wú)線(xiàn)保真(wireless fidelity,WiFi)、藍(lán)牙、紅外線(xiàn)、射頻識(shí)別、超聲波、超寬帶等室內(nèi)定位技術(shù)及應(yīng)用系統(tǒng)[2],綜合考慮部署成本和定位精度等因素,其中基于WiFi的室內(nèi)定位技術(shù)應(yīng)用前景最為廣泛[3]。但另一方面,由于軟硬件異構(gòu),同一位置不同手機(jī)的WiFi觀(guān)測(cè)量存在差異,這已經(jīng)被認(rèn)為是影響定位系統(tǒng)性能的關(guān)鍵因素。當(dāng)離線(xiàn)建庫(kù)和在線(xiàn)定位使用的為同一型號(hào)手機(jī)時(shí),往往能得到較為滿(mǎn)意的定位精度;但其他型號(hào)手機(jī)進(jìn)入該定位環(huán)境時(shí),由于觀(guān)測(cè)量差異會(huì)造成定位精度損失,為了讓各型號(hào)手機(jī)適應(yīng)原位置指紋數(shù)據(jù)庫(kù)進(jìn)行定位時(shí)獲得更高的定位精度,就需對(duì)不同型號(hào)手機(jī)的WiFi進(jìn)行標(biāo)定,標(biāo)定的本質(zhì)是為了使用戶(hù)設(shè)備和參考設(shè)備在同一位置接收的觀(guān)測(cè)量近似。
對(duì)于WiFi標(biāo)定問(wèn)題,目前國(guó)內(nèi)外學(xué)者研究的重點(diǎn)都是圍繞基于接收信號(hào)強(qiáng)度指示(received signal strength indicator,RSSI)數(shù)據(jù)處理的方法使不同設(shè)備間形成對(duì)應(yīng)的關(guān)系,這類(lèi)方法的原理是基于不同設(shè)備間的RSSI值存在著一種映射關(guān)系的事實(shí),并且已經(jīng)被許多研究和實(shí)驗(yàn)所證實(shí)。文獻(xiàn)[4]在2013年提出先驗(yàn)知識(shí)對(duì)RSSI值進(jìn)行校正的方法,采集較少的數(shù)據(jù)利用不同的映射表進(jìn)行標(biāo)定;文獻(xiàn)[5]提出多任務(wù)學(xué)習(xí)和貝葉斯優(yōu)化的方法進(jìn)行設(shè)備標(biāo)定;文獻(xiàn)[6]提出利用線(xiàn)性回歸分析對(duì)設(shè)備進(jìn)行標(biāo)定的可能性。雖然上述方法都能取得一定的效果,但是并不能得到較為滿(mǎn)意的映射模型。本文提出一種使用反向傳播(back propagation,BP)神經(jīng)網(wǎng)絡(luò)的WiFi標(biāo)定方法,通過(guò)神經(jīng)網(wǎng)絡(luò)反復(fù)訓(xùn)練使得用戶(hù)設(shè)備的預(yù)期值與參考設(shè)備的真實(shí)值接近,當(dāng)輸出層誤差的平方和小于閾值時(shí)則訓(xùn)練完成,保存各層的權(quán)值和偏向值,得到較為穩(wěn)定的標(biāo)定模型,即完成標(biāo)定,利用該標(biāo)定模型可以對(duì)不同型號(hào)手機(jī)的觀(guān)測(cè)量進(jìn)行校正。該標(biāo)定方法可以有效降低手機(jī)軟硬件異構(gòu)對(duì)定位精度的影響。

基于歐式距離平均值的離群點(diǎn)檢測(cè)算法可以描述如下:
1)給定參數(shù)k,求點(diǎn)p和k個(gè)離其最近臨近點(diǎn)的歐式距離之和為
(1)
式中:(x,y)為點(diǎn)p的坐標(biāo);(xa,yb)為其余點(diǎn)的坐標(biāo),a=1,2,…,k,b=1,2,…,k。
(2)

初始的數(shù)據(jù)對(duì)可通過(guò)上述的離群點(diǎn)檢測(cè)算法為后續(xù)的BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練提供純凈的數(shù)據(jù)對(duì)。
BP神經(jīng)網(wǎng)絡(luò)(neural networks,BPNN)即按照誤差反向傳播算法訓(xùn)練的神經(jīng)網(wǎng)絡(luò),由正向傳播過(guò)程和誤差反向傳播過(guò)程2個(gè)部分組成[8-9]。核心原理是:輸入數(shù)據(jù)集,通過(guò)正向傳播的多層前饋網(wǎng)絡(luò)確定正向傳播過(guò)程的輸出值,在此過(guò)程中各層的權(quán)值和偏向值都是隨機(jī)生成。得到輸出值與真實(shí)值進(jìn)行誤差分析,使用誤差的反向傳播算法對(duì)網(wǎng)絡(luò)各層的權(quán)值和偏向值進(jìn)行反復(fù)更新,使輸出值盡可能接近真實(shí)值。當(dāng)輸出層誤差的平方和小于閾值時(shí)則訓(xùn)練完成,保存各層的權(quán)值和偏向值,確定較為穩(wěn)定的網(wǎng)絡(luò)模型,即完成標(biāo)定。BP神經(jīng)網(wǎng)絡(luò)模型如圖1所示,包括輸入層、隱藏層和輸出層,隱藏層又包括單層或者多層。

圖1 BP神經(jīng)網(wǎng)絡(luò)
圖1中:xi(i=1,2,…,n)表示為輸入信號(hào);wij代表從神經(jīng)元j到神經(jīng)元i的權(quán)值,也稱(chēng)為第j個(gè)輸入鏈上的權(quán)值;yj(j=1,2,…,n)為神經(jīng)元的最終輸出信號(hào)[10]。
1)經(jīng)過(guò)離群檢測(cè)算法處理后的數(shù)據(jù)輸入到BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,每個(gè)輸入單元信號(hào)分別乘以當(dāng)前的權(quán)值求和,再加偏向值,最后通過(guò)非線(xiàn)性激勵(lì)函數(shù)轉(zhuǎn)換可得到輸出信號(hào)。整個(gè)正向傳播過(guò)程各層的權(quán)值和偏向值都是隨機(jī)生成,只有在誤差的反向傳播過(guò)程中才會(huì)反復(fù)更新權(quán)值和偏向值。每個(gè)單元都稱(chēng)為神經(jīng)節(jié)點(diǎn),每一層都有權(quán)值和偏向值。計(jì)算式為
(3)
式中:Oi是輸入值;Wij是代表從神經(jīng)元j到神經(jīng)元i的權(quán)值;Θj是偏向值;Ij是凈輸入值。
2)在輸出之前需要進(jìn)行非線(xiàn)性的轉(zhuǎn)換。本文非線(xiàn)性激勵(lì)函數(shù)使用的是sigmoid函數(shù)。計(jì)算式為
(4)
式中Oj是輸出值。如果含有多層隱藏層,當(dāng)前輸出值也是下一層的輸入值。
1)對(duì)網(wǎng)絡(luò)正向過(guò)程的輸出值與真實(shí)值之間的誤差進(jìn)行分析,根據(jù)誤差反向傳播算法更新權(quán)值和偏向值。輸出層中的誤差值計(jì)算式為
Ej=Oj(1-Oj)(Tj-Oj)
(5)
式中:Ej是輸出層誤差值;Tj是真實(shí)值。
2)獲取最后一層誤差值后再按照逐層反傳計(jì)算所有層的誤差,即在各層隱藏層中利用輸出層的誤差來(lái)計(jì)算上一層的誤差,再使用這個(gè)新誤差來(lái)估計(jì)更上一層的誤差,直到反傳到最上一層,通過(guò)這種方法即可得到所有層誤差估計(jì)[11]。計(jì)算式為
(6)

3)根據(jù)梯度下降法則更新權(quán)值,利用神經(jīng)元j上的輸出誤差和神經(jīng)元i上的輸入信號(hào)以及學(xué)習(xí)率更新權(quán)值。權(quán)值參數(shù)需要不斷進(jìn)行調(diào)整直到輸出值和真實(shí)值近似。計(jì)算式為
ΔWij=(l)EjOi
(7)
Wij=Wij+ΔWij
(8)
式中:ΔWij是更新權(quán)值;l是學(xué)習(xí)率。當(dāng)前的權(quán)值加上更新的權(quán)值得到更新后的權(quán)值。學(xué)習(xí)率其值在0和1之間,可以用來(lái)控制每次循環(huán)時(shí)的調(diào)整量。若l接近0,則新的權(quán)值受上一個(gè)權(quán)值的影響最大,相應(yīng)的,若l接近1,那么新權(quán)值主要對(duì)現(xiàn)階段循環(huán)中的調(diào)整量會(huì)更敏感。在某種情況下,可以使用一個(gè)自適應(yīng)的l值,l在前幾次循環(huán)時(shí)值相對(duì)較大,而在接下來(lái)的循環(huán)中逐漸減少。學(xué)習(xí)率實(shí)際和信號(hào)分析里的時(shí)間常數(shù)是一樣的,學(xué)習(xí)率越小學(xué)習(xí)會(huì)越精細(xì),但同時(shí)學(xué)習(xí)速度也會(huì)降低,因?yàn)楝F(xiàn)實(shí)中很多模型都是非線(xiàn)性的。學(xué)習(xí)速率對(duì)梯度下降算法的性能影響非常大,如果學(xué)習(xí)速率設(shè)置太高,算法起伏震蕩變得很不穩(wěn)定,反之,算法需要較長(zhǎng)的時(shí)間來(lái)收斂。在還沒(méi)有進(jìn)行訓(xùn)練的時(shí)候,則沒(méi)有辦法確定最優(yōu)的學(xué)習(xí)速率,也沒(méi)必要,而且在實(shí)際訓(xùn)練時(shí),隨著訓(xùn)練的不斷進(jìn)行,最優(yōu)的學(xué)習(xí)速率也是改變的。本文使用學(xué)習(xí)率自適應(yīng)調(diào)節(jié)方法:若相比上一次迭代誤差值減少,則以5 %的幅度增大學(xué)習(xí)率;若相比上一次迭代誤差值增大,則重新設(shè)置上一輪迭代的值,同時(shí)把學(xué)習(xí)率調(diào)整到之前的50 %。
4)根據(jù)梯度下降法則更新偏向值,利用神經(jīng)元j上的輸出誤差和學(xué)習(xí)率更新偏向值。計(jì)算式為
ΔΘj=(l)Ej
(9)
Θj=Θj+ΔΘj
(10)
式中ΔΘj是更新偏向值。當(dāng)前的偏向加上更新的偏向值得到更新后的偏向值。
BP神經(jīng)網(wǎng)絡(luò)最重要的是誤差反向傳播算法:利用梯度下降法使誤差在反向傳播過(guò)程中逐層減少,經(jīng)過(guò)層層傳遞之后將變得更小;當(dāng)誤差的平方和小于閾值時(shí)則訓(xùn)練完成,保存各層的權(quán)值和偏向值,即可確定出較為穩(wěn)定網(wǎng)絡(luò)模型。
標(biāo)定總體流程可描述如下:
首先獲取不同手機(jī)在各采樣點(diǎn)處RSSI值,形成數(shù)據(jù)對(duì)(RSSIhuaweid,RSSIgloryd)(d=1,2,…,n),然后對(duì)數(shù)據(jù)對(duì)進(jìn)行離群點(diǎn)檢測(cè)處理獲得相對(duì)純凈的數(shù)據(jù)對(duì),輸入到BP神經(jīng)網(wǎng)絡(luò)中,根據(jù)BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù)實(shí)時(shí)更新網(wǎng)絡(luò)中權(quán)值和偏向值。最后當(dāng)輸出層誤差的平方和小于閾值時(shí)則訓(xùn)練完成,保存各層的權(quán)值和偏向值,確定較為穩(wěn)定的標(biāo)定模型,即完成標(biāo)定,否則就需要一直訓(xùn)練,流程如圖2所示。

圖2 WiFi標(biāo)定流程
為驗(yàn)證本文提出的標(biāo)定方法的有效性,在江西師范大學(xué)青山湖校區(qū)進(jìn)行了位置指紋定位實(shí)驗(yàn)。將實(shí)驗(yàn)區(qū)域劃分成若干0.8 m×0.8 m的矩形網(wǎng)格,各網(wǎng)格頂點(diǎn)設(shè)定為采樣點(diǎn)。使用華為Mate8(參考設(shè)備)和華為榮耀6(用戶(hù)設(shè)備)在每一個(gè)采樣點(diǎn)采集50組RSSI樣本值并做均值處理,共采集120組數(shù)據(jù)對(duì)。使用離群點(diǎn)檢測(cè)算法剔除數(shù)據(jù)對(duì)中的離群點(diǎn)。圖3是對(duì)數(shù)據(jù)進(jìn)行離群點(diǎn)檢測(cè)的效果圖,數(shù)據(jù)中圓圈標(biāo)注的即是離群點(diǎn),剔除離群點(diǎn)可以降低數(shù)據(jù)對(duì)定位精度的影響。

圖3 離群點(diǎn)檢測(cè)
為對(duì)比分析,接下來(lái)分別采用基于最小二乘法的線(xiàn)性標(biāo)定方法和使用BP神經(jīng)網(wǎng)絡(luò)的非線(xiàn)性標(biāo)定方法進(jìn)行WiFi標(biāo)定。圖4為使用最小二乘法進(jìn)行線(xiàn)性標(biāo)定的效果圖,圖5為使用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行非線(xiàn)性標(biāo)定的效果圖。

圖4 最小二乘標(biāo)定法

圖5 BP神經(jīng)網(wǎng)絡(luò)標(biāo)定法
圖4中的直線(xiàn)為最小二乘法擬合得到參考設(shè)備與用戶(hù)設(shè)備的RSSI數(shù)據(jù)對(duì)的函數(shù)關(guān)系,圖5的曲線(xiàn)為BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練得到參考設(shè)備與用戶(hù)設(shè)備的RSSI數(shù)據(jù)對(duì)的函數(shù)關(guān)系。為分析BP神經(jīng)網(wǎng)絡(luò)標(biāo)定方法的有效性,進(jìn)一步使用2種方法標(biāo)定得到的RSSI數(shù)據(jù)對(duì)關(guān)系模型,對(duì)用戶(hù)設(shè)備在線(xiàn)定位階段實(shí)時(shí)RSSI數(shù)據(jù)進(jìn)行校正,利用校正后的數(shù)據(jù)進(jìn)行WiFi指紋定位實(shí)驗(yàn)。表1分別為使用最小二乘法線(xiàn)性和使用BP神經(jīng)網(wǎng)絡(luò)非線(xiàn)性標(biāo)定后的定位精度。對(duì)比現(xiàn)有的線(xiàn)性標(biāo)定方法和未標(biāo)定的移動(dòng)設(shè)備,定位精度分別提高了22.29 %和39.72 %。因此,相比最小二乘法線(xiàn)性標(biāo)定方法而言,本文提出的使用BP神經(jīng)網(wǎng)絡(luò)的WiFi非線(xiàn)性標(biāo)定方法能更準(zhǔn)確地描述不同設(shè)備的RSSI數(shù)據(jù)對(duì)的函數(shù)關(guān)系,有效減小設(shè)備軟硬件異構(gòu)性導(dǎo)致的定位誤差。

表1 WiFi標(biāo)定后定位精度差異 m
本文提出使用BP神經(jīng)網(wǎng)絡(luò)的WiFi標(biāo)定方法來(lái)解決軟硬件異構(gòu)導(dǎo)致定位精度損失的問(wèn)題。先使用離群點(diǎn)檢測(cè)算法對(duì)不同手機(jī)在各采樣點(diǎn)處的RSSI數(shù)據(jù)對(duì)進(jìn)行處理,獲得相對(duì)純凈的數(shù)據(jù)對(duì),然后運(yùn)用BP神經(jīng)網(wǎng)絡(luò)對(duì)不同手機(jī)的RSSI樣本進(jìn)行訓(xùn)練,建立穩(wěn)定的非線(xiàn)性標(biāo)定模型,最后利用該模型對(duì)各型號(hào)手機(jī)WiFi觀(guān)測(cè)量進(jìn)行校正,獲得更為精確的觀(guān)測(cè)量數(shù)據(jù)用于定位。通過(guò)實(shí)驗(yàn)對(duì)比現(xiàn)有的線(xiàn)性標(biāo)定方法和未標(biāo)定的移動(dòng)設(shè)備,定位精度分別提高了22.29 %和39.72 %。值得注意的是本文使用的BP神經(jīng)網(wǎng)絡(luò)為三層感知器網(wǎng)絡(luò),具有接近任何非線(xiàn)性的能力,下一步需要解決的是確定合適的隱藏層層數(shù),使得訓(xùn)練模型能夠迅速趨于穩(wěn)定,因?yàn)殡[藏層過(guò)多會(huì)導(dǎo)致網(wǎng)絡(luò)出現(xiàn)過(guò)擬合,太少會(huì)使得網(wǎng)絡(luò)欠擬合。