Обработка недополнения с помощью прямого алгоритма HMM
Я пытаюсь реализовать алгоритм прямого алгоритма для скрытой марковской модели (HMM), и я сталкиваюсь с проблемой недостаточного заполнения при заполнении таблицы альфа. Я нормализовал альфа-значения, используя метод, описанный в разделе 6 здесь, но теперь итоговая сумма конечных альфа-значений (вероятность последовательности наблюдений) всегда равна 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;