Изменения

Перейти к: навигация, поиск

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

1506 байт добавлено, 21:25, 21 декабря 2014
Описание алгоритма
<tex>a_i(t)</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>.
 
'''Обратная процедура'''
 
Данная процедура позволяет вычислить вероятность конечной заданной последовательности <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> итерации продолжаются до схождения.
== Пример ==
50
правок

Навигация