隐马尔科夫模型3个基本问题
隐马尔科夫模型有3个基本问题:
(1)概率计算问题。给定模型
λ=(A,B,π)
和观测序列
O=(o1,o2,...,oT)
,计算在模型
λ
下观测序列
O
出现的概率
P(O|λ)
.
(2)学习问题.已知观测序列
O=(o1,o2,...,oT)
,估计模型
λ=(A,B,π)
参数,使得在该模型下观测系列概率
P(O|λ)
最大,即用极大似然估计的方法估计参数。
(3)预测问题,也称为解码问题。已知模型
λ=(A,B,π)
和观测序列
O=(o1,o2,...,oT)
,求对给定观测序列条件概率
P(I|O)
最大的状态序列
I=(i1,i2,...,iT)
。即给定观测序列,求最有可能的对应的状态序列。
前向算法
定义1(前向概率) 给定隐马尔科夫模型
λ
,定义到时刻
t
部分观测序列为
o1,o2,...,ot
且状态为
qi
的概率为前向概率,记作
αt(i)=P(o1,o2,...,ot,it=qi|λ)(1)
可以递推地求得前向概率
αt(i)
及观测序列概率
P(O|λ)
。
算法1(观测序列概率的前向算法)
输入:隐马尔科夫模型
λ
,观测序列
O
输出:观测序列概率
P(O|λ)
(1)初值
α1(i)=πibi(o1),i=1,2,...,N(2)
(2)递推
对
t=1,2,...,T−1
,
αt+1(i)=[∑j=1Nαt(j)aji]bi(ot+1),i=1,2,...,N(3)
(3)终止
P(O|λ)=∑Ni=1αT(i)
后向算法
定义2(后向概率) 给定隐马尔科夫模型
λ
,定义在时刻
t
状态为
qi
的条件下,从
t+1
到
T
的部分观测序列为
ot+1,ot+2,...,oT
的概率为后向概率,记作
βt(i)=P(ot+1,ot+2,...,oT|it=qi,λ)(4)
可以用递推的方法求得后向概率
βt(i)
及观测序列概率
P(O|λ)
。
算法2(观测序列概率的后向算法)
输入:隐马尔科夫模型
λ
,观测序列
O
输出:观测序列概率
P(O|λ)
(1)
βT(i)=1,i=1,2,...,N(5)
(2)对
t=T−1,T−2,...,1
βt(i)=∑j=1Naijbj(ot+1)βt+1(j),i=1,2,...,N(6)
(3)
P(O|λ)=∑i=1Nπibi(o1)β1(i)(7)
Baum-Welch算法
输入:观测数据
O=(o1,o2,...,oT)
输出:隐马尔可夫模型参数
(1)初始化
对
n=0
,选取
a(0)ij,bj(k)(0),π(0)i,
得到模型
λ(0)=(A(0),B(0),π(0))
(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,0t=vkγt(j)∑Tt=1γt(j)
π(n+1)i=γ1(i)
右端各值按观测
O=(o1,o2,...,oT)
和模型
λ(n)=(A(n),B(n),π(n))
计算。其中
γt(i)=αt(i)βt(i)∑Nj=1αt(j)βt(j)
ξt(i,j)=αt(i)aijbj(ot+1)βt+1(j)∑Ni=1∑Nj=1αt(i)aijbj(ot+1)βt+1(j)
(3)终止。得到模型参数
λ(n+1)=(A(n+1),B(n+1),π(n+1))
维特比算法
输入:模型
λ=(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,i=1,2,...,N
(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≤i≤NδT(i)
i∗T=argmax1≤i≤N[δT(i)]
(4)最优路径回溯。对
t=T−1,T−2,...,1
i∗t=ψt+1(i∗t+1)
求得最优路径
I∗=(i∗1,i∗2,...,i∗T)