高德网络定位算法的演进
1.導(dǎo)讀
GPS定位精度高,且早已成為移動設(shè)備標(biāo)配,但GPS也具有一些難以克服的缺陷,包括:
- 冷啟動時間長。GPS啟動時,需要進(jìn)行搜星,鎖定衛(wèi)星信號,然后再進(jìn)行位置技術(shù),這個過程可能會達(dá)到幾十秒,即使采用諸如AGPS等技術(shù),仍然有秒級的時間無法定位。
- 室內(nèi)或有遮擋的場景。GPS信號弱,無法有效定位。
用戶需要持續(xù)的有效定位,因此需要另一個技術(shù)對GPS進(jìn)行補(bǔ)充,這就是網(wǎng)絡(luò)定位技術(shù)。
網(wǎng)絡(luò)定位是將手機(jī)設(shè)備收到的信號(主要是基站、Wifi、藍(lán)牙)發(fā)送到網(wǎng)絡(luò)服務(wù)器,獲得位置。之所以要將信號數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上,是因為網(wǎng)絡(luò)定位是利用信號指紋進(jìn)行定位,需要一個龐大的且持續(xù)更新的指紋數(shù)據(jù)庫,這個數(shù)據(jù)庫難以同步到移動設(shè)備上。為了進(jìn)行定位,需要事先建立每個位置的指紋特征,然后在定位時用實時指紋比對每個位置的歷史指紋,確定位置。
高德網(wǎng)絡(luò)定位不僅承擔(dān)著高德地圖用戶的定位請求,還面向國內(nèi)所有主流手機(jī)廠商,以及國內(nèi)30萬以上App提供服務(wù),日均處理請求千億次,峰值QPS百萬級。
在過去的幾年中,高德網(wǎng)絡(luò)定位算法經(jīng)歷了從無監(jiān)督算法向有監(jiān)督算法的演進(jìn),從定位精度、定位能力透出等方面都有了顯著的提升。
注:高德網(wǎng)絡(luò)定位只存在于安卓平臺上,在iOS上由于蘋果公司未開放任何定位相關(guān)的指紋數(shù)據(jù)(Wifi、基站列表等),定位結(jié)果全部來自于iOS自身。
2.基于聚類的無監(jiān)督算法
經(jīng)典的指紋定位算法是無監(jiān)督算法,其核心是計算指紋的相似性,用指紋確定位置。下圖是一個例子,AP代表手機(jī)掃描到的基站和Wifi設(shè)備編號,縱軸代表不同的位置,二者交點的數(shù)值代表該位置掃描到該AP的信號強(qiáng)度,為空代表該位置沒有掃描到該AP。
要對一個新定期請求進(jìn)行定位(比如AP1:-30,AP2:-50,AP3:-90),一個最簡單的方法,是用KNN逐一計算該指紋與歷史指紋的相似度(比如用L2距離或者余弦相似度),取相似度最大的歷史位置作為用戶位置。
這有兩個問題,第一是計算量太大(AP是10億量級,loc是千億量級),無法滿足實時定位的要求,第二是歷史指紋在局部可能比較稀疏,對于用戶指紋無法精確匹配。
于是需要對歷史數(shù)據(jù)進(jìn)行預(yù)處理,提取出AP和網(wǎng)格的通用指紋,這樣在定位時只需要比對一次即可。下圖是利用一個AP的歷史采集位置進(jìn)行聚類,獲得AP實際位置和覆蓋半徑的過程,有了每個AP的位置,在定位時將多個AP的位置進(jìn)行加權(quán)平均即可獲得最終位置。
這種方法需要解決的一個挑戰(zhàn)是當(dāng)有多個候選位置時如何選擇,如下圖所示,有兩個候選位置。
此時需要設(shè)計一個策略進(jìn)行簇選擇,基于每個簇的特征進(jìn)行打分,找出最有可能的一個簇作為用戶位置。
基于加權(quán)平均的定位,速度很快,但精度比較差,原因是指紋在空間上的分布并不是連續(xù)的,而可能受到建筑、地形、道路的影響,呈現(xiàn)一種不規(guī)則的分布,于是在上面定位方式的基礎(chǔ)上,發(fā)展出一種基于格子排序的算法,可以更精準(zhǔn)的定位。
首先將地球劃分為25*25的網(wǎng)格,然后統(tǒng)計每個網(wǎng)格內(nèi)的指紋特征,最后進(jìn)行格子排序。設(shè)候選網(wǎng)格為l,信號向量是S,則定位過程就是計算
根據(jù)貝葉斯公式,有
根據(jù)1-1,由于所有候選網(wǎng)格的分母相同,只需要計算分子,即:
其中P(l)是某個位置在全量用戶位置中出現(xiàn)的概率,可以用定位PV表示,而P(S=S0|l)則需要計算在每個網(wǎng)格內(nèi)出現(xiàn)某種信號向量的概率,由于向量維數(shù)高,概率難以計算,因此對不同維進(jìn)行獨立假設(shè),認(rèn)為每個信號出現(xiàn)的概率是獨立的。有:
這樣,可以基于歷史指紋對每個網(wǎng)格內(nèi)的每個AP的信號強(qiáng)度進(jìn)行直方圖統(tǒng)計,即可計算出概率,最后對所有格子的概率進(jìn)行排序,獲得概率最高的那一個,如下圖:
3.基于分層排序的有監(jiān)督算法
無監(jiān)督算法的一個問題,是難以迭代,對于badcase無法進(jìn)行有效優(yōu)化,一旦調(diào)整策略就會影響到其他case,無法獲得全局最優(yōu)。
因此,有監(jiān)督學(xué)習(xí)就變得很有必要,高德定位從近兩年開始全面轉(zhuǎn)向有監(jiān)督學(xué)習(xí),持續(xù)進(jìn)行特征和模型設(shè)計,提升效果,取得了不錯的收益,解決了50%以上的大誤差問題(5公里以上),在移動Wifi識別上獲得了99%以上的識別準(zhǔn)確率。
有監(jiān)督學(xué)習(xí)需要使用大量的特征,特征的計算需要消耗較多資源,考慮到定位服務(wù)要承受10萬以上的QPS,模型的復(fù)雜性與效果同等重要,因此我們首先將定位服務(wù)進(jìn)行了分層,上面的層級針對大網(wǎng)格,計算粗略的位置,下面的層級針對小網(wǎng)格,逐步細(xì)化位置。這樣可以極大減少不必要的計算,在性能和效果間取得平衡。
對于每一個單獨的算法模塊,都采用類似下面的神經(jīng)網(wǎng)絡(luò)模型對每個候選網(wǎng)格進(jìn)行打分,再使用LTR損失函數(shù)作為目標(biāo)進(jìn)行訓(xùn)練,從而獲得神經(jīng)網(wǎng)絡(luò)的參數(shù)。在特征方面,同時考慮以下三類:
- AP的動態(tài)特征,比如信號強(qiáng)度
- 網(wǎng)格特征,比如PV、UV、AP數(shù)、周邊候選網(wǎng)格數(shù)等
- AP在網(wǎng)格上的特征,比如信號強(qiáng)度分布、PV、UV等
采用這種方法可以解決絕大部分格子選擇不準(zhǔn)確的問題,遺留的一個問題是當(dāng)定位依據(jù)特別少的時候,比如只有一個基站和一個Wifi,二者分別位于距離較遠(yuǎn)的兩個網(wǎng)格,此時無論選擇哪個都有50%的錯誤概率。為了解決這個問題,我們引入了用戶歷史定位點輔助進(jìn)行各自選擇。
在特征部分加入歷史定位點序列,輸出一個歷史位置特征(可以看成是一個預(yù)測的新位置),讓這個預(yù)測位置參與網(wǎng)格打分。當(dāng)有兩個距離較遠(yuǎn)但打分接近的網(wǎng)格進(jìn)行對比時,通過預(yù)測位置進(jìn)行加權(quán)。這樣模型應(yīng)該可以學(xué)出這樣的規(guī)律:如果網(wǎng)格距離預(yù)測位置比較遠(yuǎn),打分就降低,如果比較近,分就高。通過這個方法,大誤差case的比例可以降低20%。
4.場景化定位
用戶在不同場景下對定位的要求是不同的,比如用戶在旅途中可能只需要知道大致的位置,不需要很精確,但是在導(dǎo)航時就需要精確的知道自己在哪條道路上,距離出口多遠(yuǎn)。
因此,除了在整體算法架構(gòu)上進(jìn)行優(yōu)化,高德還在不同特定場景上進(jìn)行針對性的優(yōu)化,滿足用戶不同場景下的定位需求。
室內(nèi)場景
指紋定位的一個局限,是需要采集帶GPS的樣本作為真值進(jìn)行訓(xùn)練,由于GPS只能在室外被采集到,即使用戶在室內(nèi),其定位結(jié)果有很大概率在室外,這會對用戶造成不少困擾,特別是在用戶準(zhǔn)備出行的時候,其定位點的漂移會導(dǎo)致起點偏離真實位置較大。
為了解決這個問題,有兩個解決辦法,一是采集室內(nèi)真值,但這種方法需要大量人工采集工作,工作量巨大,目前高德在一些熱門商場和交通樞紐進(jìn)行人工指紋采集(除了基站W(wǎng)ifi還支持藍(lán)牙、傳感器定位)。第二個辦法是借助大數(shù)據(jù),無需人工干預(yù),對Wifi進(jìn)行建筑/POI關(guān)聯(lián),用建筑/POI位置去修正定位結(jié)果。
Wifi-POI關(guān)聯(lián)有多種方法,一個簡單的方法是用POI名字與Wifi名字的相似度判斷是否有關(guān)聯(lián),比如麥當(dāng)勞的Wifi名字就是McDonald,關(guān)聯(lián)的時候需要考慮中英文、大小寫、中英文縮寫等。從名稱能分析出關(guān)聯(lián)關(guān)系的Wifi畢竟是少數(shù)。另外一種覆蓋能力更強(qiáng)的方法是利用Wifi信號分布規(guī)律去挖掘Wifi的真實位置,畢竟絕大部分Wifi都是部署在室內(nèi)的。
這里我們采用的是CNN的方法,將樓塊數(shù)據(jù)、POI數(shù)據(jù)、采集真值數(shù)據(jù)繪制為二維圖像,然后進(jìn)行多層卷積計算,label為Wifi所在的真實樓塊區(qū)域。下圖中藍(lán)色塊為樓塊,綠色為采集點,顏色越亮代表信號強(qiáng)度越高,紅色點代表Wifi真實位置。
目前算法能挖掘出30%Wifi對應(yīng)的真實位置,在最終定位效果上,用戶在室內(nèi)時,能正確定位到室內(nèi)的樣本比例提升了15%
高鐵場景
從用戶報錯情況看,有大量報錯是用戶乘坐高鐵時定位異常。高鐵在近兩年開通了車載Wifi,這些Wifi都是移動Wifi,因此這些AP是沒有一個固定位置的,如果不進(jìn)行任何處理,算法訓(xùn)練獲得的Wifi位置一定是錯誤的,很大概率會在沿途的某個車站(用戶集中,采集量高)。
針對這種場景,需要將移動Wifi全部去除再進(jìn)行定位。我們開發(fā)了針對高鐵和普通場景的移動Wifi挖掘算法,利用采集點時空分布等特征判斷某個Wifi是否移動,挖掘準(zhǔn)確率和召回率均超過99%,可以解決絕大部分高鐵定位錯誤的問題。
地鐵場景
地鐵場景有點類似高鐵,用戶掃到的Wifi基本都是移動Wifi(少量車站有固定Wifi),因此只能借助基站進(jìn)行定位。但基站深埋地下,缺乏采集數(shù)據(jù),如何獲得基站的真實位置呢?我們采用了兩種策略,第一個策略是利用相鄰基站信息,當(dāng)用戶在一個請求里或者在短暫時間段內(nèi)同時掃描到地鐵基站(無GPS采集)和非地鐵基站(有GPS采集)時,我們可以用后者的位置去推算前者位置,當(dāng)然這種方式得到的基站位置不太準(zhǔn)確。于是我們進(jìn)行了進(jìn)一步優(yōu)化,利用用戶軌跡去精準(zhǔn)挖掘出每個請求對應(yīng)的地鐵站,從而構(gòu)建出指紋對應(yīng)的真值。
基于以上方法,地鐵內(nèi)的定位精度可達(dá)到90%以上,實現(xiàn)地鐵報站和換乘提醒。
5.未來演進(jìn)
在未來,定位技術(shù)特別是移動設(shè)備的定位技術(shù)還將快速發(fā)展,主要突破可能來自以下方面:
圖像定位:谷歌已經(jīng)發(fā)布了基于街景的AR定位,可以解決在城市峽谷區(qū)域內(nèi)的精準(zhǔn)定位。這種定位利用了更豐富的數(shù)據(jù)源,對用戶體驗的提升也會非常顯著。
5G定位:5G相比4G,頻率更高,頻帶更寬,用于測距時精度更高(比如利用相位差進(jìn)行傳輸時間計算),行業(yè)協(xié)會也在孵化5G定位相關(guān)的標(biāo)準(zhǔn),運營商在未來可能會支持基于5G網(wǎng)絡(luò)的定位,屆時在5G覆蓋區(qū)將會有類似GPS精度的定位效果。
IOT定位:隨著物聯(lián)網(wǎng)的普及,基于NB-IOT的定位技術(shù)也會應(yīng)運而生,它可以使用類似基站定位的方法,或者使用P2P定位的方法為物聯(lián)網(wǎng)設(shè)備進(jìn)行定位。
原文鏈接
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的高德网络定位算法的演进的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拥抱创新,持续探索——对话阿里云MVP胡
- 下一篇: 阿里妈妈数据字化营销与MaxComput