见李航老师的《统计学习方法》第10章。对前向后向计算方法及EM计算模型参数的推导都很明了。 page174 有三个基本问题:概率计算问题,学习问题,预测问题。
HMM生成过程###
预测时候,寻找最优的隐藏状态序列S∗=argmaxsPθ(S∣O) ,需要用到Viterbi Algorithm,主要是动态规划的思想。
训练.不完全数据###
若是完全标注的数据,可以简单的统计出各个概率。
若数据有很多是未标注的怎么办? EM!
求模型的参数:λ=(A,B,π)
已知:观测序列O
未知:隐藏状态序列I
那么: P(O∣λ)=∑IP(O∣I,λ)P(I∣λ) .
E步:
Q(λ,λˉ)=EI[logP(O,I∣λ)∣O,λˉ]=I∑logP(O,I∣λ)P(I∣O,λˉ)=I∑logP(O,I∣λ)P(O∣λˉ)P(O,I∣λˉ)≈I∑logP(O,I∣λ)P(O,I∣λˉ)去掉了与I无关的分母=I∑logπiP(O,I∣λˉ)+I∑(t=1∑T−1logai,i+1)P(O,I∣λˉ)+I∑(t=1∑Tlogbit(ot))P(O,I∣λˉ) M步: 如《统计学习方法》,上上式三个子项逐一用拉格朗日函数求解。
最后的解πi=P(O∣λˉ)P(O,i1=i∣λˉ)中有个式子P(O∣λˉ) ,如何高效计算?前向后向算法。
前向后向算法###
若给定λ=(A,B,π)和观测序列,计算观测序列O出现的概率P(O∣λ) . 具体Status未知,此时计算量很大。
前向####
最简单的:αt(k)=P(o1:t,st=k)=∑s1:t−1P(o1:t,s1:t−1,St=k) 。
但是,看看求和的集合,这个时间复杂度不可接受。
于是乎想到了一种利用αt−1(l)结果的算法:
后向####
HMM相关文章索引