隱馬爾可夫模型(HMM)詳解

Robin Hu發表於2019-02-21

閱讀原文 

 隱馬爾可夫模型(Hidden Markov model, HMM)是一種結構最簡單的動態貝葉斯網的生成模型,它也是一種著名的有向圖模型。它是典型的自然語言中處理標註問題的統計機器學模型,本文將重點介紹這種經典的機器學習模型。

一、引言

    假設有三個不同的骰子(6面、4面、8面),每次先從三個骰子裡面選擇一個,每個骰子選中的概率為1/3,如下圖所示,重複上述過程,得到一串數值[1,6,3,5,2,7]。這些可觀測變數組成可觀測狀態鏈。同時,在隱馬爾可夫模型中還有一條由隱變數組成的隱含狀態鏈,在本例中即骰子的序列。比如得到這串數字骰子的序列可能為[D6, D8, D8, D6, D4, D8]。

隱馬爾可夫型示意圖如下所示:

圖中,箭頭表示變數之間的依賴關係。圖中各箭頭的說明如下:

在任意時刻,觀測變數(骰子)僅依賴於狀態變數(哪類骰子),同時t時刻的狀態qt僅依賴於t-1時刻的狀態qt-1。這就是馬爾科夫鏈,即系統的下一時刻僅由當前狀態(無記憶),即“齊次馬爾可夫性假設

二、隱馬爾可夫模型的定義

根據上面的例子,這裡給出隱馬爾可夫的定義。隱馬爾科夫模型是關於時序的概率模型,描述由一個隱藏的馬爾可夫鏈隨機生成不可觀測的狀態隨機序列,再由各個狀態生成一個可觀測的隨機序列的過程,隱藏的馬爾可夫鏈隨機生成的狀態序列,稱為狀態序列(也就上面例子中的D6,D8等);每個狀態生成一個觀測,而由此產生的觀測隨機序列,稱為觀測序列(也就上面例子中的1,6等)。序列的每個位置又可以看作是一個時刻。

隱馬爾可夫模型由初始的概率分佈、狀態轉移概率分佈以及觀測概率分佈確定。具體的形式如下,這裡設Q是所有可能的狀態的集合,V是所有可能的觀測的集合,即有:

其中,N是可能的狀態數,M是可能觀測的數。另外設I是長度為T的狀態序列,O是對應的觀測序列:

在馬爾可夫鏈中,有幾個矩陣變數,分別是狀態轉移概率矩陣A,觀測概率矩陣B,以及初始狀態概率向量C,其中狀態轉移概率矩陣A為:

其中,

是在時刻t處於狀態qi的條件下生成狀態qj的概率。

初始狀態概率向量為:

Ci為時刻t=1處於狀態qi的概率。

隱馬爾可夫模型由初始狀態概率向量C,狀態轉移概率矩陣A和觀測概率矩陣B決定,C和A決定狀態序列,B決定觀測序列,因此隱馬爾可夫模型可以用三元符號表示為:

A、B和C也被稱為隱馬爾科夫模型的三要素

狀態轉移概率矩陣A與初始狀態概率向量C確定了隱藏的馬爾可夫鏈,生成不可觀測的狀態序列,觀測概率矩陣B確定瞭如何從狀態生成觀測,與狀態序列綜合確定瞭如何產生觀測序列。

從定義中,可以發現隱馬爾可夫模型作了兩個基本假設

(1) 馬爾可夫性假設,即假設隱藏的馬爾可夫鏈在任意時刻t的狀態只依賴於其前一時刻的狀態,與其它時刻的狀態及觀測無關,也與時刻t無關,

(2) 觀測獨立性假設,即假設任意時刻的觀測只依賴於該時刻的馬爾可夫鏈的狀態,與其他觀測及狀態無關。

隱馬爾可夫模型可以用於標註,這時狀態對應著標記標註問題是給定觀測的序列預測其對應的標記序列。可以假設標註問題的資料是由隱馬爾可夫模型生成的,這樣可以利用該模型的學習與預測演算法進行標註

 

隱馬爾科夫模型的三個基本問題:

(1) 概率計算問題:給定模型lamda=(A,B,C)和觀測序列O=(o1,o2,...,oT),計算在該模型下觀測序列O出現的概率P(O|lamda)。

 

(2) 學習問題:一直觀測序列O=(o1,o2,...,oT),估計模型lamda=(A,B,C)引數,使得在該模型下觀測序列概率P(O|lamda)最大,即用極大似然估計的方法估計引數。

 

(3) 預測問題,也稱為解碼的問題,已知模型lamda=(A,B,C)和觀測序列O=(o1,o2,...,oT),求對給定觀測序列條件概率P(I|O)最大的狀態序列 I = (i1,i2,...,iT),即給定觀測序列,求最有可能的對應的狀態序列。

三、前向演算法  

在介紹前向演算法之前,先介紹前向概率。

前向概率:在給定隱馬爾科夫模型lamda,定義到時刻t部分觀測序列為o1,o2,...,ot且狀態為qi的概率為前向概率,記為:

可以根據資料對前向概率公式進行遞推,並最終得到觀測序列概率P(O|lamda). 前向概率演算法就是根據前向概率遞推公式進行計算的,輸入為隱馬爾可夫模型和觀測序列,輸出的結果為序列概率P(O|lamda). 計算的步驟為:

(1) 根據前向概率公式,先設定 t = 1的初值:

(2) 根據前向概率公式對前向概率進行遞推,因此對t=1,2,...,N-1有:

(3) 最後對所有的前向概率進行求和得到最終的結果,即為:

該演算法所表示的遞推關係圖為:

對於步驟一的初始,是初始時刻的狀態i1 = q1和觀測o1的聯合概率。步驟(2) 是前向概率的遞推公式,計算到時刻t+1部分觀測序列為o1,o2,...,ot,ot+1 且在時刻t+1處於狀態qi的前向概率。如上圖所示,既然at(j)是得到時刻t觀測到o1,o2,...,ot並在時刻t處於狀態的qj前向概率,那麼at(j)aji就是到時刻t觀測到o1,o2,...,ot並在是時刻t處於qj狀態而在時刻t+1到達qi狀態的聯合概率。對於這個乘積在時刻t的所有可能的N個狀態求和,其結果就是到時刻t觀測為o1,o2,...,ot,並在時刻t+1處於狀態qi的聯合概率。最後第三步,計算出P(O|lamda)的結果。

當然這裡只是介紹了諸多演算法中的一種,類似的還有後向演算法(大家可以看相關的書籍進行了解)。對於動態規劃的解決隱馬爾科夫模型預測問題,應用最多的是維特比演算法

更多幹貨,請關注我的微信公眾號:紅柚甜

相關文章