23 Markov chain 及 HMM
上次我們講完在空間上,我們可以知道資料的區域性,並且利用 convolution 來萃取特徵。
這次我們來講時間,其實不一定要是"時間"序列資料,只要是有先後順序的資料就可以。
在時間序列分析及統計的領域中,我們有基礎的馬可夫模型(Markov chain)。
Markov chain
馬可夫模型是這樣的,他假設一個變數有不同種的狀態,例如下圖:
在這邊有4個狀態,一個圓圈代表一個狀態,狀態跟狀態之間會隨著時間改變,每個狀態會有一定機率變成其他狀態,或是維持原本的狀態不變。
我們可以把目前的狀態用一個向量來表達:
$$
\mathbf{y} =
\begin{bmatrix}
y_1&y_2&y_3&y_4 \\
\end{bmatrix}
$$
注意:我們這邊使用的向量為列向量(row vector),一般在其他數學領域使用的則是行向量(column vector),兩者是可以藉由轉置來互換的,並不影響運算結果
我們這邊用 $\mathbf{y}$ 代表他是可以被觀察到的。狀態變化我們可以用一個矩陣來表達:
$$
A = [a_{ij}] =
\begin{bmatrix}
a_{11}& a_{12}& a_{13}& a_{14} \\
a_{21}& a_{22}& a_{23}& a_{24} \\
a_{31}& a_{32}& a_{33}& a_{34} \\
a_{41}& a_{42}& a_{43}& a_{44} \\
\end{bmatrix}
$$
其中 $a_{ij}$ 代表的是由狀態 $i$ 變成狀態 $j$ 的機率,這邊要注意的是,每一個列(row)的機率總和要是 1。
補充:
由於我們的向量都是 row vector
$A$ 為一 right stochastic matrix,運算形式為 $\mathbf{y} A$
由狀態 $i$ 變成其他狀態之機率和為 1($A \mathbf{1} = \mathbf{1}$)
感謝陳杰翰先生幫忙指正
所以不同時間點的狀態變化關係可以寫成以下式子:
$$
\mathbf{y^{(t)}} = \mathbf{y^{(t-1)}} A
$$
$\mathbf{y^{(t)}}$ 的意思是第 t 次(或是時間為 t)的狀態,$\mathbf{y^{(t-1)}}$ 狀態會經過一次轉換或是運算轉變成 $\mathbf{y^{(t)}}$。
如果你把其中的第一項的運算拆開來看就會長這樣,可以自行檢驗狀態的變化:
$$
y_1^{(t)} = a_{11}y_1^{(t-1)} + a_{12}y_2^{(t-1)} + a_{13}y_3^{(t-1)} + a_{14}y_4^{(t-1)}
$$
從時間軸上來看,我們可以把狀態的轉變畫出來像是這樣:
每次的轉變我們都可以看成一個函數 $f$,他其實等同於上面提到的矩陣:
$$
\mathbf{y^{(t)}} = f(\mathbf{y^{(t-1)}}) = \mathbf{y^{(t-1)}} A
$$
所以他的意思是,$\mathbf{y^{(t-1)}}$ 會經由 $f$ 變成 $\mathbf{y^{(t)}}$,所以這是單純的狀態變化。
上面的矩陣當中其實內容是機率,我們也可以把他轉成機率的寫法,但是解釋會變得不太一樣:
$$
p = f(\mathbf{y^{(t)}} \mid \mathbf{y^{(t-1)}}) = P(\mathbf{y^{(t)}} \mid \mathbf{y^{(t-1)}})
$$
這邊的解釋是,$\mathbf{y^{(t-1)}}$ 會經由 $f$ 變成 $\mathbf{y^{(t)}}$ 的機率。
下句跟上句的不同在於,上句的描述是肯定的,他只描述了狀態的改變,但是下句多加描述了 這件事會發生的機率,所以應該要把 $\mathbf{y^{(t)}} \mid \mathbf{y^{(t-1)}}$ 理解成 這一件事,那麼 $f$ 的輸出就是機率了。
我們可以把上圖 收起來,所以看起來會像這樣:
花了點時間把一些符號跟數學概念講完了,來談談他的假設,一般來說,馬可夫模型最大的假設在於:
$$
P(\mathbf{y^{(t)}} \mid \mathbf{y^{(1)}}, \mathbf{y^{(2)}}, \dots, \mathbf{y^{(t-1)}}) = P(\mathbf{y^{(t)}} \mid \mathbf{y^{(t-1)}})
$$
也就是要預測第 t 單位時間的狀態,我們經歷了第 1~(t - 1) 單位時間,但是他只需要用前一個時間單位的狀態就可以預測下一個狀態,前面很多狀態都是不必要的,這我們稱為一階馬可夫模型(first-order Markov chain)。
當然可以推廣到 m 階馬可夫模型(m th-order Markov chain),那代表需要前 m 個狀態來預測下一個狀態,順帶一提,有零階馬可夫模型,那就跟我們一般的機率分佈模型($P(\mathbf{y^{(t)}})$)一樣。
沒有特別提的話,通常大家談的馬可夫模型都是一階馬可夫模型。一般來說,他有個非常重要的特性,就是 無記憶性,也就是他不會去記住他所經歷的狀態,他只需要用現在的狀態就可以預測下一個狀態。
不過我要特別提一下這個模型的一些其他假設:
- 狀態是離散的。在馬可夫模型的狀態空間中是離散的,也就是你可以用一個正整數來數出有幾種狀態存在。
- 時間是離散的。我們剛剛有看到他計算的是第 t 單位時間,下一次就是乘上一個矩陣之後成為第 t+1 單位時間。
- 狀態是可被觀察的。
- 以一個隨機變數作為一個狀態。
接下來我們來談談另一個模型。
Hidden Markov model
接下來是進階版的隱馬可夫模型(hidden Markov model),他的假設是這樣的,在一個系統中存在一些我們看不到的狀態,是系統的內在狀態,隨著系統的內在狀態不同,他所表現出來的外在狀態也不同,而外在狀態是我們可以觀測到的。
大家可以看到這個圖跟剛剛的很相似,帶是又多了一些東西。較大的圈圈是內在狀態,小的圈圈是外在狀態。隨著時間改變,內在狀態會隨著變動,內在狀態的變動我們可以用一個矩陣來表示:
$$
A = [a_{ij}] =
\begin{bmatrix}
a_{11}& a_{12}& a_{13}& a_{14} \\
a_{21}& a_{22}& a_{23}& a_{24} \\
a_{31}& a_{32}& a_{33}& a_{34} \\
a_{41}& a_{42}& a_{43}& a_{44} \\
\end{bmatrix}
$$
裏面裝的一樣是機率。接下來,不同的內在狀態有不同的機率會噴出(emit)外在狀態,這也會用另一個矩陣表示:
$$
B = [b_{ij}] =
\begin{bmatrix}
b_{11}& b_{12}& b_{13}& b_{14} \\
b_{21}& b_{22}& b_{23}& b_{24} \\
b_{31}& b_{32}& b_{33}& b_{34} \\
\end{bmatrix}
$$
寫成狀態轉移的關係式的話會變成:
$$
\mathbf{h^{(t)}} = \mathbf{h^{(t-1)}} A
$$
$\mathbf{h^{(t)}}$ 代表在第 t 單位時間的內在狀態。
$$
\mathbf{y^{(t)}} = \mathbf{h^{(t)}} B
$$
$\mathbf{y^{(t)}}$ 代表在第 t 單位時間根據內在狀態噴出的外在狀態。
如果在時間軸上表達的話是這個樣子:
由於在這邊又多了一個內在狀態,所以在模型的表達力上遠遠超越馬可夫模型。舉個例子好了,假設小明很好奇在不同天氣的時候外面的人吃冰淇淋的狀況是如何,但是小明又很懶得出門看天氣,這時候他就假設天氣(晴天、陰天、雨天)是內在狀態(看不到),然後他觀察路上的人吃冰淇淋(外在狀態,吃、不吃)的多寡,這時候這麼模型就可以派上用場,他藉由持續觀察路人有沒有吃冰淇淋,可以推論外面天氣的變化狀況。
這時候我們也來總結一下,這個模型的假設:
- 內在狀態跟外在狀態都是離散的。
- 時間是離散的。
- 內在狀態是不能被觀察的,外在狀態是可被觀察的。
- 以一個隨機變數作為一個狀態。