高德網路定位演算法的演進

amap_tech發表於2019-12-25

1.導讀
GPS定位精度高,且早已成為移動裝置標配,但GPS也具有一些難以克服的缺陷,包括:

  • 冷啟動時間長。GPS啟動時,需要進行搜星,鎖定衛星訊號,然後再進行位置技術,這個過程可能會達到幾十秒,即使採用諸如AGPS等技術,仍然有秒級的時間無法定位。
  • 室內或有遮擋的場景。GPS訊號弱,無法有效定位。

使用者需要持續的有效定位,因此需要另一個技術對GPS進行補充,這就是網路定位技術。

網路定位是將手機裝置收到的訊號(主要是基站、Wifi、藍芽)傳送到網路伺服器,獲得位置。之所以要將訊號資料傳送到網路上,是因為網路定位是利用訊號指紋進行定位,需要一個龐大的且持續更新的指紋資料庫,這個資料庫難以同步到移動裝置上。為了進行定位,需要事先建立每個位置的指紋特徵,然後在定位時用實時指紋比對每個位置的歷史指紋,確定位置。

高德網路定位不僅承擔著高德地圖使用者的定位請求,還面向國內所有主流手機廠商,以及國內30萬以上App提供服務,日均處理請求千億次,峰值QPS百萬級。

在過去的幾年中,高德網路定位演算法經歷了從無監督演算法向有監督演算法的演進,從定位精度、定位能力透出等方面都有了顯著的提升。

注:高德網路定位只存在於安卓平臺上,在iOS上由於蘋果公司未開放任何定位相關的指紋資料(Wifi、基站列表等),定位結果全部來自於iOS自身。

2.基於聚類的無監督演算法
經典的指紋定位演算法是無監督演算法,其核心是計算指紋的相似性,用指紋確定位置。下圖是一個例子,AP代表手機掃描到的基站和Wifi裝置編號,縱軸代表不同的位置,二者交點的數值代表該位置掃描到該AP的訊號強度,為空代表該位置沒有掃描到該AP。

要對一個新定期請求進行定位(比如AP1:-30,AP2:-50,AP3:-90),一個最簡單的方法,是用KNN逐一計算該指紋與歷史指紋的相似度(比如用L2距離或者餘弦相似度),取相似度最大的歷史位置作為使用者位置。

這有兩個問題,第一是計算量太大(AP是10億量級,loc是千億量級),無法滿足實時定位的要求,第二是歷史指紋在區域性可能比較稀疏,對於使用者指紋無法精確匹配。

於是需要對歷史資料進行預處理,提取出AP和網格的通用指紋,這樣在定位時只需要比對一次即可。下圖是利用一個AP的歷史採集位置進行聚類,獲得AP實際位置和覆蓋半徑的過程,有了每個AP的位置,在定位時將多個AP的位置進行加權平均即可獲得最終位置。

這種方法需要解決的一個挑戰是當有多個候選位置時如何選擇,如下圖所示,有兩個候選位置。

 

此時需要設計一個策略進行簇選擇,基於每個簇的特徵進行打分,找出最有可能的一個簇作為使用者位置。

基於加權平均的定位,速度很快,但精度比較差,原因是指紋在空間上的分佈並不是連續的,而可能受到建築、地形、道路的影響,呈現一種不規則的分佈,於是在上面定位方式的基礎上,發展出一種基於格子排序的演算法,可以更精準的定位。

首先將地球劃分為25*25的網格,然後統計每個網格內的指紋特徵,最後進行格子排序。設候選網格為l,訊號向量是S,則定位過程就是計算

根據貝葉斯公式,有

根據1-1,由於所有候選網格的分母相同,只需要計算分子,即:

其中P(l)是某個位置在全量使用者位置中出現的機率,可以用定位PV表示,而P(S=S0|l)則需要計算在每個網格內出現某種訊號向量的機率,由於向量維數高,機率難以計算,因此對不同維進行獨立假設,認為每個訊號出現的機率是獨立的。有:

這樣,可以基於歷史指紋對每個網格內的每個AP的訊號強度進行直方圖統計,即可計算出機率,最後對所有格子的機率進行排序,獲得機率最高的那一個,如下圖:

3.基於分層排序的有監督演算法

無監督演算法的一個問題,是難以迭代,對於badcase無法進行有效最佳化,一旦調整策略就會影響到其他case,無法獲得全域性最優。

因此,有監督學習就變得很有必要,高德定位從近兩年開始全面轉向有監督學習,持續進行特徵和模型設計,提升效果,取得了不錯的收益,解決了50%以上的大誤差問題(5公里以上),在移動Wifi識別上獲得了99%以上的識別準確率。

有監督學習需要使用大量的特徵,特徵的計算需要消耗較多資源,考慮到定位服務要承受10萬以上的QPS,模型的複雜性與效果同等重要,因此我們首先將定位服務進行了分層,上面的層級針對大網格,計算粗略的位置,下面的層級針對小網格,逐步細化位置。這樣可以極大減少不必要的計算,在效能和效果間取得平衡。

對於每一個單獨的演算法模組,都採用類似下面的神經網路模型對每個候選網格進行打分,再使用LTR損失函式作為目標進行訓練,從而獲得神經網路的引數。在特徵方面,同時考慮以下三類:

  • AP的動態特徵,比如訊號強度
  • 網格特徵,比如PV、UV、AP數、周邊候選網格數等
  • AP在網格上的特徵,比如訊號強度分佈、PV、UV等

採用這種方法可以解決絕大部分格子選擇不準確的問題,遺留的一個問題是當定位依據特別少的時候,比如只有一個基站和一個Wifi,二者分別位於距離較遠的兩個網格,此時無論選擇哪個都有50%的錯誤機率。為了解決這個問題,我們引入了使用者歷史定位點輔助進行各自選擇。

在特徵部分加入歷史定位點序列,輸出一個歷史位置特徵(可以看成是一個預測的新位置),讓這個預測位置參與網格打分。當有兩個距離較遠但打分接近的網格進行對比時,透過預測位置進行加權。這樣模型應該可以學出這樣的規律:如果網格距離預測位置比較遠,打分就降低,如果比較近,分就高。透過這個方法,大誤差case的比例可以降低20%。

4.場景化定位
使用者在不同場景下對定位的要求是不同的,比如使用者在旅途中可能只需要知道大致的位置,不需要很精確,但是在導航時就需要精確的知道自己在哪條道路上,距離出口多遠。

因此,除了在整體演算法架構上進行最佳化,高德還在不同特定場景上進行針對性的最佳化,滿足使用者不同場景下的定位需求。

室內場景

指紋定位的一個侷限,是需要採集帶GPS的樣本作為真值進行訓練,由於GPS只能在室外被採集到,即使使用者在室內,其定位結果有很大機率在室外,這會對使用者造成不少困擾,特別是在使用者準備出行的時候,其定位點的漂移會導致起點偏離真實位置較大。

為了解決這個問題,有兩個解決辦法,一是採集室內真值,但這種方法需要大量人工採集工作,工作量巨大,目前高德在一些熱門商場和交通樞紐進行人工指紋採集(除了基站Wifi還支援藍芽、感測器定位)。第二個辦法是藉助大資料,無需人工干預,對Wifi進行建築/POI關聯,用建築/POI位置去修正定位結果。

Wifi-POI關聯有多種方法,一個簡單的方法是用POI名字與Wifi名字的相似度判斷是否有關聯,比如麥當勞的Wifi名字就是McDonald,關聯的時候需要考慮中英文、大小寫、中英文縮寫等。從名稱能分析出關聯關係的Wifi畢竟是少數。另外一種覆蓋能力更強的方法是利用Wifi訊號分佈規律去挖掘Wifi的真實位置,畢竟絕大部分Wifi都是部署在室內的。

這裡我們採用的是CNN的方法,將樓塊資料、POI資料、採集真值資料繪製為二維影像,然後進行多層卷積計算,label為Wifi所在的真實樓塊區域。下圖中藍色塊為樓塊,綠色為採集點,顏色越亮代表訊號強度越高,紅色點代表Wifi真實位置。

目前演算法能挖掘出30%Wifi對應的真實位置,在最終定位效果上,使用者在室內時,能正確定位到室內的樣本比例提升了15%

高鐵場景

從使用者報錯情況看,有大量報錯是使用者乘坐高鐵時定位異常。高鐵在近兩年開通了車載Wifi,這些Wifi都是移動Wifi,因此這些AP是沒有一個固定位置的,如果不進行任何處理,演算法訓練獲得的Wifi位置一定是錯誤的,很大機率會在沿途的某個車站(使用者集中,採集量高)。

針對這種場景,需要將移動Wifi全部去除再進行定位。我們開發了針對高鐵和普通場景的移動Wifi挖掘演算法,利用採集點時空分佈等特徵判斷某個Wifi是否移動,挖掘準確率和召回率均超過99%,可以解決絕大部分高鐵定位錯誤的問題。

地鐵場景

地鐵場景有點類似高鐵,使用者掃到的Wifi基本都是移動Wifi(少量車站有固定Wifi),因此只能藉助基站進行定位。但基站深埋地下,缺乏採集資料,如何獲得基站的真實位置呢?我們採用了兩種策略,第一個策略是利用相鄰基站資訊,當使用者在一個請求裡或者在短暫時間段內同時掃描到地鐵基站(無GPS採集)和非地鐵基站(有GPS採集)時,我們可以用後者的位置去推算前者位置,當然這種方式得到的基站位置不太準確。於是我們進行了進一步最佳化,利用使用者軌跡去精準挖掘出每個請求對應的地鐵站,從而構建出指紋對應的真值。

基於以上方法,地鐵內的定位精度可達到90%以上,實現地鐵報站和換乘提醒。

5.未來演進
在未來,定位技術特別是移動裝置的定位技術還將快速發展,主要突破可能來自以下方面:

影像定位:谷歌已經發布了基於街景的AR定位,可以解決在城市峽谷區域內的精準定位。這種定位利用了更豐富的資料來源,對使用者體驗的提升也會非常顯著。

5G定位:5G相比4G,頻率更高,頻帶更寬,用於測距時精度更高(比如利用相位差進行傳輸時間計算),行業協會也在孵化5G定位相關的標準,運營商在未來可能會支援基於5G網路的定位,屆時在5G覆蓋區將會有類似GPS精度的定位效果。

IOT定位:隨著物聯網的普及,基於NB-IOT的定位技術也會應運而生,它可以使用類似基站定位的方法,或者使用P2P定位的方法為物聯網裝置進行定位。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69941357/viewspace-2670416/,如需轉載,請註明出處,否則將追究法律責任。

相關文章