隐马尔可夫模型介绍
隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测从而形成观测序列的过程。
设
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的概率。
则,隐马尔可夫模型可以表述为:
λ=(A,B,π)
隐马尔可夫的三个基本问题
1、概率计算问题
给定模型的参数,求某一个观测序列出现的概率
P(O∣λ)
2、概率计算问题
给出某一个观测序列,估计该模型的参数,采用极大似然估计的方法估计参数
3、预测问题
给定模型和观测序列,求最有可能对应的状态序列
概率计算问题
采用前向算法:
给定隐马尔可夫模型
λ,定义到时刻
t部分观测序列为
o1,o2,⋯,ot且状态为
qi的概率为前向概率,记作
αt(i)=P(o1,o2,⋯,ot,it=qi∣λ)
则可以递归地求得前向概率
αt(i)及观测序列概率
P(O∣λ)
算法:
1、设定初值
α1=πibi(o1),i=1,2,⋯,N
2、递推 对
t=1,2,⋯,T−1,
αt+1(i)=[j=1∑Nαt(j)aji]bi(ot+1),i=1,2,⋯,N
3、中止
P(O∣λ)=i=1∑NαT(i)
学习问题
引入隐变量:状态序列
I=(11,i2,⋯,it)
采用EM算法
首先,完全信息的对数似然函数为:
logP(O,I∣λ)
E步:
Q(λ,λ^)=I∑logP(O,I∣λ)P(I∣O,λ^)
由于
P(I∣O,λ^)=P(O∣λ^)P(O,I∣λ^)
而
P(O∣λ^)对与需要优化的参数
λ来说是常数,因此可以令:
Q(λ,λ^)=I∑logP(O,I∣λ)P(O,I∣λ^)
其中,
P(O,I∣λ)=πi1bi1(o1)ai1i2bi2(o2)⋯aiT−1iTbiT(oT)
带入之后,可以得到:
Q(λ,λ^)=I∑logπi1P(O,I∣λ^)+I∑(t=1∑T−1logaitit+1)P(O,I∣λ^)+I∑(t=1∑Tlogbit(ot))P(O,I∣λ^)
注意,式中所有的求和都是对所有数据的序列总长度
T进行的,可以对每一项分别求最优
第一项:
I∑logπi1P(O,I∣λ^)=i=1∑NlogπiP(O,i1=i∣λ^)
并且,要优化的量需要满足约束条件
∑i=1Nπi=1,因此,采用拉格朗日乘子法,最终求得:
πi=P(O∣λ^)P(O,i1=i∣λ^)
同理可以求得其他两项的参数估计为
aij=∑t=1T−1P(O,it=i∣λ^)∑t=1T−1P(O,it=i,it+1=j∣λ^)
bj(k)=∑t=1TP(O,it=j∣λ^)∑t=1TP(O,it=j∣λ^)I(ot=vk)