Modèles de Markov Cachés Adapté de source glanées sur l’Internet :Yannis Korilis, Christian St-Jean, Dave DeBarr, Bob Carpenter, Jennifer Chu-Carroll et plusieurs autres Modèles de Markov Cachés La séquence observée est l’évidence d’une chaîne de Markov sous-jacente cachée Observations S S N P S P S Etat interne (caché) s1 s2 s1 s3 s2 s2 s1 L’émission d’un état observé n’est pas déterministe ! Chaque état caché émet, de manière aléatoire, un parmi N symboles d’un alphabet Exemple Trames sonores représentatives de trois mots différents pad bad spat Mot sous jacent signal sonore observable Composantes d’un MMC (« HMM ») Les probabilités initiales des états cachés ={i=P(si)} Le modèle de transition des états cachés L’alphabet ={s1,...,sm} décrivant les états cachés La matrice des probabilités de transitions entre eux A={aij= P(sj|si)} Le modèle d’observation des symboles émis par les états cachés L’alphabet ={o1,...,ok} des symboles émis par les si pour un HMM discret Les probabilités d’émission B={bi(ok)=P(ok|si)} On suppose généralement un processus stationnaire (les probabilités ne dépendent pas du temps) b1(.) s1 s2 A b3(.) s3 b2(.) Exemple de HMM États : ={‘Printemps’, ‘Été ’,‘Automne’, ‘Hiver’} A={aij} Symboles observables émis par chaque état ={‘N’, ‘P ’, ‘S’} B={bj(.)} : loi multinomiale Printemps N=0.1 P=0.45 S=0.45 N=0.01 P=0.13 S=0.86 Hiver 0.25 Eté 0.25 Automne 0.25 0.25 N=0.2 P=0.5 S=0.3 N=0.05 P=0.55 S=0.4 Que peut-on faire avec un HMM ? Évaluation d’un modèle proposé pour expliquer une séquence d’observations Explication d’une séquence d’observation par un modèle donné Modélisation d’un processus (caractérisation d’un HMM) Évaluation de modèle Quel HMM ={,,,A,B} est le plus probable d’avoir donné lieu à une séquence d’observations O=o1,...,on ? Il faut trouver le maximum de P(O|) : • • Calcul direct Algorithme Forward-Backward Explication d’un séquence d’observations Connaissant un HMM , quelle séquence d’états S=s1,...,sn est la plus probable d’avoir donné lieu à une séquence d’observations O=o1,...,on ? Il faut trouver le maximum de P(S|O,) : Calcul direct L’algorithme de Viterbi Modélisation (Apprentissage) Partant d’un ensemble d’observations O, comment régler les paramètres d’un HMM pour maximiser la vraisemblance de P(O|) ? L’entraînement de Viterbi L’algorithme de Baum-Welch Quelques domaines d’application Reconnaissance de formes Reconnaissance de la parole Traitement de la langue naturelle Commande automatique Traitement du signal Analyse des séquences biologiques Économie Analyse géopolitique Robotique Diagnostic Etc. Avec les SVM, les HMM sont les méthodes statistiques les plus efficaces en dehors des approches neuro-mimétiques Évaluation de modèle Étant donné un modèle HMM ={,,,A,B} et une séquence d’observations O, quelle est la probabilité que O soit dû à , P(O|) ? Supposons que O est généré par la séquence d’états Si = si(1),…,si(n) : P(Si|)=P(si(1),…,si(n)|)=i(1)*ai(1),i(2)*ai(2),i(3)*…*ai(n-1),i(n) Th. de Bayes P(O|Si ,)=P(O| si(1),…,si(n),)=bi(1)(o1)* bi(2)(o2)*…* bi(n)(on) Par conséquent : Indép. des observations P(O ) P(O Si , ) P( Si ) i Th. de Bayes i (1) * ai (1),i ( 2) * bi (1) (o1 ) * ... * ai ( n 1),i ( n ) * bi ( n 1) (on 1 ) * bi ( n ) (on ) i Si Si génère n observations, il faut 2n-1 multiplications, chacune portant sur un état possible; pour m états Complexité computationnelle : o(2n*mn) ! Évaluation de modèle : L’algorithme forward-backward De nombreuses multiplications sont répétées (portions de sous-séquences communes => Calculer P(O|) de manière incrémentale Soit t(i)=P(o1, o2…ot, Si(t)=si| ) la probabilité d’avoir O=o1,…,ot avec la dernière observation émise par l’état si , on a : m P( O ) t ( i ) bi(ot) s1 i1 sj Chacun de s1..sm aurait pu émettre ot sm si Forward Par induction : 1( i ) i*bi ( o1 ) m t1( i ) t ( j )a ji *bi ( ot1 ) j1 Probabilité que si complète la sousséquence finissant à t Pour n observations et m états, on a 2m2 multiplications à chaque étape Complexité computationnelle o(2m2n) au lieu de o(n*mn) L’algorithme forward-backward (suite) Soit t(i)=P(ot+1, ot+2…on|Si(t)=si, ) la probabilité d’observer la sousséquence ot+1,…,on en partant de l’état Si(t)=si; partant de t=1, on a : t+1(1) m P( O ) i bi ( o1 )1( i ) i1 Par induction : s1 b1(ot+1) ai,j Chacun de s1..sm aurait pu émettre o1 si sj On part toujours d’un étant initial t+1(j) bj(ot+1) bm(ot+1) Backward sm t+1(m) 1 (i ) 1 m t (i ) aijb j (ot 1 ) * t 1 (i ) j 1 Probabilité que si précède la sousséquence qui suit à t+1 Pour m état et n observations, on a 2m2 multiplications à chaque étape Complexité o(2m2n) en temps, o(m) en espace (idem pour l ’algorithme forward) Explication On veut identifier la séquence d’états Si=si(1),…,si(n) ayant la probabilité maximale d’avoir généré O=o1,...,on Il faut trouver : max P( Si | O, ) ou, de manière équivalente : max P(O, Si ) i i Observations o1 s? o2 s? … … on-1 on s? s? Explication : L’algorithme de Viterbi b1(.) max P(O, Si ) i s1 s2 A b3(.) s3 b2(.) Recherche parmi tous les chemins possibles : o(mn) ! Algorithme de Viterbi (ou règle du petit poucet ) : Chaque symbole est émis par un seul état caché La séquence d’états la plus probable pour expliquer la séquence d’observations à l’instant t dépend seulement de la séquence la plus probable à t-1 On peut trouver la séquence en procédant de proche en proche ! Algorithme de Viterbi(suite) Le séquence d’etats optimale est la somme des meilleurs segments en allant de gauche à droite d(si,t,sj,t+1)=ai,j*bj(ot+1) o1 o2 o3 on-1 on s1 s1 s1 s1 s1 s2 s2 s2 s2 s2 si si si si si sn-1 sn-1 sn-1 sn-1 sn-1 sn sn sn sn sn Algorithme de Viterbi (fin) P(o1 , o2 ,..., ot , si (t ) si ) la probabilité du meilleur Soit t (i) max i état finissant la sous-séquence o1,…,ot à l’instant t 1 (i) i * bi (o1 ) Règle d’induction: (i) max ( j ) * a * b (o ) t 1 t ji i t 1 j 1.. m On mémorise, à chaque t, l’état optimal sj menant à si au temps t+1 t 1 (i) arg max j t ( j ) * a ji j 1.. m On garde trace ainsi des n-1 meilleurs états successifs du parcours Résultat final: Prendre le chemin qui maximise (i ) => n Complexité en o(m2*n) en temps, o(m*N) en espace (un chemin par état) L’algorithme de Viterbi 1. Initialisation : Pour t=1 et 1i m, 2. Récurrence : Pour t = 2,…,n, et 1 i m , (i) i * bi (o1 ) 1 1 (i) 0 (i) max t ( j ) * a j ,i * bi (ot 1 ) t 1 j 1..m (i ) arg max j ( t 1 ( j ) * a j ,i ) t j 1..m 3. Terminaison : s(n) = argmaxi ( i ) T 4. Retour en arrière : Pour t = n-1,…,1, s(t) = Ψt+1(s(t+1)) Exemple Une personne en vacances envoie une carte postale mentionnant les activités suivantes : jour 1: plage ; jour 2 : magasinage ; jour 3 : sieste. On veut en déduire la séquence météorologique sous-jacente probable sachant que : Les conditions météorologiques suivent une chaîne de Markov à 2 états : Pluie et soleil On possède des statistiques sur le comportement des touristes selon les états Modèle HMM A= 0.7 0.3 0.4 0.6 0.4 0.3 0.6 B= 0.1 0.6 = 0.4 0.5 0.1 Transition d’état émission de symboles par les états état initial ={pluie=1, soleil=2}, ={magasinage=1, plage=2, sieste=3} Séquence d’observations : O = 2,1,3 Probabilité du meilleur chemin menant à l’état j au temps t : t ( j ) max P(o1 , o2 ,..., ot , Si (t ) s j ) I État optimal à l’instant t-1 pour aboutir à l’état j au temps t : (i ) arg max j ( t 1 ( j ) * a j ,i ) t j 1..m O 2 ,1,3 Calculs ( i ) i*bi ( o1 ) 1 ( i ) max t ( j )*a j ,i *bi ( ot1 ) t 1 j 1..2 ( i )arg max j ( t1( j )*a j ,i ) Étape 1 t j 1..m 1(1) = π1*b1(2) = 0.6*0.1 = 0.06, 1(2) = π2*b2(2) = 0.4*0.6 = 0.24, Ψ1(1) = Ψ1(2)=0 Étape 2 t=2 2(1) = maxj (1(j)*aj 1)*b1(1) = max {0.06*0.7, 0.24*0.4}*0.4 = 0.0384 => Ψ2(1) = argmaxj (1(j)*aj 1)= 2 2(2) = maxj (1(j)*aj2)*b2(1) = max{0.06*0.3, 0.24*0.6}*0.3 = 0.0432 => Ψ2(2) = 2 O 2 ,1,3 ( i ) max t ( j )*a j ,i *bi ( ot1 ) t 1 j 1..2 t=3 3(1) = maxj (2(j)*aj1)*b1(3) = max{0.0384*0.7, 0.0432*0.4}*0.5 = 0.01344 => Ψ3(1) = 1 3(2) = maxj (2(j)*aj2)*b2(3) = max{0.0384*0.3, 0.0432*0.6}*0.1 = 0.002592 => Ψ3(2) = 2 Étape 3 : s(3) = argmax {3(1), 3(2)} = 1 Étape 4 : s(2) = Ψ3(s(3)) = 1, s(1) = Ψ2(s(2)) = 2 La séquence d’états cachés la plus probable est 2,1,1, avec une vraisemblance P(O|λ) = 0.01344. Vérification par la force brute ! P(s1=i,s2=j,s3=k,o1=2,o2=1,o3=3|)=i*bi(2)*aij*bj(1)*ajk*bk(3) S πi bi aij bj ajk bk P 1,1,1 0.6 0.1 0.7 0.4 0.7 0.5 0.005880 1,1,2 0.6 0.1 0.7 0.4 0.3 0.1 0.000504 1,2,1 0.6 0.1 0.3 0.3 0.4 0.5 0.001080 1,2,2 0.6 0.1 0.3 0.3 0.6 0.1 0.000324 2,1,1 0.4 0.6 0.4 0.4 0.7 0.5 0.01344 2,1,2 0.4 0.6 0.4 0.4 0.3 0.1 0.001152 2,2,1 0.4 0.6 0.6 0.3 0.4 0.5 0.008640 2,2,2 0.4 0.6 0.6 0.3 0.6 0.1 0.002592 Caractérisation d’un HMM par apprentissage Partant d’un ensemble de séquences d’observations O={O1,...,OT}, comment ajuster =<,,,A,B> pour maximiser P(O|) ? Choix du nombre d’états (fixé, automatique (critères globaux, fusions d’états)) Choix de la fonction d’émission (loi multinomiale, normale, Student) Méthodes d’apprentissage (Viterbi, Baum-Welch, NN) Choix du nombre d’états Si on est chanceux, on peut associer une sémantique aux états. Ex : 1 Article le=0.4 la=0.4 du=0.2 0 0 Adjectif bon:0.1 optimal:0.5 grand:0.4 0 Nom modèle:0.3 ouvrier:0.1 choix:0.6 Verbe possède:0.3 permet:0.4 travaille:0.3 Choix du nombre d ’états On peut aussi partir d’observations Exemple d’un HMM continu gaussien en 2D, bi() ~ N(,) Observations Etats 1,1 2,2 3,3 Nombre de composantes dans le mélange ~ Nombre d ’états dans le HMM Entraînement de Viterbi On dispose d’un ensemble d’observations O={O1,...,OT} T Principe du max. de vraisemblance: P( ) P( i ) i 1 Max. de vraisemblance suivant les chemins de Viterbi: T P( ,V ) P( i ,V i ) i 1 - Approche moins rigoureuse + Hypothèse de Viterbi: « Tous les autres chemins ont une probabilité nulle ou négligeable » P( ) P( ,V ) + Algorithme optimal Entraînement de Viterbi bj() : loi multinomiale sur l’alphabet Rappel : P(O Si , ) i (1) * ai (1),i (2) * bi (1) (o1 ) *...* ai (n1),i (n) * bi (n) (on ) M ijl : Nombre d’émissions de ol par sj pour la séquence Si N ijk : Nombre de transitions de sj à sk pour la séquence Si i, m M j 1 l 1 m i jl m N ijk 1 i j 1 k 1 M ijl N ijk P( ,V ) i ( 1 )* b j ( ol ) a j ,k s jS ol sk S i i Entraînement de Viterbi Pj M jl N jk P( ,V ) j b j ( ol ) a j ,k s jS ol sk S N jk : Nombre de passages sj en sk pour l ’ensemble des séquences M jl : Nombre d’émissions du symbole ol par sj pour l ’ensemble des séquences Pj : Nombre de fois où sj est premier dans le chemin de Viterbi Maximiser cette formule <=> Maximiser les 3 sous-produits ˆ j Pj T , aˆ j ,k N jk , m N i 1 ji bˆ j(ol ) M jl m M i 1 il Entraînement de Viterbi 1. Choix du paramétrage initial du HMM 2. Répéter · Initialiser les compteurs N jk M jl Pj à 0 · Pour chaque séquence d’observations Oi · Calculer le chemin de Viterbi pour le HMM courant · Mettre à jour des compteurs N jk M jl Pj Fin pour · Re-estimer les paramètres du HMM avec les formules précédentes Jusqu’à stabilité des paramètres; Algorithme de Baum-Welch T i P ( ) , mais sans connaissance de chemin !! On veut toujours estimer i 1 Probabilité dans de passer par si à t et sj à t+1 pour l’a séquence observations Ok : t (i, j ) P( S k (t ) si , S k (t 1) s j O k , ) ot+1 Avec la règle de Bayes: t (i, j ) P( sk (t ) si , sk (t 1) s j , O k ) t (i, j ) P(O ) k si aij sj t (i ) * ai , j * b j (ot 1 ) * t 1 ( j ) P(O k ) t t((ii))PP((oo1t,..., ot ,osnki(t ) i,siHH) ) 1 ,..., Algorithme de Baum-Welch (2) Conséquences pour une séquence d’observations donnée : m t (i) t (i, j ) : Probabilité dans de se retrouver à l’instant t dans j 1 n 1 (i , j ) t 1 t l’état si : Espérance du nombre de transitions par sj à l’instant t n 1 t 1 t (i ) : Espérance du nombre total de passages par si => on aboutit à des estimateurs simples ... Algorithme de Baum-Welch (3) n 1 aˆi , j (i, j) t 1 n 1 t t (i) Espérance du nombre de transitio ns de s i vers s j Espérance du nombre de passages par si t 1 ˆ i 1 (i) n n ˆ j t ( j ) ot t 1 n t 1 t ( j) ˆ j t 1 t ( j )(ot ˆ j )T (ot ˆ j ) n t 1 t ( j) Formules à étendre pour T séquences ! Algorithme de Baum-Welch (fin) · Choix du paramétrage initial du HMM · Répéter · Pour chaque séquence Oi · Calculer ti ( j ) avec l ’algorithme forward · Calculer ti ( j ) avec l ’algorithme backward · Calculer ti ( j ) · Calculer ti ( j ) · Fin pour · Ré estimer les paramètres du HMM avec les formules précédentes · Jusqu ’à stabilité des paramètres; Croissance monotone de la vraisemblance => optimum local