- 1. 1. 摘要
- 2. 2. Map-Matching(MM)問題
- 3. 3. 隱馬爾科夫模型(HMM)
- 4. 4. 相關部分論文工作
- 4.1. 4.1. A HMM based MM for wheelchair navigation
- 4.2. 4.2. MM for low-sampling-rate GPS trajectories
- 4.3. 4.3. Hidden Markov MM through noise and sparseness
- 4.4. 4.4. MM with HMM on sampled road network
- 4.5. 4.5. Online MM based on HMM
- 5. 5.總結及將來工作
- 6. 6. 參考文獻
1. 摘要
本篇博客簡單介紹下用隱馬爾科夫模型(Hidden Markov Model, HMM)來解決地圖匹配(Map-Matching)問題。轉載請注明網址。
2. Map-Matching(MM)問題
根據wikipedia的定義,地圖匹配是將一系列有序的用戶或者交通工具的位置關聯到電子地圖的路網上的過程。它的主要目的是跟蹤車輛,交通流進行分析和發現駕駛方向的起點。
究其根本,是因為GPS給定的用戶或者交通工具的位置信息(經度,緯度)在匹配到電子地圖的路網上會有誤差,如果不進行地圖匹配,那么交通工具可能不顯示路網上(例如路旁邊的房屋里,或者池塘里等等),引用09年GIS論文[Map-matching for low-sampling-rate GPS trajectories][2]中的例子,如圖,

在Figure 1中,$P_a, P_b, P_c$ 是GPS設備定位到的位置信息,可以看出點 $P_b$ 里最近的路也有段距離,如果不做處理,這個點就定位到建築中了,顯然這是不合理的,所以我們需要對這個信息進行一定處理,是它能夠較為精確地匹配到路網上。我個人覺得可以將Map-matching看作是LBS應用中的軌跡數據處理的數據預處理步驟,只有處理好這步,以后的研究才能有效地進行。直觀地,最簡單的方法,就是將GPS點關聯到最近的路段上,但有些時候效果會非常差,例如可能3個連續的點,第一個點和第二個點都在一條路上,而第二個點因為誤差,定位到另外一條無關的路,但卻是是最近的。當然現在有很多方法已經能夠很好的處理這個問題,比較著名的方法就是基於隱馬爾科夫模型(HMM,之后用縮寫表示)的,其正確率在幾年的會議論文中結果在一定條件下都已經能夠達到90%。
3. 隱馬爾科夫模型(HMM)
3.1. HMM簡述
HMM已經在應用在許多領域中,比較常見的應用有語音識別,詞性標注等,具體的HMM可以參見wikipedia的描述以及Andrew NG教授的公開課Machine Learning,更多的資料大家可以Google,百度,像52nlp里描述的都是很好的,我以后可能也要寫一篇關於HMM的博客。 這里簡單介紹下HMM, 講到隱馬爾可夫模型,肯定首先要知道馬爾科夫鏈, 在給定當前知識或信息的情況下,只有當前的狀態用來預測將來,過去(即當前以前的歷史狀態)對於預測將來(即當前以后的未來狀態)是無關的。用公式表示即:
$$P(X_{n+1}=x|X_0,X_1,X_2,…,X_n) = P(X_{n+1}|X_n),$$ $X_n$ 的值則是在時間 $n$ 的狀態,也就是說在知道狀態 $X_{n}$ 的前提下,$X_{n+1}$ 的狀態只跟 $X_n$ 有關,跟之前的 $(n-1)$ 個狀態是無關的. 舉個不是很合適的例子就是,今天的天氣只跟昨天的天氣有關,跟昨天之前的天氣無關,當然這是一個很強的假設前提。注:這里所說的馬爾科夫鏈是一階馬爾科夫鏈,當然可以擴展出去二階馬爾科夫,三階馬爾科夫等等,這里不做過多描述。
而所謂的隱馬爾科夫模型就是上述馬爾科夫的狀態是不可見的,而受狀態影響的某些變量是可見,即我們能看的現象。如圖Figure 2,$x_{t-1}$,$x_t$,$x_{t+1}$ 符合馬爾科夫過程,但是我們是觀察不到的,而 $y_{t-1}$, $y_t$, $y_{t+1}$ 是能夠觀察到的變量,但受各自的狀態變量影響。

從上述說明以及Figure 2, 這里列舉HMM的5個基本要素:
- HMM的狀態變量數目:$N$
- HMM的觀察變量數目:$M$
- 狀態轉移概率矩陣:$A=\left[ a_{ij}\right]_{N \times N}$, 其中 $a_{ij}=P(q_{t+1}=j|q_t = i), 1 \leq i, j \leq N$
- 觀測概率矩陣:$B = \left[ b_j(k)\right]_{N \times M}$, 其中 $b_j(k) = P(o_t = o_k|q_t = j), 1 \leq j \leq N, 1 \leq k \leq M$
- 初始狀態概率向量 $\pi=(\pi_i)$:$\pi_i = P(q_1 = i), 1 \leq i \leq N$
HMM有三個典型(canonical)問題:
- 概率計算問題:已知模型參數,計算某一特定輸出序列的概率.通常使用Forward算法解決;
- 預測問題或者解碼(decoding)問題:已知模型參數,尋找最可能的能產生某一特定輸出序列的隱含狀態的序列。通常使用Viterbi算法解決;
- 學習問題:已知輸出序列,尋找最可能的狀態轉移以及輸出概率。通常使用Baum-Welch算法。
上述三個問題不懂的可以先略過,或者參見詳細的HMM資料,而且在下面相關論文工作中會說明在這幾篇論文中其實只用到了預測問題的Viterbi算法,下面也會另開一小節具體描述下Viterbi算法。
3.2. 基於HMM的Map-Matching
Map-Matching的兩個變量:
- 從GPS設備中得到的位置信息(經度,緯度):HMM中觀察變量;
- 擁有GPS設備的物體(車,人等)實際所在的位置:HMM中的隱藏狀態變量,實際地圖是不知道GPS設備的准確位置的。
這樣就把Map-Matching問題與HMM結合起來了。從3.1節我們大致描述了HMM的三個基本問題,很明顯三個問題在Map-Matching中有用的是兩個問題:(1)預測問題;(2)學習問題。因為Map-Matching的問題的特殊性(這里需要說明的是,我其實也不非常確定,只能說自己猜測),例如前一個地點和后一個地點之間的關系是連續的(兩個點之間的路線距離),GPS點與路網上的關系也是用距離來表示,而距離是連續的,所以用類似語音識別中的HMM的學習方法是不行的,在我看過的論文中都是用認為定義的規則去擬合歷史的真實數據得到狀態概率轉移矩陣 $A$ 以及觀測概率矩陣 $B$。在論文中,定義的規則要滿足人的直觀上的感覺,即人的先驗知識,主要有以下兩種:
- 觀測概率:觀測的GPS點離旁邊路段上的位置越近,那么這個真實點在這個路段上的概率越大
- 狀態轉移概率:這里有兩種解決思路:(1)前后兩個真實的位置點的距離越近,那么狀態轉移的概率越大;或者(2)真實路段上的前后兩個點的距離與GPS觀測的前后兩個點的距離越接近,狀態轉移概率越大。
在第四大節我們會詳細介紹相關論文所使用的算法規則。
3.3. Viterbi算法
上面講了基於HMM的Map-Matching算法學習模型參數的大概思路,那么解決了學習問題解決了,剩下的就是預測問題了。 這一小節,會介紹Viterbi算法。Viterbi算法[6]實際上一個動態規划(DP)算法解隱馬爾可夫模型預測問題,即用動態規划求概率最大路徑(最優路徑),其原理就是:如果最優路徑在時刻 $t$ 通過結點 $i_t^\ast$,那么這一路徑從節點 $i_t^\ast$ 到終點 $i_T^\ast$ 的部分路徑,對於從 $i_t^\ast$ 到 $i_T^\ast$ 的所有可能的部分路徑來說,必須是最優的。迭代公式如下;
$$\delta_t(i) = \max_{i_1,i_2,…,i_{t-1}} P(i_t = i, i_{t-1},…,i_1,o_t,…,o_1|\lambda),\quad i = 1,2,…,N$$\begin{eqnarray*}
\delta_{t+1}(i) &=& max_{i_1,i_2,…,i_{t}} P(i_{t+1} = i, i_{t},…,i_1,o_{t+1},…,o_1|\lambda) \\
&=& \max_{1 \leq j \leq N}[\delta_t(j)a_{ji}]b_i(o_{t+1}),\quad i = 1,2,…,N; t = 1,2,…,T-1
\end{eqnarray*} 那么定義在時刻 $t$ 狀態為 $i$ 的所有單個路徑 $(i_1,i_2,…,i_{t-1},i_t)$ 中概率最大的路徑的第 $t-1$ 個結點為:
$$\Psi_t(i) = \arg \max_{1 \leq j \leq N}[\delta_{t-1}(j)a_{ji}],\quad i = 1,2,…,N$$上面公式所求的過程,當然迭代跟遞歸都是可以辦到的。接下來看一個wiki上的Viterbi算法的democratic,如Figure 3所示,是一張Gif圖片,每一層(每個時刻)要求出每個狀態下符合觀測變量的最大概率路徑,然后再計算下一個時刻的值。

4. 相關部分論文工作
在之前的章節里,大概介紹了HMM以及HMM在Map-Matching 中的使用。在這里,我會列舉幾篇近幾年關於這個主題的論文[1][2][3][4][5],會詳細的介紹這些論文是怎樣將HMM應用到Map-Matching中,即定義怎樣的規則去擬合真實數據得到模型參數,主要依據是3.2中提到的那兩點。下面依次介紹這五篇論文的內容(注:為了尊重原文,我盡量在公式中使用的是原文的符號形式,字母盡量按照本文中HMM出現的字母,大家可以一一跟上述的公式或者論文中的公式對應起來)
4.1. A HMM based MM for wheelchair navigation
從論文題目中就可以看出,這是關於輪椅導航的一篇論文[1],跟汽車導航不一樣的是,輪椅的速度很慢,地點變化的頻率較低,Map-matching處理能更簡單,論文中也是簡單的定義了規則求得狀態轉移矩陣 $A$ 和 觀測概率矩陣 $B$。
- 首先是狀態轉移矩陣 $A$:$$a_{ij} = P(q_{t+1} = r_j| q_t = r_i)=e^{-r_{ij}}$$其中 $r_j$ 是時刻 $t+1$ 時所在路段,$r_i$ 是時刻 $t$ 時所在路段, 而 $r_{ij}$ 有三種不同的取值:(1)當路段 $r_j$ 與 $r_i$ 相鄰時, $r_{ij} = 1$; (2)當路段 $r_j$ 與 $r_i$ 不相鄰時,$r_{ij} = \infty$; (3)當路段 $r_j$ 與 $r_i$ 是同一個路段時,即 $i=j$ 時,$r_{ij} = 0$。上面三種情況對應的說明了在兩個相鄰時刻同一個路段行駛的概率大於前后兩個時刻在兩個相鄰的路段行駛(譬如,每個路段10m),前后兩個時刻分別出現在不相鄰的路段上是不可能的(因為假設每個路段10m,時間間隔是1s,那么輪椅的速度是不可能超過10m/s的)。
- 觀測概率矩陣 $B$:$$b_j(k) = P(o_t = o_k|q_t = r_j) = 1 / \frac{Distance \; from \; o_k \; to \; r_j}{\sum_{i=1}^n Distance \; from \; o_k \; to \; r_i}$$分母中所有的路段是選取那些以觀測點 $o_k$ 為圓心畫一定值(譬如10m)為半徑的圓所相交的路段,從公式中能夠很明顯地看出其意圖:離觀測點越近的路段,其概率會越大。
4.2. MM for low-sampling-rate GPS trajectories
在這篇論文中,作者沒有明確提出是基於HMM的,但是總結來看,論文中提出的模型可以算成HMM的變種。 此外, 論文還中考慮了路段的最大速率,以及自身在路段的平均速率。論文中使用了高斯分布來模擬觀測概率轉移,而狀態轉移概率則是綜合了速率信息,觀測點和隱藏實際點的信息計算出來,具體公式如下:
- 狀態轉移矩陣 $A$:$$a_{ij} = P(q_{t+1} = r_j | q_t = r_i) = V(r_i \rightarrow r_j)\cdot F_t(r_i \rightarrow r_j)$$ $$ F_t(r_i \rightarrow r_j) = \frac{d_{t \rightarrow t+1}}{w_{t \rightarrow t+1}} = \frac{||o_t-o_{t+1}||_{Euclidean\ Distance}}{||r_{i}-r_{j}||_{route}}$$ $$V(r_i \rightarrow r_j)= \frac{ \sum_{u=1}^k(e_u^\prime.v \times \bar{v}_{ij})} {\sqrt{\sum_{u=1}^k(e_u^\prime.v)^2} \times \sqrt{\sum_{u=1}^k{\bar{v}_{ij}}^2}}$$
其中 $F_t(r_i \rightarrow r_j)$ 是根據前后兩個時間點之間的觀測點和隱藏候選實際點的信息,$V(r_i \rightarrow r_j)$ 是前后兩個時間點之間的速率信息;$||o_t-o_{t+1}||_{Euclidean\ Distance}$ 是觀測點之間的歐幾里德距離或者也可以是地球表明弧線距離,$F_t(r_i \rightarrow r_j)$ 表示如果前后兩個觀測點之間的距離與前后路段上兩個候選點之間的距離的值越接近,那么實際點是這個兩個候選點的概率越大;$V(r_i \rightarrow r_j)$ 中 $e_u^\prime.v$ 是路段的最大速率,$\bar{v}_{ij}$ 是平均速率, 公式表示平均速率與最大速率的變化程度相似,那么概率越大。 - 觀測概率矩陣 $B$:$$b_j(k) = P(o_t = o_k|q_t = r_j) = \frac{1}{\sqrt{2\pi}\sigma }e ^{-\frac{||o_t- r_j||^2}{2\sigma^2}}$$ 很明顯這里是用正態分布來擬合數據,時刻 $t$ 的觀測點與候選點之間的距離越小,那么這個候選點是真正的實際點的概率就越大。
4.3. Hidden Markov MM through noise and sparseness
同4.2.節的文章一樣,這篇文章也是發在2009年GIS的,同時兩篇的內容也是相近的,這里講下不同點:(1) 這篇文章沒有考慮速率信息;(2) 它用前后兩個觀測點的距離與前后兩個候選點的距離之差的絕對值來表示這兩段距離的接近程度,越接近,概率越大,且最后的概率是用指數函數來擬合,因為在實際數據分析中,這個狀態轉移概率是符合指數分布的。而觀測概率則是一模一樣的,都是用了正態分布,具體公式如下(我就不一一解釋了):
- 狀態轉移矩陣 $A$:$$a_{ij} = P(q_{t+1} = r_j | q_t = r_i) = \frac{1}{\beta}e^{\frac{-d_t}{\beta}}$$ $$d_t = |||o_t-o_{t+1}||_{great\ circle}-||r_{i}-r_{j}||_{route}|$$
- 觀測概率矩陣 $B$:$$b_j(k) = P(o_t = o_k|q_t = r_j) = \frac{1}{\sqrt{2\pi}\sigma }e ^{-\frac{||o_t- r_j||^2}{2\sigma^2}}$$
4.2.和4.3.論文小結:其實仔細的人可以發現,這兩篇論文中使用的模型不是完美的HMM,因為在計算狀態轉移概率時既要考慮候選點的信息,也要考慮觀測點的信息,可以說是HMM的一個變種,所以在預測問題上對Viterbi算法也需要進行相應的改正。
4.4. MM with HMM on sampled road network
正是因為上面小結中所提到,它們使用的不是完美的最原始的HMM,這篇論文又將其模型簡化,做出了一些實驗,其實就是在計算狀態轉移概率時不考慮觀測點之間的信息。在實驗中,其效果跟4.3.的效果是差不多,甚至更好點。論文中公式如下:
- 狀態轉移矩陣 $A$:$$a_{ij} = P(q_{t+1} = r_j | q_t = r_i) \propto e^{-\beta d_t}$$ $$d_t = ||r_{i}-r_{j}||_{route}$$
- 觀測概率矩陣 $B$:$$b_j(k) = P(o_t = o_k|q_t = r_j) = \frac{1}{\sqrt{2\pi}\sigma }e ^{-\frac{||o_t- r_j||^2}{2\sigma^2}}$$
4.5. Online MM based on HMM
在這篇論文中,與之前論文不同的創新點大概有三種:(1) 在計算狀態轉移矩陣時用了機器學習的方法:SVM;(2) 計算觀測概率矩陣是考慮了路段的寬度信息;(3) 使用在線的Viterbi算法來達到在線的Map-Matching. 此外,這篇論文中的數據是包含時刻 $t$ 的速率和方向,即速度信息。
- 狀態轉移矩陣 $A$:兩個feature,公式如下:
- The distance discrepancy function: $T(d_{i \rightarrow j},D_{i \rightarrow j}) = \frac{|d_{i \rightarrow j}-D_{i \rightarrow j}|}{D_{i \rightarrow j}} $
- The momentum change function: $M(\vec{v}_0,\vec{v}_1,\ell_1,…,\vec{v}_K,\ell_K) = \frac{\sum_i^K \ell_i|\vec{v_i}-\vec{v}_{i-1}|}{\bar{v}_{i\rightarrow j}\sum_i^K\ell_i}$
第一個公式中,$d_{i \rightarrow j}$ 表示前后兩個時刻的平均速率乘以時間的距離,而 $D_{i \rightarrow j}$ 是前后兩個時刻的兩個候選點直接的最短路程的距離, 這個公式說明這兩個距離越近越好。而第二個公式表示的動量的變化,利用類似以前高中物理學中的動量變化,只是這里是長度乘以速度,注:這里的 $\vec{v}_0,\vec{v}_1,…,\vec{v}_K$是候選路段上的各個速度,符合線性分布求得,這是假設前提。當然這兩個公式算出來的都只是一個feature,之后還要利用標注好的數據利用SVM進行二類分類訓練
- 觀測概率矩陣 $B$:$$b_j(k) = P(o_t = o_k|q_t = r_j) = S(v_t,v_r)P(observation)$$ $$S(v_t,v_r) = \frac{v_r}{\max (0, v_t-v_r) + v_r}$$ $$P(observation) = \frac{1}{2w} \int_{-w}^{w} \frac{1}{\sqrt{2\pi}\sigma }e ^{-\frac{(\ell-d)^2}{2\sigma^2}}d\ell$$
$S(v_t,v_r)$ 其作用跟4.2.節中的速率變化功能是一樣的,其中 $v_r$ 是最大速率,而 $P(observation)$ 考慮的路段的寬度信息,$2w$ 是路段寬度,同樣使用高斯分布擬合。 - Online Viterbi算法討論,如圖:
從圖中就可以很明顯的看出,這個算法就是在遞歸的時候進行pruning,提前終止遞歸,如圖中的紅點時就停止了。不過,這里我有一點疑問,如果使用在線計算,那么用迭代的Viterbi算法,在 $t$ 時刻,只需要記住 $t-1$ 時刻的最大概率點不久完事了,為什么還要這樣多此一舉。
5.總結及將來工作
在這篇博客中,具體介紹了當前使用隱馬爾可夫模型(HMM)對Map-Matching問題進行建模,列舉了5篇近期論文,基本上都是屬於基於規則的計算了狀態轉移概率和觀察概率,且在每篇論文實驗中都表明了這個方法的有效性。現階段存在的問題就是數據集不統一,各個方法之間也沒有進行對比好壞,幾乎每篇論文都是用自己的數據集,自己的方法進行測試。那么以后有一個標准的測試集是一個重要問題。
之后的博客中,我會再進行一些相關工作的學習研究,並且看下除了利用HMM以外的方法進行Map-Matching。
6. 參考文獻
[1]:Ren M, Karimi H A. A hidden Markov model-based map-matching algorithm for wheelchair navigation[J]. Journal of Navigation, 2009, 62(03): 383-395.
[2]:Lou Y, Zhang C, Zheng Y, et al. Map-matching for low-sampling-rate GPS trajectories[C]. Proceedings of the 17th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems. ACM, 2009: 352-361.
[3]:Newson P, Krumm J. Hidden Markov map matching through noise and sparseness[C]. Proceedings of the 17th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems. ACM, 2009: 336-343.
[4]:Raymond R, Morimura T, Osogami T, et al. Map matching with hidden Markov model on sampled road network[C]. Pattern Recognition (ICPR), 2012 21st International Conference on. IEEE, 2012: 2242-2245.
[5]:Goh C Y, Dauwels J, Mitrovic N, et al. Online map-matching based on hidden markov model for real-time traffic sensing applications[C]. Intelligent Transportation Systems (ITSC), 2012 15th International IEEE Conference on. IEEE, 2012: 776-781.
[6]:李航.統計學習方法.北京:清華大學出版社,2012