Rapport du TP1 Problème Inverse Algorithme de Viterbi

publicité
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
Téléchargement