Rapport du TP1Problème Inverse Algorithme de Viterbi Doriano-Boris POUGAZA Dirigé par le Prof. Bernard CHALMOND Modélisation Analyse des DOnnées et Calcul Scientique 20 décembre 2007 Table des matières 0.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0.2 Objectif et motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0.2.1 Cadre du TP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0.3 Implémentation de l'algorithme de Viterbi . . . . . . . . . . . . . . . . . . . . . 3 0.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 i 0.1 Introduction Dans ce TP nous cherchons à mettre en évidence un algorithme écace et rapide en temps de calcul permettant de faire une estimation bayésienne. Cet algorithme dit de Viterbi, du nom d'Andrew J. Viterbi qui l'a développé, permet de corriger les erreurs survenues lors d'une transmission à travers un canal bruité (dans une certaine mesure). Son utilisation s'appuie sur la connaissance du canal bruité (la probabilité qu'une information ait été modiée en une autre) et permet de simplier radicalement la complexité de la recherche du plus probable message d'origine(d'exponentielle, cette complexité devient linéaire). Nous n'exposerons pas sur la complexité de l'algorithme. 0.2 Objectif et motivation L'algorithme de Viterbi est utilisé dans les cas où le processus est modélisable comme une chaîne de Markov discrète à états nis. Son objectif est de trouver la séquence d'états la plus probable ayant produit la séquence mesurée. → − On rappelle qu'une chaîne de Markov ni en temps discret est une séquence X = (X1 , X2 , ..., XT ) de variables aléatoires. Les Xt prennent leurs valeurs dans l'espace d'état S = (s1 , s2 , ..., sN ), et ne dépendent que de Xt−1 seul. Il en découle les deux propriétés suivantes : P (Xt = sk |X1 , X2 , X3 , . . . , Xt−1 ) = P (Xt = st |Xt−1 ) = P (X2 = st |X1 )stationnaire, (1) (2) où sk est un état quelconque du processus et P la distribution de probabilité sur les états ; la valeur Xt étant l'état du processus au moment t. 0.2.1 Cadre du TP → − En pratique la séquence X n'est pas observable. On observe plutôt une variable aléatoire Yt qui → − peut être vue comme une "dégradation" de Xt . On dit alors que X est une chaine de Markov cachée (HMM, Hidden Markov Model). Problème → − → − Nous cherchons à retrouver le chemin X = (X1 , X2 , ..., Xn ) à partir de Y = (Y1 , Y2 , ..., Yn ). → − → − Le problème étant alors de faire une estimation de X , à partir de Y . On ferra alors : − → − b = ArgMax P (→ X X | Y ). − → X 1 (3) b? Alors comment calculer X On voit clairement le problème auquel on ferra face en essayant d'estimer toutes les congurations possibles. En exemple pour T = 100 et N = 3, le nombre de congurations est de 2100 . La proposition ingénieuse fournit par l'algorithme de Viterbi permet de trouver la séquence d'état la plus probable et dévie ainsi le problème non praticable qui consistait à examiner tous les chemins. Sachant que → − → − → − → − P (X , Y ) P (X | Y ) = (4) → − , P(Y ) → − → − et du fait que P ( Y ) est indépendante de X alors l'équation (3) peut être réecrite de la forme : h − → − → − i b = ArgMax P (→ X Y | X )P ( X) (5) − → X {z } | − → PY ( X ) → − En fait le maximum ne dépend pas de l'expression en Y . → − En utilisant la formule de Kolmogorov et en notant que X est une chaîne de Markov, on a : n Y → − → − P ( Y |X ) = P (Yt = yt |Xt = xt ), (6) t=1 → − PY ( X ) = ( n Y n Y P (yt |xt ))( P (xt |xt−1 ))P (x1 ), (7) t=2 t=1 n Y → − PY ( X ) = P (y1 |x1 )(P (x1 )( (P (yt |xt P (xt |xt−1 ), (8) t=2 Une expression particulière est utilsée pour l'algorithme de Viterbi, un termex1 un termex1 , x2 → − q x2 , x3 PY ( X ) = q x3 , x4 ... un termexn−1 , xn (9) → − PY ( X ) = f1 (x1 )f2 (x1 , x2 )f3 (x2 , x3 )f4 (x3 , x4 )...fn (xn−1 , xn ). (10) → − Nous allons utiliser la forme (10) pour l'implémentation, en considérant log PY ( X ), et nalement b , on aura à maximiser la fonction : pour trouver X 2 → − → − L( X ) = log PY ( X ) (11) = log(P (y1 |x1 )(P (x1 )) + n X log(P (yt |xt P (xt |xt−1 ). (12) t=2 Nous avons donc la forme suivante à maximiser : n X → − L( X ) = L1 (x1 ) + Lt (xt , xt−1 ). (13) t=2 0.3 Implémentation de l'algorithme de Viterbi → − On implémente la recherche du maximum de L( X , avec MATLAB dans le où cas n=3 b = Arg Max X − → L(x1 , x2 , x3 ) X =(x1 ,x2 ,x3 ) %Longueur de la chaine de Markov %*************************** n = 3; %Dimension des valeurs %******************* p = 2; %Initialisation de la fonction L ( en faisant un choix arbitraire): %****************************************************************** L1(1) = 10; L1(2) = 20; L2(1,1) = 11; L2(1,2) = 12; L2(2,1) = 21; L2(2,2) = 22; L3=L2; for x1 = 1:p for x2 = 1:p for x3 = 1:p L(x1,x2,x3) = L1(x1) + L2(x1,x2) + L3(x2,x3); end end end 3 (14) %Niveau 1: %********* for x2 = 1:p for x1 = 1:p Lrond1(x1,x2) = L1(x1) + L2(x1,x2); end end %max1 = l(x1chap(x2),x2) = lchap(x2): %************************************* x1chap = []; for x2 = 1:p [max1,x1_chap(x2)]=max(Lrond1(:,x2)); Lrond1_chap(x2)=Lrond1(x1_chap(x2),x2); end x1chap =max(x1): %***************** x1chap = [x1chap,x1_chap]; %Niveau2: %******** for x3 = 1:p for x2 = 1:p Lrond2(x2,x3) = L3(x2,x3) + Lrond1_chap(x2); end end %max2 = lchap(x2chap(x3),x3) = lchap(x3): %**************************************** x2chap = []; for x3 = 1:p [max2,x2_chap(x3)]=max(Lrond2(:,x3)); Lrond2_chap(x3)=Lrond2(x2_chap(x3),x3); end %x2chap = max(x2): %***************** x2chap = [x2chap,x2_chap]; x3chap = []; for x3 = 1:p end Lrond3(x2chap(x3),x3) = Lrond2(x2chap(x3),x3); [max3,x3_chap(x3)]=max(Lrond3(:,x3)); Lrond3_chap(x3)=Lrond3(x3_chap(x3),x3); 4 x3chap = [x3chap,x3_chap]; 0.4 Conclusion Une des applications phares de l'algorithme est aussi l'estimation de la séquence d'états (cachés) la plus probable ayant été générée par un modèle de Markov caché dans le cas du problème de décodage. La reconnaissance de la parole et la bio-informatique utilisent abondamment les modèles de Markov cachés et sont donc aussi des domaines où l'algorithme de Viterbi trouve une application. . 5