hmm演算法想必大家已經聽說了好多次了,完全看公式一頭霧水。但是hmm的基本理論其實很簡單。因為hmm是馬爾科夫鏈中的一種,只是它的狀態不能直接被觀察到,但是可以通過觀察向量間接的反映出來,即每乙個觀察向量由乙個具有相應概率密度分布的狀態序列產生,又由於每乙個狀態也是隨機分布的,所以hmm是乙個雙重隨機過程。
hmm是語音識別,人體行為識別,文字識別等領域應用非常廣泛。
乙個hmm模型可以用5個元素來描述,包過2個狀態集合和3個概率矩陣。其分別為
隱含狀態s,可觀測狀態o,初始狀態概率矩陣π,隱含狀態概率轉移矩陣a,觀測狀態轉移概率矩陣 b。
hmm在實際應用中主要用來解決3類問題。
1. 評估問題。
即給定觀測序列 o=o1o2o3…ot和模型引數λ=(a,b,π),怎樣有效計算這一觀測序列出現的概率。(前向後向演算法)
2. 解碼問題。
即給定觀測序列 o=o1o2o3…ot和模型引數λ=(a,b,π),怎樣尋找滿足這種觀察序列意義上最優的隱含狀態序列s。(維特比演算法)
3. 學習問題。
即hmm的模型引數λ=(a,b,π)未知,如何求出這3個引數以使觀測序列o=o1o2o3…ot的概率盡可能的大。(鮑姆-韋爾奇演算法)
這篇文章是針對第乙個問題來說的,一般採用的是前向後向演算法來解決評估問題。這裡將的是前向演算法。
在此之前,先引入幾個符號:
at(i) : 表示到第t個觀察值ot時處於狀態i。
: 表示在狀態i下產生觀察值 的概率。
現在來看一下前向演算法的理論**。
因為我們要解決的是模型估計問題。即計算概率
。將其利用如下公式化簡:
因此首先要先計算
,其中q為一給定的狀態序列 。又有
。其中所以
。因此最後求得
由此可以看見其計算複雜度非常大,為
。為了解決這個問題,前向演算法就出現了。首先定義了乙個前向變數 。表示從1到t,輸出符號o序列,t時刻處於狀態i的累計輸出概率。
因為前向變數有如下性質:
初值:,且
,最後有遞推關係:
。為什麼這樣就可以簡化計算複雜度呢?其原因很簡單,因為每一次的at(i),我們都可以用at-1(i)來計算,就不用重複計算了。如下示意圖可以幫助我們形象的理解:
看了這麼多公式,是不是頭暈了?不急,下面看乙個例項就會完全明白的。
題目:hmm模型如下,試通過前向演算法計算產生觀察符號串行o=時每個時刻的 和總概率。
當然初始概率矩陣π=(1,0,0),即開始處於狀態1。按照上面的公式理論,我們的遞推依次解出at(i)。解法如下:
t=1時:
t=2時:
t=3時:
t=4時:
所以有最後的結果:
最後將其計算過程示意圖表示如下:
用於學習筆記
HMM模型之前向演算法
1 介紹 前向演算法是用於hmm模型的評估問題。評估問題 對於乙個觀察序列和通過不同系統得到的hmm模型,怎麼判斷哪乙個hmm模型是最有可能產生這個觀察序列。hmm模型三元組 a,b 其中 表示初始向量,a表示狀態轉移矩陣,b表示混合矩陣,例項可以參看 hmm模型之viterbi演算法 2 實現 要...
HMM學習最佳範例五 前向演算法3
五 前向演算法 forward algorithm 前向演算法定義 forward algorithm definition 我們使用前向演算法計算t長觀察序列的概率 其中y的每乙個是觀察集合之一。區域性 中間 概率 s 是遞迴計算的,首先通過計算t 1時刻所有狀態的區域性概率 也就是當前狀態相應的...
學習筆記 HMM統計模型
畢設快要選題目了,為此開始看一些研究生導師研究方向的相關文獻,他的 太高深,於是轉而從一些基礎類的科普性文章看起。在 計算聽覺場景介紹 中遇到了hmm統計模型這個概念,於是上網搜了部落格學習了一下。hmm 隱馬爾科夫模型 hidden markov model 是統計模型,它用來描述乙個含有隱含未知...