Яндекс.Метрика
ГлавнаяМатематические модели › Модель скрытых состояний Маркова. Часть 2

Модель скрытых состояний Маркова. Часть 2

hmm-training-outline-1024x889

В предыдущей статье мы говорили об эффективных алгоритмах, необходимых для вычисления вероятностей и стат. распределений модели Маркова, которыми являются форвардный алгоритм и алгоритм Витерби. Форвардный алгоритм вычисляет вероятность данных полученных моделью по всем возможным последовательностям состояний. Алгоритм Витерби вычисляет вероятность данных полученных моделью по одной, наиболее вероятной, последовательности.

В этом посте будет много формул, но без этого не обойтись, чтобы создать хорошую стратегию, надо разбираться в математической модели, лежащей в ее основе. Следующие части будут более приближенными к практике.

Форвардный алгоритм.

Форвардный алгоритм позволяет эффективно рассчитать функцию вероятности p(O|λ). Форвардной переменной называется вероятность генерации моделью наблюдений до времени t, и состояние j в момент времени t определяется как:

αj(t)=p(o1,...,ot,x(t)=j|λ)

Это выражение вычисляется рекурсивно через форвардную переменную в момент времени t-1 , находясь в состоянии k, и затем вычисляется состояние j  в момент времени t:

αj(t)=p(o1,...,ot,x(t1)=k,x(t)=j|λ)=αk(t1)akjbj(ot)

где akj - вероятность перехода из состояния k  в состояние j, и bj(ot) - вероятность генерации вектора параметров ot из состояния t.

αj(t)=Nk=1p(o1,...,ot,x(t1)=k,x(t)=j|λ)

1. Инициализация алгоритма.

α1(0)=1,αj(0)=0 для 1<jN и α1(t)=0 для 1<tT

2. Рекурсия.

Для t=1,2,...,T

.........для j=2,3,....,N1

................αj(t)=bj(ot)[N1k=1αk(t1)akj]

3. Решение.

p(O|λ)=N1k=2αk(T)akN

Алгоритм Витерби.

Форвардный алгоритм находит p(O|λ) суммированием по всем возможным последовательностям состояний, но иногда предпочтительней аппроксимировать p(O|λ) вероятностью ˆp(O|λ) которая вычисляется для одной, наиболее вероятной последовательности. Для этого применяется алгоритм Витерби:

ˆp(O|λ)=maxX[p(O,X|λ)], где X - наиболее вероятная последовательность состояний.

Вероятность лучшего  пути длиной t по модели Маркова, заканчивающегося состоянием j определяется как:

ϕj(t)=maxXt1[p(o1,...,ot,x(t)=j|λ)], где Xt1 - лучший путь/последовательность состояний.

Форвардная переменная ϕ также может быть вычислена рекурсивно:

ϕj(t)=maxi[ϕi(t1)aijbj(ot)]

1. Инициализация алгоритма.

ϕ1(0)=1,ϕj(0)=0 для 1<j<N и ϕ1(t)=0 для 1tT

2. Рекурсия.

Для t=1,2,...,T

...........для j=2,3,...,N1

.....................ϕj(t)=max1k<N[ϕk(t1)akj]bj(ot)

...................................сохранить предыдущее значение pred(j,t)=k

3. Решение.

p(O,X|λ)=max1k<Nϕk(T)akN

сохранить предыдущее значение pred(N,T)=k.

Наилучший путь находится путем следования по сохранненым значениям в обратном порядке по pred(j,t).

Ошибки малой разрядности

Прямое вычисление p(O|λ) может привести к ошибкам малой разрядности. Значение вероятности может быть таким маленьким, что компьютер не сможет рассчитать его верно. Вместо этого необходимо использовать вычисление натурального логарифма log(p(O|λ).

В следующей части цикла рассмотрим тренировку модели Маркова на сгенерированных входных данных с помощью реализации разобранных выше алгоритмов на языке R.

4 Комментарии[ Ваш комментарий ]

  1. Спасибо за интересные переводы и исследования. А можно вас попросить еще и на сайт www.long-short.ru  кросспосты делать? 

Ответ на uralpro ¬
Отменить ответ

Rich Text Editor, comment

Обратите внимание: вы можете использоватьHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>