NLP入門 | 隱馬爾科夫模型HMM(一)HMM模型

作者:劉建平Pinard
博客地址:https://www.cnblogs.com/pinard
原文鏈接,點擊文末閱讀全文直達:https://www.cnblogs.com/pinard/p/6945257.html

隱馬爾科夫模型HMM(一)HMM模型基礎

隱馬爾科夫模型HMM(二)前向後向算法評估觀察序列概率

隱馬爾科夫模型HMM(三)鮑姆-韋爾奇算法求解HMM參數

隱馬爾科夫模型HMM(四)維特比算法解碼隱藏狀態序列

上一篇Word2vec原理了解了嗎?

劉建平Pinard,公衆號:AI算法之心Word2vec之零基礎入門實戰(附代碼)

隱馬爾科夫模型(Hidden Markov Model,以下簡稱HMM)是比較經典的機器學習模型了,它在語言識別,自然語言處理,模式識別等領域得到廣泛的應用。當然,隨着目前深度學習的崛起,尤其是RNN,LSTM等神經網絡序列模型的火熱,HMM的地位有所下降。但是作爲一個經典的模型,學習HMM的模型和對應算法,對我們解決問題建模的能力提高以及算法思路的拓展還是很好的。本文是HMM系列的第一篇,關注於HMM模型的基礎。

1. 什麼樣的問題需要HMM模型

首先我們來看看什麼樣的問題解決可以用HMM模型。使用HMM模型時我們的問題一般有這兩個特徵:

1)我們的問題是基於序列的,比如時間序列,或者狀態序列。

2)我們的問題中有兩類數據,一類序列數據是可以觀測到的,即觀測序列;而另一類數據是不能觀察到的,即隱藏狀態序列,簡稱狀態序列。

有了這兩個特徵,那麼這個問題一般可以用HMM模型來嘗試解決。這樣的問題在實際生活中是很多的。比如:我現在在打字寫博客,我在鍵盤上敲出來的一系列字符就是觀測序列,而我實際想寫的一段話就是隱藏序列,輸入法的任務就是從敲入的一系列字符儘可能的猜測我要寫的一段話,並把最可能的詞語放在最前面讓我選擇,這就可以看做一個HMM模型了。再舉一個,我在和你說話,我發出的一串連續的聲音就是觀測序列,而我實際要表達的一段話就是狀態序列,你大腦的任務,就是從這一串連續的聲音中判斷出我最可能要表達的話的內容。

從這些例子中,我們可以發現,HMM模型可以無處不在。但是上面的描述還不精確,下面我們用精確的數學符號來表述我們的HMM模型。

2. HMM模型的定義

對於HMM模型,首先我們假設是所有可能的隱藏狀態的集合,是所有可能的觀測狀態的集合,即:

其中,是可能的隱藏狀態數,是所有的可能的觀察狀態數。

對於一個長度爲的序列,對應的狀態序列, 是對應的觀察序列,即:

其中,任意一個隱藏狀態,任意一個觀察狀態

HMM模型做了兩個很重要的假設如下:

1) 齊次馬爾科夫鏈假設。即任意時刻的隱藏狀態只依賴於它前一個隱藏狀態,這個我們在MCMC(二)馬爾科夫鏈中有詳細講述。當然這樣假設有點極端,因爲很多時候我們的某一個隱藏狀態不僅僅只依賴於前一個隱藏狀態,可能是前兩個或者是前三個。但是這樣假設的好處就是模型簡單,便於求解。如果在時刻的隱藏狀態是,在時刻的隱藏狀態是, 則從時刻到時刻的HMM狀態轉移概率可以表示爲:

這樣可以組成馬爾科夫鏈的狀態轉移矩陣:

2) 觀測獨立性假設。即任意時刻的觀察狀態只僅僅依賴於當前時刻的隱藏狀態,這也是一個爲了簡化模型的假設。如果在時刻的隱藏狀態是, 而對應的觀察狀態爲, 則該時刻觀察狀態在隱藏狀態下生成的概率爲,滿足:

這樣可以組成觀測狀態生成的概率矩陣:

除此之外,我們需要一組在時刻的隱藏狀態概率分佈:

一個HMM模型,可以由隱藏狀態初始概率分佈, 狀態轉移概率矩陣和觀測狀態概率矩陣決定。決定狀態序列,決定觀測序列。因此,HMM模型可以由一個三元組表示如下:

3.一個HMM模型實例

下面我們用一個簡單的實例來描述上面抽象出的HMM模型。這是一個盒子與球的模型,例子來源於李航的《統計學習方法》。

假設我們有3個盒子,每個盒子裏都有紅色和白色兩種球,這三個盒子裏球的數量分別是:

盒子123
紅球數547
白球數563

按照下面的方法從盒子裏抽球,開始的時候,從第一個盒子抽球的概率是0.2,從第二個盒子抽球的概率是0.4,從第三個盒子抽球的概率是0.4。以這個概率抽一次球后,將球放回。然後從當前盒子轉移到下一個盒子進行抽球。規則是:如果當前抽球的盒子是第一個盒子,則以0.5的概率仍然留在第一個盒子繼續抽球,以0.2的概率去第二個盒子抽球,以0.3的概率去第三個盒子抽球。如果當前抽球的盒子是第二個盒子,則以0.5的概率仍然留在第二個盒子繼續抽球,以0.3的概率去第一個盒子抽球,以0.2的概率去第三個盒子抽球。如果當前抽球的盒子是第三個盒子,則以0.5的概率仍然留在第三個盒子繼續抽球,以0.2的概率去第一個盒子抽球,以0.3的概率去第二個盒子抽球。如此下去,直到重複三次,得到一個球的顏色的觀測序列:

紅,白,紅

注意在這個過程中,觀察者只能看到球的顏色序列,卻不能看到球是從哪個盒子裏取出的。

那麼按照我們上一節HMM模型的定義,我們的觀察集合是:

紅,白

我們的狀態集合是:

盒子,盒子,盒子

而觀察序列和狀態序列的長度爲3.

初始狀態分佈爲:

狀態轉移概率分佈矩陣爲:

觀測狀態概率矩陣爲:

4. HMM觀測序列的生成

從上一節的例子,我們也可以抽象出HMM觀測序列生成的過程。

輸入的是HMM的模型,觀測序列的長度

輸出是觀測序列

生成的過程如下:

1)根據初始狀態概率分佈生成隱藏狀態

  1. for t from 1 to T

a. 按照隱藏狀態的觀測狀態分佈生成觀察狀態

b. 按照隱藏狀態的狀態轉移概率分佈產生隱藏狀態

所有的一起形成觀測序列

5. HMM模型的三個基本問題

HMM模型一共有三個經典的問題需要解決:

1) 評估觀察序列概率。即給定模型和觀測序列,計算在模型下觀測序列O出現的概率。這個問題的求解需要用到前向後向算法,我們在這個系列的第二篇會詳細講解。這個問題是HMM模型三個問題中最簡單的。

2)模型參數學習問題。即給定觀測序列,估計模型的參數,使該模型下觀測序列的條件概率最大。這個問題的求解需要用到基於EM算法的鮑姆-韋爾奇算法, 我們在這個系列的第三篇會詳細講解。這個問題是HMM模型三個問題中最複雜的。

3)預測問題,也稱爲解碼問題。即給定模型和觀測序列,求給定觀測序列條件下,最可能出現的對應的狀態序列,這個問題的求解需要用到基於動態規劃的維特比算法,我們在這個系列的第四篇會詳細講解。這個問題是HMM模型三個問題中複雜度居中的算法。

個人微信:加時請註明 (暱稱+公司/學校+方向)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章