В предыдущей статье мы говорили об эффективных алгоритмах, необходимых для вычисления вероятностей и стат. распределений модели Маркова, которыми являются форвардный алгоритм и алгоритм Витерби. Форвардный алгоритм вычисляет вероятность данных полученных моделью по всем возможным последовательностям состояний. Алгоритм Витерби вычисляет вероятность данных полученных моделью по одной, наиболее вероятной, последовательности.
В этом посте будет много формул, но без этого не обойтись, чтобы создать хорошую стратегию, надо разбираться в математической модели, лежащей в ее основе. Следующие части будут более приближенными к практике.
Форвардный алгоритм.
Форвардный алгоритм позволяет эффективно рассчитать функцию вероятности . Форвардной переменной называется вероятность генерации моделью наблюдений до времени t, и состояние j в момент времени t определяется как:
Это выражение вычисляется рекурсивно через форвардную переменную в момент времени t-1 , находясь в состоянии k, и затем вычисляется состояние j в момент времени t:
где - вероятность перехода из состояния k в состояние j, и - вероятность генерации вектора параметров из состояния t.
1. Инициализация алгоритма.
для и для
2. Рекурсия.
Для
.........для
................
3. Решение.
Алгоритм Витерби.
Форвардный алгоритм находит суммированием по всем возможным последовательностям состояний, но иногда предпочтительней аппроксимировать вероятностью которая вычисляется для одной, наиболее вероятной последовательности. Для этого применяется алгоритм Витерби:
, где X - наиболее вероятная последовательность состояний.
Вероятность лучшего пути длиной t по модели Маркова, заканчивающегося состоянием j определяется как:
, где - лучший путь/последовательность состояний.
Форвардная переменная также может быть вычислена рекурсивно:
1. Инициализация алгоритма.
для и для
2. Рекурсия.
Для
...........для
.....................
...................................сохранить предыдущее значение
3. Решение.
сохранить предыдущее значение .
Наилучший путь находится путем следования по сохранненым значениям в обратном порядке по .
Ошибки малой разрядности
Прямое вычисление может привести к ошибкам малой разрядности. Значение вероятности может быть таким маленьким, что компьютер не сможет рассчитать его верно. Вместо этого необходимо использовать вычисление натурального логарифма .
В следующей части цикла рассмотрим тренировку модели Маркова на сгенерированных входных данных с помощью реализации разобранных выше алгоритмов на языке R.
Спасибо за интересные переводы и исследования. А можно вас попросить еще и на сайт www.long-short.ru кросспосты делать?
Можно, в том случае, если в тексте статьи можно оставлять ссылки на мой сайт.
Разумеется можно.
Конечно, в следующей части это будет показано