HMM前向算法的下溢

ako*_*e01 5 algorithm probability underflow

我正在实现HMM的前向算法,以计算给定HMM发出给定观察序列的概率.我希望我的算法能够强大到下溢.我无法在对数空间中工作,因为前向算法需要乘法和加法概率.避免下溢的最佳方法是什么?

我已经阅读了一些关于此的消息来源,但我得到的最好的建议是在每个时间步骤第6节这里缩放概率.在算法结束时,您将不会得到您想要的确切概率(观察序列).另外,除非我弄错了,如果你按照上面参考文献的建议在每个时间步骤缩放概率,你就不能对来自两个不同HMM的给定观察序列的概率进行有意义的比较(找出哪个一个人更有可能输出序列).有什么建议?

mcd*_*lla 7

在参考结束时的等式32中,将每个概率值alpha_t(i)乘以C_t.所以最后你将最终概率乘以所有C_t的乘积.您可以通过跟踪日志总和(C_t)来跟踪所有这些.然后在最后你可以计算出log(alpha_t(i)) - SUM_(j <= t)log(C_j),它将给出最终alpha_t(i)或log(SUM_t alpha_t(i)的对数概率) - SUM_(j <= t)log(C_j),它将为您提供整个序列的对数概率.