目錄
前言
前言
HMM隱馬爾可夫模型,這個名字看起來熟悉,其實很是陌生。它給人一種很神祕高深的感覺,確實,很強大的一個模型,在概率論統計學應該是應用廣泛而且很重要的;雖說很高深強大的一個模型,其原理確實我們最基礎的理論知識不斷推導計算來的。
上一篇《HMM隱馬爾可夫模型來龍去脈(一)》,從HMM基礎理論開始,我們可以學習得知,其原理來源於概率論基本重要知識,包括了條件概率、貝葉斯公式、概率分佈函式...
而這一篇將繼續探索隱馬爾可夫模型,深入理解模型背後解決的各種問題,力求基本弄懂這個似乎熟悉而又陌生深奧的模型。接下來探索HMM三個經典的基本問題的解決方案,逐步通過問題推導,公式解析,演算法實現,有章可循地真正來理解來龍去脈!
預備知識
建議先翻看前一篇《HMM隱馬爾可夫模型來龍去脈(一)》逐步詳細介紹的內容。
一般的,將HMM簡單表示為一個三元組 , π是初始狀態的概率分佈,A是狀態轉移概率,B是符號發射概率。
由此觀察序列可以通過以下步驟產生:
- 根據初識狀態的概率分佈 選擇一個初識狀態.
- 設t=1.
- 根據狀態的符號發射概率分佈輸出.
- 根據狀態轉移概率分佈,將此時 t 的狀態轉移到新的狀態 .
- 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:
我的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/108311177