HMM學習一:前向和後向算法

一, 馬爾科夫相關概念

馬爾可夫過程 (Markov Process): 它因俄羅斯數學家安德烈·馬爾可夫而得名,代表數學中具有馬爾可夫性質的離散隨機過程。該過程中,每個狀態的轉移只依賴於之前的 n 個狀態,這個過程被稱爲1個 n 階的模型,其中 n 是影響轉移狀態的數目。最簡單的馬爾科夫過程就是一階過程,每一個狀態的轉移只依賴於其之前的那一個狀態。注意這和確定性系統不一樣,因爲這種轉移是有概率的,而不是確定性的.

馬爾科夫假設: 假設這個模型的每個狀態都只依賴於前一個的狀態,這個假設可以極大簡化這個問題。顯然,這個假設也是一個非常糟糕的假設,導致很多重要的信息都丟失了。

馬爾可夫鏈: 隨機變量 X1, … , Xn 的一個數列。這些變量的範圍,即他們所有可能取值的集合,被稱爲“狀態空間”,而 Xn 的值則是在時間 n 的狀態。如果 Xn+1 對於過去狀態的條件概率分佈僅是 Xn 的一個函數,則

在這裏插入圖片描述
這裏 x 爲過程中的某個狀態。上面這個恆等式可以被看作是馬爾可夫性質。也就是說下一個狀態只依賴與當前狀態,與前面的多個狀態無關.

*狀態轉移矩陣:*注意一個含有 N 個狀態的一階過程有 N2 個狀態轉移。每一個轉移的概率叫做狀態轉移概率 (state transition probability),就是從一個狀態轉移到另一個狀態的概率。這所有的 N2 個概率可以用一個狀態轉移矩陣來表示,其表示形式如下:

在這裏插入圖片描述

下面就是海藻例子的狀態轉移矩陣:

在這裏插入圖片描述

隱馬爾科夫過程: 然而,當馬爾科夫過程不夠強大的時候,我們又該怎麼辦呢?在某些情況下,馬爾科夫過程不足以描述我們希望發現的模式。

例如,一個隱居的人可能不能直觀的觀察到天氣的情況,但是民間傳說告訴我們海藻的狀態在某種概率上是和天氣的情況相關的。在這種情況下我們有兩個狀態集合,一個可以觀察到的狀態集合(海藻的狀態)和一個隱藏的狀態(天氣狀況)。我們希望能找到一個算法可以根據海藻的狀況和馬爾科夫假設來預測天氣的狀況。

在上面的這些情況下,可以觀察到的狀態序列和隱藏的狀態序列是概率相關的。於是我們可以將這種類型的過程建模爲有一個隱藏的馬爾科夫過程和一個與這個隱藏馬爾科夫過程概率相關的並且可以觀察到的狀態集合。

在這裏插入圖片描述

假設1:馬爾可夫假設(狀態構成一階馬爾可夫鏈):

在這裏插入圖片描述
假設2:不動性假設(狀態與具體時間無關):

在這裏插入圖片描述

假設3:輸出獨立性假設(輸出僅與當前狀態有關):

在這裏插入圖片描述

隱藏的狀態和可觀察到的狀態之間有一種概率上的關係,也就是說某種隱藏狀態 H 被認爲是某個可以觀察的狀態 O1 是有概率的,假設爲 P(O1 | H)。如果可以觀察的狀態有3種,那麼很顯然 P(O1 | H)+P(O2 | H)+ P(O3 | H) = 1。

這樣,我們也可以得到一個另一個矩陣,稱爲混淆矩陣 (confusion matrix)。這個矩陣的內容是某個隱藏的狀態被分別觀察成幾種不同的可以觀察的狀態的概率,在天氣的例子中,這個矩陣如下圖:

在這裏插入圖片描述
上邊的圖示都強調了 HMM 的狀態變遷。而下圖則明確的表示出模型的演化,其中綠色的圓圈表示隱藏狀態,紫色圓圈表示可觀察到狀態,箭頭表示狀態之間的依存概率,一個 HMM 可用一個5元組 { N, M, π,A,B } 表示,其中 N 表示隱藏狀態的數量,我們要麼知道確切的值,要麼猜測該值,M 表示可觀測狀態的數量,可以通過訓練集獲得, π={πi} 爲初始狀態概率,A={aij} 爲隱藏狀態的轉移矩陣 Pr(xt(i) | xt-1(j)),B={bik} 表示某個時刻因隱藏狀態而可觀察的狀態的概率,即混淆矩陣,Pr(ot(i) | xt(j))。在狀態轉移矩陣和混淆矩陣中的每個概率都是時間無關的,即當系統演化時,這些矩陣並不隨時間改變。對於一個 N 和 M 固定的 HMM 來說,用 λ={ π, A, B } 表示 HMM 參數。

在這裏插入圖片描述

HMM裏面的三個經典問題:

1, 概率問題: 在給定模型λ={ π, A, B } 和 觀測序列 O = (o1,o2,o3,o4,o5,…,oT).計算觀測序列O下出現的概率P(O|λ).

2,學習問題: 已知觀測序列 O = (o1,o2,o3,o4,o5,…,oT), 估計模型 λ={ π, A, B }等參數,使得最後輸出觀測序列O下出現的概率P(O|λ)最大,即是用極大似然估計法估計參數.

3,預測問題: 已知觀測序列 O = (o1,o2,o3,o4,o5,…,oT) 和 估計模型 λ={ π, A, B }等參數, 求給定觀測條件下條件概率P(O|λ)最大的狀態序列 I = (i1,i2,i3,…iT), 即是給定觀測序列,求最可能的狀態序列.

我們先解決第一個問題,概率計算算法,這裏有三個方法,分別是直接計算法,前向算法,後向算法.

如此一來,我們先對基本公式進行分析:

假設我們已經有一個特定的隱馬爾科夫模型 λ 和一個可觀察狀態序列集。我們也許想知道在所有可能的隱藏狀態序列下,給定的可觀察狀態序列的概率。當給定如下一個隱藏狀態序列:

在這裏插入圖片描述

那麼在 HMM 和這個隱藏狀態序列的條件下,可觀察狀態序列的概率爲:

在這裏插入圖片描述
註釋: 其中q1,q2,q3…代表狀態Q,例如爲sun,cloud,rain, 而O1,O2,O3,…代表觀測序列,如Dry,Dryish,Damp等

而隱藏狀態序列在 HMM 條件下的概率爲:

在這裏插入圖片描述
註釋:其中本公式右邊的第二個字母有錯,應該是a(q1q2)

因此,隱藏狀態序列和可觀察狀態序列的聯合概率爲:

在這裏插入圖片描述
註釋:本公式中P(Q,λ )有錯,應該是P(Q|λ ),對應的公式應該是P(AB) = P(A|B)P(B)

那麼所有可能的隱藏狀態序列上,可觀察狀態序列的概率爲:

在這裏插入圖片描述

列一個公式推導:

在這裏插入圖片描述

直接窮舉法

我們可以比較窮舉和遞歸算法的複雜度。假設有一個 HMM,其中有 n 個隱藏狀態,我們有一個長度爲 T 的觀察序列。

窮舉算法的需要計算所有可能的隱藏序列:
在這裏插入圖片描述

需要計算:
在這裏插入圖片描述

很顯然窮舉算法的時間開銷是和 T 指數相關的,即 NT,而如果採用遞歸算法,由於我們每一步都可以利用上一步的結果,所以是和 T 線性相關的,即複雜度是 N2T。

窮舉算法例子:

給定隱馬爾可夫模型,也就是在模型參數(π,A,B)已知的情況下,我們想找到觀察序列的概率。

最直接的方法是列舉出每種可能的轉移,如下圖所示:

在這裏插入圖片描述

圖中展示了三天的海藻狀態,第一列對應第一天海藻爲dry時候三種可能的天氣隱狀態,第二列對應第二天海藻爲damp時候三種可能的天氣隱狀態,第三列對應第三天海藻爲soggy時候三種可能的天氣隱狀態;每個隱狀態都有一個概率指向當前可能的海藻狀態,由混淆矩陣給出;從第一天到第二天和第二天到第三天的天氣隱狀態之間都有轉移概率,由轉移概率矩陣給出。

計算觀察序列概率的方法是找到所有的可能路徑,因爲每種海藻觀察情況都有三種可能天氣,所以共有33=27條路徑,即27種不同的天氣序列,然後將所有可能的觀察序列的概率加和起來:
在這裏插入圖片描述
不適用於大的模型和較長的序列。可以利用概率的時間不變性減少問題的複雜性。

前向算法

在這裏插入圖片描述
理論推導:

在這裏插入圖片描述
如圖所示:
在這裏插入圖片描述

舉例說明:

盒中取球的實例
已知HMM模型參數:

轉移概率矩陣A:

0.5 0.2 0.3
0.3 0.5 0.2
0.2 0.3 0.5
混淆矩陣B:

0.5 0.5
0.4 0.6
0.7 0.3
初始概率:

π=(0.2 , 0.4 , 0.4)

求解:三次取球顏色爲(紅、白、紅)的概率P(O|λ)

提示:盒子相當於三種隱狀態,兩種顏色的球相當於觀測情況,觀測序列由(紅、白、紅)給出

(1)計算初值
在這裏插入圖片描述

(2)遞推計算

在這裏插入圖片描述

(3)終止條件

在這裏插入圖片描述

後向算法:

後向概率:給定隱馬爾可夫模型,定義在時刻t狀態爲的條件下,從t+1時刻到T的部分觀測序列爲後向概率

在這裏插入圖片描述
①初始化後向概率,最終時刻的所有狀態qt規定
在這裏插入圖片描述

②對於t=T-1,T-2,…1遞推計算,時刻 t 狀態爲條件下時刻t+1之後的觀測序列爲的後向概率,其實就是第t+1 時刻的N個狀態到t 時刻狀態的轉移概率乘以t+1時刻每個隱狀態對應的觀察情況爲o(t+1)的概率,再乘以狀態j之後的觀測序列的後向概率,此項能夠遞推得到
在這裏插入圖片描述
③計算一種加和,但是與前向算法的加和還不一樣,它的含義是與步驟②一樣的,只不過初始概率 π 代替了轉移概率 a

在這裏插入圖片描述

統一寫法;

在這裏插入圖片描述

關於後向算法,直接以盒子(隱)和球(觀測)實例爲例推導

(1)初始化第三次取球爲紅球時候,即最終時刻所有狀態的概率爲1

在這裏插入圖片描述

式中下標爲觀測情況,括號爲隱狀態,比如第一個式子意思就是第一個隱狀態對應的觀測到紅球的概率

(2)逆推迭代倒數第二次觀察情況爲白球的情況

在這裏插入圖片描述

第一個式子表示的是第二次觀測,如果狀態爲1,那麼第二、三次觀測爲(白、紅)的聯合概率分佈,a是第二層隱狀態(第一個盒子)轉移到第三層隱狀態(三個盒子)的轉移概率,b表示第三層的三個隱狀態觀測到紅球的概率,β(等式右邊)表示已知模型參數和第三層隱狀態,求第三次觀測到紅球的概率,其實第(1)步計算是1

第二個式子表示的是第二次觀測,如果狀態爲2,那麼第二、三次觀測爲(白、紅)的聯合概率分佈,a是第二層隱狀態(第二個盒子)轉移到第三層隱狀態(三個盒子)的轉移概率,b表示第三層的三個隱狀態觀測到紅球的概率,β(等式右邊)表示已知模型參數和第三層隱狀態,求第三次觀測到紅球的概率,其實第(1)步計算是1

同理推導第一層的情況

在這裏插入圖片描述

(3)計算加和

在這裏插入圖片描述

可以發現前向算法和後向算法的結果相同.

參考文獻爲:
https://blog.csdn.net/zb1165048017/article/details/48577891

https://blog.csdn.net/continueoo/article/details/77893587#_61

https://blog.csdn.net/likelet/article/details/7056068

李航的<<統計學習方法>>

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