cours 5 formule de bayes programmation dynamique automates à poids algorithme "avant"...

23
Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de Viterbi

Upload: alaina-martins

Post on 04-Apr-2015

109 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Cours 5

Formule de Bayes

Programmation dynamique

Automates à poids

Algorithme "avant"

n-grammes

Modèles de Markov

Modèles de Markov cachés

Algorithme de Viterbi

Page 2: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Le modèle du canal bruité

Étiquetage lexicalOn connaît les tokens, on veut deviner les étiquettesCanal bruitéUne information inconnue vient d'une source et passe par un

canal de communication bruitéOn obtient une autre information (observation o)On veut deviner l'information originale sCorrection orthographiqueInformation originale : le texte correctObservation : le texte avec les fautesOn veut deviner le texte correct

Page 3: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Formule de Bayes

P(s|o)probabilité que l'information originale soit s sachant que l'observation est ovaleur : entre 0 et 1

argmaxsS P(s|o)la valeur de sS pour laquelle P(s|o) est maximal

P(s|o) P(o) = P(o|s) P(s)formule de Bayes

argmaxsS P(s|o) = argmaxsS P(o|s) P(s) /P(o)

= argmaxsS P(o|s) P(s)car P(o) ne dépend pas de s

Page 4: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Exemple : correction orthographique

e mot incorrect c mot correct

On veut argmaxcC P(c|e) = argmaxcC P(e|c) P(c)On calcule P(e|c) P(c) pour tous les c proches de eP(c)Corpus d'apprentissage avec des mots correctsP(c) = nb_occ(c)/NN nombre de mots dans le corpusP(e|c)Corpus d'apprentissage avec erreursOn classe les erreurs en suppressions, insertions, substitutions et

transpositionsOn compte le nombre d'erreurs pour chaque lettre ou paire de

lettresOn en déduit une approximation de la probabilité de chaque erreur

Page 5: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Distance d'édition

Dans le modèle précédent, pour simplifier le calcul de P(e|c), on suppose qu'il y a une seule erreur par mot

Il peut y avoir plusieurs erreurs par mot

Distance d'édition entre c et e

nombre minimal d'opérations (suppressions, insertions, substitutions) nécessaires pour passer de c à e

Exemple : la distance entre plouc et pneu est 3

plouc pnouc pneuc pneu

Si la probabilité d'une erreur est p et s'il y a 3 erreurs, une approximation de P(e|c) est p3

Page 6: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Programmation dynamique

Algorithme de calcul de la distance d'éditionSi pneuc fait partie d'un chemin minimal de plouc à pneu, alors ce

chemin doit commencer par un chemin minimal de plouc à pneuc

Matrice de distancescuol 2 1 1 2 3p 1 0 1 2 3# 0 1 2 3 4

# p n e usource : plouc cible : pneu

Page 7: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Programmation dynamiquedistance[i,j] = distance minimale entre les i premiers caractères de la

source et les j premiers caractères de la cible

c 5 4 4 4 3

u 4 3 3 3 2

o 3 2 2 2 3

l 2 1 1 2 3

p 1 0 1 2 3

# 0 1 2 3 4

# p n e u

distance[i, j] := min(distance[i-1,j]+cost_inst(cible[i]),

distance[i-1,j-1]+cost_subst(source[j],cible[i]),

distance[i,j-1]+cost_suppr(source[j]))

Page 8: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Programmation dynamiqueCalculer les valeurs de distance[i,j] dans un certain ordre :

distance[i-1,j], distance[i-1,j-1] et distance[i,j-1] doivent être disponibles quand on calcule distance[i,j]

c 5 4 4 4 3

u 4 3 3 3 2

o 3 2 2 2 3

l 2 1 1 2 3

p 1 0 1 2 3

# 0 1 2 3 4

# p n e u

Page 9: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Automates à poidsUn automate des erreurs sur le mot pneu (à partir d'un corpus

d'apprentissage ou d'un modèle de causes d'erreurs)

Le poids représente la probabilité qu'on passe par cette transition quand on sort de cet état

# p n e u0,9 0,8 0,095 0,9

m0,05 b0,05 r i

0,05 0,15 0,003

0,0020,1

1 1 1

Page 10: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Calculer la probabilité d'une séquenceApplication : calcul de P(e|c) pour la correction orthographiqueUne séquence e correspond à un ou plusieurs chemins de l'automateOn fait la somme des probabilités correspondant à ces cheminsPour chaque chemin, on fait le produit des poidsAlgorithme "avant" (forward algorithm)

# p n e u0,9 0,8 0,095 0,9

m0,05 b0,05 r i

0,05 0,15 0,003

0,002 0,11 1 1

Page 11: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Algorithme "avant"Programmation dynamique

Source : les états de l'automate à poids

Cible : l'observation e

prob[s,j] : probabilité d'observer les j premiers mots de e en suivant un chemin de l'automate allant jusqu'à l'état s

prob[s,j] = q prob[q,j-1]aqsbsj

aqs : poids de la transition de l'état q à l'état s

bsj vaut 1 si l'état s correspond à ej, 0 sinon

Les états de l'automate à poids doivent être classés de telle sorte que toutes les sources des transitions entrant dans s soient avant s

Page 12: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Algorithme "avant"prob[s,j] = q prob[q,j-1]aqsbsj

i 0 0 0 0 0

u 0 0 0 0 a#mamnanraru

r 0 0 0 a#mamnanr

e 0 0 0 0 0b 0 0 0 0 0

n 0 0 a#mamn 0 0

m 0 a#m 0 0 0p 0 0 0 0 0# 1 0 0 0 0

# m n r u

Résultat : prob[u,4] = a#mamnanraru = 0,0001

Page 13: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

n-grammesOn cherche à deviner un token en connaissant les précédents

P(mk|m1m2...mk-1) probabilité de mk après m1m2...mk-1

On se limite aux n-1 tokens précédents : P(mk|mk-n+1...mk-1)

On utilise des statistiques sur les suites de n tokens (n-grammes)

On fait les statistiques à partir d'un corpus (apprentissage supervisé)

n = 2 (bigrammes) : après le, bain est plus probable que objets

P(bain|le) > P(objets|le)

P(mk|mk-1) = nb_occ(mk-1mk)/nb_occ(mk-1)

n = 3 (trigrammes) : après dans le, bain est plus probable que calculer

P(bain|dans le) > P(calculer|dans le)

P(mk|mk-2mk-1) = nb_occ(mk-2mk-1mk)/nb_occ(mk-2mk-1)

Page 14: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

n-grammesProbabilité d'une séquence de tokens avec un modèle trigramme

P(m1m2...mk-1mk) = 1ik P(mi|mi-2mi-1)

Les probabilités sont souvent très faibles

Les produits de plusieurs probabilités encore plus

On utilise les logarithmes des probabilités

On additionne au lieu de multiplier

Plus n est élevé :

- plus les probabilités sont faibles

- plus les n-grammes sont nombreux (exponentiel)

- plus la prédiction est efficace

Page 15: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

n-grammesGénération aléatoire avec un modèle n-grammeOn couvre l'espace de probabilités [0,1] avec tous les n-grammes

(chacun occupe un espace proportionnel à sa probabilité)On choisit un nombre aléatoirement entre 0 et 1 et on écrit le n-

gramme qui contient ce nombrePour choisir le mot suivant, on couvre [0,1] avec tous les n-grammes

qui commencent par m2m3...mn et on en choisit un aléatoirementetc.Modèle unigramme de ShakespeareTo him swallowed confess near both. Which. Of save on trail for are

ay device and rote life haveModèle bigramme de ShakespeareWhat means, sir. I confess she? then all sorts, he is trim, captain.

Page 16: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

n-grammesModèle trigramme de ShakespeareSweet prince, Falstaff shall die. Harry of Monmouth's grave.Modèle 4-gramme de ShakespeareKing Henry. What! I will go seek the traitor Gloucester. Exeunt some

of the watch. A great banquet serv'd in;Modèle bigramme du Wall Street JournalLast December through the way to preserve the Hudson corporation

N.B.E.C. Taylor would seem to complete the major central planners one point five percent of U.S.E. has already old M.X. corporation of living on information such as more frequently fishing to keep her

Modèle trigramme du Wall Street JournalThey also point to ninety nine point six billion dollars from two

hundred four oh six three percent of the rates of interest stores as Mexicon and Brazil on market conditions.

Page 17: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Modèle de MarkovModèle de probabilités dans lequel la probabilité de mk ne dépend que

des n éléments qui précèdent (modèle de Markov d'ordre n)

P(mk|m1m2...mk-1) = P(mk|mk-n...mk-1)

On le représente par un automate à poids

Chaque état de l'automate correspond à un n-gramme

Le poids de la transition de m1m2...mn à m2m3...mn+1 est P(mn+1| m1m2...mn)

Un modèle d'ordre n correspond donc à un modèle n+1-gramme

Page 18: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Un modèle de Markov d'ordre 1

1

.4

1

.3.3

.4

.6 1

.6

.4

te

ha p

i

Page 19: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Modèle de Markov cachéLes observations o sont distinctes des états s de l'automate

La probabilité de o ne dépend que de l'état courant :

P(o|s) probabilité d'observer o quand on est dans l'état s

P(s|q) probabilité de passer dans l'état s quand on est dans l'état q

Pour une suite d'états :

P(s1s2...sn) = P(s1)P(s2|s1)P(s3|s2)...P(sn|sn-1)

Pour une suite d'états et d'observations :

P(o1o2...on|s1s2...sn,) = P(o1|s1)P(o2|s2)...P(on|sn)

Page 20: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Application à l'étiquetageOn recherche l'étiquette s de race pour laquelle P(TO s|to race) est

maximale

argmaxsS P(TO s|to race) = argmaxsS P(to race|TO s) P(TO s)

= argmaxsS P(race|s) P(s|TO)

s = NN

P(race|NN) P(NN|TO) = 0,00041 * 0,021 = 0,000007

s = VB

P(race|VB) P(VB|TO) = 0,00003 * 0,34 = 0,00001

Conclusion

L'étiquette correcte de race dans to race est probablement VB

Page 21: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Exemple bigramme

# DT NNVB

P(DT|#)

P(NN|DT) P(VB|NN)

P(VB|DT)

P(the|DT)

P(NN|NN)

P(can|VB)P(smells|VB)

P(can|NN)P(smells|NN)

Page 22: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Application à l'étiquetageLes observations sont les tokens du texte

On veut argmaxsS P(s|m) où m est la séquence de tokens :

argmaxsS P(s|m) = argmaxsS P(m|s) P(s)

= argmaxsS 1ikP(mi|si) 1ikP(si|si-n+1...si-1)

On estime ces valeurs à l'aide d'un corpus étiqueté (apprentissage supervisé) :

P(mi|si) = nb_occ(mi, si)/nb_occ(si)

P(si|si-n+1...si-1) = nb_occ(si-n+1...si-1si)/nb_occ(si-n+1...si-1)

Pour trouver la meilleure valeur de s : algorithme de Viterbi

Page 23: Cours 5 Formule de Bayes Programmation dynamique Automates à poids Algorithme "avant" n-grammes Modèles de Markov Modèles de Markov cachés Algorithme de

Algorithme de ViterbiProgrammation dynamique

Source : les états du modèle de Markov

Cible : l'observation m

prob[s,j] : probabilité maximale d'observer les j premiers mots de m en suivant un chemin de l'automate allant jusqu'à l'état s

prob[s,j] = maxq (prob[q,j-1]aqsbsj)

aqs : P(s|q)

bsj : P(mj|s)

Une fois la matrice remplie, on retrouve un chemin qui a donné la probabilité maximale dans la dernière colonne et on en déduit les états correspondants