狀態集合
Q={q1,q2,…,qN}∣∣Q∣∣=N
觀測集合
V={v1,v2,…,vM}∣∣V∣∣=M
狀態序列
I={i1,i2,…,it,…,iT}it∈Q(t=1,2,…,T)
觀測序列
O={o1,o2,…,ot,…,oT}ot∈V(t=1,2,…,T)
狀態轉移矩陣
A=[aij]N×N
在
t 時刻處於狀態
qi 的條件下,在
t+1 時刻轉移到狀態
qj 的概率
aij=P(it+1=qj|it=qi)(i=1,2,…,N)(j=1,2,…,M)
觀測概率矩陣
B=[bj(k)]N×M
在
t 時刻處於狀態
qi 的條件下,生成觀測
vk 的概率
bj(k)=P(ot=vk|it=qj)(k=1,2,…,M)(j=1,2,…,N)
初始概率向量
π=(πi)
在時刻
t=1 處於狀態
qi 的概率
πi=P(i1=qi)(i=1,2,…,N)
隱馬爾科夫模型
λ=(A,B.π)
隱馬爾科夫模型基本假設:
1. 齊次馬爾科夫性假設:在任意時刻
t 的狀態只依賴於時刻
t−1 的狀態。
P(it|it−1,ot−1,…,i1,o1)=P(it|it−1)(t=1,2,…,T)
2. 觀測獨立性假設:任意時刻
t 的觀測只依賴於時刻
t 的狀態。
P(ot|iT,oT,iT−1,oT−1,…,it+1,ot+1,it,it−1,ot−1,…,i1,o1)=P(ot|it)(t=1,2,…,T)
觀測序列生成算法:
輸入:隱馬爾科夫模型
λ=(A,B.π) ,觀測序列長度
T ;
輸出:觀測序列
O={o1,o2,…,ot,…,oT} ;
1. 由初始概率向量
π 產生狀態
i1 ;
2.
t=1 ;
3. 由狀態
it 的觀測概率分佈
bj(k) 生成
ot ;
4. 由狀態
it 的狀態轉移概率分佈
aitit+1 生成狀態
it+1(it+1=1,2,…,N) ;
5.
t=t+1 ;如果
t<T ,轉至3.;否則,結束。
隱馬爾科夫模型的3個基本問題:
1. 概率計算:已知λ=(A,B,π) 和O={o1,o2,…,ot,…,oT} ,計算P(O|λ)
2. 學習:已知O={o1,o2,…,ot,…,oT} ,計算 λ∗=argmaxP(O|λ)
3. 預測(編碼):已知λ=(A,B.π) 和O={o1,o2,…,ot,…,oT} ,計算 I∗=argmaxP(I|O,λ)
前向概率
αt(i)=P(o1,o2,…,ot,it=qi|λ)
給定模型
λ ,時刻
t 部分觀測序列爲
o1,o2,…,ot 且狀態爲
qi 的概率。
前向概率遞推計算
αt(i)=P(o1,o2,…,ot,it=qi|λ)=P(it=qi,ot1)=∑j=1NP(it−1=qj,it=qi,ot−11,ot)=∑j=1NP(it=qi,ot|it−1=qj,ot−11)⋅P(it−1=qj,ot−11)=∑j=1NP(it=qi,ot|it−1=qj)⋅αt−1(j)=∑j=1NP(ot|it=qi,it−1=qj)⋅P(it=qi|it−1=qj)⋅αt−1(j)=∑j=1Nbi(ot)⋅aji⋅αt−1(j)
概率計算
P(O|λ)=P(oT1|λ)=∑i=1NP(oT1,iT=qi)=∑i=1NαT(i)
觀測序列概率計算的前向算法:
輸入:隱馬爾科夫模型
λ ,觀測序列
O ;
輸出:觀測序列概率
P(O|λ) ;
1. 初值
α1(i)=πibi(o1)(t=1,2,…,N)
2. 遞推 對
t=1,2,…,T−1 αt+1(i)=∑j=1Nbi(ot+1)⋅aji⋅αt(j)(t=1,2,…,N)
3. 終止
P(O|λ)=∑j=1NαT(i)
後向概率
βt(i)=P(ot+1,ot+2,…,oT|it=qiλ)
給定模型
λ ,時刻
t 狀態爲
qi 的條件下,從時刻
t+1 到時刻
T 的部分觀測序列爲
ot+1,ot+2,…,oT 的概率。
後向概率遞推計算
βt(i)=P(ot+1,ot+2,…,oT|it=qi,λ)=P(oTt+1|it=qi)=P(oTt+1,it=qi)P(it=qi)=∑Nj=1P(oTt+1,it=qi,it+1=qj)P(it=qi)=∑j=1NP(oTt+1|it=qi,it+1=qj)⋅P(it=qi,it+1=qj)P(it=qi)=∑j=1NP(oTt+1|it+1=qj)⋅P(it+1=qj|it=qi)⋅P(it=qi)P(it=qi)=∑j=1NP(oNt+2,ot+1|it+1=qj)⋅aij=∑j=1NP(oTt+2|it+1=qj)⋅P(ot+1|it+1=qj)⋅aij=∑j=1Nβt+1(j)⋅bj(ot+1)⋅aij
概率計算
P(O|λ)=P(oT1|λ)=∑i=1NP(oT1,i1=qi)=∑i=1NP(i1=qi)⋅P(o1|i1=qi)⋅P(oT2|i1=qi)=∑i=1Nπibi(o1)β1(i)
觀測序列概率計算的後向算法:
輸入:隱馬爾科夫模型
λ ,觀測序列
O ;
輸出:觀測序列概率
P(O|λ) ;
1. 初值
βT(i)=1(t=1,2,…,N)
2. 遞推 對
t=T−1,T−2,…,1 βt(i)=∑j=1Nβt+1(j)⋅bj(ot+1)⋅aij(t=1,2,…,N)
3. 終止
P(O|λ)=∑j=1Nπibi(o1)β1(i)
P(O|λ) 的前向概率、後向概率的表示
P(O|λ)=P(oT1)=∑i=1N∑j=1NP(ot1,oTt+1,it=qi,it+1=qj)=∑i=1N∑j=1NP(ot1,it=qi,it+1=qj)P(oTt+1|it+1=qj)=∑i=1N∑j=1NP(ot1,it=qi)P(it+1=qj|it=qi)P(oTt+1|it+1=qj)=∑i=1N∑j=1NP(ot1,it=qi)P(it+1=qj|it=qi)P(ot+1|it+1=qj)P(oTt+2|it+1=qj)=∑i=1N∑j=1Nαt(i)aijbj(ot+1)βt+1(j)t=1,2,⋯,T−1
給定模型
λ 和觀測
O ,在時刻
t 處於狀態
qi 的概率
γt(i)=P(it=qi|O,λ)=P(it=qi,O|λ)P(O|λ)=P(it=qi,O|λ)∑Nj=1(it=qi,O|λ)=P(ot1,it=qi)P(oTt+1|it=qi)∑Nj=1P(ot1,it=qi)P(oTt+1|it=qi)=αt(i)βt(i)∑Nj=1αt(i)βt(i)
給定模型
λ 和觀測
O ,在時刻
t 處於狀態
qi 且在時刻
t+1 處於狀態
qj 的概率
ξt(i,j)=P(it=qi,it+1=qj|O,λ)=P(it=qi,it+1=qj,O|λ)P(O|λ)=P(it=qi,it+1=qj,O|λ)∑Ni=1∑Nj=1P(it=qi,it+1=qj,O|λ)=αt(i)aijbj(ot+1)βt+1(j)∑Ni=1∑Nj=1αt(i)aijbj(ot+1)βt+1(j)
在觀測
O 下狀態
i 出現的期望
∑t=1Tγt(i)=∑t=1TP(it=qi|O,λ)
在觀測
O 下由狀態
i 轉移的期望
∑t=1T-1γt(i)=∑t=1T-1P(it=qi|O,λ)
在觀測
O 下由狀態
i 轉移到狀態
j 的期望
∑t=1T-1ξt(i,j)=∑t=1T-1P(it=qi,it+1=qj|O,λ)
將觀測序列作爲觀測數據
O ,將狀態序列作爲隱數據
I ,則應馬爾科夫模型是含有隱變量的概率模型
P(O|λ)=∑IP(O|I,λ)P(I|λ)
完全數據
Q(λ,λ⎯⎯) 函數
Q(λ,λ⎯⎯)=EI[logP(O,I|λ)|O,λ⎯⎯]=∑IlogP(O,I|λ)P(I|O,λ⎯⎯)=∑IlogP(O,I|λ)P(O,I|λ⎯⎯)P(O|λ⎯⎯)
其中,
λ⎯⎯ 是隱馬爾科夫模型參數的當前估計值,
λ 是隱馬爾科夫模型參數。
由於對最大化
Q(λ,λ⎯⎯) 函數,
P(O|λ⎯⎯) 爲常數因子,
以及
P(O,I|λ)=πi1bi1(o1)ai1i2bi2(o2)⋯aiT−1iTbT(oT)
所以求
Q(λ,λ⎯⎯) 函數對
λ 的最大
λ=argmaxQ(λ,λ⎯⎯)⇔argmax∑IlogP(O,I|λ)P(O,I|λ⎯⎯)=∑Ilogπi1P(O,I|λ⎯⎯)+∑I(∑t=1T−1logaitit+1)P(O,I|λ⎯⎯)+∑I(∑t=1Tlogbit(ot))P(O,I|λ⎯⎯)
對三項分別進行極大化:
1.
max∑Ilogπi1P(O,I|λ⎯⎯)=∑i=1Nlogπi1P(O,i1=i|λ⎯⎯)s.t.∑i=1Nπi=1
構造拉格朗日函數,對其求偏導,令結果爲0
∂∂πi[∑i=1Nlogπi1P(O,i1=i|λ⎯⎯)+γ(∑i=1Nπi−1)]=0
得
P(O,i1=i|λ⎯⎯)+γπi=0∑i=1N[P(O,i1=i|λ⎯⎯)+γπi]=0∑i=1NP(O,i1=i|λ⎯⎯)+γ∑i=1Nπi=0P(O|λ⎯⎯)+γ=0γ=−P(O|λ⎯⎯)
代入
P(O,i1=i|λ⎯⎯)+γπi=0 ,得
πi=P(O,i1=i|λ⎯⎯)P(O|λ⎯⎯)=γ1(i)
2.
max∑I(∑t=1T−1logaitit+1)P(O,I|λ⎯⎯)=∑i=1N∑j=1N∑t=1T−1logaijP(O,it=i,it+1=j|λ⎯⎯)s.t.∑j=1Naij=1
得
aij=∑T−1t=1P(O,it=i,it+1=j|λ⎯⎯)∑T−1t=1P(O,it=i|λ⎯⎯)=∑T−1t=1ξt(i,j)∑T−1t=1γt(i)
3.
max∑I(∑t=1Nlogbit(ot))P(O,I|λ⎯⎯)=∑j=1N∑t=1Tlogbj(ot)P(O,it=j|λ⎯⎯)s.t.∑k=1Mbj(k)=1
得
bj(k)=∑Tt=1P(O,it=j|λ⎯⎯)I(ot=vk)∑Tt=1P(O,it=j|λ⎯⎯)=∑Tt=1,ot=vkγt(j)∑Tt=1γt(j)
Baum-Welch算法:
輸入:觀測數據
O=(o1,o2,⋯,oT)
輸出:隱馬爾科夫模型參數
1. 初始化
對
n=0 ,選取
a(0)ij,bj(k)(0),π(0)i ,得到模型
λ(0)=(a(0)ij,bj(k)(0),π(0)i)
2. 遞推
對
n=1,2,⋯,
a(n+1)ij=∑T−1t=1ξt(i,j)∑T−1t=1γt(i)bj(k)(n+1)=∑Tt=1,ot=vkγt(j)∑Tt=1γt(j)π(n+1)i=P(O,i1=i|λ⎯⎯)P(O|λ⎯⎯)
其中,右端各值按觀測數據
O=(o1,o2,⋯,oT) 和模型
λ(n)=(A(n),B(n),π(n)) 計算。
3. 終止
得到模型
λ(n+1)=(A(n+1),B(n+1),π(n+1))
在時刻
t 狀態爲
i 的所有單個路徑
(i1,i2,⋯,it) 中概率最大值
δt(i)=maxi1,i2,⋯,it−1P(it=i,it−1,⋯,i1,ot,⋯,o1|λ)i=1,2,⋯,N
得遞推公式
δt+1(i)=maxi1,i2,⋯,itP(it+1=i,it,⋯,i1,ot+1,⋯,o1|λ)=max1≤j≤N[maxi1,i2,⋯,it−1P(it+1=i,it=j,it−1,⋯,i1,ot+1,ot,⋯,o1|λ)]=max1≤j≤N[maxi1,i2,⋯,it−1P(it+1=i,it=j,it−1,⋯,i1,ot,ot−1,⋯,o1|λ)P(ot+1|it+1=i,λ)]=max1≤j≤N[maxi1,i2,⋯,it−1P(it=j,it−1,⋯,i1,ot,ot−1,⋯,o1|λ)P(it+1=i|it=j,λ)P(ot+1|it+1=i,λ)]=max1≤j≤N[δt(j)aji]bi(ot+1)i=1,2,⋯,N
在時刻
t 狀態爲
i 的所有單個路徑
(i1,i2,⋯,it) 中概率最大值的路徑的第
t−1 個結點
ψt(i)=argmax1≤j≤N[δt−1(j)aji]i=1,2,⋯,N
維特比算法:
輸入:模型
λ=(A,B,π) 和觀測數據
O=(o1,o2,⋯,oT)
輸出:最優路徑
I∗=(i∗1,i∗2,⋯,i∗T)
1. 初始化
δ1(i)=πibi(o1)i=1,2,⋯,Nψ1(i)=0
2. 遞推
對
t=2,3,⋯,T
δt(i)=max1≤j≤N[δt−1(j)aji]bi(ot)i=1,2,⋯,Nψt(i)=argmax1≤j≤N[δt−1(j)aji]i=1,2,⋯,N
3. 終止
P∗=max1≤j≤NδT(i)i∗T=argmax1≤j≤N[δT(i)]
4. 最優路徑回溯
對
t=T−1,T−2,⋯,1
i∗t=ψt+1(i∗t+1)
求得最優路徑
I∗=(i∗1,i∗2,⋯,i∗T)