1. 馬爾可夫模型
如果一個系統有n個有限狀態$S=\{s_{1} , s_{2} ,\dots s_{n}\}$,隨著時間推移,該系統將從某一狀態轉移到另一狀態,$Q=\{q_{1},q_{2},\dots q_{n}\}$位一個隨機變數序列,該序列中的變數取值為狀態集S中的某個狀態,其中$q_{t}$表示系統在時間t的狀態。那麼:系統在時間t處於狀態$s_{j}$的概率取決於其在時間1,2, $\dots$ t-1的狀態,該概率為:
$$P(q_{t} = s_{j} | q_{t-1} = s_{i}, q_{t-2} = s_{k} \dots)$$
如果在特定條件下,系統在時間t的狀態只與其在時間t-1的狀態相關,即:
$$P(q_{t} = s_{j} | q_{t-1} = s_{i}, q_{t-2} = s_{k}\dots) = P(q_{t} = s_{j} | q_{t-1} = s_{i})$$
則該系統構成一個離散的一階馬爾可夫鏈。
進一步,如果只考慮上述公式獨立於時間t的隨機過程:
$$P(q_{t} = s_{j} | q_{t-1} = s_{i})= a_{ij} , 1 \leq i,j \leq N$$
該隨機過程為馬爾可夫模型。其中,狀態轉移概率aij 必須滿足以下條件:
$$a_{ij} \geq 0 , \sum_{j=1}^{N}{a_{ij} = 1} $$
2.隱馬爾可夫模型
相對於馬爾可夫模型,在隱馬爾可夫模型中,我們不知道模型經過的狀態序列,只知道狀態的概率函式,即,觀察到的事件是狀態的隨機函式,因此,該模型是一個雙重的隨機過程。其中,模型的狀態轉換過程是不可觀察的,即隱蔽的,可觀察事件的隨機過程是隱蔽的觀察狀態轉換過程的隨機函式。隱馬爾可夫模型可以用五個元素來描述,包括2個狀態集合和三個概率矩陣:
(1) 隱含狀態 S
這些狀態之間滿足馬爾可夫性質,是馬爾可夫模型中實際所隱含的狀態。這些狀態通常無法通過直接觀測而得到。(例如$S_{1},S_{2},S_{3}$等等)
(2)可觀測狀態 O
在模型中與隱含狀態相關聯,可通過直接觀測而得到。(例如$O_{1},O_{2},O_{3}$等等,可觀測狀態的數目不一定要和隱含狀態的數目一致。
(3)初始狀態概率矩陣 π
表示隱含狀態在初始時刻t=1的概率矩陣,(例如t=1時,$P(S_{1})=p_{1},P(S_{2})=P_{2},P(S_{3})=p_{3}$,則初始狀態概率矩陣 π=[ p1 p2 p3 ]
(4)隱含狀態轉移概率矩陣A
描述了HMM模型中各個狀態之間的轉移概率。其中$A_{ij} = P( S_{j} | S_{i} ),1 \leq i,,j \leq N$, 表示在 t 時刻、狀態為 $S_{i}$ 的條件下,在 t+1 時刻狀態是 $S_{j}$ 的概率
(5) 觀測狀態轉移概率矩陣B
令N代表隱含狀態數目,M代表可觀測狀態數目,則 $B_{ij} = P( O_{i} | S_{j} ), 1 \leq i \leq M,1 \leq j \leq N$ 表示在 t 時刻、隱含狀態是 $s_{j}$條件下,觀察狀態為 $O_{i}$ 的概率。
3.維特比演算法
在Hmm中存在這樣一個問題,給定一個觀察序列$O=\{O_{1},O_{2}\dots O_{T}\}$和模型$\mu = (A,B,\ pi)$,如何快速有效地選擇在一定意義下“最優”的狀態序列$Q={q_{1},q_{2} \dots q_{t}}$,使得該狀態序列最好的解釋觀察序列。維特比演算法就是解決這個問題的一個有效方法,下面請看詳細介紹。維特比變數$ \delta _{t} (i)$是在時間t時,Hmm沿著某一條路徑達到狀態$s_{i}$,並輸出觀察序列$O_{1}O_{2} \dots O_{t}$的最大概率:
$$\delta _{t} (i) = \max \limits_{q_{1},q_{2} \dots q_{t-1}} P(q_{1},q_{2},\dots,q_{t}=s_{i},O_{1},O_{2}, \dots O_{t} | \mu)$$
其中,$\delta _{t} (i)$有如下遞迴關係:
$$\delta _{t+1} (i) = \max_{j}[\delta _{j} \cdot a_{ij}] \cdot b_{i}(O_{t+1})$$
維特比演算法(Viterbi algorithm):
步1 初始化:
$$\delta _{1} (i) = \pi _{i}b_{i}(O_{1}), 1 \leq i \leq N$$
$$ \psi _{1} (i) = 0$$
步2 歸納計算:
$$\delta _{t} (j) = \max_{1 \leq i \leq N}[\delta _{i-1}(i) \cdot a_{ij}] \cdot b_{j}(O_{t}),2 \leq t \leq T, 1 \leq j \leq N$$
$$\psi _{t}(j) = argmax _{1 \leq i \leq N}[\delta _{t-1}(i) \cdot a_{ij}] \cdot b_{j}(O_{t}),2 \leq t \leq T, 1 \leq i \leq N$$
步3 終結:
$$\widehat Q_{T} = argmax_{1 \leq i \leq N}[\delta_{T}(i)]$$
$$ \widehat P(\widehat Q_{T}) = \max_{1 \leq i \leq N}[\delta_{T}(i)]$$
步4 路徑回溯:
$$ \widehat q_{t} = \psi_{t+1}(\widehat q_{t+1}),t=T-1,,T-2 \dots , 1$$
4.HMM用於中文分詞
在將HMM用於中文分詞中,可以採用四個隱含狀態,分別為'S','B','M','E',分別表示為單字成詞,片語的開頭,片語的中間,片語的結尾。通過標註好的分詞訓練集,可以得到HMM的各個引數,然後使用維特比演算法來解釋測試集,得到分詞結果,原始碼在可參考 HMM實現中文分詞
本次實驗中所使用的訓練檔案,測試檔案,及詞典等是由國際計算語言學會中文語言處理小組所主辦的國際中文語言處理競賽中所使用的資料。這份資料中,主要包含了訓練檔案,測試檔案,詞典以及一個評分指令碼。特別需要說明的是這些中文語料庫分別由臺灣中央研究院,香港城市大學,北京大學以及微軟亞洲研究院提供。具體可參考 中文分詞入門之資源