1. 程式人生 > >HMM隱馬爾可夫模型來龍去脈(二)

HMM隱馬爾可夫模型來龍去脈(二)

目錄

  前言

  預備知識 

  一、估計問題

    1、問題推導

             2、前向演算法/後向演算法

  二、序列問題

             1、問題推導

             2、維特比演算法

  三、引數估計問題

             1、問題推導

             2、期望最大化演算法(前向後向演算法)

  總結


前言

HMM隱馬爾可夫模型,這個名字看起來熟悉,其實很是陌生。它給人一種很神祕高深的感覺,確實,很強大的一個模型,在概率論統計學應該是應用廣泛而且很重要的;雖說很高深強大的一個模型,其原理確實我們最基礎的理論知識不斷推導計算來的。

上一篇《HMM隱馬爾可夫模型來龍去脈(一)》,從HMM基礎理論開始,我們可以學習得知,其原理來源於概率論基本重要知識,包括了條件概率、貝葉斯公式、概率分佈函式...

而這一篇將繼續探索隱馬爾可夫模型,深入理解模型背後解決的各種問題,力求基本弄懂這個似乎熟悉而又陌生深奧的模型。接下來探索HMM三個經典的基本問題的解決方案,逐步通過問題推導,公式解析,演算法實現,有章可循地真正來理解來龍去脈!


預備知識 

 建議先翻看前一篇《HMM隱馬爾可夫模型來龍去脈(一)》逐步詳細介紹的內容。

一般的,將HMM簡單表示為一個三元組  , π是初始狀態的概率分佈,A是狀態轉移概率,B是符號發射概率。

由此觀察序列 可以通過以下步驟產生:

  1. 根據初識狀態的概率分佈  選擇一個初識狀態 .
  2. 設t=1.
  3. 根據狀態 的符號發射概率分佈 輸出 .
  4. 根據狀態轉移概率分佈 ,將此時 t 的狀態轉移到新的狀態  .
  5. t=t+1,如果 t<T ,重複執行步驟3和4,否則結束演算法。

一、估計問題

1、問題推導

估計問題:給定一個觀察序列

 和模型 ,如何快速計算序列O的概率。即  ?

我們很直觀知道,這其實就是一個條件概率的計算問題。在給定的模型條件下,可以推導以下:

首先根據預備知識可以計算任意狀態序列Q下,觀察序列O的概率:

而且   ,

另外根據條件概率 .

綜上公式,求得在模型 下,

   .

然而,這個直觀簡單的推導公式,計算時間複雜度達到指數級爆炸!  ! ! ! ,所以呢,需要尋找更高效的計算方法來解決指數級時間問題。


由此,引出HMM中的動態規劃方法,一般用格架的組織形式描述。格架演算法示意圖如下:

思想是:對於一個個狀態下的HMM,某一時刻結束時,每個格子能夠記錄HMM所有輸出符號的概率,較長子路徑概率可以由較短子路徑概率計算出來。

2、前向演算法/後向演算法

第一步,定義一個前向變數 ,表示在時間 t ,HMM在狀態   輸出一個序列的概率。

第二步,根據動態規劃思想,在時間 t+1 的概率計算為:   , 其中表示從狀態 i 轉移到狀態 j 並輸出觀察符號O的概率。

第三步,根據前向變數,可以計算 ,就是在所有狀態下觀察到序列O的概率:

前向變數歸納關係圖:

前向演算法總結:

1、初始化:

2、歸納計算:

3、求和:

複雜度分析:步驟1計算每個前向變數需要考慮N個狀態轉移,步驟2計算N個前向變數,所以時間複雜度O(N*N),步驟3在時間1~T過程中,計算量為O(T),所以總時間複雜度為 . 因此,使用該演算法解決在多項式時間內計算問題。

後向演算法方法類似,使用動態規劃方法計算,後向變數定義為  ,歸納關係圖如下:

後向演算法總結:

1、初始化:

2、歸納計算:

3、求和: . 同理,時間複雜度也是 。  

二、序列問題

1、問題推導

序列問題:給定一個觀察序列  和模型 ,如何快速選擇最優狀態序列Q,使之最好地解釋觀察序列O?

對該問題的正確理解就是,給定觀察序列和模型後,使條件概率 最大的狀態序列,即 .

因此,維位元演算法定義了一個維位元變數 . 在時間 t 時,HMM沿著某一路徑到達狀態  ,使觀察序列O概率最大化。

.

2、維特比演算法

有如下遞迴關係, ,根據這個遞迴關係,所以可以運用動態規劃搜尋技術。

另外,為了記錄時間 t 時,HMM通過的一條概率最大的路徑達到狀態  ,演算法設定了另外一個變數 來記錄前一個時間的狀態。

維位元演算法如下:

三、引數估計問題

1、問題推導

引數估計問題:給定一個觀察序列和模型,使得 最大化。

我們知道,HMM中的狀態序列是不可見的,所以這裡採用期望最大化法(EM),它可以用於含有隱變數的統計模型的引數最大似然估計。

基本思想:從 得到從某一個狀態轉移到另一個狀態的期望次數,由此得到模型 ,然後,重新估計模型的引數,執行這個迭代過程,直到引數收斂於最大似然估計值。

2、期望最大化演算法(前向後向演算法)

這種EM方法的具體實現使用到了前向後向演算法(forward-backward algorithm)。

這裡需要用到幾個變量表示概率:

公式(6-24):在時間 t 位於狀態  ,時間 t+1位於狀態 的概率 .

公式(6-25):另外,在時間 t 位於狀態 的概率

 的引數估計公式:

公式(6-26):

公式(6-27):

公式(6-28.):

由上述公式,得出前向後向演算法:

總結

至此,我們對隱馬爾可夫模型(HMM)有了比較深入的理解,從原理上全面認識HMM實現思想,這一篇非常抽象的展示許多公式,雖然對這些公式不能夠完全掌握,但是最重要的是,能夠理解HMM三個基本問題解決方案的思想方法,這些經典奇妙的演算法也是人們在不斷探索中發現的並完善。所以,對於初學者來說,思想方法最重要,原理需要理明白,具體應用實現是利用已經封裝好的工具。

這一篇將探索HMM三個經典的基本問題的解決方案,逐步通過問題推導,公式解析,演算法實現,對於HMM理解不再天馬行空般,來龍去脈基本理清!希望能幫助到像我一樣初學者的夥伴,歡迎大佬交流指正!

兩篇內容深入理解HMM:

  • HMM隱馬爾可夫模型來龍去脈(一)
  • HMM隱馬爾可夫模型來龍去脈(二)

我的CSDN部落格:https://blog.csdn.net/Charzous/article/details/108311177

我的部落格園:https://www.cnblogs.com/chenzhenhong/p/13592058.html

版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。

本文連結:https://blog.csdn.net/Charzous/article/details/10831