Vous êtes sur la page 1sur 7

Rapport du TP1Problme Inverse Algorithme de Viterbi

Doriano-Boris POUGAZA Dirig par le Prof. Bernard CHALMOND Modlisation Analyse des DOnnes et Calcul Scientique 20 dcembre 2007

Table des matires


0.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0.2 Objectif et motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0.2.1 Cadre du TP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0.3 Implmentation de l'algorithme de Viterbi . . . . . . . . . . . . . . . . . . . . . 0.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 3 5

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 baysienne. Cet algorithme dit de Viterbi, du nom d'Andrew J. Viterbi qui l'a dvelopp, 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 modie en une autre) et permet de simplier radicalement la complexit de la recherche du plus probable message d'origine(d'exponentielle, cette complexit devient linaire). 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 modlisable comme une chane de Markov discrte tats nis. Son objectif est de trouver la squence d'tats la plus probable ayant produit la squence mesure. On rappelle qu'une chane de Markov ni en temps discret est une squence X = (X1 , X2 , ..., XT ) de variables alatoires. Les Xt prennent leurs valeurs dans l'espace d'tat S = (s1 , s2 , ..., sN ), et ne dpendent que de Xt1 seul. Il en dcoule les deux proprits suivantes :
P (Xt = sk |X1 , X2 , X3 , . . . , Xt1 ) = P (Xt = st |Xt1 ) = 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 squence X n'est pas observable. On observe plutt une variable alatoire Yt qui peut tre vue comme une "dgradation" de Xt . On dit alors que X est une chaine de Markov cache (HMM, Hidden Markov Model).

Problme
Nous cherchons retrouver le chemin X = (X1 , X2 , ..., Xn ) partir de Y = (Y1 , Y2 , ..., Yn ). Le problme tant alors de faire une estimation de X , partir de Y .

On ferra alors :

X = ArgMax P ( X | Y ).
X

(3)

Alors comment calculer X ? On voit clairement le problme 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 ingnieuse fournit par l'algorithme de Viterbi permet de trouver la squence d'tat la plus probable et dvie ainsi le problme 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 indpendante de X alors l'quation (3) peut tre recrite de la forme : X = ArgMax P ( Y | X )P ( X )
X PY ( X )

(5)

En fait le maximum ne dpend pas de l'expression en Y . En utilisant la formule de Kolmogorov et en notant que X est une chane de Markov, on a : P ( Y |X ) = PY ( X ) = (
n n

P (Yt = yt |Xt = xt ),
t=1 n

(6) (7) (8)

P (yt |xt ))(


t=1 t=2 n

P (xt |xt1 ))P (x1 ), (P (yt |xt P (xt |xt1 ),


t=2

PY ( X ) = P (y1 |x1 )(P (x1 )(

Une expression particulire est utilse pour l'algorithme de Viterbi,


un termex1 un termex1 , x2 x2 , x3 PY ( X ) = x3 , x4 ... un termexn1 , xn PY ( X ) = f1 (x1 )f2 (x1 , x2 )f3 (x2 , x3 )f4 (x3 , x4 )...fn (xn1 , xn ).

(9)

(10)

Nous allons utiliser la forme (10) pour l'implmentation, en considrant log PY ( X ), et nalement pour trouver X , on aura maximiser la fonction :

L( X ) = log PY ( X )
n

(11)
log(P (yt |xt P (xt |xt1 ).
t=2

= log(P (y1 |x1 )(P (x1 )) +

(12)

Nous avons donc la forme suivante maximiser :


L( X ) = L1 (x1 ) +
n

Lt (xt , xt1 ).
t=2

(13)

0.3

Implmentation de l'algorithme de Viterbi

On implmente la recherche du maximum de L( X , avec MATLAB dans le o cas n=3 X = Arg Max L(x1 , x2 , x3 )

(14)

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

%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 Lrond3(x2chap(x3),x3) = Lrond2(x2chap(x3),x3); [max3,x3_chap(x3)]=max(Lrond3(:,x3)); Lrond3_chap(x3)=Lrond3(x3_chap(x3),x3);

end

x3chap = [x3chap,x3_chap];

0.4

Conclusion

Une des applications phares de l'algorithme est aussi l'estimation de la squence d'tats (cachs) la plus probable ayant t gnre par un modle de Markov cach dans le cas du problme de dcodage. La reconnaissance de la parole et la bio-informatique utilisent abondamment les modles de Markov cachs et sont donc aussi des domaines o l'algorithme de Viterbi trouve une application. .