隱馬爾科夫模型(Hidden Markov Model, HMM)
1.生成模型,對p(x,y) 進行建模
2.符號說明
SYMBOLS |
meanings |
Q{q1,q2,⋯,qn} |
可能的狀態集合 |
V{v1,v2,⋯,vn} |
可能的觀測集合 |
I{i1,i2,⋯,in} |
真實的狀態集合 |
O{o1,o2,⋯,on} |
真實的觀測集合 |
A=[aij]N∗N |
狀態轉移矩陣 |
B=[bj(k)]N∗M |
觀測概率矩陣 |
πi=p(i1=qi) |
初始狀態概率向量 |
其中aij=p(it+1=qj|it=qi),bj(k)=p(ot=vk|it=qj) .
3.模型假設:
①齊次馬爾科夫假設:任意時刻,當前狀態只與上一個狀態有關。
∀t,p(it|it−1,ot−1,⋯,i1,o1)=p(it|it−1)
②觀測獨立性假設:任意時刻,觀測僅依賴於當前狀態。
∀t,p(ot|it,ot,it−1,ot−1,⋯,i1,o1)=p(ot|it)
4.問題
**①估計問題(Evaluation)**
給定模型$\lambda = (A,B,\pi)$和觀測序列$O$,計算$O$出現的概率$p(O|\lambda)$.
**解法:**
- 直接計算(注意這裏λ 是一個固定參數,而不是一個隨機變量,正常應該寫成分號?)
p(O|λ)=∑Ip(O,I|λ)=∑Ip(O|I,λ)p(I|λ)
但是由於$I$的組合數目太多,這個計算量非常大,其複雜度爲$O(N^T)$。
p(O|I,λ)=bi1(o1)bi2(o2)⋯bit(ot)
p(I|λ)=πi1ai1,i2ai2,i3⋯ait−1,it
p(O,I|λ)=∑i1,i2,⋯,itπi1bi1(o1)ai1,i2bi2(o2)ai2,i3⋯bit−1(ot−1)ait−1,itbit(ot)
前向算法
定義αt(i)=p(o1,o2,⋯,ot,it=qi|λ) ,即在t時刻觀測序列爲o1,o2,⋯,ot ,狀態爲qi 的概率,稱其爲前向概率。
則有:
αt+1(i)=∑j=1Nαt(j)ajibi(ot+1)
α1(i)=πibi(o1)
最終:
p(O|λ)=∑i=1NαT(i)
最終算法轉變爲動態規劃,算法複雜度爲O(T∗N2) .
後向算法
定義βt(i)=p(ot+1,ot+2,⋯,oT,it=qi|λ) ,即在t時刻,其後的觀測序列爲ot+1,ot+2,⋯,oT ,狀態爲qi 的概率,稱其爲後向概率。
則有:
βt(i)=∑j=1Naijbj(ot+1)βt+1(j)
βT(i)=1
最終:
p(O|λ)=∑i=1Nπibi(o1)β1(i)
最終算法轉變爲動態規劃,算法複雜度爲O(T∗N2) .
**② 學習問題(Learning)**
學習模型參數,分爲兩種情況:
{A.B.知道觀測序列和對應的狀態序列僅知道觀測序列
解法:
Case A.
極大似然估計
aij^=Aij∑jAij
bj(k)^=Bjk∑kBjk
Aij 是t時刻處於狀態i ,在t+1時刻轉移到狀態j 的頻數。
Bjk 爲狀態j觀測到k的頻數。
Case B.
EM算法估計,狀態序列爲隱變量。
③預測算法(解碼問題,Decoding)
給定模型$\lambda$和觀測預測$O$,求狀態序列。
**解法:**
近似算法
在t時刻處於狀態i的概率是:
γt(i)=p(it=qi|O,λ)=p(it=qi,O|λ)p(O|λ)=αt(i)βt(i)∑jαt(j)βt(j)
i∗t=argmax1≤i≤N[γt(i)]
最終得到的狀態序列爲I∗=(i∗1,i∗2,⋯,i∗T) .
缺點:不能保證預測的狀態序列整體是最有可能的狀態序列,因爲預測的狀態序列可能有實際不發生的部分。
維特比算法(動態規劃算法的一種)
即記錄到當前爲止,觀測序列最有可能的狀態序列,然後回溯。稱爲最大概率路徑。
記錄的表結構爲T∗N 。T爲觀測序列長度,N爲狀態可能數目。