Алгоритм "Вперед-Назад" — различия между версиями
Gfv (обсуждение | вклад) (a2) |
Gfv (обсуждение | вклад) |
||
Строка 15: | Строка 15: | ||
=== Проход вперед === | === Проход вперед === | ||
− | Заметим, что в <tex>\{\ | + | Заметим, что в <tex>\{\alpha_s(1)\}</tex> нужно считать равной <tex>\pi_s</tex>, так как на первом шаге распределение по определению будет равно начальному. |
− | + | Для следующих <tex>t</tex> можно вычислить <tex>\alpha_s(t)</tex> рекуррентно: | |
− | <tex>\alpha_{ | + | <tex>\alpha_{s}(t) = P(O_{1, t} | X_t = s_i) = \\ |
− | = \displaystyle\sum\limits_{j}P(O_{1, t} | + | = \displaystyle\sum\limits_{j \in S} P(O_{1, t} | X_t = s \cap X_{t-1} = j) = \\ |
− | = \displaystyle\sum\limits_{j}P(O_{1, t-1} | + | = \displaystyle\sum\limits_{j \in S} P(O_{1, t-1} | X_{t-1} = j) \cdot P(X_t = s | X_{t-1} = j) \cdot P(O_t = o_t | X_t = s) = \\ |
− | + | = \displaystyle\sum\limits_{j \in S} \alpha_{j}(t-1) \cdot a_{js} \cdot b_{so_t} = \\ | |
− | = \displaystyle\sum\limits_{j} | + | = b_{so_t} \cdot \displaystyle\sum\limits_{j \in S} \alpha_{j}(t-1) \cdot a_{js}</tex> |
− | = \displaystyle\sum\limits_{j}\ | ||
− | Итак, вероятность попасть в состояние <tex> | + | Итак, вероятность попасть в состояние <tex>s</tex> на <tex>t</tex>-ом шаге, учитывая, что после перехода произойдет событие <tex>o_t</tex> будет равна вероятности быть в состоянии <tex>j</tex> на <tex>t</tex>-ом шаге, умноженной на вероятность перейти из состояния <tex>j</tex> в <tex>s</tex>, произведя событие <tex>o_t</tex> для всех <tex>j \in S</tex>. |
+ | |||
+ | === Проход назад === | ||
+ | Аналогично, <tex>\beta_s(T+1) = 1</tex>, так как произвольная цепочка наблюдений будет произведена, какими бы ни были состояния. | ||
+ | |||
+ | Предыдущие <tex>\beta_s(t)</tex> считаются рекуррентно: | ||
+ | |||
+ | <tex>\beta_s(t) = P(O_{t, T} | X_t = s) = \\ | ||
+ | = \displaystyle\sum\limits_{j \in S} P(O_{t+1,T} | X_{t+1} = j) \cdot P(X_{t+1} = j | X_t = s) \cdot P(o_t | X_t = s) = \\ | ||
+ | = \displaystyle\sum\limits_{j \in S} \beta_j(t+1) \cdot a_{sj} \cdot b_{jo_t}</tex> | ||
+ | |||
+ | === Сглаживание вероятности === | ||
+ | Итак, для произвольного состояния <tex>s</tex> в произвольный шаг <tex>t</tex> теперь известна вероятность того, что на пути к нему была произведена последовательность <tex>O_{1,t}</tex> и вероятность того, что после него будет произведена последовательность <tex>O_{t+1,T}</tex>. Чтобы найти вероятность того, что будет произведена цепочка событий, найти <tex>P(O)</tex>, нужно просуммировать произведение обеих вероятностей для всех состояний при произвольном шаге t: <tex>P(O) = \sum_{s \in S} \alpha_s(t)\beta_s(t)</tex>. | ||
+ | |||
+ | Теперь найдем вероятность того, что в момент <tex>t</tex> цепь будет в состоянии <tex>s</tex>: | ||
+ | |||
+ | <tex dpi="180">P(X_t = s | O_{1,t-1} \cap O_{t,T}) = \frac{P(X_t = s | O_{1,t-1}) \cdot P(X_t = s | O_{t,T})}{P(O)} = \frac{\alpha_{s}(t) \cdot \beta_{s}(t)}{P(O)} = \\ | ||
+ | = \frac{\alpha_s(t)\cdot \beta_s(t)}{\sum_{i \in S}\alpha_s(t)\cdot \beta_s(t)}</tex> |
Версия 02:29, 14 января 2013
Пусть дана скрытая Марковская модель
, где -- состояния, -- возможные события, -- начальные вероятности, -- матрица переходов, а -- вероятность наблюдения события после перехода в состояние .За
шагов в этой модели получилась последовательность наблюдений .Алгоритм "вперед-назад" позволяет найти в скрытой Марковской модели вероятность попадания в состояние
на -ом шаге при последовательности наблюдений и (скрытой) последовательности состояний .Вычисление
Пусть в момент
мы оказались в состоянии : . Назовем вероятность того, что при этом во время переходов образовалась последовательность наблюдений , а — вероятность того, что после этого состояния мы будем наблюдать последовательность наблюдений :
Нам требуется найти
. Поскольку будущее Марковской цепи не зависит от прошлого, мы можем утверждать, что вероятность того, что мы будем наблюдать события не зависит от того, что в прошлом мы наблюдали последовательность , и, следовательно:
Проход вперед
Заметим, что в
нужно считать равной , так как на первом шаге распределение по определению будет равно начальному.Для следующих
можно вычислить рекуррентно:
Итак, вероятность попасть в состояние
на -ом шаге, учитывая, что после перехода произойдет событие будет равна вероятности быть в состоянии на -ом шаге, умноженной на вероятность перейти из состояния в , произведя событие для всех .Проход назад
Аналогично,
, так как произвольная цепочка наблюдений будет произведена, какими бы ни были состояния.Предыдущие
считаются рекуррентно:
Сглаживание вероятности
Итак, для произвольного состояния
в произвольный шаг теперь известна вероятность того, что на пути к нему была произведена последовательность и вероятность того, что после него будет произведена последовательность . Чтобы найти вероятность того, что будет произведена цепочка событий, найти , нужно просуммировать произведение обеих вероятностей для всех состояний при произвольном шаге t: .Теперь найдем вероятность того, что в момент
цепь будет в состоянии :