[ML-13-2] Modelo oculto de Markov HMM-algoritmo hacia adelante y hacia atrás

 

[ML-13-1 ] Modelo oculto de Markov HMM

[ML-13-2 ] Modelo oculto de Markov HMM- algoritmo hacia adelante y hacia atrás

[ML-13-3 ] Modelo oculto de Markov HMM - Baum-Welch ( Baum- Welch)

[ML-13-4 ] Modelo de Markov oculto HMM-- Algoritmo de Viterbi (Viterbi) para problemas de predicción

Directorio

  1. Introduccion
  2. Cálculo directo
  3. Algoritmo de avance
  4. Ejemplo de algoritmo directo
  5. Algoritmo hacia atrás
  6. Cálculo de probabilidad común de HMM

1. Introducción

En [ML-13-1] Hidden Markov Model HMM, hablamos sobre el conocimiento básico del modelo HMM y los tres problemas básicos de HMM. En este artículo, nos enfocamos en la solución del primer problema básico de HMM. Es decir, dado el modelo λ = (A, B, π) y la secuencia observada Q = {q1, q2, ..., qT}, calcule la probabilidad P (Q | λ) de la secuencia observada Q bajo el modelo λ

Probabilidad hacia adelante-probabilidad hacia atrás en realidad se refiere a la información convertida del valor de probabilidad del estado si correspondiente al tiempo t en una secuencia de observación.

En la siguiente figura (implicada por q y observación por y), la primera es la probabilidad hacia adelante (todos los estados de observación 1-t y el estado implícito en el tiempo t), y la segunda es la probabilidad hacia atrás

2. Cálculo directo

De acuerdo con la fórmula de probabilidad, enumere todas las secuencias de estado posibles con longitud T I = {i1, i2, ..., iT}, encuentre cada secuencia de estado I y secuencia de observación Q = {q1, q2, ..., qT} Probabilidad conjunta P (Q, I; λ), y luego sumar todas las secuencias de estado posibles para obtener la probabilidad final P (Q; λ)

    El algoritmo de avance y retroceso es para ayudarnos a resolver este problema en una menor complejidad de tiempo.

Tres, algoritmo directo

El algoritmo de avance y retroceso es un término general para el algoritmo de avance y el algoritmo de retroceso. Ambos algoritmos se pueden utilizar para encontrar la probabilidad de la secuencia de observación HMM. Primero veamos cómo el algoritmo de avance resuelve este problema.

  El algoritmo directo es esencialmente un algoritmo para la programación dinámica, es decir, tenemos que encontrar la fórmula para la recursión del estado local, de modo que paso a paso, desde la solución óptima del subproblema hasta la solución óptima de todo el problema.

Definición: Dada λ, la probabilidad de que parte de la secuencia de observación en el tiempo t sea ​​q1, q2, ..., qt y el estado oculto sea si es la probabilidad directa. Recuerda:

El proceso de derivación es el siguiente, y también puede comprenderlo usted mismo: el estado i en el momento t + 1 puede derivarse de cada estado después de la transformación

De la fórmula recursiva se puede ver que la complejidad temporal de nuestro algoritmo es O (TN ^ 2), que es varios órdenes de magnitud menor que la complejidad temporal de la solución de fuerza bruta O (TN ^ T).

Cuatro ejemplos de algoritmo directo

4.1 Ejemplos

Supongamos que hay tres cajas, numeradas 1,2,3; cada caja está equipada con pequeñas bolas de colores blanco y negro, la proporción de las bolas es la siguiente:

De acuerdo con las siguientes reglas, la bola con el reemplazo se extrae para obtener la secuencia de observación del color de la bola:

  1. Seleccione un cuadro de acuerdo con la probabilidad de π, extraiga aleatoriamente una pequeña bola del cuadro, registre el color y vuelva a colocarlo en el cuadro;
  2. Seleccione un nuevo cuadro de acuerdo con una cierta probabilidad condicional y repita la operación;
  3. Obtuve la secuencia de observación finalmente: "Blanco negro y blanco blanco negro
  • Conjunto de estados: S = {Cuadro 1, Cuadro 2, Cuadro 3}
  • Conjunto de observación: O = {blanco, negro}
  • Secuencia de estado y longitud de secuencia de observación T = 5
  • Distribución de probabilidad inicial π
  • Matriz de probabilidad de transición de estado A
  • Matriz de probabilidad de observación B

Dados los parámetros π, A y B, ¿cuál es la probabilidad de que la secuencia observada sea "blanca, negra, blanca, blanca y negra"? Tenga en cuenta que en este proceso, el observador solo puede ver la secuencia de colores de la pelota, pero no la pelota. Fue tomado de qué caja.

4.2 Proceso de cálculo

Obtén el resultado final:

Cinco, algoritmo hacia atrás

  Familiarizado con el algoritmo hacia adelante para encontrar la probabilidad de secuencia de observación HMM, ahora mire cómo usar el algoritmo hacia atrás para encontrar la probabilidad de secuencia de observación HMM.

El algoritmo hacia atrás es muy similar al algoritmo hacia adelante. Ambos son programación dinámica. La única diferencia es que el estado local seleccionado es diferente. El algoritmo hacia atrás usa "probabilidad hacia atrás". Entonces, ¿cómo se define la probabilidad hacia atrás?

Definición: Dado λ, se define que bajo la premisa de que el estado en el tiempo t es si, la parte de la secuencia de observación de t + 1 a T es qt + 1, qt + 2, ..., y la probabilidad de qT es la probabilidad hacia atrás. Recuerda:

Derivación:

De acuerdo con esta fórmula, las probabilidades en la sección anterior también se pueden calcular y los resultados obtenidos son los mismos. Este artículo no dará ejemplos.

6. Cálculo de probabilidades comunes de HMM

 Usando las probabilidades hacia adelante y hacia atrás, podemos calcular la fórmula de probabilidad para un solo estado y dos estados en el HMM.

6.1 Probabilidad de un solo estado

Dado el modelo λ y la secuencia de observación Q, la probabilidad de estar en el estado si en el tiempo t se escribe como:

La importancia de la probabilidad de un solo estado se usa principalmente para juzgar el estado más probable en cada momento, de modo que se pueda obtener una secuencia de estado como resultado final de la predicción.

Usando la definición de probabilidad hacia adelante y hacia atrás, podemos saber:

De las dos expresiones anteriores:

6.2 Probabilidad conjunta de dos estados

Dado el modelo λ y la secuencia de observación Q, la probabilidad de estar en el estado si en el tiempo t y estar en el estado sj en el tiempo t + 1 se escribe como:

6.3 Se pueden obtener las dos sumas anteriores:

Apéndice 1: probabilidad de avance

1

2

3

4 4

5 5

6 6

7 7

8

9 9

10

11

12

13

14

15

dieciséis

17

18 años

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

# - codificación: utf-8 -

"" " Un algoritmo implementado en clase para calcular la probabilidad directa en el modelo HMM ( algoritmo directo )" ""

importar numpy como np

def calc_alpha (pi, A, B, Q, alfa):

"" "

Calcule la probabilidad de avance alfa y guarde el resultado en la matriz alfa (T * n)

: param pi: 1 * n

: detener A: n * n

: parámetro B: n * m

: parámetro Q: 1 * T => T array

: parámetro alfa: T * n

: retorno: alfa

"" "

# 1. Obtenga información variable relacionada

n = np. forma (A) [ 0 ]

T = np. forma (Q) [ 0 ]

# 2 Actualice el valor de probabilidad directa en el tiempo t = 1

para i en rango (n):

alpha[0][i] = pi[i] * B[i][Q[0]]

# 3. 更新t=2... T时刻对应的前向概率值

tmp = np.zeros(n)

for t in range(1, T):

# 迭代计算t时刻对应的前向概率值

for i in range(n):

# 计算时刻t状态为i的前向概率

# a. 计算上一个时刻t-1累计到当前状态i的概率值

for j in range(n):

tmp[j] = alpha[t - 1][j] * A[j][i]

# b. 更新时刻t对应状态i的前向概率值

alpha[t][i] = np.sum(tmp) * B[i][Q[t]]

# 4. 返回结果

return alpha

if __name__ == '__main__':

# 测试

pi = np.array([0.2, 0.5, 0.3])

A = np.array([

[0.5, 0.4, 0.1],

[0.2, 0.2, 0.6],

[0.2, 0.5, 0.3]

])

B = np.array([

[0.4, 0.6],

[0.8, 0.2],

[0.5, 0.5]

])

# 白,黑,白,白,黑

Q = [0, 1, 0, 0, 1]

alpha = np.zeros((len(Q), len(A)))

# 开始计算

calc_alpha(pi, A, B, Q, alpha)

# 输出最终结果

print(alpha)

# 计算最终概率值:

p = 0

for i in alpha[-1]:

p += i

print(Q, end="->出现的概率为:")

print(p)

结果:

[[0.08 0.4 0.15 ]

[0.09 0.0374 0.1465 ]

[0.032712 0.093384 0.037695 ]

[0.01702872 0.04048728 0.03530505]

[0.0142037 0.00651229 0.01829338]]

[0, 1, 0, 0, 1]->出现的概率为:0.03900936690000001

附件一:手写练习

Supongo que te gusta

Origin www.cnblogs.com/yifanrensheng/p/12684727.html
Recomendado
Clasificación