隱馬爾可夫模型(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的條件下在時刻t+1轉移到狀態qj的概率。
觀測概率矩陣為:
其中,
是在時刻t處於狀態qj的條件下生成觀測vk的概率。
初始狀態概率向量為:
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)的結果。
當然這裡只是介紹了諸多算法中的一種,類似的還有後向算法(大家可以看相關的書籍進行了解)。對於動態規劃的解決隱馬爾科夫模型預測問題,應用最多的是維特比算法。由於維特比和自然語言處理著名的Seq2Seq模型中的Beam Search算法有聯繫,這裡就不進一步介紹,後面在介紹Seq2Seq模型的時候一起介紹。
內容參考:
[1] 李航,統計學習方法
自然語言處理技術
關注微信號每天收聽我們的消息
自然語言處理技術為您推送精品閱讀
每天一個知識點,健康生活每一天
歡迎關注公眾號學習交流