Я реализовал алгоритм 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
. Как запустить алгоритм без его сбоя и без постоянного изменения моих значений?
Пожалуйста, разместите соответствующие части своей программы. –
Это больше похоже на математическую проблему, чем на проблему Python. – IanAuld
Похоже, вы теряете точность, что часто происходит, когда вы добавляете числа с очень разными величинами. Я попытаюсь выполнить алгоритм и выяснить, где точность потеряна и как-то смягчить ее. Чтобы смягчить это, вам нужно быть умным и/или работать с большим количеством бит. – jpkotta