3.2 Inférence probabiliste
3.2.3 Inférence approchée
Dans de nombreux cas, le calcul de l’inférence exacte est impossible à
cause du trop grand nombre de variables et/ou de leur trop grande
cardina-lité. On est alors capable d’approximer le calcul de l’inférence en utilisant des
algorithmes d’inférence approchée. Certaines de ces méthodes sont connues
sous le nom de méthodes deSampling ou d’échantillonnage. Elles consistent
à tirer des échantillons dans l’espace des valeurs possibles des variables et
approchent la distribution cherchée. Dans la plupart des cas, la difficulté
réside dans la façon de générer des échantillons.
Dans les prochaines sous-sections, nous faisons une revue des principales
méthodes d’échantillonnage simple puis nous présentons une méthode de
Monte-Carlo Markov Chain (MCMC) particulière qui est l’algorithme de
Gibbs. C’est cet algorithme qui est implémenté dans les machines
bayé-siennes SMABI, chapitre 5 et PSMABI, chapitre 6. Ces méthodes sont
ba-sées sur l’aléa des tirages effectués. Elles approchent la distribution cherchée
3.2. INFÉRENCE PROBABILISTE
puisque le phénomène stochastique aura tendance à tirer des échantillons là
où il y a de la masse de probabilité et ainsi recouvrir la forme de la
distri-bution cherchée. Du fait que l’on tire des échantillons de manière aléatoire
dans l’espace des valeurs possibles, plus on tire d’échantillons et plus la
pré-cision de notre méthode est grande. Par passage à la limite, on retrouve
le résultat de l’inférence exacte. En effet, si on tire une infinité
d’échan-tillons{s
i, f
i, k
i} ∈ {S, F, K}, on a, pour chacun des points{s
j, f
k, k
l}de la
distribution conjointe :
lim
n→+∞ n P i=1δ
{si,fi,ki}={sj,fk,kl}n =P(s
j, f
k, k
l)
Échantillonnage direct
L’échantillonnage direct consiste à tirer des valeurs de variable dans la
conjointe afin d’obtenir un vecteur échantillon. Soit le modèle suivant
com-posé de trois variables{A, B, C} :
P(A∧B∧C) =P(A)P(B|A)P(C|AB) (3.7)
L’algorithme réalisant l’échantillonnage direct sur ce modèle est présenté
sur la figure 3.1. Au fur et à mesure des échantillons {a, b, c} nous sommes
capables de construire la distribution P(A∧B∧C).
while i < nombre_echantillon_souhaite:do
Tirer un échantillona
ide A suivantP(A)
Tirer un échantillonb
ide B suivant P(B |[A=a
i])
Tirer un échantillonc
ide C suivant P(C |[A=a
i] [B =b
i])
i+ +
end while
Figure3.1 – Algorithme d’échantillonnage direct pour estimer P(ABC)
Dans le cadre de l’inférence, nous posons une question au modèle
bayé-sien. Cette méthode d’échantillonnage n’est donc valable que dans deux cas :
— Soit il n’y a pas de variables «connues» dans notre modèle et on tire
toutes les variables de celui-ci selon l’algorithme précédent.
— Soit les variables «connues» n’apparaissent jamais à gauche dans aucun
des termes de la décomposition et on tire les variables d’intérêts suivant
les termes de la conjointe.
Exemple du sprinkler : On rappelle le modèle P(R ∧ S ∧G) =
P(R)P(S|R)P(G|R S). Nous avons vu une question particulière posée à
ce modèle dans les sections précédentes : P(R|G = 1). Dans ce cas, nous
ne pourrons pas appliquer la méthode d’échantillonnage direct suivant la
décomposition proposée puisque l’algorithme montre qu’il faudrait
échan-tillonner la variable Gqui est fixée dans notre question. Une question
pos-sible, solvable avec cette méthode, pourrait être alors : P(G|R = r), où
r∈ {0,1} est une valeur possible deR. Pour effectuer ces tirages successifs
nous utilisons la description des distributions de la section 3.1.4.
while i < nombre_echantillon_souhaite :do
Tirer un échantillons
ide S suivant P(S |[R=r])
Tirer un échantillong
ide G suivant P(G|[R=r] [S=s
i])
i+ +
end while
Figure3.2 – Algorithme d’échantillonnage direct pour estimerP(G|R=r)
Échantillonnage par rejet
SoitP(ABC) une distribution sur les variablesA,B etC.
L’échantillon-nage par rejet consiste à utiliser une autre distribution, T, sur laquelle on
est capable : (i) d’évaluer sa valeur en tout point{a, b, c}, (ii) de réaliser un
échantillonnage direct dessus.
Chaque échantillon {a, b, c}, tiré de T, est alors accepté avec la
propor-tion :
p= k×T({a, b, c})
P({a, b, c})
oùk est une constante tel que :
∀{a, b, c} ∈ {A, B, C}, k×T({a, b, c})< P({a, b, c})
A noter que l’on doit aussi être capable d’évaluerP({a, b, c}).
Cette méthode nous permet notamment d’échantillonner une
distribu-tion condidistribu-tionnelleP(B |[A=a]) et donc de donner une solution approchée
à un problème d’inférence. La figure 3.3 présente l’algorithme
d’échantillon-nage par rejet sur l’exemple de la distributionP(ABC).
Avec cette méthode nous sommes capables d’approcher toute
distribu-tion condidistribu-tionnelle. Cependant, le rejet d’échantillons peut faire décroître
3.2. INFÉRENCE PROBABILISTE
while i < nombre_echantillon_souhaite:do
Tirer un échantillon{a
i, b
i, c
i} de {A, B, C} suivantT(ABC)
Faire un tirage de Bernoulli avec la proportionp=
k×T({ai,bi,ci})P({ai,bi,ci})
if resultat_tirage_bernoulli= 1 : then
On stocke{a
i, b
i, c
i}
else
On rejette{a
i, b
i, c
i}
end if
i+ +
end while
Figure3.3 – Algorithme d’échantillonnage par rejet pour estimerP(ABC)
drastiquement sa vitesse de convergence. En effet, si la condition est très
peu probable, le nombre d’échantillons rejetés est alors très grand et nous
avons besoin d’une quantité d’itérations très importante pour obtenir
suffi-samment d’échantillons.
Exemple du sprinkler : On rappelle le modèle P(R ∧S ∧ G) =
P(R)P(S|R)P(G|R S). Nous avons vu une question particulière posé à ce
modèle dans les sections précédentes : P(R|G = 1). La figure 3.4 présente
un algorithme permettant d’effectuer l’échantillonnage par rejet sur notre
exemple.
while i < nombre_echantillon_souhaite:do
Tirer un échantillonr
ide R suivantP(R)
Tirer un échantillons
ide S suivant P(S |[R=r
i])
Tirer un échantillong
ide G suivant P(G|[R=r
i] [S =s
i])
if g
i= 1 then
On stocker
ielse
On rejetter
iend if
i+ +
end while
Figure3.4 – Algorithme d’échantillonnage par rejet pour estimerP(R|G=
1)
Cette façon d’échantillonner revient à prendre, dans l’algorithme général
présenté au dessus, la distribution T, la constante multiplicative k et la
proportionp suivante :
T =P(R)P(S|R)δ(G= 1)
k= 1
p= P(R)P(S|R)P(G= 1|RS)
P(R)P(S|R)δ(G= 1)
Dans ce cas, on tire G suivant le dirac δ(G = 1), on a donc toujours
G= 1, puis on tire r et s suivant P(R) et P(S|R = r). Au vu des formes
paramétriques présentées dans la section 3.1.4, soit l’échantillon {r, s} est
compatible avecG= 1 et dans ce cas on tire l’acceptation de cet échantillon
avec la proportionp, soit l’échantillon{r, s}est incompatible avecG= 1 et
on rejette alors cet échantillon. Ce qui donne :
p= 0, ⇒rejet l’échantillon r
p >0, ⇒acceptation de l’échantillon r avec la proportion p
Échantillonnage par importance
L’échantillonnage par importance génère des échantillons avec un poids
associé. Soit P(ABC) une distribution sur les variables A, B et C.
L’al-gorithme consiste à utiliser une autre distribution, T, sur laquelle on est
capable : (i) d’évaluer sa valeur en tout point {a, b, c}, (ii) de réaliser un
échantillonnage direct dessus. A Chaque échantillon {a, b, c}, tiré de T, est
alors associé un poidsw =
PT((abcabc)). A noter que l’on doit aussi être capable
d’évaluerP(abc).
Cet algorithme est présenté sur la figure 3.5 :
while i < nombre_echantillon_souhaite :do
Tirer un échantillon{a
i, b
i, c
i}de {A, B, C} suivantT(ABC)
Calculer le poidsw
i=
P(aibici)T(aibici)
On stocke ({a
i, b
i, c
i}, w)
i+ +
end while
Figure 3.5 – Algorithme d’échantillonnage par importance pour la
3.2. INFÉRENCE PROBABILISTE
Dans le cas où l’on a une décomposition du modèle et que l’on pose une
question sous la forme d’une inférence à calculer, alors l’échantillonnage par
importance peut être vu comme une méthode d’échantillonnage par rejet
mais qui ne s’intéresse qu’aux variables d’intérêt. Cela signifie que l’on ne
va générer que des échantillons associés aux conditions/observations. De
ce fait, cette méthode ne rejette aucun échantillon. Les échantillons tirés
suivent les distributions décrites dans la décomposition. Les distributions où
apparaissent une variable observée « à gauche », les vraisemblances donc,
permettent de pondérer le résultat de l’échantillon, c’est à dire de calculer
«w».
Exemple du sprinkler : On rappelle le modèle P(R ∧S ∧ G) =
P(R)P(S|R)P(G|RS). La question posée estP(R|G= 1).
while i < nombre_echantillon_souhaite:do
Tirer un échantillonr
ide R de suivantP(R)
Tirer un échantillons
ide S de suivantP(S |[R=r
i])
Calculer le poidsw
i=P(G= 1 |[R=r
i] [S=s
i])
On stocke (r
i, w
i)
i+ +
end while
Figure 3.6 – Algorithme d’échantillonnage par importance pour la
distri-bution pour estimer P(R|G= 1)
Méthode MCMC
Les méthodes de Monte-Carlo par chaînes de Markov sont des méthodes
d’échantillonnage qui possèdent la particularité de générer des échantillons à
partir des échantillons précédents. L’ensemble des valeurs que peut prendre
la distribution peut être assimilé à un ensemble d’états que l’on parcourt. Le
passage d’un état à l’autre, suivant la probabilité, est défini par la
distribu-tion. La chaîne de Markov ainsi décrite a pour loi stationnaire la distribution
à échantillonner.
Algorithme de Gibbs
Nous présentons un algorithme utilisant une méthode MCMC,
l’algo-rithme de Gibbs, qui est utilisé dans les chapitres 5 et 6.
SoitP(X) une distribution sur nvariables X
itel que :
X=X
1∧ · · · ∧X
nCet algorithme tire des nouveaux échantillons X
ià chaque pas suivant la
distribution
P(X
i|X
1· · ·X
i−1X
i+1· · ·X
k)
Une phase d’initialisation du vecteurX est alors nécessaire au début de la
boucle algorithmique. La figure 3.7 montre un exemple d’échantillonnage
d’une distribution sur trois variables discrètes{A, B, C}. La principale
dif-ficulté réside dans la façon d’effectuer ces tirages successifs avec l’ensemble
des variables, non échantillonnées, fixées.
Initialiser le vecteur d’échantillons {a
0, b
0, c
0}
while i < nombre_echantillon_souhaite :do
Tirer un échantillona
ide A de suivantP(A |[B =b
i−1] [C =c
i−1])
Tirer un échantillonb
ideB de suivantP(B |[A=a
i] [C =c
i−1])
Tirer un échantillonc
ideC de suivantP(C |[A=a
i] [B=b
i])
stockera
i, b
i, c
ii+ +
end while
Figure3.7 – Algorithme de Gibbs
Cet algorithme démarre avec un vecteur d’initialisation{a
0, b
0, c
0}. Une
phase, appeléburn in, est souvent utilisée pour se soustraire au biais
intro-duit par le choix du vecteur initial. Cela consiste simplement à rejeter la
première partie des échantillons, cette partie peut être aussi grande que l’on
souhaite.
Exemple du sprinkler : On rappelle le modèle P(R ∧ S ∧G) =
P(R)P(S|R)P(G|R S). La question posée est P(R|G = 1). La figure 3.8
montre l’algorithme utilisé pour estimer la distributionP(R|G= 1). Seule
la variable R nous intéresse et la valeur de G = 1 est fixée. On ne tirera
donc jamais de valeur deG. L’échantillonnage de S est nécessaire puisqu’il
apparaît dans le termeP(R |S =s G= 1).
Dans le document
Conception de machines probabilistes dédiées aux inférences bayésiennes
(Page 45-51)