机器学习笔记(十四)——HMM估计问题和前向后向算法
一、隱馬爾科夫鏈的第一個基本問題
????估計問題:給定一個觀察序列O=O1O2…OT和模型u=(A,B,π),如何快速地計算出給定模型u情況下,觀察序列O的概率, 即P(O|u)?
二、求解觀察序列的概率
????其實,求解這個問題就是一個解碼問題。 對于任意的狀態序列Q=q1q2…qT,有
并且
P(Q|u)=πq1aq1q2aq2q3…aqT?1qT
由于
P(O,Q|u)=P(O|Q,u)P(Q|u)
所以
P(O|u)=∑QP(O,Q|u)∑QP(O|Q,u)P(Q|u)=∑Qπq1bq1(O1)∏t=1T?1aqtqt+1bqt+1(Ot+1)
上述推導過程很直接,但是實際的計算量是非常龐大的,它要窮盡所有可能的狀態序列,如果模型中有 N個狀態,時間長度為T, 那么有 NT個可能的狀態序列,這導致了并不能有效地執行這個算法。因此,人們提出了前向算法,利用動態規劃來解決指數爆炸的問題。
三、HMM中的前向算法
????為了實現前向算法,需要定義一個前向變量αt(i).
定義1 前向變量αt(i)是在時間t, HMM輸出序列O=O1O2…Ot并且位于狀態si的概率:
????前向算法的主要思想是,如果可以快速地計算前向變量αt(i),那么就可以根據αt(i)計算出P(O|u), 因為P(O|u)是在所有狀態下觀察到序列O=O1O2…Ot的概率:
????在前向算法中,采用動態規劃的方法計算前向變量 αt(i),其思想基于如下觀察:在時間t+1的前向變量可以根據時間t時的前向變量 αt(1),αt(2),…,αt(N)來歸納計算:
αt+1(j)=(∑i=1Nαt(i)aij)bj(Ot+1)
前向算法
1 初始化: α1(i)=πibi(O1),1≤i≤N
2 歸納計算: αt+1(j)=(∑Ni=1αt(i)aij)bj(Ot+1),1≤t≤T?1
3 求和終結: P(O|u)=∑Ni=1αT(i)
前向算法的時間復雜度為O(N2T)
四、HMM中的后向算法
????快速計算P(O|u)還有一種后向算法。
對應于前向變量,定義一個后向變量βt(i).
定義2 后向變量βt(i)是在給定模型u=(A,B,π)并且在時間t狀態為si的條件下,HMM的輸出觀察序列O=Ot+1Ot+2…OT的概率:
????類似于前向算法,也可以用動態規劃算法計算后向變量。
1. 從時間 t到時間t+1, HMM的狀態 si到狀態 sj輸出 Ot+1,概率為 aijbj(Ot+1)
2. 在時間 t+1的狀態為 sj的條件下,HMM輸出觀察序列 Ot+2…OT,概率為: βt+1(j)
則,歸納關系為:
βt(i)=∑j=1Naijbj(Ot+1)βt+1(j)
后向算法
1 初始化:βT(i)=1,1≤i≤N
2 歸納計算:βt(i)=∑Nj=1aijbj(Ot+1)βt+1(j),T?1≥t≥1;1≤i≤N
3 求和終結:P(O|u)=∑Ni=1πibi(O1)β1(i)
后向算法的時間復雜度為O(N2T)
總結
以上是生活随笔為你收集整理的机器学习笔记(十四)——HMM估计问题和前向后向算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最小表示法 最大表示法
- 下一篇: 前后端分离跨域问题解决方案