Explicar el algoritmo hacia atrás para el modelo oculto de Markov

8

He implementado los algoritmos Viterbi y Forward , por desgracia, no puedo entender cómo funciona el algoritmo Backward . Intuitivamente siento que necesito hacer lo mismo que en Forward solo hacia atrás, usando los valores calculados durante la propagación de Forward .

¿Es correcta mi intuición?

He leído muchas diapositivas y estoy enfermo de notación matemática en este momento. No ayuda. Necesito algo que en inglés simple explique la diferencia entre los algoritmos de avance y retroceso .

¿Puede proporcionar una breve explicación de cómo se hace el algoritmo de retroceso ?

Suponga el siguiente HMM pequeño y los resultados del algoritmo Forward para la secuencia "BB" a continuación:

START -> 1
H: 0.5 * 0.8 = 0.4
L: 0.5 * 0.6 = 0.3

1 -> 2
H: 0.4 * 0.2 * 0.8 + 0.3 * 0.6 * 0.8 = 0.208
L: 0.4 * 0.8 * 0.6 + 0.3 * 0.4 * 0.6 = 0.264

2 -> END
END: 0.208 * 0.3 + 0.264 * 0.7 = 0.2472

ingrese la descripción de la imagen aquí

minerales
fuente

Respuestas:

7

Parece que tu secuencia de observación es B, B. Denotemos la observación en el tiempo como y el estado oculto en el tiempo como . Si denotamos como los valores hacia adelante y como los valores hacia atrás, ( es uno de los posibles estados ocultos)tzttxtαt(i)βt(i)i

αt(i)=P(xt=i,z1:t)

Esto significa que es la probabilidad de llegar al estado en el momento emitiendo las observaciones hasta el tiempo . Entonces,αt(i)itt

βt(i)=P(zt+1:Txt=i) que es la probabilidad de emitir la secuencia restante desde hasta el final del tiempo después de estar en estado oculto en el tiempo .t+1it

Para hacer la recursión en podemos escribir,βt(i)

P(zt+1:Txt=i)=jP(xt+1=j,zt+1:Txt=i)

Usando la regla de la cadena, P(xt+1=j,zt+1:Txt=i)=P(zt+2:T,zt+1,xt+1=jxt=i)=P(zt+2:Tzt+1,xt+1=j,xt=i)P(zt+1xt+1=j,xt=i)P(xt+1=jxt=i)

De las dependencias condicionales de HMM, las probabilidades anteriores se simplifican a P(zt+2:Txt+1=j)P(zt+1xt+1=j)P(xt+1=jxt=i)

Tenga en cuenta que de nuestra definición.P(zt+2:Txt+1=j)=βt+1(j)

Sustituyendo a obtenemos,P(zt+1:Txt=i)

βt(i)=P(zt+1:Txt=i)=jβt+1(j)P(zt+1xt+1=j)P(xt+1=jxt=i)

Ahora tienes una recursividad para beta. Últimos dos términos de la última ecuación que conoces de tu modelo. Aquí comenzando desde el final de la cadena (T) vamos hacia atrás calculando todo , de ahí el algoritmo hacia atrás. En adelante tienes que comenzar desde el principio y llegar al final de la cadena.βt

En su modelo, debe inicializar para todo . Esta es la probabilidad de no emitir observaciones después de .βT(i)=P(xT=i)=1iT=2

usuario2939212
fuente