隱馬爾可夫模型 | 賽爾筆記

哈工大SCIR發表於2019-04-19

馬爾可夫模型(HMM)是可用於標註問題的統計學習模型,描述由隱藏的馬爾可夫鏈隨機生成觀測序列的過程,屬於生成模型

說到馬爾可夫模型(HMM),我們先來了解下馬爾可夫模型(Markov模型),Markov模型是一種統計模型,廣泛地應用在語音識別,詞性自動標註,音字轉換,概率文法等各個自然語言處理的應用領域。

一. 馬爾可夫模型(Markov模型)

隱馬爾可夫模型 | 賽爾筆記是隨機變數序列,其中每個隨機變數的取值在有限集隱馬爾可夫模型 | 賽爾筆記,稱為狀態空間。Markov特徵是:

  • 有限歷史假設隱馬爾可夫模型 | 賽爾筆記

  • 時間不變性隱馬爾可夫模型 | 賽爾筆記

如果隱馬爾可夫模型 | 賽爾筆記 具有這些特徵,那麼這個隨機變數序列稱為一個馬爾可夫過程(鏈)。

Markov的形式化表示:一個馬爾可夫模型是一個三元組 隱馬爾可夫模型 | 賽爾筆記,其中隱馬爾可夫模型 | 賽爾筆記 是狀態的集合,隱馬爾可夫模型 | 賽爾筆記是初始狀態的概率,隱馬爾可夫模型 | 賽爾筆記是狀態間的轉移概率。具體例子用圖形表示如下,

隱馬爾可夫模型 | 賽爾筆記

相應的隱馬爾可夫模型 | 賽爾筆記分別是,

隱馬爾可夫模型 | 賽爾筆記

馬爾可夫模型馬爾可夫模型不同的是各個狀態(或者狀態轉移弧)都有一個輸出,但是狀態是不可見的

最簡單的情形:不同的狀態只能有不同的輸出,

隱馬爾可夫模型 | 賽爾筆記

增加一點靈活性:不同的狀態,可以輸出相同的輸出,

隱馬爾可夫模型 | 賽爾筆記

再增加一點靈活性:輸出在狀態轉移中進行,

隱馬爾可夫模型 | 賽爾筆記

最大的靈活性:在狀態轉移中以特定的概率分佈輸出,

隱馬爾可夫模型 | 賽爾筆記

這就得到了我們要講的馬爾可夫模型

二. 馬爾可夫模型(HMM)

1.HMM的形式化定義

HMM是一個五元組隱馬爾可夫模型 | 賽爾筆記,其中隱馬爾可夫模型 | 賽爾筆記是狀態的集合,隱馬爾可夫模型 | 賽爾筆記是輸出字元的集合,隱馬爾可夫模型 | 賽爾筆記是初始狀態的概率,隱馬爾可夫模型 | 賽爾筆記是狀態轉移的概率, 隱馬爾可夫模型 | 賽爾筆記是狀態轉移時輸出字元的概率。

一個HMM的例子用圖形表示如下,

隱馬爾可夫模型 | 賽爾筆記

2. 馬爾可夫模型的三個基本問題

  • 評估問題:給定一個模型 隱馬爾可夫模型 | 賽爾筆記,如何高效地計算某一輸出字元序列的概率隱馬爾可夫模型 | 賽爾筆記

  • 解碼問題:給定一個輸出字元序列隱馬爾可夫模型 | 賽爾筆記,和一個模型隱馬爾可夫模型 | 賽爾筆記,如何確定產生這一序列概率最大的狀態序列隱馬爾可夫模型 | 賽爾筆記

  • 學習問題:給定一個輸出字元的序列隱馬爾可夫模型 | 賽爾筆記,如何調整模型的引數使得產生這一序列的概率最大?

3. 評估問題的解法

隱馬爾可夫模型 | 賽爾筆記

已知隱馬爾可夫模型 | 賽爾筆記隱馬爾可夫模型 | 賽爾筆記,計算隱馬爾可夫模型 | 賽爾筆記?我們先來化簡一下隱馬爾可夫模型 | 賽爾筆記

隱馬爾可夫模型 | 賽爾筆記

  • 方案一:直接計演算法

隱馬爾可夫模型 | 賽爾筆記

窮舉所有可能的隱馬爾可夫模型 | 賽爾筆記的情況,求和得到隱馬爾可夫模型 | 賽爾筆記,但是時間複雜度太高,為隱馬爾可夫模型 | 賽爾筆記

  • 方案二:前向演算法(Forward algorithm)

隱馬爾可夫模型 | 賽爾筆記

使用動態規劃使得演算法更高效,定義一個前向變數表示到時刻隱馬爾可夫模型 | 賽爾筆記部分觀測序列為隱馬爾可夫模型 | 賽爾筆記且狀態為隱馬爾可夫模型 | 賽爾筆記的概率為向前概率,記為隱馬爾可夫模型 | 賽爾筆記,即

隱馬爾可夫模型 | 賽爾筆記

則可以遞推得到,

隱馬爾可夫模型 | 賽爾筆記

前向過程演算法如下,

隱馬爾可夫模型 | 賽爾筆記

一個簡單的前向過程例子如下,

隱馬爾可夫模型 | 賽爾筆記

  • 方案三:向後演算法(backward algorithm)

同樣的道理,我們定義在時刻隱馬爾可夫模型 | 賽爾筆記狀態為隱馬爾可夫模型 | 賽爾筆記的條件下,從隱馬爾可夫模型 | 賽爾筆記隱馬爾可夫模型 | 賽爾筆記的部分觀測序列為隱馬爾可夫模型 | 賽爾筆記的概率為後向概率,記作隱馬爾可夫模型 | 賽爾筆記,即

隱馬爾可夫模型 | 賽爾筆記

直接採用遞推即可得到後向演算法。

後向演算法過程如下,

  • 1. 初始化

隱馬爾可夫模型 | 賽爾筆記

  • 2. 推導

隱馬爾可夫模型 | 賽爾筆記

  • 3. 總和

隱馬爾可夫模型 | 賽爾筆記

4. 解碼問題的解法

隱馬爾可夫模型 | 賽爾筆記

給定一個輸出字元序列隱馬爾可夫模型 | 賽爾筆記,和一個模型隱馬爾可夫模型 | 賽爾筆記,如何確定產生這一序列概率最大的狀態序列?

隱馬爾可夫模型 | 賽爾筆記

我們定義隱馬爾可夫模型 | 賽爾筆記表示為在隱馬爾可夫模型 | 賽爾筆記時刻到達狀態隱馬爾可夫模型 | 賽爾筆記,輸出字元隱馬爾可夫模型 | 賽爾筆記時,輸出前面隱馬爾可夫模型 | 賽爾筆記個字元的最可能路徑的概率,

隱馬爾可夫模型 | 賽爾筆記

則有

隱馬爾可夫模型 | 賽爾筆記

這樣我們就得到了維特比演算法(Viterbi Algorithm),演算法過程如下:

隱馬爾可夫模型 | 賽爾筆記

一個簡單的viterbi演算法舉例如下,

隱馬爾可夫模型 | 賽爾筆記

5.  學習問題解法

隱馬爾可夫模型 | 賽爾筆記

給定一個輸出字元的序列隱馬爾可夫模型 | 賽爾筆記,如何調整模型的引數使得產生這一序列的概率最大?

隱馬爾可夫模型 | 賽爾筆記

馬爾可夫模型的學習,根據訓練資料是包括觀測資料和對應的狀態序列還是隻有觀測序列,可以分為有監督學習和無監督學習,其中無監督的學習即是利用EM演算法思想的Baum-Welch演算法。

  • 方案一:有監督學習

假設訓練資料包含隱馬爾可夫模型 | 賽爾筆記個長度相同的觀測序列和對應的狀態序列隱馬爾可夫模型 | 賽爾筆記那麼可以利用極大似然估計法來估計馬爾可夫模型引數隱馬爾可夫模型 | 賽爾筆記,具體估計方法如下:

  • 1. 轉移概率隱馬爾可夫模型 | 賽爾筆記的估計

設樣本中時刻隱馬爾可夫模型 | 賽爾筆記處於狀態隱馬爾可夫模型 | 賽爾筆記時刻隱馬爾可夫模型 | 賽爾筆記處於狀態隱馬爾可夫模型 | 賽爾筆記的頻數為隱馬爾可夫模型 | 賽爾筆記,那麼狀態轉移概率隱馬爾可夫模型 | 賽爾筆記的估計是

隱馬爾可夫模型 | 賽爾筆記

  • 2. 觀測概率隱馬爾可夫模型 | 賽爾筆記的估計

設樣本中狀態為隱馬爾可夫模型 | 賽爾筆記並觀測為隱馬爾可夫模型 | 賽爾筆記的頻數是隱馬爾可夫模型 | 賽爾筆記,那麼狀態為隱馬爾可夫模型 | 賽爾筆記觀測為隱馬爾可夫模型 | 賽爾筆記的概率隱馬爾可夫模型 | 賽爾筆記的估計是

隱馬爾可夫模型 | 賽爾筆記

  • 3. 初始狀態概率隱馬爾可夫模型 | 賽爾筆記的估計隱馬爾可夫模型 | 賽爾筆記隱馬爾可夫模型 | 賽爾筆記個樣本中初始狀態為隱馬爾可夫模型 | 賽爾筆記的概率

由於監督學習的方法需要使用訓練資料,而人工標註的代價往往很高,有時會採用非監督學習的方法。

  • 方案二:無監督學習——Baum-Welch演算法

假設給定的訓練資料只包含隱馬爾可夫模型 | 賽爾筆記個長度為隱馬爾可夫模型 | 賽爾筆記的觀測序列而沒有對應的狀態序列隱馬爾可夫模型 | 賽爾筆記,目標是學習馬爾可夫模型隱馬爾可夫模型 | 賽爾筆記引數。我們將觀測序列資料看做觀測資料隱馬爾可夫模型 | 賽爾筆記狀態序列資料看做不可觀測資料隱馬爾可夫模型 | 賽爾筆記,那麼馬爾可夫模型事實上是一個包含隱變數的概率模型

隱馬爾可夫模型 | 賽爾筆記

它的引數學習可以由EM演算法實現。

(演算法推導過程)

(1) 確定完全資料的對數似然函式 所有觀測資料寫成隱馬爾可夫模型 | 賽爾筆記所有的隱資料寫成隱馬爾可夫模型 | 賽爾筆記,完全資料是隱馬爾可夫模型 | 賽爾筆記。完全資料的對數似然函式隱馬爾可夫模型 | 賽爾筆記

(2) EM演算法的E步:求隱馬爾可夫模型 | 賽爾筆記函式的隱馬爾可夫模型 | 賽爾筆記

隱馬爾可夫模型 | 賽爾筆記

其中隱馬爾可夫模型 | 賽爾筆記馬爾可夫模型引數的當前估計值,隱馬爾可夫模型 | 賽爾筆記是要極大化的馬爾可夫模型引數。因為,

隱馬爾可夫模型 | 賽爾筆記

所以隱馬爾可夫模型 | 賽爾筆記函式可以拆分寫成

隱馬爾可夫模型 | 賽爾筆記

式中求和都是對所有訓練資料的序列總長度隱馬爾可夫模型 | 賽爾筆記進行的。

(3) EM演算法的M步:極大化隱馬爾可夫模型 | 賽爾筆記函式隱馬爾可夫模型 | 賽爾筆記,求模型引數隱馬爾可夫模型 | 賽爾筆記

由於要極大化的引數隱馬爾可夫模型 | 賽爾筆記函式式子中單獨的出現在三個項中,所以只需要對各項分別極大化。第一項可以寫成,

隱馬爾可夫模型 | 賽爾筆記

注意到隱馬爾可夫模型 | 賽爾筆記滿足隱馬爾可夫模型 | 賽爾筆記,利用拉格朗日乘子法,寫出拉格朗日函式

隱馬爾可夫模型 | 賽爾筆記

對其求導數並令結果為0,

隱馬爾可夫模型 | 賽爾筆記

得到

隱馬爾可夫模型 | 賽爾筆記

隱馬爾可夫模型 | 賽爾筆記求和得到隱馬爾可夫模型 | 賽爾筆記 

隱馬爾可夫模型 | 賽爾筆記

再代入上式子得到,

隱馬爾可夫模型 | 賽爾筆記

第二項可以寫成

隱馬爾可夫模型 | 賽爾筆記

類似於第一項,利用具有約束條件隱馬爾可夫模型 | 賽爾筆記的拉格朗日乘子法惡意求出

隱馬爾可夫模型 | 賽爾筆記

第三項可以寫成,

隱馬爾可夫模型 | 賽爾筆記

同樣利用拉格朗日乘子法,約束條件是隱馬爾可夫模型 | 賽爾筆記,注意只有在隱馬爾可夫模型 | 賽爾筆記隱馬爾可夫模型 | 賽爾筆記隱馬爾可夫模型 | 賽爾筆記的偏導數才不為0,以隱馬爾可夫模型 | 賽爾筆記表示,得到,

隱馬爾可夫模型 | 賽爾筆記

-----

為了簡便,我們使用一下式子簡化, 給定模型隱馬爾可夫模型 | 賽爾筆記和觀測隱馬爾可夫模型 | 賽爾筆記,在時刻隱馬爾可夫模型 | 賽爾筆記處於狀態隱馬爾可夫模型 | 賽爾筆記的概率記隱馬爾可夫模型 | 賽爾筆記

有如下公式:

隱馬爾可夫模型 | 賽爾筆記

給定模型隱馬爾可夫模型 | 賽爾筆記和觀測隱馬爾可夫模型 | 賽爾筆記,在時刻隱馬爾可夫模型 | 賽爾筆記處於狀態隱馬爾可夫模型 | 賽爾筆記的概率記 :

隱馬爾可夫模型 | 賽爾筆記

有如下推倒:

隱馬爾可夫模型 | 賽爾筆記

我們結合上文以及EM演算法可以推導如下公式

隱馬爾可夫模型 | 賽爾筆記

Baum-Welch演算法過程:

輸入:觀測資料隱馬爾可夫模型 | 賽爾筆記

輸出:馬爾可夫模型引數隱馬爾可夫模型 | 賽爾筆記

1. 初始化。對隱馬爾可夫模型 | 賽爾筆記,選取隱馬爾可夫模型 | 賽爾筆記得到模型隱馬爾可夫模型 | 賽爾筆記

2. 遞推。對隱馬爾可夫模型 | 賽爾筆記

隱馬爾可夫模型 | 賽爾筆記

3. 終止。得到模型引數隱馬爾可夫模型 | 賽爾筆記

相關文章