自用:HMM隐马尔可夫模型学习笔记(2)-前向后向算法
【自用:HMM隐马尔可夫模型学习笔记(2)-前向后向算法】核心就是将观测值的最大似然用概率表示出来 , 然后迭代求解 。
解决了Evaluation的问题 , 即已知参数的条件下 , 求出某个观测值的出现的概率 。
直接计算的话 , 对每个时间点求和于转移概率矩阵A和发散概率矩阵B , 复杂度为O(N^T) , 这样是无法在工程中应用的 , 因此需要学习前向后向算法 , 两种算法将复杂度降低到了O(TN^2) , 从而实现工程可用 。
文章插图
求当前观测值最大似然
为了求P(O|参数) , 使用前向算法 。
【【前向算法】】
定义前向概率αt(i) , 它是t时刻的状态以及1 , 2 ,。。。, t时刻的观测在给定参数下的联合分布的概率P(xi,x2,-,xt,zt=qi|参数),得到初始值α1(i)=P(x1,z1=qi|参数)=pii bi(x1),其中bi(x)含义是 , 隐态为qi时生成给定的观测值的概率 。
P(O|参数)可以这样表示:
αt(i)=P(O1-Ot,it=qt|参数)
则αT(i)作为最后一个该值就是P(O全部观测值 , it=qi|参数) , 因此可以将P(O|参数)用αT(i)对i积分表示出来 。 即对所有可能的隐态N个 , N个αT(i)的和 。
【这样就解决了表示最大似然的问题】
接下来就要把αT(i)给求出来 。 方法是寻找迭代公式 。 应用观测独立性假设和齐次markov假设 , 得到αt+1与αt、bt+1的关系 。
文章插图
应用假设化简 , 找到迭代关系式 , 求出alpha族
这样就求出了所有α值 。
【后向算法】
后向算法 , 从Ot+1到Ot,条件于it 。 记录βt(i)=P(oi+1-oT|it , 参数) 。
先求终点值 , β1(i)=P(o1-oT|i1=qi , 参数)
P(O|参数)=隐态求和P(O1|i1=qi)β1(i)pii=隐态求和(bi(o1)piiβ1(i))
这样再求βt(i)=隐态j求和{P(Ot+1|it+1=gj)βt+1(j)Aij}=隐态j求和{bj(Ot+1)βt+1(j)Aij},这样就得到了β递推式 。
从βT一直求出β1 , 求出P(O|参数).