Алгоритм Баула-Вэлша

Материал из Викиконспекты
Перейти к: навигация, поиск

Алгоритм Баула-Вэлша — алгоритм для нахождения неизвестных параметров скрытой Марковской модели. Использует алгоритм прямого-обратного хода.

Описание алгоритма

Пусть Qt - это дискретная случайная переменная, принимающая одно из N значений (1..N). Будем полагать, что данная модель Маркова, определенная как P(Qt|Qt1) однородна по времени, то есть независима от t. Тогда можно задать P(Qt|Qt1) как независящую от времени стохастическую матрицу перемещений A={aij}=p(Qt=j|Qt1=i). Особый случай для времени t=1 определяется начальным распределением πi=P(Q1=i).

Будем считать, что мы в состоянии j в момент времени t, если Qt=j. Последовательность заданных состояний определяется как q=(q1,...,qT), где qt{1..N} является состоянием в момент времени t.

Наблюдение может иметь одно из L возможных значений, Qt{o1,...,oL}. Вероятность заданного вектора наблюдений в момент времени t для состояния j определяется как bj(ot)=P(Ot=ot|Qt=j)(B={bij} - это матрица L на N). Заданная последовательность наблюдений O выражается как O=(O1=o1,...,OT=oT).

Следовательно, мы можем описать скрытую модель Маркова с помощью λ=(A,B,π). При заданном векторе наблюдений O алгоритм Баума-Велша находит λ=maxλP(Oλ). λ максимизирует вероятность наблюдений O.


Исходные данные: λ=(A,B,π) со случайными начальными условиями. Алгоритм итеративно обновляет параметр λ до схождения в одной точке.


Прямая процедура

ai(t)=p(O1=o1,...,Ot=ot,Qt=i|λ, что является вероятностью получения заданной последовательности {o1,...,ot} для состояния i в момент времени t.

ai(t) можно вычислить рекурсивно:

1.ai(1)=πibi(O1).

2.aj(t+1)=bj(Ot+1)Ni=1ai(t)aij.

Псевдокод

Применение

Источники

1. https://ru.wikipedia.org/wiki/Алгоритм_Баума_-_Велша


2. http://logic.pdmi.ras.ru/~sergey/teaching/asr/notes-09-hmm.pdf