EM演算法學習 番外篇 HMM的引數估計

2021-09-11 13:52:10 字數 2343 閱讀 5940

一:hmm的定義

隱馬爾科夫模型實際上是乙個雙重的隨機過程,其中一重隨機過程不能直接被觀測到,通過狀態轉移概率矩陣描述,另一重隨機過程輸出可以觀測的觀測符號,這個是由輸出的概率來進行定義的.隱馬爾科夫的模型的引數」入」可以表示為乙個五元組:

1;s是一組狀態的集合,s=,而隨機序列x在t時刻所處的狀態為q(t),並且q(t)屬於s.

2:v是一組輸出符號組成的集合,v=,而觀測序列o(t)屬於,並且t在[1,t]之間.

3:b=bj(k)是輸出符號的概率分布

bj(k)表示在狀態j時輸出符號v(k)的概率,即bj(k)=p(vk | j),k屬於[1,m],j屬於[1,n]

4:π=π(i)是初始概率分布,其中π = p(q1 = i)表示在時刻1時選擇狀態i的概率.

二:hmm研究的三個問題

1:估算問題:

在給定hmm的引數(s v a b π)和觀測序列o = (o1,o2,…..ot)的情況下,如何有效的計算出觀測序列的概率,即p(o | 入)?

2:解碼問題

在給定hmm的引數(s v a b π)和觀測序列o = (o1,o2,…..ot)的情況下,如何尋找乙個狀態轉換序列q = (q1,q2,…..qt),使得該狀態轉換序列最有可能產生上述觀測序列?

3:學習問題

在模型引數未知或者不準確的情況下,如何根據觀測序列o = (o1,o2,…..ot)得到模型引數或者是調整模型引數,即如何確定一組模型引數』入*』使得p(o | 入*)達到最大?

解決思路:

第乙個問題可以用向前或者是向後演算法解決

第二個問題可以用viterbi演算法解決

上述兩個問題不再贅述

第三個問題:使用baum-welch(em演算法)來去解決hmm的第三個問題

三:baum-welch演算法的原理和步驟

根據em演算法的基本思路:隨機初始化一組引數0(o),然後根據後驗概率模型p(y | x,0(0) )來更新隱含變數y的期望e(y),然後用e(y)代替y求出新的模型引數0(1),就這樣迭代直到0趨於穩定就可以.

對於hmm的第三個問題(學習問題),隱含變數自然就是狀態的變數,要求狀態變數的期望值實際上就是求在t時刻隨機變數x所處狀態qt = i的概率,為了求這個概率,我們引入了向前變數和向後變數.

1:向前變數:

αt(i) = p(01,02,03,……0t,qt = i | 入),即給定模型引數」入」,在給定時間t的前提下,處在狀態i並且觀測序列為o1,o2,......ot的概率,那麼顯然有:

2:向後向量

βt(i) = p(o(t+1),o(t+2),…….o(t) | qt = i, 入).即給定模型引數入,在時刻t,處在狀態i並且觀測序列為o(t+1),o(t+2),…….o(t) 的概率,那麼顯然有:

3:e步

首先定義變數:

即給定引數模型」入」,和觀測序列o,在時刻t處在狀態i且時刻為t+1處在狀態為j的概率.進一步的話,可以寫成:

其次,定義變數:

表示的是在給定模型引數和觀測序列的前提下,t時刻處在狀態i的概率.

那麼將t帶入上式,就有表示為狀態i轉移出去的次數的期望值,後部分表示為從狀態i到狀態j的次數的期望值.

4:m步

π(i)是表示在初始時刻出現狀態i的頻率的期望值,即有:

則同理可得:

a(i,j)表示的是從狀態i到狀態j的次數的期望值除以從狀態i轉移出去的次數的期望值,既有:

bj(k)是在狀態為j的情況下觀察到輸出值為k的次數的期望值除以其他所有狀態轉移到狀態j的次數的期望值,即有:

並且有:

這樣就引入新的引數λ = (a,b,π)再來計算向前變數at(i),向後變數bt(i),ξ(i,j),然後這樣如此的迴圈迭代,直到前後兩次引數的變化量小於某個值為止.

5:演算法的實現:

在這個部分,引用上邊的baum-welch演算法,來做乙個關於hmm的引數估計的例子.

現在假設乙個hmm的模型的引數結構是(s v a b π),其中s=,v=,π = (0,1,0),a,b如圖:

我們首先由這個hmm模型生成20個觀測值作為o:

o = (1,2,1,2,1,2,1,2,1,1,1,1,12,1,2,1,2,1,2)

然後根據上邊的公式得到,可以進行更新,然後用這個20個的觀測值來去訓練模型然後進行引數估計,估計結果如下:

通過比較真正的引數和估計的引數,效果還是可以的,但是這還不夠,為了進一步的提高估計的精確率,我們增加觀測值,這一次我們用1000個觀測值,反正都是隨機生成的,訓練下引數,結果如下:

效果還不錯的,所以根據結果可以看見,增加樣本訓練量真的可以提高引數估計的精度,並且增加樣本數還可以減少迭代的次數,這個演算法還是很有效的.

好的,在完成這個以後,這個em演算法的系列就徹底結束了,也希望小夥伴們可以多多指教,感激不盡.

HMM演算法學習筆記

本文將講解hmm的各種演算法運用 背景 有 個色子abc,編號是1到m 此例中取3 每個色子可擲1到6,但分布律各不相等,現在我擲n次,每次隨機取乙個色子隨機擲得乙個點數並記為x i 但是我不知道每次擲的色子是哪個色子。概念引入 隱藏狀態數 m,現在是3種色子,所以隱藏狀態數是3種 輸出狀態數 s,...

EM演算法學習 三

在前兩篇文章中,我們已經大致的講述了關於em演算法的一些基本理論和一些基本的性質,以及針對em演算法的缺點進行的優化改進的新型em演算法,研究之後大致就能夠進行初步的了解.現在在這最後一篇文章,我想對em演算法的應用進行一些描述 em演算法在多元正態分佈缺失的資料下一般都是有較為廣泛的應用,所以在這...

EM演算法學習筆記詳解

基於李航的 統計學習方法 對em演算法學習的介紹性筆記。一.預備知識 在正式介紹em演算法之前,先介紹推導em演算法用到的數學基礎知識,包括凹凸函式,jensen不等式。上凸函式 函式f x 滿足對定義域上任意兩個數a,b都有f a b 2 f a f b 2 下凸函式 函式f x 滿足對定義域上任...