son que oculto modelos modelo markovianos los hmms hmm ejemplo algoritmos machine-learning computer-vision matlab hidden-markov-models

machine-learning - que - hmms



Problema en el entrenamiento del modelo de markov oculto y uso para la clasificación (2)

En lugar de responder a cada pregunta individual, permítame ilustrar cómo usar la caja de herramientas HMM con un ejemplo: el ejemplo del clima que se usa generalmente cuando se introducen modelos ocultos de markov.

Básicamente, los estados del modelo son los tres tipos posibles de clima: soleado, lluvioso y con niebla. En un día cualquiera, asumimos que el clima puede ser solo uno de estos valores. Así, el conjunto de estados HMM son:

S = {sunny, rainy, foggy}

Sin embargo, en este ejemplo, no podemos observar el clima directamente (¡aparentemente estamos encerrados en el sótano!). En cambio, la única evidencia que tenemos es si la persona que lo controla todos los días lleva un paraguas o no. En la terminología HMM, estas son las observaciones discretas:

x = {umbrella, no umbrella}

El modelo HMM se caracteriza por tres cosas:

  • Las probabilidades previas: vector de probabilidades de estar en el primer estado de una secuencia.
  • El problema de transición: matriz que describe las probabilidades de pasar de un estado del tiempo a otro.
  • El problema de emisión: matriz que describe las probabilidades de observar una salida (paraguas o no) dado un estado (clima).

A continuación, nos dan estas probabilidades o tenemos que aprenderlas de un conjunto de entrenamiento. Una vez hecho esto, podemos hacer un razonamiento, como calcular la probabilidad de una secuencia de observación con respecto a un modelo HMM (o un grupo de modelos, y elegir el más probable) ...

1) parámetros conocidos del modelo

Aquí hay un código de ejemplo que muestra cómo llenar las probabilidades existentes para construir el modelo:

Q = 3; %# number of states (sun,rain,fog) O = 2; %# number of discrete observations (umbrella, no umbrella) %# prior probabilities prior = [1 0 0]; %# state transition matrix (1: sun, 2: rain, 3:fog) A = [0.8 0.05 0.15; 0.2 0.6 0.2; 0.2 0.3 0.5]; %# observation emission matrix (1: umbrella, 2: no umbrella) B = [0.1 0.9; 0.8 0.2; 0.3 0.7];

Luego podemos muestrear un montón de secuencias de este modelo:

num = 20; %# 20 sequences T = 10; %# each of length 10 (days) [seqs,states] = dhmm_sample(prior, A, B, num, T);

por ejemplo, el quinto ejemplo fue:

>> seqs(5,:) %# observation sequence ans = 2 2 1 2 1 1 1 2 2 2 >> states(5,:) %# hidden states sequence ans = 1 1 1 3 2 2 2 1 1 1

Podemos evaluar la probabilidad logarítmica de la secuencia:

dhmm_logprob(seqs(5,:), prior, A, B) dhmm_logprob_path(prior, A, B, states(5,:))

o calcular la ruta de Viterbi (secuencia de estado más probable):

vPath = viterbi_path(prior, A, multinomial_prob(seqs(5,:),B))

2) parámetros del modelo desconocido

La capacitación se realiza utilizando el algoritmo EM, y se realiza mejor con un conjunto de secuencias de observación.

Continuando con el mismo ejemplo, podemos usar los datos generados arriba para entrenar un nuevo modelo y compararlo con el original:

%# we start with a randomly initialized model prior_hat = normalise(rand(Q,1)); A_hat = mk_stochastic(rand(Q,Q)); B_hat = mk_stochastic(rand(Q,O)); %# learn from data by performing many iterations of EM [LL,prior_hat,A_hat,B_hat] = dhmm_em(seqs, prior_hat,A_hat,B_hat, ''max_iter'',50); %# plot learning curve plot(LL), xlabel(''iterations''), ylabel(''log likelihood''), grid on

Tenga en cuenta que el orden de los estados no tiene que coincidir. Es por eso que necesitamos permutar los estados antes de comparar los dos modelos. En este ejemplo, el modelo entrenado se parece al original:

>> p = [2 3 1]; %# states permutation >> prior, prior_hat(p) prior = 1 0 0 ans = 0.97401 7.5499e-005 0.02591 >> A, A_hat(p,p) A = 0.8 0.05 0.15 0.2 0.6 0.2 0.2 0.3 0.5 ans = 0.75967 0.05898 0.18135 0.037482 0.77118 0.19134 0.22003 0.53381 0.24616 >> B, B_hat(p,[1 2]) B = 0.1 0.9 0.8 0.2 0.3 0.7 ans = 0.11237 0.88763 0.72839 0.27161 0.25889 0.74111

Hay más cosas que puedes hacer con los modelos ocultos de Markov, como la clasificación o el reconocimiento de patrones. Tendrías diferentes conjuntos de secuencias de observación que pertenecen a diferentes clases. Comienzas entrenando un modelo para cada conjunto. Luego, dada una nueva secuencia de observación, puede clasificarla calculando su probabilidad con respecto a cada modelo y predecir el modelo con la mayor probabilidad de registro.

argmax[ log P(X|model_i) ] over all model_i

Me está costando mucho entender cómo usar la caja de Toolbox de HMM Toolbox Kevin Murphy. Sería de gran ayuda si alguien que tenga experiencia con él pueda aclarar algunas cuestiones conceptuales. De alguna manera he entendido la teoría detrás de HMM, pero es confuso cómo implementarla y mencionar todos los parámetros.

Hay 2 clases por lo que necesitamos 2 HMMs.
Digamos que los vectores de entrenamiento son: class1 O1 = {4 3 5 1 2} y clase O_2 = {1 4 3 2 4}.
Ahora, el sistema tiene que clasificar una secuencia desconocida O3 = {1 3 2 4 4} como class1 o class2.

  1. ¿Qué va a pasar en obsmat0 y obsmat1?
  2. ¿Cómo especificar / sintaxis para la probabilidad de transición transmat0 y transmat1?
  3. ¿Cuáles serán los datos variables en este caso?
  4. ¿El número de estados Q = 5 ya que se usan cinco números / símbolos únicos?
  5. Número de símbolos de salida = 5?
  6. ¿Cómo menciono las probabilidades de transición transmat0 y transmat1?

No uso la caja de herramientas que mencionas, pero sí uso HTK. Hay un libro que describe la función de HTK muy claramente, disponible de forma gratuita.

http://htk.eng.cam.ac.uk/docs/docs.shtml

Los capítulos introductorios pueden ayudarlo a comprender.

Puedo tener un intento rápido de responder el # 4 en tu lista. . . El número de estados emisores está vinculado a la longitud y complejidad de sus vectores de características. Sin embargo, ciertamente no tiene que ser igual a la longitud de la matriz de vectores de características, ya que cada estado emisor puede tener una probabilidad de transición de volver a sí mismo o incluso volver a un estado anterior dependiendo de la arquitectura. Tampoco estoy seguro de si el valor que proporcionas incluye los estados no emisores al comienzo y al final de la hmm, pero estos también deben considerarse. La elección del número de estados a menudo se reduce a prueba y error.

¡Buena suerte!