馬爾科夫系列——二、隱馬爾可夫模型 - HMM的三個問題 - 概率計算問題

       轉載自簡書——隱馬爾可夫模型 - HMM的三個問題 - 概率計算問題,把其中的有些公式排版做了簡單修改!其中的後向概率算法有點難度!

目錄

一、HMM案例回顧

二、HMM典型的3個問題

1、概率計算問題

2、學習問題

3、預測問題

三、概率計算問題解決方案

1、暴力直接計算法

2、前向-後向算法

2.1 前向算法:

2.2HMM案例-前向算法

2.3 後向算法

2.4求單個狀態的概率

2.5求兩個狀態的聯合概率:


一、HMM案例回顧

假設有三個盒子,編號爲1,2,3;每個盒子都裝有黑白兩種顏色的小球,球的比例。如下:

按照下列規則的方式進行有放回的抽取小球,得到球顏色的觀測序列:
1、按照π給出的初始概率選擇一個盒子,從盒子中隨機抽取出一個球,記錄顏色後放回盒子中;
2、按照某種條件概率選擇新的盒子,從盒子中隨機抽取出一個球,記錄顏色後放回盒子中,重複該操作;
3、最終得到觀測序列:“白黑白白黑”

例如: 每次抽盒子按一定的概率來抽,也可以理解成隨機抽。
第1次抽了1號盒子①,第2次抽了3號盒子③,第3次抽了2號盒子②.... ; 最終如下:
①→③→②→②→③ 狀態值
白→黑→白→白→黑 觀測值

1、狀態集合: S={盒子1,盒子2,盒子3}
2、觀測集合: O={白,黑}
3、狀態序列和觀測序列的長度 T=5 (我抽了5次)
4、初始概率分佈: π 表示初次抽時,抽到1盒子的概率是0.2,抽到2盒子的概率是0.5,抽到3盒子的概率是0.3。
5、狀態轉移概率矩陣 A:a11=0.5 表示當前我抽到1盒子,下次還抽到1盒子的概率是0.5;
6、觀測概率矩陣 - 混淆矩陣 - 爲了不和之前的混淆矩陣概念衝突,可以稱之爲發射矩陣,即從一個狀態發射到另一個狀態: B:如最初的圖,b11=第一個盒子抽到白球概率0.4,b12=第一個盒子抽到黑球概率0.6;
OK現在給出問題:在給定參數π、A、B的時候,得到觀測序列爲“白黑白白黑”的概率是多少?

解釋一下,這裏我們不知道的是一個隱含條件——不知道狀態值序列是什麼樣的:①→③→②→②→③ ——也就是不清楚每個球到底是從哪個盒子裏取出來的。

二、HMM典型的3個問題

在給出解決方案之前,引入HMM典型的3個問題:

1、概率計算問題

前向-後向算法 給定模型λ=(A,B,π)和觀測序列Q={q1,q2,...,qT},計算模型λ下觀測到序列Q出現的概率P(Q|λ);

回顧上面的案例,λ=(A,B,π)已知。觀測到序列 Q=白→黑→白→白→黑,但我們不知道 狀態序列 I=①→③→②→②→③;我們要求解P(Q|λ),即Q=白→黑→白→白→黑 這個觀測序列發生的概率。可以用前向-後向算法來實現。

2、學習問題

Baum-Welch算法(狀態未知) 已知觀測序列Q={q1,q2,...,qT},估計模型λ=(A,B,π)的參數——也就是參數λ是未知的,使得在該模型下觀測序列P(Q|λ)最大。

3、預測問題

Viterbi算法 給定模型λ=(A,B,π)和觀測序列Q={q1,q2,...,qT},求給定觀測序列條件概率P(I|Q,λ)最大的狀態序列I。

已知觀測到序列 Q=白→黑→白→白→黑,當我們得到λ=(A,B,π)後,我們用Viterbi算法 求出在哪一種狀態序列發生的可能性最大,即,求出狀態序列 I=①→③→②→②→③;即,抽取什麼樣的盒子順序,更可能得到白→黑→白→白→黑這種結果。

三、概率計算問題解決方案

在給定參數π、A、B的時候,得到觀測序列爲“白黑白白黑”的概率是多少?

1、暴力直接計算法

這裏的思路就是窮舉法,把所有能夠得到觀測序列結果的狀態序列列舉出來,然後計算每一種情況的可能性,最後把他們加起來,然後就得到了最終的結果。看看具體的公式:

具體的求解過程,假定狀態序列是: I=③→②→①→①→②; T=5:

首先求解P(I;λ)

然後求解P(Q,I;λ)

因爲:在給定狀態序列I後,Q中的每個觀測值都獨立。(貝葉斯網絡原理)貝葉斯網絡
所以: P(Q|I;λ)可以用聯乘的方式表示 (獨立可以使用聯合概率)
I = ③→②→①→①→②
Q=白→黑→白→白→黑
P(Q|I;λ) = b3白b2黑b1白b1白b2黑

P(Q,I;λ) = P(Q|I;λ) × P(I;λ)
= b3白b2黑b1白b1白b2黑 × π3a32a21a11a12

若:
I1 = ③→②→①→①→②
I2 = ①→②→③→①→②
...
IT = ②→②→①→③→②
都能得出:
Q = 白→黑→白→白→黑
因爲我所有的盒子都能取出黑球和白球,所以T的值=35;

∑P(Q,I;λ) 計算的是 I1 ~ IT 這些狀態序列情況下,求出的P(Q,I;λ)的和。

以上就是暴力窮舉所有可能狀態序列的算法的詳細過程。缺陷就是這個過程中計算量是非常龐大的!
 

2、前向-後向算法

前向後向算法是運用某種遞歸(遞推)的方式,幫助我們儘快得求解最終結果。

解析: 如果 t 這一時刻觀察到的狀態是 qt = 雨天;其中y={幹,溼,溼... 溼}共t個狀態。
先不考慮λ。
αt 是1時刻~t時刻 所有觀測值y1,y2,...yt ,qt 出現的聯合概率——前向概率
βt 是t+1時刻~T時刻 所有觀測值yt+1,yt+2,...yT出現的聯合概率——後向概率

前向概率-後向概率指的其實是在一個觀測序列中,時刻t對應的狀態爲si的概率值轉換過來的信息。

分析2~3步的推導: 因爲q1 ~ qt 這些條件對 qt+1 ~ qT的產生沒有影響 (理由:貝葉斯網絡),所以這些條件可以去掉。

2.1 前向算法:

定義:給定λ,定義到時刻t的狀態爲si且部分觀測序列爲q1,q2,...,qt的概率是前向概率。如下圖公式:

 注意公式中的i表示狀態,T表示序列長度;關於遞推結果的推導:

2.2HMM案例-前向算法

在給定參數π、A、B的時候,得到觀測序列爲“白黑白白黑”的概率是多少?

最後把所有的概率值加起來,就是最後的答案了!

2.3 後向算法

定義:給定λ,定義到時刻t狀態爲si的前提下,從t+1到T部分觀測序列爲qt+1,qt+2,...,qT的概率爲後向概率
記做:

分析上面的公式:
如果一共只有t個時間點,t+1的時刻不存在。那麼t+1以後發生的是必然事件。
所以 βt(i) = P(qt+1,qt+2,...,qT) = 1;
如果實在不理解也沒關係,我們姑且認爲認爲定義了一個初始值,即βT(i) = 1

然後得一步一步往前推導!從T-1時刻,倒推到1時刻。
首先,βt+1(j)是什麼?是t+1時刻,在狀態sj的前提下,下圖中圈起來這部分的聯合概率。

βt(j)是什麼?是t時刻,在狀態sj的前提下,下圖中圈起來這部分的聯合概率。

 

2.4求單個狀態的概率

求給定模型λ和觀測序列Q的情況下,在時刻t處於狀態si的概率,記做:

單個狀態概率的意義主要是用於判斷在每個時刻最可能存在的狀態,從而可以得到一個狀態序列作爲最終的預測結果。具體求解公式如下:

2.5求兩個狀態的聯合概率:

求給定模型λ和觀測序列Q的情況下,在時刻t處於狀態si並時刻t+1處於狀態sj概率,記做:

 

 

 

 



 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章