5

我正在为 HMM 实现前向算法来计算给定 HMM 发出给定观察序列的概率。我希望我的算法对下溢具有鲁棒性。我不能在对数空间中工作,因为前向算法需要概率的乘法和加法。避免下溢的最佳方法是什么?

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

4

1 回答 1

7

在参考末尾的等式 32 中,您将每个概率值 alpha_t(i) 乘以 C_t。所以最后你将最终概率乘以所有 C_t 的乘积。您可以通过跟踪 log(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) 这将为您提供整个序列的对数概率。

于 2012-11-15T05:33:49.190 回答