- 隱馬爾科夫模型(Hidden Markov Model, HMM)是可用於標註問題的統計學模型
- 描述由隱藏的馬爾科夫鏈隨機生成觀測序列的過程,屬於生成模型。
隱馬爾可夫模型基本概念
定義
- 隱馬爾科夫模型是關於時序的概率模型,描述由一個隱藏的馬爾科夫鏈隨機生成不可觀測的狀態隨機序列,再由各個狀態生成一個觀測而產生觀測隨機序列的過程。
- 隱藏的馬爾科夫鏈隨機生成的狀態的序列,稱爲狀態序列 (state sequence)
- 每個狀態生成一個觀測,而由此產生的觀測的隨機序列,稱爲觀測序列 (observation sequence)
- 序列的每個位置又可以看作是一個時刻
- 隱馬爾科夫模型由 初始概率分佈、狀態轉移概率分佈 以及 觀測概率分佈 確定。
- 形式定義如下:
- 設 Q 是所有可能的狀態的集合,V 是所有可能的觀測的集合
Q={q1,q2,⋯,qN},V={v1,v2,⋯,vM}
其中, N是可能的狀態數, M是可能的觀測數 - I 是長度爲 T 的狀態序列, O 是對應的觀測序列
I=(i1,i2,⋯,iT),O=(o1,o2,⋯,oT) - A 是狀態轉移概率矩陣:
A=[aij]N×N
其中,aij=P(it+1=qj|it=qi),i=1,2,⋯,N;j=1,2,⋯,N 是在時刻 t 處於狀態qi 的條件下在時刻 t+1 轉移到狀態qj 的概率 - B 是觀測概率矩陣:
B=[bj(k)]N×M
其中,bj(k)=P(ot=vk|it=qj),k=1,2,⋯,M;j=1,2,⋯,N 是在時刻 t 處於狀態qj 條件下生成觀測vk 的概率 π 是初始狀態概率向量:其中,π=(πi) πi=P(i1=qi),i=1,2⋯,N 是時刻 t=1 處於狀態qi 的概率
- 設 Q 是所有可能的狀態的集合,V 是所有可能的觀測的集合
- 隱馬爾科夫模型由初始狀態概率向量
π 、狀態轉移概率矩陣A 和觀測概率矩陣B 決定,這三者成爲隱馬爾科夫模型的三要素。π 和A 決定狀態序列,B 決定觀測序列。隱馬爾科夫模型λ 可以用三元符號表示:λ=(A,B,π)
- 狀態轉移概率矩陣
A 與 初始狀態概率向量π 確定了隱藏的馬爾科夫鏈,生成不可觀測的狀態序列。 - 觀測概率矩陣
B 確定瞭如何從狀態生成觀測,與狀態序列綜合確定瞭如何產生觀測序列
- 狀態轉移概率矩陣
- 從定義可知,隱馬爾科夫模型有兩個基本假設:
- 齊次馬爾可夫性假設,即 假設隱藏的馬爾科夫鏈在任意時刻 t 的狀態只依賴於其前一時刻的狀態,與其他時刻的狀態及觀測無關,也與時刻 t 無關:
P(it|ii−1,oi−1,⋯,i1,o1),t=1,2,⋯,T - 觀測獨立性假設,即 假設任意時刻的觀測只依賴於該時刻的馬爾科夫鏈的狀態,與其他狀態及觀測無關:
P(ot|ir,or,ir−1,or−1,⋯,it+1,ot+1,it,it−1,ot−1,⋯,i1,o1)=P(ot|it)
- 齊次馬爾可夫性假設,即 假設隱藏的馬爾科夫鏈在任意時刻 t 的狀態只依賴於其前一時刻的狀態,與其他時刻的狀態及觀測無關,也與時刻 t 無關:
觀測序列的生成過程
- 根據隱馬爾可夫模型定義,可以將一個長度爲 T 的觀測序列
O=(o1,o2,⋯,or) 的生成過程描述如下:
- 輸入: 隱馬爾可夫模型
λ=(A,B,π) , 觀測序列長度T - 輸出:觀測序列
O=(o1,o2,⋯,or) - (1) 按照初始狀態分佈
π 產生狀態i1 - (2) 令
t=1 - (3) 按照狀態
it 的觀測概率分佈bit(k) 生成ot - (4) 按照狀態
it 的狀態轉移概率分佈{aitit+1} 產生狀態it+1,it+1=1,2,⋯,N - (5) 令
t=t+1 , 如果t<T ,轉步(3),否則終止
- 輸入: 隱馬爾可夫模型
隱馬爾可夫模型的3個基本問題
- 概率計算問題:給定模型
λ=(A,B,π) 和觀測序列O=(o1,o2,⋯,oT) ,計算在模型λ 下觀測序列 O 出現的概率P(O|λ) - 學習問題:已知觀測序列
O=(o1,o2,⋯,oT) , 估計模型λ=(A,B,π) 參數,使得在該模型下觀測序列概率P(O|λ) 最大,即用極大似然估計的方法估計參數 - 預測問題:也成解碼問題,已知模型
λ=(A,B,π) 和觀測序列O=(o1,o2,⋯,oT) ,求對給定觀測序列條件概率P(I|O) 最大的狀態序列I=(i1,i2,⋯,iT) 。即給定觀測序列,求最有可能的對應的狀態序列
概率計算方法
直接計算法
- 首先,要計算的是:給定模型
λ=(A,B,π) 和觀測序列O=(o1,o2,⋯,oT) ,計算觀測序列 O 出現的概率P(O|λ) - 最直接的方式是按概率公式直接計算:通過列舉所有可能的長度爲 T 的狀態序列
I=(i1,i2,⋯,iT) ,求各個狀態序列 I 與觀測序列O=(o1,o2,⋯,oT) 的聯合概率分佈P(O,I|λ) ,然後對所有可能的狀態序列求和,得到P(O|λ) - 狀態序列
I=(i1,i2,⋯,iT) 的概率是P(I|λ)=πi1ai1i2ai2i3⋯aT1T - 對固定的狀態序列
I=(i1,i2,⋯,iT) ,觀測序列O=(o1,o2,⋯,oT) 的概率是P(O|I,λ) ,P(O|I,λ)=bi1(o1)bi2(o2)⋯biT(oT) - O 和 T 同時出現的聯合概率爲
P(O,I|λ)=P(O|I,λ)P(I|λ)=πi1bi1(o1)ai1i2bi2(o2)⋯aiT−1iTbiT(oT) - 然後對所有可能的狀態序列 I 求和,得到觀測序列 O 的概率
P(O|λ) :P(O|λ)=∑IP(O|I,λ)P(I|λ) - 但是這種方法計算量太大,是
O(TNT) 階的,所以我們需要用前向或後向算法
前向計算法
- 定義前向概率:給定馬爾可夫模型
λ ,定義到時刻 t 部分觀測序列爲o1,o2,⋯,ot 且狀態爲qi 的概率爲前向概率,記作αt(i)=P(o1,o2,⋯,ot,it=qi|λ)
可以遞推地求得前向概率αt(i) 及觀測序列概率P(O|λ) - 算法:
- 輸入:隱馬爾可夫模型
λ , 觀測序列O - 輸出:觀測序列概率
P(O|λ) - (1) 初值:
α1(i)=πibi(o1),i=1,2,⋯,N - (2) 遞推:對
t=1,2,⋯,T−1 αt+1(i)=[∑j=1Nαt(j)aji]bi(ot+1),i=1,2,⋯,N - (3) 終止
P(O|λ)=∑i=1NαT(i)
- 輸入:隱馬爾可夫模型
後向計算法
- 定義後向概率:給定隱馬爾可夫模型
λ ,定義到時刻 t 狀態爲qi 的條件下,從 t+1 到 T 的部分觀測序列爲ot+1,ot+2,⋯,oT 的概率爲後向概率,記作βt(i)=P(ot+1,ot+2,⋯,oT|it=qi,λ)
可以遞推地求得後向概率βt(i) 及觀測序列概率P(O|λ) - 算法:
- 輸入:隱馬爾可夫模型
λ , 觀測序列O - 輸出:觀測序列概率
P(O|λ) - (1)
βT(i)=1,i=1,2,⋯,N - (2) 對
t=T−1,T−2,⋯,1 βt(i)=∑j=1Naijbj(ot+1)βt+1(j),i=1,2,⋯,N - (3)
P(O|λ)=∑i=1Nπibi(o1)β1(i)
- 輸入:隱馬爾可夫模型