1. 程式人生 > >隱馬爾科夫模型(二)

隱馬爾科夫模型(二)

概率計算演算法

給定模型 λ = ( A , B , π )

λ=(A,B,π) ,觀測序列 O = ( o 1 , o
2 , o T ) O=(o_1,o_2,…o_T)
,計算在模型 λ
λ
下觀測序列O出現的概率
這被稱作概率計算問題

主要介紹計算觀測序列概率 P ( O λ ) P(O|λ) 的前向與後向演算法。
先介紹概念上可行但計算上不可行的直接計演算法

直接計演算法:
給定模型 λ = ( A , B , π ) λ=(A,B,π) ,和觀測序列 O = ( o 1 , o 2 , o T ) O=(o_1,o_2,…o_T) ,計算觀測序列O出現的概率 P ( O λ ) P(O|λ) 。最直接的方法是按概率公式直接計算。通過列舉所有可能的長度為T的狀態序列 I = ( i 1 , i 2 , i T ) I=(i_1,i_2,…i_T) ,求各個狀態序列 I I 與觀測序列 O = ( o 1 , o 2 , o T ) O=(o_1,o_2,…o_T) 的聯合概率分佈 P ( O , I λ ) P(O,I|λ) ,然後對所有的狀態序列求和,得到 P ( O λ ) P(O|λ)
(由聯合概率求邊緣概率的思想)

狀態序列 I = ( i 1 , i 2 , i T ) I=(i_1,i_2,…i_T) 的概率是: P ( I λ ) = π i 1 a i 1 i 2 a i 2 i 3 a i T 1 i T P(I|λ)=π_{i_1}a_{i_1i_2}a_{i_2i_3}……a_{i_{T-1}i_T} (1)

對於固定的狀態序列 I = ( i 1 , i 2 , i T ) I=(i_1,i_2,…i_T) ,觀測序列 O = ( o 1 , o 2 , o T ) O=(o_1,o_2,…o_T) 的概率是 P ( O I , λ ) P(O|I,λ)

P ( O I , λ ) = b i 1 ( o 1 ) b i 2 ( o 2 ) b i T ( o T ) P(O|I,λ)=b_{i_1}(o_1)b_{i_2}(o_2)…b_{i_T}(o_T)

O I P ( O , I λ ) = P ( O I , λ ) P ( I λ ) = π i 1 b i 1 ( o 1 ) a i 1 i 2 b i 2 ( o 2 ) a i T 1 i T b i T ( o T ) O和I同時出現的聯合概率為:P(O,I|λ)=P(O|I,λ)P(I|λ)=π_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)…a_{i_{T-1}i_T}b_{i_T}(o_T)