Алгоритм Баума-Велша — различия между версиями
(→Описание алгоритма) |
|||
Строка 22: | Строка 22: | ||
<tex>a_i(t)</tex> можно вычислить рекурсивно: | <tex>a_i(t)</tex> можно вычислить рекурсивно: | ||
− | 1.<tex>a_i(1) = \pi_i \cdot b_i(O_1) </tex> | + | 1.<tex>a_i(1) = \pi_i \cdot b_i(O_1) </tex>; |
2.<tex>a_j(t + 1) = b_j(O_{t + 1})\displaystyle\sum^N_{i=1}a_i(t) \cdot a_{ij}</tex>. | 2.<tex>a_j(t + 1) = b_j(O_{t + 1})\displaystyle\sum^N_{i=1}a_i(t) \cdot a_{ij}</tex>. | ||
+ | |||
+ | '''Обратная процедура''' | ||
+ | |||
+ | Данная процедура позволяет вычислить вероятность конечной заданной последовательности <tex>o_{t + 1}, ..., o_T</tex> при условии, что мы начали из исходного состояния <tex>i</tex>, в момент времени <tex>t</tex>. | ||
+ | |||
+ | <tex>\beta_i(t)</tex> можно вычислить рекурсивно: | ||
+ | |||
+ | 1.<tex>\beta_i(T) = 1</tex>; | ||
+ | |||
+ | 2. <tex>\beta_i(t) = \displaystyle\sum^N_{j = 1}\beta_j(t + 1)a_{ij}b_j(O_{t + 1})</tex>. | ||
+ | |||
+ | '''Обновление''' | ||
+ | |||
+ | Определим временные переменные: | ||
+ | |||
+ | <tex>\gamma_i(t) = p(Q_t=i\mid O,\;\lambda)=\frac{\alpha_i(t)\beta_i(t)}{\displaystyle\sum^N_{j=1}\alpha_j(t)\beta_j(t)}</tex> | ||
+ | |||
+ | <tex>\xi_{ij}(t) = p(Q_t=i,\;Q_{t+1}=j\mid O,\;\lambda)=\frac{\alpha_i(t)a_{ij}\beta_j(t+1)b_j(o_{t+1})}{\displaystyle\sum^N_{i=1}\displaystyle\sum^N_{j=1}\alpha_i(t)a_{ij}\beta_j(t+1)b_j(O_{t+1})}</tex>. | ||
+ | |||
+ | Имея <tex>\gamma</tex> и <tex>\xi</tex>, можно определить: | ||
+ | |||
+ | <tex>\bar\pi_i=\gamma_i(1)</tex>, | ||
+ | |||
+ | <tex>\bar{a}_{ij}=\frac{\displaystyle\sum^{T-1}_{t=1}\xi_{ij}(t)}{\displaystyle\sum^{T-1}_{t=1}\gamma_i(t)}</tex>, | ||
+ | |||
+ | <tex>\bar{b}_i(k)=\frac{\displaystyle\sum^T_{t=1}\delta_{O_t,\;o_k}\gamma_i(t)}{\displaystyle\sum^T_{t=1}\gamma_i(t)}</tex>. | ||
+ | |||
+ | Используя новые переменные <tex> A, B, \pi</tex> итерации продолжаются до схождения. | ||
== Пример == | == Пример == |
Версия 21:25, 21 декабря 2014
Алгоритм Баума-Велша — алгоритм для нахождения неизвестных параметров скрытой Марковской модели. Использует алгоритм прямого-обратного хода.
Описание алгоритма
Пусть
- это дискретная случайная переменная, принимающая одно из значений . Будем полагать, что данная модель Маркова, определенная как однородна по времени, то есть независима от . Тогда можно задать как независящую от времени стохастическую матрицу перемещений . Особый случай для времени определяется начальным распределением .Будем считать, что мы в состоянии
в момент времени , если . Последовательность заданных состояний определяется как , где является состоянием в момент времени .Наблюдение может иметь одно из
возможных значений, . Вероятность заданного вектора наблюдений в момент времени для состояния определяется как - это матрица на . Заданная последовательность наблюдений выражается как .Следовательно, мы можем описать скрытую модель Маркова с помощью
. При заданном векторе наблюдений алгоритм Баума-Велша находит . максимизирует вероятность наблюдений .
Исходные данные:
со случайными начальными условиями. Алгоритм итеративно обновляет параметр до схождения в одной точке.
Прямая процедура
, что является вероятностью получения заданной последовательности для состояния в момент времени .
можно вычислить рекурсивно:
1.
;2.
.Обратная процедура
Данная процедура позволяет вычислить вероятность конечной заданной последовательности
при условии, что мы начали из исходного состояния , в момент времени .можно вычислить рекурсивно:
1.
;2.
.Обновление
Определим временные переменные:
.
Имея
и , можно определить:,
,
.
Используя новые переменные
итерации продолжаются до схождения.Пример
Псевдокод
Применение
Источники
1. https://ru.wikipedia.org/wiki/Алгоритм_Баума_-_Велша
2. http://logic.pdmi.ras.ru/~sergey/teaching/asr/notes-09-hmm.pdf
3. http://en.wikipedia.org/wiki/Baum%E2%80%93Welch_algorithm