Actualmente estoy usando el entrenamiento de Viterbi para un problema de segmentación de imágenes. Quería saber cuáles son las ventajas / desventajas de usar el algoritmo Baum-Welch en lugar del entrenamiento de Viterbi.
Actualmente estoy usando el entrenamiento de Viterbi para un problema de segmentación de imágenes. Quería saber cuáles son las ventajas / desventajas de usar el algoritmo Baum-Welch en lugar del entrenamiento de Viterbi.
Respuestas:
El algoritmo de Baum-Welch y el algoritmo de Viterbi calculan cosas diferentes.
Si conoce las probabilidades de transición para la parte oculta de su modelo, y las probabilidades de emisión para las salidas visibles de su modelo, entonces el algoritmo de Viterbi le brinda la secuencia completa más probable de estados ocultos condicionales tanto a sus salidas como a la especificación de su modelo.
El algoritmo de Baum-Welch le brinda tanto las probabilidades de transición ocultas más probables como el conjunto más probable de probabilidades de emisión dados solo los estados observados del modelo (y, generalmente, un límite superior en el número de estados ocultos). También obtienes los puntos de mayor probabilidad "puntiagudos" en los estados ocultos, que a menudo es ligeramente diferente de la secuencia oculta única que es más probable en general.
Si conoce su modelo y solo quiere los estados latentes, entonces no hay razón para usar el algoritmo Baum-Welch. Si no conoce su modelo, no puede usar el algoritmo de Viterbi.
Editado para agregar: Ver el comentario de Peter Smit; Hay cierta superposición / vaguedad en la nomenclatura. Un poco de lectura me llevó a un capítulo de Luis Javier Rodríguez e Inés Torres en "Reconocimiento de patrones y análisis de imágenes" (ISBN 978-3-540-40217-6, pp 845-857) que discute las compensaciones de velocidad versus precisión de Los dos algoritmos.
Brevemente, el algoritmo de Baum-Welch es esencialmente el algoritmo de Expectación-Maximización (EM) aplicado a un HMM; como un algoritmo estricto de tipo EM, está garantizado que convergerá al menos a un máximo local, por lo que para problemas unimodales encuentre el MLE. Sin embargo, requiere dos pases sobre sus datos para cada paso, y la complejidad se vuelve muy grande en la longitud de los datos y el número de muestras de entrenamiento. Sin embargo, terminas con la probabilidad condicional completa de tus parámetros ocultos.
El algoritmo de entrenamiento de Viterbi (en oposición al "algoritmo de Viterbi") se aproxima al MLE para lograr una ganancia de velocidad a costa de la precisión. Segmenta los datos y luego aplica el algoritmo de Viterbi (como lo entendí) para obtener la secuencia de estado más probable en el segmento, luego usa esa secuencia de estado más probable para reestimar los parámetros ocultos. Esto, a diferencia del algoritmo de Baum-Welch, no proporciona la probabilidad condicional completa de los parámetros ocultos, y por lo tanto termina reduciendo la precisión y ahorrando un tiempo de cálculo significativo (el capítulo informa de 1 a 2 órdenes de magnitud).
Adelante-atrás se usa cuando quieres contar 'cosas invisibles'. Por ejemplo, cuando se usa EM para mejorar un modelo a través de datos no supervisados. Creo que el artículo de Petrov es un ejemplo. En la técnica en la que estoy pensando, primero entrena un modelo con datos anotados con anotaciones bastante burdas (por ejemplo, una etiqueta para 'Verbo'). Luego se divide arbitrariamente la masa de probabilidad para ese estado en dos cantidades ligeramente desiguales, y se vuelve a entrenar, corriendo hacia adelante y hacia atrás para maximizar la probabilidad redistribuyendo la masa entre los dos estados.