HMM基礎理論-前向算法

本文主要討論HMM要解決的三個基本問題。

並對第一個問題求似然概率進行公式推導和說明。

首先,HMM由以下幾個組件構成:

1.  Q=q1q2...qN   狀態集合

2.  A=a11a12...an1...ann   狀態轉移矩陣,aij 表示從狀態i到狀態j的概率 p(qj|qi

3.  O=o1o2...oT   長度爲T序列的觀測值

4.  B=bi(ot)  觀測似然,也叫發射概率,觀測值ot 由狀態i產生的概率

5.  q0,qF   初始狀態,結束狀態

π π1,π2,...,πN  初始概率分佈    πi  表示HMM初始由狀態i開始的概率

前提:

1.Markov假設:

P(qi|q1...qi1) = P(qi|qi1)     =>  當前狀態只和前一個狀態有關。

2.輸出獨立假設:P(oi|q1...qi,...,qT,o1,...,oi,...,oT)=P(oi|qi)  即輸出只和一個狀態qi有關,不和其他狀態或者輸出相關。

有了以上基礎概念,我們看HMM有三個問題需要解決:

問題1,計算似然(likelihood):給定HMM的λ= (A,B) 和觀測序列O ,計算似然概率P(O|λ

問題2,解碼問題(decoding):給定HMM的λ = (A,B) 和觀測序列O,找到最佳狀態序列

問題3,訓練問題(Learning):給定觀測序列O和狀態集合,訓練HMM參數A和B

接下來,我們就要討論第一個問題

針對問題1,首先,在一定的狀態序列,觀測概率的聯合概率計算如下所示:


在HMM中,有N個隱藏狀態,觀測值爲T個觀測序列情況下:

N個可能的狀態序列,當N和T很大的情況下,所以通過計算每個隱藏狀態序列的似然概率,然後求和算出總的似然概率變得非常不現實了。

我們使用前向(forward)算法來高效的解決以上問題,其中用一個table用來存儲中間值,其時間複雜度爲O(N2T) 。

首先,使αt(j)記做:在給定λ前提下,觀測到前t個觀測值(O1-Ot)且狀態在j的概率

        

其計算公式如下:

1.初始化:


2.遞歸:


3.終止:(狀態qF 沒有發射概率


算法代碼如下所示:


可視化的圖例如下所示:


上圖中,forward[s,t]  代表αt(s

forward[qF,T] 表示αT(qF) ,即:

在給定λ前提下,觀測到T個觀測序列(O),且狀態在結束狀態qF的概率,即P(O|λ) 

以上就是求似然概率的公式推導。

下一章會討論HMM第二個問題,解碼(decoding)的公式推導.



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