2015-06-10 5 views
0

Я реализовал алгоритм baum-welch в python, но теперь я сталкиваюсь с проблемой при попытке настроить параметры HMM (скрытая марковская модель) A, B и pi. Проблема в том, что у меня много наблюдательных последовательностей Y = (Y_1=y_1, Y_2=y_2,...,Y_t=y_t). И каждая переменная наблюдения Y_t может принимать K возможные значения, K=4096 в моем случае. К счастью, у меня есть только два состояния N=2, но моя матрица излучения B равна N by K, поэтому 2 строки по 4096 столбцам.Baum-Welch много возможных наблюдений

Теперь, когда вы инициализируете B, каждая строка должна быть равна 1. Поскольку в каждой из двух строк содержится 4096 значений, цифры очень малы. Так мало, что, когда я иду на вычисление alpha и beta, их ряды в конце концов приближаются к 0, так как t увеличивается. Это проблема, потому что вы не можете вычислить gamma, когда он пытается вычислить x/0 или 0/0. Как запустить алгоритм без его сбоя и без постоянного изменения моих значений?

+1

Пожалуйста, разместите соответствующие части своей программы. –

+0

Это больше похоже на математическую проблему, чем на проблему Python. – IanAuld

+0

Похоже, вы теряете точность, что часто происходит, когда вы добавляете числа с очень разными величинами. Я попытаюсь выполнить алгоритм и выяснить, где точность потеряна и как-то смягчить ее. Чтобы смягчить это, вам нужно быть умным и/или работать с большим количеством бит. – jpkotta

ответ

0

Это звучит как стандартная проблема масштабирования HMM. Взгляните на «Учебник по скрытым марковским моделям ...» (Rabiner, 1989), раздел V.A «Масштабирование».

Короче говоря, вы можете масштабировать alpha в каждый момент времени, чтобы подвести к 1, и отмасштабировать beta с использованием же фактор, как соответствующий alpha, и все должно работать.

+0

Это как раз моя проблема, у меня уже напечатана бумага Rabiner и проверит ее. Благодаря! – Dave