Simulation de lancer de pièce pour la mise à jour bayésienne

Simulez le processus de lancers répétés d'une pièce, et utilisez la formule de Bayes pour mettre à jour en temps réel la distribution de croyance sur le fait que la pièce soit biaisée.

Après avoir terminé cette étude de cas, vous comprendrez :Le cœur de la méthode bayésienne — chaque fois que de nouvelles données sont observées, mettez à jour votre croyance une fois à l'aide de la fonction de vraisemblance.


Introduction en situation réelle

Le nouveau collègue est-il digne de confiance ?

Le premier jour, vous ne connaissez pas le nouveau collègue (a priori : il peut être fiable ou non fiable, 50 % chacun). La première semaine, il termine ses tâches à temps à chaque fois (nouvelle preuve), et vous commencez à penser « il est probablement fiable ». La deuxième semaine, il termine encore à temps (davantage de preuves), et votre jugement devient plus certain.

Votre jugement est la probabilité a posteriori — le résultat d'une révision continue du jugement initial à la lumière de nouvelles preuves. C'est l'intuition de la mise à jour bayésienne.


Compréhension intuitive

Nous avons une pièce, mais nous ne connaissons pas sa probabilité de tomber sur face. A priori : avant de lancer, nous considérons toute probabilité de face (de 0 à 1) comme possible. Vraisemblance : chaque fois que nous voyons un résultat, nous mettons à jour en utilisant « la probabilité d'observer ce résultat si la probabilité de face est theta ». A posteriori : la distribution de croyance mise à jour — plus il y a de données, plus la distribution est concentrée autour de la valeur vraie.


Définition mathématique

\[ P(\theta \mid \text{données}) = \frac{P(\text{données} \mid \theta) \cdot P(\theta)}{P(\text{données})} \] \[ \text{a posteriori}_t \propto \text{vraisemblance}(\text{le } t\text{-ième résultat} \mid \theta) \times \text{a posteriori}_{t-1} \]

Exercice pratique Python

Exemple

import numpy as np
np.random.seed(1)

true_p = 0.75  # Probabilité réelle de face de la pièce (comme si nous ne la connaissions pas)
theta_grid = np.linspace(0, 1, 200)

# A priori : traiter tous les theta de manière égale
prior = np.ones_like(theta_grid)
prior /= prior.sum()

# Simuler 40 lancers de la pièce
flips = np.random.binomial(1, true_p, size=40)

posterior = prior.copy()
print("EXEMPLE processus de mise à jour bayésien (true theta=0.75):\n")
for i, outcome in enumerate(flips, start=1):
    likelihood = theta_grid if outcome == 1 else (1 - theta_grid)
    posterior = posterior * likelihood
    posterior /= posterior.sum()

    if i % 10 == 0:
        est = theta_grid[np.argmax(posterior)]
        print(f" Après {i:2d} lancers, theta le plus probable={est:.3f}")

# Comparaison de l'incertitude
prior_std = np.sqrt(np.sum(theta_grid**2 * prior) - np.sum(theta_grid * prior)**2)
post_std = np.sqrt(np.sum(theta_grid**2 * posterior) - np.sum(theta_grid * posterior)**2)
print(f"\nEXEMPLE écart-type a priori : {prior_std:.4f} -> écart-type a posteriori : {post_std:.4f} (réduit d'un facteur {prior_std/post_std:.1f}))
EXAMPLE 贝叶斯更新过程 (真实 theta=0.75):

  抛 10 次后,最可能的 theta=0.754
  抛 20 次后,最可能的 theta=0.769
  抛 30 次后,最可能的 theta=0.759
  抛 40 次后,最可能的 theta=0.774

EXAMPLE 先验标准差: 0.2890 -> 后验标准差: 0.0642 (缩小了 4.5 倍)

Scénarios d'application en IA

ScèneLe rôle des méthodes bayésiennes
Classification naïve bayésienneThéorème de Bayes + hypothèse d'indépendance des caractéristiques → classifieur classique
Optimisation bayésienneUtiliser une distribution a priori + des données observées → processus gaussien a posteriori → guider la recherche d'hyperparamètres.
Inférence variationnelleApproximer des distributions a posteriori complexes par des distributions simples : les fondements mathématiques des VAE
Autres extensions