HMM模型之前向算法

1、介绍
前向算法是用于HMM模型的评估问题。评估问题:对于一个观察序列和通过不同系统得到的HMM模型,怎么判断哪一个HMM模型是最有可能产生这个观察序列。
HMM模型三元组( π ,A,B),其中 π 表示初始向量,A表示状态转移矩阵,B表示混合矩阵,实例可以参看《HMM模型之viterbi算法》。
2、实现
要得到对于观察序列在当前HMM模型下产生的概率,可以列举所有的state转移序列(state为隐藏状态),通过三元组计算state序列下观察序列的概率,在相加即可,这个方法为穷举。由于state序列的个数为 NT ,其中N为state的个数,T为观察序列长度。时间复杂度为正比于 NT
前向算法正是为了减少时间复杂度实现的算法,这个引入局部概率这个概念:表示
在t时刻到达状态s的概率,通过计算所有能够到达state的路径的概率的和再乘以相应隐藏状态对于观察状态的条件概率得到。那么在时刻T按照观察序列达到各个state的和即为要求的概率。在前向算法中局部概率是一个递归求解的过程。当t=1时,状态j局部概率为:

α(1,j)=π(j)B(j,k)

其中k为观察值。当t>1时,状态j的局部概率为:
α(t,j)=B(j,k)×iα(t1,i)A(i,j)

其中 α(t1,i 为时刻t-1到达状态i的概率。
递归计算到T时刻,那么在当前HMM模型下,产生观察序列的概率为:
P(O|H)=jα(T,j)

时间复杂度为 TN2

你可能感兴趣的:(概率,NLP,HMM模型,向前算法,评估,局部概率)