4

我正在尝试为隐马尔可夫模型(HMM)实现前向算法,并且在填充 alpha 表时遇到了下溢问题。我使用此处第 6 节中描述的方法对 alpha 值进行了归一化,但现在最终 alpha 值(观察序列的概率)的总和始终等于 1。如何“撤消”归一化以获得实际概率?我的实现与此处的第 7.2 节非常相似。

最近对这个问题有一个答案,但我无法理解最后几个步骤,希望得到更详细的解释。谢谢!

更新:我想我终于理解了最近的答案,但希望能确认我的理解是正确的。这是我所做的(c[k] 是系数):

    double sum = 0.0;
    for (i = 0; i < 4; i ++) { // only 4 hidden states
        sum += alpha[l-1][i]; // sum last column of alpha table (normalized)
    }

    double sumLogC = 0.0;
    for (k = 0; k < l; k++) {
        sumLogC += Math.log(c[k]);
    }

    probability = Math.log(sum) - sumLogC;

    return probability;
4

0 回答 0