Modelo oculto de Markov
De Wikipedia, la enciclopedia libre
Un modelo oculto de Markov o HMM (por sus siglas del inglés, Hidden Markov Model) es un modelo estadístico en el que se asume que el sistema a modelar es un proceso de Markov de parámetros desconocidos. El objetivo es determinar los parámetros desconocidos (u ocultos, de ahí el nombre) de dicha cadena a partir de los parámetros observables. Los parámetros extraídos se pueden emplear para llevar a cabo sucesivos análisis, por ejemplo en aplicaciones de reconocimiento de patrones. Un HMM se puede considerar como la red bayesiana dinámica más simple.
En un modelo de Markov normal, el estado es visible directamente para el observador, por lo que las probabilidades de transición entre estados son los únicos parámetros. En un modelo oculto de Markov, el estado no es visible directamente, sino que sólo lo son las variables influídas por el estado. Cada estado tiene una distribución de probabilidad sobre los posibles símbolos de salida. Consecuentemente, la secuencia de símbolos generada por un HMM proporciona cierta información acerca de la secuencia de estados.
Los modelos ocultos de Markov son especialmente aplicados a reconocimiento de formas temporales, como reconocimiento del habla, de escritura manual, de gestos o bioinformática.
Tabla de contenidos |
[editar] Historia
Los modelos ocultos de Markov fueron descritos por primera vez en una serie de artículos estadísticos por Leonard E. Baum y otros autores en la segunda mitad de la década de 1960. Una de las primeras aplicaciones de HMMs fue reconocimiento del habla, comenzando en la mitad de la década de 1970.[1]
En la segunda mitad de la década de 1980, los HMMs comenzaron a ser aplicados al análisis de secuencias biológicas, en particular de DNA. Desde entonces, se han hecho ubicuos en el campo de la bioinformática.[2]
[editar] Arquitectura de un modelo oculto de Markov
El diagrama que se encuentra más abajo muestra la arquitectura general de un HMM. Cada óvalo representa una variable aleatoria que puede tomar determinados valores. La variable aleatoria x(t) es el valor de la variable oculta en el instante de tiempo t. La variable aleatoria y(t) es el valor de la variable observada en el mismo instante de tiempo t. Las flechas indican dependencias condicionales.
Del diagrama queda claro que el valor de la variable oculta x(t) (en el instante t) solo depende del valor de la variable oculta x(t − 1) (en el instante t − 1). A esto se lo llama la propiedad de Markov. De forma similar, el valor de la variable observada y(t) solo depende del valor de la variable oculta x(t) (ambas en el instante t).
[editar] Probabilidad de una secuencia observada
La probabilidad de observar la secuencia de longitud L está dada por
donde la sumatoria se extiende sobre todas las secuencias de nodos ocultos El cálculo por fuerza bruta de P(Y) es impráctico para la mayoría de los problemas reales, dado que el número de secuencias de nodos ocultos será extremadamente alto es tal caso. Sin embargo, el cálculo puede acelerarse notoriamente usando un algoritmo conocido como el procedimiento de avance-retroceso.[3]
[editar] Definición formal de un Modelo Oculto de Markov
Una notación habitual de un MOM es la representación como una tupla (Q,V,π,A,B):
- El conjunto de estados . El estado inicial se denota como qt. En el caso de la etiquetación categorial, cada valor de t hace referencia a la posición de la palabra en la oración.
- El conjunto V de posibles valores observables en cada estado. M es el número de palabras posibles y cada vk hace referencia a una palabra diferente.
- Las probabilidades iniciales π = {πi}
- El conjunto de probabilidades A = {aij} de transiciones entre estados.
- aij = P(qt = j | qt − 1 = i), es decir, aij es la probabilidad de estar en el estado j en el instante t si en el instante anterior t − 1 se estaba en el estado i.
- El conjunto de probabilidades B = {bj(vk)} de las observaciones.
- bj(vk) = P(ot = vk | qt = j), es decir, la probabilidad de observar vk cuando se está en el estado j en el instante t.
La secuencia de observables se denota como un conjunto .
[editar] Uso de modelos ocultos de Markov
Existen tres problemas canónicos asociados con HMMs:
- Dados los parámetros del modelo, compútese la probabilidad de una secuencia de salida en particular. Este problema se resuelve con el algoritmo de avance-retroceso.
- Dados los parámetros del modelo, encuéntrese la secuencia más probable de estados ocultos que puedan haber generado una secuencia de salida dada. Este problema se resuelve con el algoritmo de Viterbi.
- Dada una secuencia de salida o un conjunto de tales secuencias, encuéntrese el conjunto de estados de transición y probabilidades de salida más probables. En otras palabras, entrénense a los parámetro del HMM dada una secuencia de datos. Este problema se resuelve con el algoritmo de Baum-Welch.
[editar] Ejemplo
Imagínese que tiene un amigo que vive lejos y con quien habla a diario por teléfono acerca de lo que hizo durante el día. A su amigo le interesan tres actividades: caminar por la plaza, salir de compras y limpiar su departamento. Lo que su amigo hace depende exclusivamente del estado del tiempo en ese día. Usted no tiene información clara acerca del estado del tiempo donde su amigo vive, pero conoce tendencias generales. Basándose en lo que su amigo le dice que hizo en el día, usted intenta adivinar el estado del tiempo.
Supóngase que el estado del tiempo se comporta como una cadena de Markov discreta. Existen dos estados, "Lluvioso" y "Soleado", pero usted no los puede observar directamente, es decir, están ocultos. Existe también una cierta posibilidad de que su amigo haga una de sus actividades cada día, dependiendo del estado del tiempo: "caminar", "comprar" o "limpiar". Dado que su amigo le cuenta sus actividades del día, esas son las observaciones. El sistema completo es un modelo oculto de Markov.
Usted conoce las tendencias generales del tiempo en el área y lo que a su amigo le gusta hacer. En otras palabras, los parámetros del HMM son conocidos. Pueden escribirse usando el lenguaje de programación Python:
estados = ('Lluvioso', 'Soleado') observaciones = ('caminar', 'comprar', 'limpiar') probabilidad_inicial = {'Lluvioso': 0.6, 'Soleado': 0.4} probabilidad_transicion = { 'Lluvioso' : {'Lluvioso': 0.7, 'Soleado': 0.3}, 'Soleado' : {'Lluvioso': 0.4, 'Soleado': 0.6}, } probabilidad_emision = { 'Lluvioso' : {'caminar': 0.1, 'comprar': 0.4, 'limpiar': 0.5}, 'Soleado' : {'caminar': 0.6, 'comprar': 0.3, 'limpiar': 0.1}, }
En esta porción de código, probabilidad_inicial
representa el estado en el que usted cree que se encuentra el HMM la primera vez que su amigo lo llama (es decir, sabe que es un poco más probable que esté lluvioso). La distribución de probabilidades que se usó aquí no es la de equilibrio, que es (dadas las probabilidades de transición) aproximadamente {'Lluvioso': 0.571, 'Soleado': 0.429}
. La probabilidad_transicion
representa el cambio del tiempo en la cadena de Markov por detrás del modelo. En este ejemplo, hay un 30% de probabilidad de que mañana esté soleado si hoy llovió. La probabilidad_emision
representa con cuanta probabilidad su amigo realiza una actividad determinada cada día. Si llueve, hay un 50% de probabilidad de que esté limpiando su departamento; si hay sol, hay un 60% de probabilidades de que haya salido a caminar.
[editar] Aplicaciones de modelos ocultos de Markov
- Criptoanálisis
- Reconocimiento del habla, de gestos y de movimientos corporales, reconocimiento óptico de caracteres
- Traducción automática
- Musical score following[4]
- Bioinformática y Genómica
- predicción de regiones que codifican proteínas dentro de genomas
- modelado de familiar de secuencias de proteína o ADN relacionado
- predicción de elementos de estructura secundarios de secuencias primarias de proteína
[editar] Notas
[editar] Véase también
- Andrei Markov
- Algoritmo de Baum-Welch
- Inferencia bayesiana
- Estimación estadística
- Algoritmo de Viterbi
- Modelo oculto de Markov jerárquico
- Modelo oculto de Markov por capas
- Modelo oculto de semi-Markov
- Modelo de Markov de orden variable
[editar] Enlaces externos
- Información general de los HMM
- Hidden Markov Model (HMM) Toolbox para Matlab (por Kevin Murphy)
- Hidden Markov Model Toolkit (HTK) (un toolkit portable para construcción y manipulación de modelos ocultos de Markov)
- Hidden Markov Models (presentación con matemática básica)
- GHMM Library (página inicial del proyecto GHMM Library)
- Jahmm Java Library (biblioteca Java y aplicaciones gráficas asociadas)
- Tutorial paso a paso de HMMs (University of Leeds)
- Software para modelos de Markov Models y procesos (TreeAge Software)
- Hidden Markov Models (por Narada Warakagoda)
- HMM y otros programas estadísticos (Implementación de algoritmos de HMMs en C)