Modelo HMM básico de aprendizaje automático (Markov oculto)

Referencia recomendada: https://juejin.cn/post/6844903891834781703

1. Cadena de Markov

En los algoritmos de aprendizaje automático, la cadena de Markov (cadena de Markov) es un concepto muy importante. La cadena de Markov, también conocida como cadena de Markov en tiempo discreto, lleva el nombre del matemático ruso Andrei Markov (en ruso: Андрей Андреевич Марков).

inserte la descripción de la imagen aquí

1. Introducción

Una cadena de Markov es un proceso aleatorio de transición de un estado a otro en el espacio de estados .

inserte la descripción de la imagen aquí

  • El proceso requiere una propiedad " sin memoria ":

    • La distribución de probabilidad del siguiente estado solo puede determinarse por el estado actual, y los eventos anteriores en la serie de tiempo no tienen nada que ver con eso . Este tipo particular de "falta de memoria" se denomina propiedad de Markov.
  • Las cadenas de Markov tienen muchas aplicaciones como modelos estadísticos de procesos reales.

  • En cada paso de la cadena de Markov, el sistema puede cambiar de un estado a otro de acuerdo con la distribución de probabilidad y también puede mantener el estado actual .

  • Un cambio de estado se llama transición, y las probabilidades asociadas con diferentes cambios de estado se llaman probabilidades de transición .

  • La representación matemática de una cadena de Markov es:
    inserte la descripción de la imagen aquí

  • Dado que la probabilidad de transición de estado en un momento determinado solo depende del estado anterior, solo se requiere la probabilidad de transición entre dos estados en el sistema y se determina el modelo de esta cadena de Markov .

2. Ejemplo clásico

La cadena de Markov en la figura a continuación se utiliza para representar el modelo del mercado de valores.Hay tres estados: mercado alcista, mercado bajista y mercado estancado.

Cada estado pasa al siguiente estado con una cierta probabilidad. Por ejemplo, un mercado alcista se convierte en un estado lateral con una probabilidad de 0,025.

inserte la descripción de la imagen aquí

  • Este diagrama de transición de probabilidad de estado se puede expresar en forma de matriz.
  • Si definimos el valor de una posición P(i, j) en la matriz P como P(j|i), es decir, la probabilidad de pasar del estado i al estado j.
  • Además, los estados de mercado alcista, mercado bajista y mercado lateral se definen como 0, 1 y 2 respectivamente, por lo que obtenemos la matriz de transición de estado del modelo de cadena de Markov como:

inserte la descripción de la imagen aquí

Cuando se determina la matriz de transición de estado P, ¡se ha determinado todo el modelo del mercado de valores!

3. Resumen

  • La cadena de Markov es
    • Un proceso estocástico de transiciones de un estado a otro en el espacio de estados .
    • El proceso requiere una propiedad " sin memoria ":
      • La distribución de probabilidad del siguiente estado solo puede determinarse por el estado actual, y los eventos anteriores en la serie de tiempo no tienen nada que ver con eso .

2. Introducción a HMM

El modelo oculto de Markov (HMM) es un modelo estadístico que se utiliza para describir un proceso de Markov con parámetros desconocidos ocultos .

La dificultad es determinar los parámetros implícitos del proceso a partir de los parámetros observables. Estos parámetros se utilizan luego para análisis posteriores, como el reconocimiento de patrones .

1. Caso sencillo

Ilustremos con un ejemplo sencillo:

  • Supongamos que tengo tres dados diferentes en mi mano.
    • El primer dado es nuestro dado habitual (llámalo D6), con 6 caras, y la probabilidad de que salga cada cara (1, 2, 3, 4, 5, 6) es 1/6.
    • El segundo dado es un tetraedro (llámalo D4), y la probabilidad de que aparezca cada cara (1, 2, 3, 4) es 1/4.
    • El tercer dado tiene ocho lados (llámalo D8), y la probabilidad de que aparezca cada lado (1, 2, 3, 4, 5, 6, 7, 8) es 1/8.

inserte la descripción de la imagen aquí

  • Empezamos a tirar los dados, primero elegimos uno de los tres dados y la probabilidad de sacar cada dado es 1/3.
  • Luego lanzamos los dados y obtenemos un número, uno de 1, 2, 3, 4, 5, 6, 7, 8. Repita el proceso anterior sin parar, obtendremos una cadena de números, cada número es uno de 1, 2, 3, 4, 5, 6, 7, 8.
  • Por ejemplo, podemos obtener una serie de números (tirando los dados 10 veces): 1 6 3 5 2 7 3 5 2 4
  • Esta cadena de números se llama la cadena de estado visible .

Pero en el modelo oculto de Markov, no solo tenemos una serie de cadenas de estado visibles, sino también una serie de cadenas de estado ocultas .

  • En este ejemplo, la cadena de estados implícitos es la secuencia de dados que usa.
    • Por ejemplo, la cadena de estado implícita puede ser: D6 D8 D8 D6 D4 D8 D6 D6 D4 D8

En términos generales, la cadena de Markov mencionada en HMM en realidad se refiere a la cadena de estado oculto , porque existe una probabilidad de transición (probabilidad de transición) entre estados ocultos (dados).

  • En nuestro ejemplo, el siguiente estado de D6 es D4, y la probabilidad de D6 y D8 es 1/3. El siguiente estado de D4, D8 es D4, D6 y la probabilidad de transición de D8 también es 1/3.
  • Esta configuración es para que sea más fácil de explicar claramente al principio, pero en realidad podemos establecer la probabilidad de conversión a voluntad.
    • Por ejemplo, podemos definir que D4 no puede ser seguido por D6, la probabilidad de que D6 siga a D6 es 0.9 y la probabilidad de D8 es 0.1.
    • Este es un nuevo HMM.

Asimismo, aunque no existe una probabilidad de transición entre estados visibles, existe una probabilidad entre estados ocultos y visibles denominada probabilidad de emisión .

  • Para nuestro ejemplo, el dado de seis caras (D6) tiene una probabilidad de salida de 1/6. La probabilidad de producir 2, 3, 4, 5 y 6 también es 1/6.
  • También podemos hacer otras definiciones de probabilidades de salida. Por ejemplo, tengo un dado de seis caras que ha sido manipulado por el casino. La probabilidad de sacar 1 es 1/2 y la probabilidad de sacar 2, 3, 4, 5 y 6 es 1/10.

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

De hecho, para HMM, si se conoce de antemano la probabilidad de transición entre todos los estados ocultos y la probabilidad de salida entre todos los estados ocultos y todos los estados visibles, es bastante fácil realizar la simulación. Pero al aplicar el modelo HMM, a menudo falta parte de la información.

  • A veces sabes que hay varios tipos de dados y cuál es cada tipo de dado, pero no sabes la secuencia de dados que se lanzan;
  • A veces solo ves el resultado de tirar los dados muchas veces y no sabes el resto.

Si se utilizan algoritmos para estimar esta información faltante, se convierte en un problema muy importante. Describiré estos algoritmos en detalle más adelante.

2. Tres preguntas básicas

  1. Dado un modelo, ¿cómo calcular eficientemente la probabilidad de producir una secuencia de observaciones? En otras palabras, ¿cómo evalúa qué tan bien se ajusta su modelo a su serie de observación?
  2. Dado un modelo y una secuencia de observaciones, ¿cómo encontrar la secuencia de estados que mejor coincida con esta secuencia de observaciones? En otras palabras, ¿cómo se puede inferir el estado oculto del modelo a partir de una secuencia de observaciones?
  3. Dada una secuencia de observaciones, ¿cómo ajustar los parámetros del modelo para maximizar la probabilidad de esta secuencia? En otras palabras, ¿cómo se entrena un modelo para que describa mejor los datos observados?

Los dos primeros problemas son problemas de reconocimiento de patrones: 1) Obtener la probabilidad (evaluación) de una secuencia de estados observables según el modelo oculto de Markov; 2) Encontrar una secuencia de estados ocultos que maximice la probabilidad de que esta secuencia produzca una secuencia de estados observables (descodificación ). El tercer problema es generar un Modelo Oculto de Markov (aprendizaje) a partir de un conjunto de secuencias de estados observables.
Soluciones correspondientes a los tres problemas principales:

  1. Algoritmo de avance, algoritmo de retroceso
  2. Algoritmo de Viterbi
  3. Algoritmo Baum-Welch (aproximadamente igual al algoritmo EM)

3. Base del modelo HMM

1. ¿Qué tipo de problema requiere el modelo HMM?

Primero, echemos un vistazo a qué tipo de resolución de problemas puede usar el modelo HMM. Nuestros problemas al usar el modelo HMM generalmente tienen estas dos características:

  • 1) Nuestro problema se basa en secuencias, como series de tiempo o secuencias de estado.
  • 2) Hay dos tipos de datos en nuestro problema,
    • Un tipo de secuencia de datos es observable, es decir, la secuencia de observación;
    • El otro tipo de datos no se puede observar, es decir, la secuencia de estado oculta, denominada secuencia de estado.

Con estas dos características, este problema generalmente se puede intentar resolver con el modelo HMM. Hay muchos problemas de este tipo en la vida real.

  • Por ejemplo: Estoy escribiendo material didáctico para usted ahora. La serie de caracteres que escribo en el teclado son las secuencias de observación, y el párrafo que realmente quiero escribir es la secuencia de estado oculto. Adivina el párrafo que quiero escribir y pon el Lo más probable es que yo elija la palabra en la parte delantera. Esto se puede considerar como un modelo HMM.

  • Para dar otro ejemplo, si doy conferencias en clase, la serie de sonidos continuos que hago son las secuencias de observación, y el párrafo que realmente quiero expresar es la secuencia de estado oculto. La tarea de su cerebro es juzgar a partir de esta serie de sonidos continuos Es más probable que exprese el contenido de las palabras.

A partir de estos ejemplos, podemos encontrar que los modelos HMM pueden ser ubicuos. Sin embargo, la descripción anterior aún no es precisa, a continuación usamos símbolos matemáticos precisos para expresar nuestro modelo HMM.

2. Definición del modelo HMM

Para el modelo HMM, primero asumimos que Q es el conjunto de todos los estados ocultos posibles y V es el conjunto de todos los estados observados posibles, a saber:

  • Q = q 1 , q 2 , . . . , qNQ={q_1,q_2,...,q_N}q=q1,q2,. . . ,qnorte
    ​​
  • V = v 1 , v 2 , . . . vMV={v_1,v_2,...v_M}V=v1,v2,. . . vm
    ​​

donde N es el número de posibles estados ocultos y M es el número de todos los posibles estados observados.

Para una secuencia de longitud T, i es la secuencia de estado correspondiente, O es la secuencia de observación correspondiente, a saber:

  • yo = yo 1 , yo 2 , . . . , yo T i={i_1,i_2,...,i_T}i=i1,i2,. . . ,iT​​
  • o = o 1 , o 2 , . . . oTO={o_1,o_2,...o_T}O=o1,o2,. . . oT
    ​​

Entre ellos, cualquier estado oculto it ∈ Q i_t \in QitQ , cualquier estado de observaciónot ∈ V o_t\in VotV

El modelo HMM hace dos suposiciones muy importantes de la siguiente manera:

1) Suposición de cadena de Markov homogénea .

  • Es decir, el estado oculto en cada momento solo depende de su estado oculto anterior .

  • Por supuesto, esta suposición es un poco extrema, porque muchas veces uno de nuestros estados ocultos no solo depende del estado oculto anterior, pueden ser los dos primeros o los tres primeros.

  • Pero la ventaja de esta suposición es que el modelo es simple y fácil de resolver.

  • Si el estado oculto en el tiempo t es it = qi​ ​ i_t=q_iit=qyo​​​​, en el tiempot+1 t+1t+El estado oculto de 1 es it + 1 = qj i_{t+1}=q_jit + 1=qj, entonces la probabilidad de transición de estado HMM aij a_{ij} del tiempo t al tiempo t+1ayo jSe puede expresar como:

    • aij = P ( it + 1 = qj ∣ it = qi ) a_{ij}=P(i_{t+1}= q_j | i_t=q_i)ayo j=pag ( yot + 1=qjyot=qyo)
  • tal que aij a_{ij}ayo j​​La matriz de transición de estado A que puede formar una cadena de Markov:

    • A = [aij] N × NA=[a_{ij}]_{N \times N}A=[ unyo j]norte × norte
      ​​

2) Suposición de independencia de la observación .

  • Es decir, el estado observado en cualquier momento solo depende del estado oculto en el momento actual, que también es una suposición para simplificar el modelo.

    • Si el estado oculto en el tiempo t es = qj i_t=q_jit=qj​​​​ , y el estado de observación correspondiente es ot = vk o_t=v_kot=vkluego observe el estado vk v_k en este momentovkEn el estado oculto qj q_jqj​​La probabilidad generada es bj ( k ) b_j(k)bj( k ) , satisfaciendo:

      • bj ( k ) = PAGS ( ot = vk ∣ it = qj ) b_j(k)=P(o_t=v_k|i_t=q_j)bj( k )=pag _ _t=vkyot=qj)
    • tal que bj ( k ) b_j(k)bj( k ) puede formar la matriz de probabilidad B generada por el estado de observación:

      • B = [ bj ( k ) ] N × MB=[b_j(k)]_{N \times M}B=[ segundoj( k ) ]N × M
        ​​
    • Además, necesitamos un conjunto de distribuciones de probabilidad de estado oculto Π \Pi en el tiempo t=1pag :

      • Π = [ Π yo ] N \Pi =[\Pi_i]_NPi=[ PAGyo]norte
      • Entre ellos Π i = P ( i 1 = qi ) \Pi _i=P(i_1=q_i)Piyo=pag ( yo1=qyo)

Un modelo HMM se puede definir mediante la distribución de probabilidad inicial de estado oculto Π \PiΠ , se determinan la matriz de probabilidad de transición de estado A y la matriz de probabilidad de estado observadaB.

Π\PiΠ , A determina la secuencia de estado, B determina la secuencia de observación.

Por lo tanto, el modelo HMM puede estar compuesto por un triplete λ \lambdaλ se expresa de la siguiente manera:

  • λ = ( A , B , Π ) = \lambda =(A,B, \Pi )=yo=( Un ,B ,pag )= (secuencia de estado, secuencia de observación, distribución de probabilidad de estado inicial)

3. Un ejemplo de un modelo HMM

A continuación, usamos un ejemplo simple para describir el modelo HMM resumido anteriormente. Este es un modelo de caja y pelota.

El ejemplo proviene de "Métodos de aprendizaje estadístico" de Li Hang.

Supongamos que tenemos 3 cajas, y cada caja contiene dos tipos de bolas, rojas y blancas. Los números de bolas en estas tres cajas son respectivamente:
inserte la descripción de la imagen aquí
saque bolas de la caja de acuerdo con el siguiente método. Al principio,

  • La probabilidad de sacar una bola de la primera caja es 0.2,
  • La probabilidad de sacar una bola de la segunda caja es 0.4,
  • La probabilidad de sacar una bola de la tercera caja es 0,4.

Después de sacar la pelota una vez con esta probabilidad, devuélvela.

Luego muévase del cuadro actual al cuadro siguiente para dibujar la bola. Las reglas son:

  • Si el cuadro de sorteo de bolas actual es el primer cuadro, quédese en el primer cuadro para continuar sacando bolas con una probabilidad de 0.5, vaya al segundo cuadro para sacar bolas con una probabilidad de 0.2 y vaya al tercer cuadro con una probabilidad de 0,3 bola.
  • Si la caja de bolas actual es la segunda caja, quédese en la segunda caja para continuar sacando con una probabilidad de 0.5, vaya a la primera caja con una probabilidad de 0.3 y vaya a la tercera caja con una probabilidad de 0.2 bolas.
  • Si la caja de bolas actual es la tercera caja, permanezca en la tercera caja con una probabilidad de 0,5 y continúe sacando bolas, vaya a la primera caja con una probabilidad de 0,2 y vaya a la segunda caja con una probabilidad de 0,3 bolas.

Esto continúa hasta que se repite tres veces para obtener una secuencia de observación del color de una pelota:

  • O = {rojo, blanco, rojo}

Tenga en cuenta que en este proceso, el observador solo puede ver la secuencia de colores de la pelota, pero no puede ver de qué caja se sacó la pelota .

Luego, de acuerdo con la definición de nuestro modelo HMM anterior, nuestro conjunto de estados de observación es:

  • V={rojo, blanco}, M=2

Nuestra colección de estados ocultos es:

  • Q={Cuadro 1, Cuadro 2, Cuadro 3}, N=3

Y la longitud de la secuencia de observación y la secuencia de estado es 3.

Distribución de estado inicial Π \Pipor qué :

  • Π = ( 0.2 , 0.4 , 0.4 ) T \Pi=(0.2,0.4,0.4)^TPi=( 0 . 2 ,0 _ 4 ,0 _ 4 )T

​​La matriz de distribución de probabilidad de transición de estado A
es:

inserte la descripción de la imagen aquí

La matriz B de probabilidad de estado observada es:

inserte la descripción de la imagen aquí

4. Generación de secuencia de observación HMM

Del ejemplo anterior, también podemos abstraer el proceso de generación de secuencias de observación HMM.

  • La entrada es el modelo HMM λ = ( A , B , Π ) \lambda =(A,B,\Pi )yo=( Un ,B ,Π ) , la longitud de la secuencia de observaciónTTT

  • La salida es la secuencia de observaciones O = o 1 , o 2 , . . . o TO={o_1,o_2,...o_T}O=o1,o2,. . . oT

El proceso de generación es el siguiente:

  • 1) Generar el estado oculto i 1 i_1 según la distribución de probabilidad del estado inicial \PiΠi1

  • 2)para t de 1 a T

    • a. De acuerdo con el estado oculto, i_titEl bit de distribución de estado observado ( k ) b_{it}(k)byo t( k ) Generar estado de observaciónot o_tot
    • b. De acuerdo con el estado oculto, i_titLa distribución de probabilidad de transición de estado ait , it + 1 ai_t, i_{t+1}un yot,it + 1​Generar estado oculto it + 1 i_{t+1}it + 1
      ​​

todo o_totJuntos forman la secuencia de observación O = o 1 , o 2 , . . . o TO={o_1,o_2,...o_T}O=o1,o2,. . . oT

5. Tres problemas básicos del modelo HMM

Hay tres problemas clásicos en el modelo HMM que deben resolverse:

1) Evaluar la probabilidad de secuencia de observación: cálculo de probabilidad hacia adelante y hacia atrás

  • Es decir, el modelo dado λ = ( A , B , Π ) \lambda =(A,B,\Pi )yo=( Un ,B ,Π ) Orden de sumaO = { o 1 , o 2 , . . . o T } O=\{o_1,o_2,...o_T\}O={ o1,o2,. . . oT} , calculada en el modeloλ \lambdaLa probabilidad P(O| λ \lambdal ).
  • La solución a este problema requiere el uso de un algoritmo adelante-atrás, que es el más simple de los tres problemas del modelo HMM.

2) Problema de predicción, también conocido como problema de decodificación: algoritmo de Viterbi

  • Es decir, el modelo dado λ = ( A , B , Π ) \lambda =(A,B,\Pi )yo=( Un ,B ,Π ) Orden de sumaO = { o 1 , o 2 , . . . o T } O=\{o_1,o_2,...o_T\}O={ o1,o2,. . . oT} , encuentre la secuencia de estado correspondiente más probable bajo la condición de secuencia de observación dada.
  • La solución a este problema requiere el uso del algoritmo de Viterbi basado en programación dinámica, que es el algoritmo de complejidad media entre los tres problemas del modelo HMM.

3) Problema de aprendizaje de parámetros del modelo: algoritmo Baum-Welch (Baum-Welch) (estado desconocido), este es un problema de aprendizaje

  • Es decir, una secuencia de observación dada O = { o 1 , o 2 , . . . o T } O=\{o_1,o_2,...o_T\}O={ o1,o2,. . . oT} ,desbloquearλ = ( A , B , Π ) \lambda =(A,B,\Pi )yo=( Un ,B ,Π ) , de modo que la probabilidad condicional de la secuencia de observación bajo el modeloP ( O ∣ λ ) P(O|\lambda )P ( O λ ) máx.
  • La solución a este problema requiere el uso del algoritmo de Baum-Welch basado en el algoritmo EM, que es el más complejo de los tres problemas del modelo HMM.

En las próximas tres secciones, discutiremos estas tres preguntas.

4. Algoritmo de avance y retroceso para evaluar la probabilidad de secuencia de observación

En esta sección, nos centraremos en la solución del primer problema básico de HMM, es decir, encontrar la probabilidad de ocurrencia de la secuencia de observación dado el modelo y la secuencia de observación.

1. Repase el problema HMM 1: encuentre la probabilidad de la secuencia de observación

Primero, revisemos la Pregunta 1 del modelo HMM. El problema es este.

我们下载Parámetro del modelo HMMλ = ( A , B , Π ) \lambda =(A,B,\Pi)yo=( Un ,B ,P ) .

donde A es la matriz de probabilidades de transición de estado oculto,

B es la matriz de probabilidades de generación de estados observados,

Π\PiΠ es la distribución de probabilidad inicial del estado oculto.

Al mismo tiempo, también hemos obtenido la secuencia de observación O = { o 1 , o 2 , . . . o T } O=\{o_1,o_2,...o_T\}O={ o1,o2,. . . oT} ,

Ahora requerimos que la secuencia de observación O esté en el modelo λ \lambdaLa probabilidad condicional de ocurrencia bajo λ P ( O ∣ λ ) P(O|\lambda )PAGS ( O λ )

A primera vista, el problema es simple. Debido a que conocemos las probabilidades de transición entre todos los estados ocultos y todas las probabilidades de generación de estados ocultos a estados observados, entonces podemos resolverlo violentamente .

Podemos enumerar todas las sucesiones ocultas posibles de longitud T i = { i 1 , i 2 , . . . , i T } i=\{i_1,i_2,...,i_T\}i={ yo1,i2,. . . ,iT} , encuentre estas secuencias ocultas y secuencias de observación respectivamenteO = { o 1 , o 2 , . . . o T } O=\{o_1,o_2,...o_T\}O={ o1,o2,. . . oT} distribución de probabilidad conjuntaP ( O , i ∣ λ ) P(O,i|\lambda )P ( O ,i λ ) , por lo que podemos encontrar fácilmente la distribución marginalP ( O ∣ λ ) P(O|\lambda )PAGS ( O λ ) .


El método específico de solución de fuerza bruta es el siguiente:

  • Primero, orden arbitrario i = i 1 , i 2 , . . . , i T i={i_1,i_2,...,i_T}i=i1,i2,. . . ,iTLa probabilidad de ocurrencia es:

    • PAGS ( yo ∣ λ ) = Π yo 1 ai 1 , yo 2 ai 2 , yo 3 . . . ai T − 1 , i TP(i|\lambda )=\Pi _{i1}a_{i1,i2}a_{i2,i3}...a_{iT-1,iT}PAGS ( yo λ )=Piyo 1ayo 1 , yo 2ayo 2 , yo 3. . . ayo T 1 , yo T
      ​​
  • Para una secuencia de estado fijo i = i 1 , i 2 , . . . , i T i={i_1,i_2,...,i_T}i=i1,i2,. . . ,iT​​​​ , la secuencia de observaciones que requerimos O = o 1 , o 2 , . . . o TO={o_1,o_2,...o_T}O=o1,o2,. . . oTLa probabilidad de ocurrencia es:

    • PAGS ( O ∣ yo , λ ) = bi 1 ( o 1 ) bi 2 ( o 2 ) . . . bi T ( o T ) P(O|i,\lambda )=b_{i1}(o_1)b_{i2}(o_2)...b_{iT}(o_T)PAGS ( O yo ,yo )=byo 1( o1) segundoyo 2( o2) . . . byo T( oT)
  • Entonces la probabilidad de que O e i aparezcan juntos es:
    inserte la descripción de la imagen aquí

  • Luego calcule la distribución de probabilidad marginal, puede obtener la secuencia de observación O en el modelo λ \lambdaLa probabilidad condicional P(O| λ \lambdayo ):
    inserte la descripción de la imagen aquí

Aunque el método anterior es efectivo, será problemático si tenemos una gran cantidad de estados ocultos N. En este momento, predecimos que el estado tiene NTN^TnorteT tipos de combinaciones, la complejidad temporal del algoritmo esO (TNT) O(TN^T)O ( T FEMENINOT )orden.

Por lo tanto, para algunos modelos con muy pocos estados ocultos, podemos usar la solución de fuerza bruta para obtener la probabilidad de la secuencia de observación, pero si hay muchos estados ocultos, el algoritmo anterior consume demasiado tiempo y necesitamos encontrar otros. algoritmos simples.

El algoritmo adelante-atrás está aquí para ayudarnos a resolver este problema con una menor complejidad de tiempo.

2. Use el algoritmo directo para encontrar la probabilidad de la secuencia de observación HMM

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 usar para encontrar la probabilidad de la secuencia de observación HMM. Primero veamos cómo el algoritmo directo resuelve este problema.

2.1 Proceso de peinado

El algoritmo directo es esencialmente un algoritmo de programación dinámica, es decir, necesitamos encontrar la fórmula para la recursividad del estado local, de modo que podamos expandirnos desde la solución óptima del subproblema a la solución óptima del problema completo paso a paso.

  • En el algoritmo directo, este estado local de programación dinámica se define definiendo una "probabilidad directa".

  • ¿Qué es la probabilidad directa? De hecho, la definición es muy simple: define el estado oculto en el tiempo t como qi q_iqyo, la secuencia de estados observados es o 1 , o 2 , . . . ot o_1,o_2,...o_to1,o2,. . . otLa probabilidad de es la probabilidad hacia adelante. Grabado como:

inserte la descripción de la imagen aquí

  • Dado que es programación dinámica, tenemos que recurrir. Ahora supongamos que hemos encontrado la probabilidad directa de cada estado oculto en el tiempo t. Ahora necesitamos recurrir a la probabilidad directa de cada estado oculto en el tiempo t+1.

  • Podemos multiplicar la probabilidad de transición de estado correspondiente con base en la probabilidad directa de cada estado oculto en el tiempo t, es decir, α t ( j ) aji \alpha _t(j)a_{ji}at( j ) tieneyo _​​Es observar o 1 , o 2 , . . . ot o_1,o_2,...o_t en el tiempo to1,o2,. . . ot, y el estado oculto qj q_j en el tiempo tqj​​​​ , tiempo t+1 estado oculto qi q_iqyoLa probabilidad.

  • Si se suman las probabilidades correspondientes a todas las líneas siguientes, es decir, ∑ j = 1 N α ( j ) α ji \sum_{j=1}^{N}\alpha(j)\alpha_{ji}j = 1norteun ( j ) unyo _Es decir , o 1 , o 2 , . . . ot o_1,o_2,...o_t se observan en el tiempo to1,o2,. . . ot​​​​ , y el estado oculto qi q_i en el tiempo t+1qyoLa probabilidad de .

  • Continuar un paso, debido al estado de observación ot + 1 o_{t+1}ot + 1​​Solo depende del estado oculto qi q_i en el tiempo t+1qyo, de modo que o 1 , o 2 , . . . ot , ot + 1 o_1,o_2,...o_t,o_{t+1}inserte la descripción de la imagen aquí se observan en el tiempo t+1o1,o2,. . . ot,ot + 1​​​​ , y el estado oculto qi q_i en el tiempo t+1qyoLa probabilidad de .

  • Y esta probabilidad es exactamente la probabilidad directa del estado oculto i correspondiente al tiempo t+1, por lo que obtenemos la relación de recurrencia de la probabilidad directa de la siguiente manera:
    inserte la descripción de la imagen aquí

Nuestra programación dinámica comienza en el tiempo 1 y termina en el tiempo T, porque α T ( i ) \alpha _T(i)aT( i ) indica que la secuencia de observación en el tiempo T eso 1 , o 2 , . . . o T o_1,o_2,...o_To1,o2,. . . oT​​​​, y el estado oculto qi q_i en el tiempo TqyoLa probabilidad de , solo necesitamos sumar las probabilidades correspondientes de todos los estados ocultos, es decir, ∑ i = 1 N α T ( i ) \sum_{i=1}^{N}\alpha_T(i)yo = 1norteaT( i ) La secuencia de observación en el tiempo T se obtiene comoo 1 , o 2 , . . . ot o_1,o_2,...o_to1,o2,. . . otLa probabilidad.

2.2 Resumen del algoritmo

  • Forma: función HMMλ = ( A , B , Π ) \lambda =(A,B,\Pi )yo=( Un ,B ,Π ) , orden de visualizaciónO = ( o 1 , o 2 , . . . o T ) O=(o_1,o_2,...o_T)O=( o1,o2,. . . oT)

  • Salida: probabilidad de secuencia de observación P ( O ∣ λ ) P(O|\lambda )PAGS ( O λ )

    • 1) Calcule la probabilidad directa de cada estado oculto en el tiempo 1:inserte la descripción de la imagen aquí

    • 2) Probabilidad progresiva recursiva en el tiempo 2, 3, ... T:inserte la descripción de la imagen aquí

    • 3) Calcular el resultado final:inserte la descripción de la imagen aquí

Se puede ver a partir de la fórmula de recurrencia que la complejidad temporal de nuestro algoritmo es O (TN 2) O(TN^2)O ( T FEMENINO2 ), la complejidad temporal de la solución violenta esO (TNT) O(TN^T)O ( T FEMENINOT )es varios órdenes de magnitud menor.

3. Ejemplo de solución de algoritmo directo HMM

Aquí usamos el ejemplo anterior de la caja y la pelota para mostrar el cálculo de las probabilidades hacia adelante. Nuestro conjunto de observación es:

inserte la descripción de la imagen aquí

Nuestra colección estatal es:

inserte la descripción de la imagen aquí

Y la longitud de la secuencia de observación y la secuencia de estado es 3.

La distribución de estado inicial es:

inserte la descripción de la imagen aquí

La matriz de distribución de probabilidad de transición de estado es:

inserte la descripción de la imagen aquí

La matriz de probabilidad del estado observado es:

inserte la descripción de la imagen aquí

Secuencia de observaciones para el color de la pelota:

inserte la descripción de la imagen aquí


Siga nuestro algoritmo directo de la sección anterior. Primero calcule las probabilidades directas de los tres estados en el momento 1:

El tiempo 1 es la bola roja,

  • La probabilidad de que el estado oculto sea la casilla 1 es:
    inserte la descripción de la imagen aquí

  • La probabilidad de que el estado oculto sea la casilla 2 es:
    inserte la descripción de la imagen aquí

  • La probabilidad de que el estado oculto sea la casilla 3 es:
    inserte la descripción de la imagen aquí


Ahora podemos comenzar a recurrir, primero recursar las probabilidades hacia adelante de los tres estados en el tiempo 2:

El momento 2 es la bola blanca,

  • La probabilidad de que el estado oculto sea la casilla 1 es:
    inserte la descripción de la imagen aquí

  • La probabilidad de que el estado oculto sea la casilla 2 es:
    inserte la descripción de la imagen aquí

  • La probabilidad de que el estado oculto sea la casilla 3 es:
    inserte la descripción de la imagen aquí


Continuando con la recursión, ahora recurrimos a las probabilidades hacia adelante de los tres estados en el tiempo 3:

El tiempo 3 es la bola roja,

  • La probabilidad de que el estado oculto sea la casilla 1 es:
    inserte la descripción de la imagen aquí

  • La probabilidad de que el estado oculto sea la casilla 2 es:
    inserte la descripción de la imagen aquí

  • La probabilidad de que el estado oculto sea la casilla 3 es:
    inserte la descripción de la imagen aquí

Finalmente, encontramos la secuencia de observación: O=rojo, blanco, y la probabilidad de rojo es:

inserte la descripción de la imagen aquí

El principio del algoritmo inverso es más o menos el mismo, puedes comprobarlo tú mismo

5. Algoritmo de Viterbi que decodifica la secuencia de estados ocultos

Objetivos de aprendizaje
Conocer la secuencia de estados ocultos decodificada por el algoritmo de Viterbi
En este artículo, discutiremos la secuencia de estados ocultos decodificada por el algoritmo de Viterbi, es decir, dado el modelo y la secuencia de observación, encontrar la secuencia de estados ocultos correspondiente más probable bajo el condiciones de la secuencia de observación .

El algoritmo más utilizado para el problema de decodificación del modelo HMM es el algoritmo de Viterbi, por supuesto, existen otros algoritmos que pueden resolver este problema.

Al mismo tiempo, el algoritmo de Viterbi es un algoritmo de programación dinámica general para encontrar el camino más corto de una secuencia y también se puede utilizar para muchos otros problemas.

1. Descripción general de la resolución de la secuencia de estado oculto más probable de HMM

El problema de decodificación del modelo HMM es:

  • Modelo fijo λ = ( A , B , Π ) \lambda=(A,B,\Pi)yo=( Un ,B ,Π ) Orden de sumaO = o 1 , o 2 , . . . o TO={o_1,o_2,...o_T}O=o1,o2,. . . oT, encuentre la secuencia de estado correspondiente más probable I ∗ = i 1 ∗ , i 2 ∗ , . . . i T ∗ I^\ast ={i^\ast _1,i^\ ast _2,...i^\ast _T}I=i1,i2,. . . iT,即P ( I ∗ ∣ O ) P(I^\ast |O)P ( yoO)maximización.

Una posible solución aproximada es encontrar el estado oculto más probable it ∗ i^\ast _t de la secuencia de observación O en cada tiempo titLuego obtenga una secuencia de estado oculto aproximada I ∗ = i 1 ∗ , i 2 ∗ , . . . i T ∗ I^\ast ={i^\ast _1,i^\ast _2,...i^\ast _T }I=i1,i2,. . . iTI. No es difícil resolver esta aproximación y usar el algoritmo de avance hacia atrás para evaluar la definición de la probabilidad de observar la secuencia:

  • En un modelo dado λ \lambdaλ y secuencia de observación O, en estadoqi q_iqyo​​La probabilidad de es γ t ( i ) \gamma _t(i)Ct( i ) , esta probabilidad se puede calcular mediante el algoritmo de avance y el algoritmo de retroceso de HMM. De esta manera tenemos:
    inserte la descripción de la imagen aquí

El algoritmo de aproximación es muy simple, pero no puede garantizar que la secuencia de estados prevista como un todo sea la secuencia de estados más probable, porque algunos estados ocultos adyacentes en la secuencia de estados prevista pueden tener una probabilidad de transición de 0.

El algoritmo de Viterbi puede considerar la secuencia de estado del HMM como un todo para evitar el problema del algoritmo de aproximación.Echemos un vistazo al método del algoritmo de Viterbi para la decodificación de HMM.

2. Descripción general del algoritmo de Viterbi

El algoritmo de Viterbi es un algoritmo de decodificación general, que es un método para encontrar el camino más corto de una secuencia basado en programación dinámica.

Dado que es un algoritmo de programación dinámica, es necesario encontrar un estado local adecuado y una fórmula recursiva para el estado local. En HMM, el algoritmo de Viterbi define dos estados locales para la recursividad.

1) El primer estado parcial es el estado oculto ii en el tiempo ti todas las posibles rutas de transición de estadoi 1 , i 2 , . . . it i_1,i_2,...i_ti1,i2,. . . it​​El máximo de probabilidad en .

  • 记为 δ t ( i ) \delta _t(i) dt( yo ) :
    inserte la descripción de la imagen aquí

δ t ( i ) \delta _t(i)dtLa definición de ( i ) puede obtenerδ \deltaLa expresión recursiva de δ :

inserte la descripción de la imagen aquí

2) El segundo estado parcial se obtiene recursivamente del primer estado parcial .

  • Definimos todas las rutas de transición de estado individuales ( i 1 , i 2 , . . . , it − 1 , i ) para el estado oculto i en el tiempo t (i_1,i_2,...,i_{t-1},i)( yo1,i2,. . . ,it 1,El estado oculto del nodo t-1th en la ruta de transición con la probabilidad más alta en i ) es ψ t ( i ) \psi _t(i)pagt( yo ) ,
  • Su expresión recursiva se puede expresar como:
    inserte la descripción de la imagen aquí

Con estos dos estados locales, podemos repetir del tiempo 0 al tiempo T, y luego usar ψ t ( i ) \psi _t(i)pagt( i ) Los nodos de estado más probables anteriores registrados retroceden hasta que se encuentra una secuencia óptima de estados ocultos.

3. Resumen del proceso del algoritmo de Viterbi

Ahora resumamos el proceso del algoritmo de Viterbi:

  • Forma: función HMMλ = ( A , B , Π ) \lambda=(A,B,\Pi)yo=( Un ,B ,Π ) , orden de visualizaciónO = ( o 1 , o 2 , . . . o T ) O=(o_1,o_2,...o_T)O=( o1,o2,. . . oT)

  • Salida: La secuencia de estado oculto más probable I ∗ = i 1 ∗ , i 2 ∗ , . . . i T ∗ I^\ast ={i^\ast _1,i^\ast _2,...i^\ ast_T }I=i1,i2,. . . iT
    ​​

El proceso es el siguiente:

  • 1) Inicializar estado local:
    inserte la descripción de la imagen aquí

  • 2) Realizar programación dinámica tiempo de recursión t = 2 , 3 , . . . T t t=2,3,...Tt=2 ,3 ,... Estado local en el tiempo T :
    inserte la descripción de la imagen aquí

  • 3) Calcular el máximo δ T ( i ) \delta _T(i) en el tiempo TdT( i ) es la probabilidad de que aparezca la secuencia de estados ocultos más probable. Calcule el máximoψ t ( i ) \psi _t(i)pagt( i ) , que es el estado oculto más probable en el tiempo T.
    inserte la descripción de la imagen aquí

  • 4) Usa el estado local ψ t ( i ) \psi _t(i)pagt( i ) Comience a retroceder. Parat = T − 1 , T − 2 , . . . , 1 t=T-1,T-2,...,1t=T1 ,T2 ,. . . ,1 :
    inserte la descripción de la imagen aquí

Finalmente, la secuencia de estado oculto más probable I ∗ = i 1 ∗ , i 2 ∗ , . . . i T ∗ I^\ast ={i^\ast _1,i^\ast _2,...i^\ ast_T }I=i1,i2,. . . iT

4. Ejemplo de solución del algoritmo HMM Viterbi

A continuación, todavía usamos el ejemplo de cajas y bolas para ver la solución del algoritmo HMM Viterbi. Nuestro conjunto de observación es:

inserte la descripción de la imagen aquí

Nuestra colección estatal es:

inserte la descripción de la imagen aquí

Y la longitud de la secuencia de observación y la secuencia de estado es 3.

La distribución de estado inicial es:

inserte la descripción de la imagen aquí

La matriz de distribución de probabilidad de transición de estado es:

inserte la descripción de la imagen aquí

La matriz de probabilidad del estado observado es:

inserte la descripción de la imagen aquí

Secuencia de observaciones para el color de la pelota:

inserte la descripción de la imagen aquí

De acuerdo con nuestro algoritmo de Viterbi anterior, primero necesitamos obtener los dos estados locales correspondientes a los tres estados ocultos en el momento 1, y el estado observado es 1 en este momento:

inserte la descripción de la imagen aquí

Ahora comience a repetir los dos estados locales correspondientes a los tres estados ocultos en el momento 2. En este momento, el estado de observación es 2:
inserte la descripción de la imagen aquí
Continúe recursiendo los dos estados locales correspondientes a los tres estados ocultos en el momento 3. En este momento, el estado de observación Es 1:
inserte la descripción de la imagen aquí
Es el último momento en este momento, y comenzamos a prepararnos para retroceder. En este punto la probabilidad máxima es δ 3 ( 3 ) \delta _3(3)d3( 3 ) , de modo quei 3 ∗ = 3 i^\ast _3=3i3=3

Ya que ψ 3 ​​​​( 3 ) = 3 \psi _3(3)=3pag3( 3 )=3 , porquei 2 ∗ = 3 i^\ast _2=3i2=3 , y dado queψ 2 ( 3 ) = 3 \psi _2(3)=3pag2( 3 )=3 , porquei 1 ∗ = 3 i^\ast _1=3i1=3 . Por lo tanto, la secuencia final de estado oculto más probable es: (3,3,3).

6. Introducción al Algoritmo de Baum-Welch

1. Introducción

Problema de aprendizaje de parámetros del modelo: algoritmo Baum-Welch (Baum-Welch) (estado desconocido),

  • Es decir, una secuencia de observación dada O = { o 1 , o 2 , . . . o T } O=\{o_1,o_2,...o_T\}O={ o1,o2,. . . oT} ,desbloquearλ = ( A , B , Π ) \lambda =(A,B,\Pi )yo=( Un ,B ,Π ) , de modo que la probabilidad condicional de la secuencia de observación bajo el modeloP ( O ∣ λ ) P(O|\lambda )P ( O λ ) máx.
  • La solución más utilizada es el algoritmo Baum-Welch, que en realidad se basa en el algoritmo EM, pero en la época en que apareció el algoritmo Baum-Welch, el algoritmo EM no se ha abstraído, por lo que se denomina algoritmo Baum-Welch.

inserte la descripción de la imagen aquí

2. Principio del algoritmo de Baum-Welch

Dado que el principio del algoritmo de Baum-Welch se basa en el principio del algoritmo EM,

  • Entonces necesitamos encontrar la distribución conjunta P ( O , I ∣ λ ) P(O,I|\lambda) en el paso EP ( O ,I λ ) basado en la probabilidad condicionalP ( I ∣ O , λ ‾ ) P(I|O,\overline{\lambda})PAG ( yo O ,yo) , dondeλ ‾ \overline{\lambda}yoes el parámetro del modelo actual,
  • Luego maximice esta expectativa en el paso M para obtener un parámetro de modelo actualizado λ \lambdayo _

Luego, las iteraciones de EM se realizan de forma continua hasta que los valores de los parámetros del modelo convergen.


Echemos un vistazo al paso E primero, el parámetro del modelo actual es λ ‾ \overline{\lambda}yo​​​​, distribución conjunta P ( O , I ∣ λ ) P(O,I|\lambda)P ( O ,I λ ) basado en la probabilidad condicionalP ( I ∣ O , λ ‾ ) P(I|O,\overline{\lambda})PAG ( yo O ,yo) la expresión esperada es:

  • L ( λ , λ ‾ ) = ∑ IP ( yo ∣ O , λ ‾ ) log PAGS ( O , yo ∣ λ ) L(\lambda, \overline{\lambda}) = \sum\limits_{I}P(I |O,\overline{\lambda})logP(O,I|\lambda)L ( λ ,yo)=IPAG ( yo O ,yo) logaritmo P ( O , _ _yo λ )

En el paso M, maximizamos la fórmula anterior y luego obtenemos los parámetros del modelo actualizados de la siguiente manera:

  • λ ‾ = arg max ⁡ λ ∑ IP ( yo ∣ O , λ ‾ ) log P ( O , yo ∣ λ ) \overline{\lambda} = arg\;\max_{\lambda}\sum\limits_{I}P (E|O,\overline{\lambda})logP(O,I|\lambda)yo=un rg _máximoyoIPAG ( yo O ,yo) logaritmo P ( O , _ _yo λ )

Mediante iteraciones continuas de pasos E y pasos M, hasta que λ ‾ \overline{\lambda}yoconvergencia.

Siete, introducción de la API del modelo HMM

1. Instalación de la API:

Enlace del sitio web oficial: https://hmmlearn.readthedocs.io/en/latest/

pip3 install hmmlearn

2. Introducción a hmmlearn

hmmlearn implementa tres clases de modelos HMM, que se pueden dividir en dos categorías según si el estado de observación es continuo o discreto.

GaussianHMM y GMMHMM son modelos HMM de estado de observación continuo, mientras que MultinomialHMM es un modelo de estado de observación discreto, que también es el modelo que usamos en la serie de principios HMM.

Aquí presentamos principalmente el modelo MultinomialHMM sobre el estado discreto del que hemos estado hablando antes.

Para el modelo MultinomialHMM, es relativamente simple de usar y hay varios parámetros de uso común:

  • El parámetro "startprob_" corresponde a nuestra distribución inicial de estado oculto \PiΠ,
  • "transmat_" corresponde a nuestra matriz de transición de estado A,
  • "emissionprob_" corresponde a nuestra matriz de probabilidad de estado observada B.

3. Instancia HMM multinomial

Repasemos el MultinomialHMM con el ejemplo del que hablamos antes sobre la pelota.

import numpy as np
from hmmlearn import hmm
# 设定隐藏状态的集合
states = ["box 1", "box 2", "box3"]
n_states = len(states)

# 设定观察状态的集合
observations = ["red", "white"]
n_observations = len(observations)

# 设定初始状态分布
start_probability = np.array([0.2, 0.4, 0.4])

# 设定状态转移概率分布矩阵
transition_probability = np.array([
  [0.5, 0.2, 0.3],
  [0.3, 0.5, 0.2],
  [0.2, 0.3, 0.5]
])
# 设定观测状态概率矩阵
emission_probability = np.array([
  [0.5, 0.5],
  [0.4, 0.6],
  [0.7, 0.3]
])
# 设定模型参数
model = hmm.MultinomialHMM(n_components=n_states)
model.startprob_=start_probability  # 初始状态分布
model.transmat_=transition_probability  # 状态转移概率分布矩阵
model.emissionprob_=emission_probability  # 观测状态概率矩阵

Ahora ejecutemos el proceso de decodificación del algoritmo 3D Bitby para el problema HMM, usando la misma secuencia de observación que antes para decodificar, el código es el siguiente:

seen = np.array([[0,1,0]]).T  # 设定观测序列
box = model.predict(seen)

print("球的观测顺序为:\n", ", ".join(map(lambda x: observations[x], seen.flatten())))
# 注意:需要使用flatten方法,把seen从二维变成一维
print("最可能的隐藏状态序列为:\n"", ".join(map(lambda x: states[x], box)))

Echemos un vistazo al problema de encontrar la probabilidad de la secuencia de observación del problema 1 de HMM. El código es el siguiente:

print(model.score(seen))
# 输出结果是:-2.03854530992

Cabe señalar que la función de puntuación devuelve el valor de probabilidad logarítmica basado en el logaritmo natural. El resultado de nuestro cálculo manual en el problema HMM 1 es que la probabilidad original sin logaritmo es 0,13022. Comparar:

import math

math.exp(-2.038545309915233)
# ln0.13022≈−2.0385
# 输出结果是:0.13021800000000003

Supongo que te gusta

Origin blog.csdn.net/mengxianglong123/article/details/125309622
Recomendado
Clasificación