Modèles de Markov Cachés

Download Report

Transcript Modèles de Markov Cachés

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( S i  )
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
i1
sj
Chacun de
s1..sm aurait pu
émettre ot
sm
si
Forward

Par induction :
1( i ) i*bi ( o1 )
m

 t1( i )  t ( j )a ji *bi ( ot1 )
 j1

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 )
i1
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 ( S i | 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, S i  )
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
1i 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 ( ot1 )
t 1
j 1..2
 ( i )argm axj ( t1( 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 ( ot1 )
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(n1),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
m
i
i
M

N

1



 jk
j 1 l 1
i
jl
j 1 k 1

M ijl
N ijk
P(   ,V ) i ( 1 )* b j ( ol ) a j ,k
s jS  ol 
sk S
i
i




Entraînement de Viterbi
 Pj
M jl
N jk

P(   ,V )  j b j ( ol ) a j ,k
s jS 
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érancedu nombrede transitions de si verss j
Espérancedu nombrede 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