Алгоритм "Вперед-Назад" — различия между версиями
Gfv (обсуждение | вклад) |
Gfv (обсуждение | вклад) (a2) |
||
Строка 1: | Строка 1: | ||
− | Пусть дана скрытая Марковская модель <tex>\lambda = \{\bold{S}, \bold{\Sigma}, \bold{\Pi}, \bold{A}, \bold{B}\}</tex>, где <tex>\bold{S} = \{s_1, ..., s_n\}</tex> - состояния, <tex>\bold{\Sigma} = \{\omega_1, ..., \omega_m\}</tex> - возможные события, <tex>\bold{\Pi}</tex> -- начальные вероятности, <tex>\bold{A} = \{a_{ij}\}</tex> -- матрица переходов, а <tex>\bold{B} = \{b_{ | + | Пусть дана скрытая Марковская модель <tex>\lambda = \{\bold{S}, \bold{\Sigma}, \bold{\Pi}, \bold{A}, \bold{B}\}</tex>, где <tex>\bold{S} = \{s_1, ..., s_n\}</tex> -- состояния, <tex>\bold{\Sigma} = \{\omega_1, ..., \omega_m\}</tex> -- возможные события, <tex>\bold{\Pi} = \{\pi_1, ..., \pi_n\}</tex> -- начальные вероятности, <tex>\bold{A} = \{a_{ij}\}</tex> -- матрица переходов, а <tex>\bold{B} = \{b_{i\omega_k}\}</tex> -- вероятность наблюдения события <tex>\omega_k</tex> после перехода в состояние <tex>s_i</tex>. |
За <tex>T</tex> шагов в этой модели получилась последовательность наблюдений <tex>O_{1,T} = {o_1, ..., o_T}</tex>. | За <tex>T</tex> шагов в этой модели получилась последовательность наблюдений <tex>O_{1,T} = {o_1, ..., o_T}</tex>. | ||
− | Алгоритм "вперед-назад" позволяет найти в скрытой Марковской модели вероятность попадания в состояние <tex>s_i</tex> на <tex>t</tex>-ом шаге при последовательности наблюдений <tex>O</tex>. | + | Алгоритм "вперед-назад" позволяет найти в скрытой Марковской модели вероятность попадания в состояние <tex>s_i</tex> на <tex>t</tex>-ом шаге при последовательности наблюдений <tex>O</tex> и (скрытой) последовательности состояний <tex>X</tex>. |
− | + | == Вычисление == | |
Пусть в момент <tex>t</tex> мы оказались в состоянии <tex>i</tex>: <tex>X_t = i</tex>. Назовем <tex>\alpha_{i}(t)</tex> вероятность того, что при этом во время переходов образовалась последовательность наблюдений <tex>O_{1,t-1}</tex>, а <tex>\beta_{i}(t)</tex> — вероятность того, что после этого состояния мы будем наблюдать последовательность наблюдений <tex>O_{t,T}</tex>: | Пусть в момент <tex>t</tex> мы оказались в состоянии <tex>i</tex>: <tex>X_t = i</tex>. Назовем <tex>\alpha_{i}(t)</tex> вероятность того, что при этом во время переходов образовалась последовательность наблюдений <tex>O_{1,t-1}</tex>, а <tex>\beta_{i}(t)</tex> — вероятность того, что после этого состояния мы будем наблюдать последовательность наблюдений <tex>O_{t,T}</tex>: | ||
<tex>\alpha_{i}(t) \overset{def}{=} P(O_{1, t-1} | X_t = i) \\ | <tex>\alpha_{i}(t) \overset{def}{=} P(O_{1, t-1} | X_t = i) \\ | ||
− | \beta_i(t) \overset{def}{=} P(O_{t,T} | X_t = | + | \beta_i(t) \overset{def}{=} P(O_{t,T} | X_t = i)</tex> |
− | Нам требуется найти <tex>P(X_t = i | O) = P(X_t = i | O_{1,t-1} \cap O_{t,T})</tex>. Поскольку будущее Марковской цепи не зависит от прошлого, мы можем утверждать, что вероятность того, что мы будем наблюдать события <tex>O_{t, | + | Нам требуется найти <tex>P(X_t = i | O) = P(X_t = i | O_{1,t-1} \cap O_{t,T})</tex>. Поскольку будущее Марковской цепи не зависит от прошлого, мы можем утверждать, что вероятность того, что мы будем наблюдать события <tex>O_{t,T}</tex> не зависит от того, что в прошлом мы наблюдали последовательность <tex>O_{1,t-1}</tex>, и, следовательно: |
− | <tex>P(X_t = i | O_{1,t-1} \cap O_{t,T}) \ | + | <tex>P(X_t = i | O_{1,t-1} \cap O_{t,T}) = \frac{P(X_t = i | O_{1,t-1}) \cdot P(X_t = i | O_{t,T})}{P(O)} = \frac{\alpha_{i}(t) \cdot \beta_{i}(t)}{P(O)}</tex> |
+ | === Проход вперед === | ||
+ | Заметим, что в <tex>\{\alpha_i(t)\}</tex> в <tex>t = 0</tex> мы можем считать равной <tex>\pi_i</tex>, так как на первом шаге распределение по определению будет равно начальному. | ||
− | + | Следующие <tex>t</tex> посчитаем рекуррентно: | |
− | + | ||
+ | <tex>\alpha_{i}(t+1) = P(O_{1, t} | X_{t+1} = i) = \\ | ||
+ | = \displaystyle\sum\limits_{j}P(O_{1, t} \cap X_t = j \cap X_t+1 = i) = \\ | ||
+ | = \displaystyle\sum\limits_{j}P(O_{1, t-1} \cap X_t = j)\cdot P(o_t \cap X_{t+1} = i | O_{1, t-1} \cap X_t = j) = \\ | ||
+ | = \displaystyle\sum\limits_{j}P(O_{1, t-1} \cap X_t = j)\cdot P(o_t \cap X_{t+1} = i | X_t = j) = \\ | ||
+ | = \displaystyle\sum\limits_{j}P(O_{1, t-1} \cap X_t = j)\cdot P(X_{t+1} = i | X_{t} = j) \cdot P(o_t | X_{t+1} = i) = \\ | ||
+ | = \displaystyle\sum\limits_{j}\alpha_j(t)a_{ji}b_{io_t}</tex> | ||
+ | |||
+ | Итак, вероятность попасть в состояние <tex>s_i</tex> на </tex>t+1</tex>-ом шаге, учитывая, что после перехода произойдет событие <tex>o_t</tex> будет равна вероятности быть в состоянии <tex>s_j</tex> на <tex>t</tex>-ом шаге, умноженной на вероятность перейти из состояния <tex>s_j</tex> в <tex>s_i</tex>, произведя событие <tex>o_t</tex> |
Версия 00:43, 14 января 2013
Пусть дана скрытая Марковская модель
, где -- состояния, -- возможные события, -- начальные вероятности, -- матрица переходов, а -- вероятность наблюдения события после перехода в состояние .За
шагов в этой модели получилась последовательность наблюдений .Алгоритм "вперед-назад" позволяет найти в скрытой Марковской модели вероятность попадания в состояние
на -ом шаге при последовательности наблюдений и (скрытой) последовательности состояний .Вычисление
Пусть в момент
мы оказались в состоянии : . Назовем вероятность того, что при этом во время переходов образовалась последовательность наблюдений , а — вероятность того, что после этого состояния мы будем наблюдать последовательность наблюдений :
Нам требуется найти
. Поскольку будущее Марковской цепи не зависит от прошлого, мы можем утверждать, что вероятность того, что мы будем наблюдать события не зависит от того, что в прошлом мы наблюдали последовательность , и, следовательно:
Проход вперед
Заметим, что в
в мы можем считать равной , так как на первом шаге распределение по определению будет равно начальному.Следующие
посчитаем рекуррентно:
Итак, вероятность попасть в состояние
на </tex>t+1</tex>-ом шаге, учитывая, что после перехода произойдет событие будет равна вероятности быть в состоянии на -ом шаге, умноженной на вероятность перейти из состояния в , произведя событие