第10章隱馬爾可夫模型
隱馬爾可夫模型(hidden Markov model, HMM)是可用於標注問題的統計學習模型,描述由隱藏的馬爾可夫鏈隨機生成觀測序列的過程,屬於生成模型。
10.1 隱馬爾可夫模型的基本概念
定義10.1 (隱馬爾可夫模型) 隱馬爾可夫模型是關於時序的概率模型,描述由一個隱藏的馬爾可夫鏈隨機生成不可觀測的狀態隨機序列,再由各個狀態生成一個觀測而產生觀測隨機序列的過程。隱藏的馬爾可夫鏈隨機生成的狀態的序列,稱為狀態序列(state sequence):每個狀態生成一個觀測,而由此產生的觀測的隨機序列,稱為觀測序列(observation sequenoe )。序列的每一個位置又可以看作是一個時刻。
隱馬爾可夫模型由初始概率分布、狀態轉移概率分布以及觀測概率分布確定。隱馬爾可夫模型的形式定義如下
設Q是所有可能的狀態的集合,V是所有可能的觀側的集合.
其中,N是可能的狀態數,M是可能的觀測數.
I是長度為T的狀態序列,O是對應的觀測序列.
A是狀態轉移概率矩陣:
是在時刻t處於狀態qi的條件下在時刻t+1轉移到狀態qj的概率。
B是觀測概率矩陣:
是在時刻t處於狀態qj的條件下生成觀測vk的概率。
n是初始狀態概率向量:
是時刻t=1處於狀態qi的概率。
隱馬爾可夫模型兄可以用三元符號表示,即
隱馬爾可夫模型由初始狀態概率向量pi、狀態轉移概率矩陣A和觀測概率矩陣B決定。A,B,pi稱為隱馬爾可夫模型的三要素。
狀態轉移概率矩陣A與初始狀態概率向量pi確定了隱藏的馬爾可夫鏈,生成不可觀測的狀態序列。
觀測概率矩陣B確定了如何從狀態生成觀測,與狀態序列綜合確定了如何產生觀測序列。
隱馬爾可夫模型作了兩個基本假設:
(1) 齊次馬爾可夫性假設,即假設隱藏的馬爾可夫鏈在任意時刻t的狀態只依賴於其前一時刻的狀態,與其他時刻的狀態及觀測無關,也與時刻t無關
(2) 觀測獨立性假設,即假設任意時刻的觀測只依賴於該時刻的馬爾可夫鏈的狀態,與其他觀測及狀態無關.
隱馬爾可夫模型可以用於標注,這時狀態對應着標記。標注問題是給定觀測的序列預測其對應的標記序列可以假設標注問題的數據是由隱馬爾可夫模型生成的。這樣我們可以利用隱馬爾可夫模型的學習與預測算法進行標注。
根據隱馬爾可夫模型定義,可以將一個長度為T的觀測序列,其生成過程描述如下:
隱馬爾可夫模型的3個基本問題
(1)概率計算問題。給定模型
和觀測序列O=(o1,o2,... ,oT),計算在模型lamda之下觀測序列O出現的概率
。
(2)學習問題。己知觀測序列O=(o1,o2,... ,oT),估計模型
參數,使得在該模型下觀測序列概率
最大。即用極大似然估計的方法估計參數。
(3)預測問題,也稱為解碼(decoding)問題。己知模型
和觀測序列O=(o1,o2,... ,oT),求對給定觀測序列條件概率P(I | O)最大的狀態序列I=(i1,i2,... ,iT),即給定觀測序列,求最有可能的對應的狀態序列。
10.2 概率計算算法
直接計算法
按概率公式直接計算通過列舉所有可能的長度為T的狀態序列I=(i1,i2,... ,iT),求各個狀態序列I與觀測序列O=(o1,o2,... ,oT)
但是,計算量很大,是O(TNT)階的,這種算法不可行。
前向-后向算法(forward-backward algorithm)
前向算法
定義10.2 (前向概率) 給定隱馬爾可夫模型
,定義到時刻t部分觀測序列o1,o2,... ,ot且狀態為qi的概率為前向概率,記作
可以遞推地求得前向概率及觀測序列概率
步驟(1)初始化前向概率,是初始時刻的狀態i1=qi和觀測o1的聯合概率。
步驟(2)是前向概率的遞推公式,計算到時刻t+1部分觀測序列為o1,o2,... ,ot ,ot+1且在時刻t+1處於狀態qi的前向概率,如圖10.1所示。
ai(j)是到時刻t觀測到o1,o2,... ,ot並在時刻t處於狀態qj的前向概率,那么乘積ai(j)aji就是到時刻t觀測到o1,o2,... ,ot在在時刻t處於狀態qj而在時刻t+1到達狀態qi的聯合概率。對這個乘積在時刻t的所有可能的N個狀態qj求和,其結果就是到時刻t觀測為o1,o2,... ,ot並在時刻t+1處於狀態qi的聯合概率。方括弧里的值與觀測概率bi(ot+1)的乘積恰好是到時刻t+1觀測到
o1,o2,... ,ot ,ot+1且在時刻t+1處於狀態qi的前向概率。
步驟(3):
因為
所以
前向算法實際是基於“狀態序列的路徑結構”遞推計算
的算法。前向算法高效的關鍵是其局部計算前向概率,然后利用路徑結構將前向概率“遞推”到全局,得到
。具體地,在時刻t=1,計算a1(i)的N個值(i=1,2,...,N);在各個時刻t=1,2,...,T-1,計算at+1(i)的N個值(i=1,2,...,N),而且每個at+1(i)的計算利用前一時刻ai(j)。
減少計算量的原因在於每一次計算直接引用前一個時刻的計算結果,避免重復計算。利用前向概率計算
的計算量是O(N2T)階的,而不是直接計算的O(TNT)階。
后向算法
定義10.3 (后向概率) 給定隱馬爾可夫模型
,定義在時刻t部狀態為qi的條件下,從t+1到T的部分觀測序列為ot+1,ot+2 ,... ,oT的概率為后向概率,記作
可以遞推地求得后向概率及觀測序列概率
步驟(1)初始化初始化后向概率,對最終時刻的所有狀態qi規定
。
步驟(2)是后向概率的遞推公式,如圖10.3所示,為了計算在時刻t部狀態為qi的條件下,從t+1到T的部分觀測序列為ot+1,ot+2 ,... ,oT的后向概率
。只需考慮在時刻t十1所有可能的N個狀態qj的轉移概率(即aij項),以及在此狀態下的觀測ot+1的觀測概率(即bj(oi+1)項),然后考慮狀態qj之后的觀測序列的后向概率(即
項)。
步驟(3)求解
的思路與步驟(2)一致,只是初始概率
代替轉移概率.
利用前向概率和后向概率的定義可以將觀測序列概率統一寫成
此式當t=1和t=T-1時分別為式(10.17)和式(10.21)。
一些概率與期望值的計算
給定隱馬爾可夫模型
和觀測O,利用前向概率和后向概率,可以得到關於單個狀態和兩個狀態概率的計算公式,
(1)在時刻t處於狀態qi的概率。記
由前向和后向概率的定義可知,
所以
(2)在時刻t處於狀態qi的概率且在時刻t+1處於狀態qj的概率。記
根據前后向概率計算:
所以
(3)將(1)和(2)中的概率對各個時刻t求和,可以得到一些有用的期望值
10.3 學習算法
隱馬爾可夫模型的學習,根據訓練數據是包括觀測序列和對應的狀態序列還是只有觀測序列,可以分別由監督學習與非監督學習實現.
監督學習算法
假設已給訓練數據包含S個長度相同的觀測序列和對應的狀態序列{(O1,I1),...,(OS,IS)},利用極大似然估計法來估計隱馬爾可夫模
型的參數。
(1)轉移概率aij的估計
設樣本中時t處於狀態i時刻t+1轉移到狀態j的頻數為Aij,那么狀態轉移概率的估計是
(2)觀測概率bj(k)的估計
設樣本中狀態為j並觀測為k的頻數是Bjk,那么狀態為j觀測為k的概率的估計是
非監督學習算法--Baum-Welch算法(即EM算法)
假設給定訓練數據只包含S個長度為T的觀測序列{O1,...,OS)}而沒有對應的狀態序列,目標是學習隱馬爾可夫模型的參數。將觀測序列數據看作觀測數據O,狀態序列數據看作不可觀測的隱數據I,那么隱馬爾可夫模型事實上是一個含有隱變量的概率模型
它的參數學習可以由EM算法實現。
完全數據由觀測數據和隱數據組成(O,I)=(o1,o2,... ,oT,i1,i2,... ,iT),對數似然函數是![]()
EM算法的E步:求Q函數
EM算法的M步:極大化Q函數求模型參參數:極大似然函數可得,
10.4 預測算法
隱馬爾可夫模型預測的兩種算法:近似算法與維特比算法(Viterbi algorithm)
近似算法
近似算法的想法是:在每個時刻t選擇在該時刻最有可能出現的狀態it*,得到一個狀態序列
作為預測的結果。
在每一時刻t最有可能的狀態it*通過下式得到:
近似算法的優點是計算簡單,其缺點是不能保證預測的狀態序列整體是最有可能的狀態序列,因為預測的狀態序列可能有實際不發生的部分。該方法得到的狀態序列中有可能存在轉移概率為0的相鄰狀態
維特比算法
維特比算法實際是用動態規划解隱馬爾可夫模型預側問題,即用動態規划(dynamic programming)求概率最大路徑(最優路徑)。一條路徑對應着一個狀態序列。
根據動態規划原理,最優路徑具有這樣的特性:如果最優路徑在時刻t通過結點it*,那么這一路徑從結點it*到終點iT*的部分路徑,對於從it*到iT*的所有可能的部分路徑來說,必須是最優的。依據這一原理,我們只需從時刻t=1開始,遞推地計算在時刻t狀態為i的各條部分路徑的最大概率,直至得到時刻t=T狀態為i的各條路徑的最大概率。時刻t=T的最大概率即為最優路徑的概率P*。
最優路徑的終結點iT*也同時得到。之后,從終結點iT*開始,由后向前逐步求得結點iT-1* , ... , i1*。















