Contenu du cours
Introduction à l'Apprentissage par Renforcement
Introduction à l'Apprentissage par Renforcement
Quelles Sont les Méthodes de Monte Carlo ?
Les méthodes de Monte Carlo (MC) sont une catégorie d'algorithmes informatiques qui reposent sur l'échantillonnage aléatoire pour estimer des résultats numériques.
Les méthodes de Monte Carlo sont utilisées lorsque les solutions déterministes sont difficiles ou impossibles à obtenir. Elles remplacent les calculs exacts par des approximations qui s'améliorent avec le nombre d'échantillons aléatoires.
Fonctionnement
Les méthodes de Monte Carlo peuvent varier selon la tâche, mais elles suivent toutes un schéma unique :
- Définir un domaine d’entrées possibles ;
- Générer des entrées aléatoires à partir d’une distribution de probabilité ;
- Évaluer une fonction sur ces entrées ;
- Agréger les résultats pour produire une estimation.
Exemples
Bien que le schéma décrit ci-dessus puisse sembler complexe, ces exemples devraient aider à clarifier l’idée sous-jacente.
Calcul d'intégrale
Le calcul des intégrales est une tâche complexe qui nécessite généralement l'application de nombreuses techniques pour obtenir le résultat correct.
Essayons d'appliquer la méthode de Monte Carlo pour résoudre cette intégrale :
- Domaine d'entrée : cette intégrale double possède deux variables, et ;
- Génération : ces deux variables sont indépendantes l'une de l'autre et uniformément réparties ;
- Évaluation : pour obtenir une valeur ponctuelle, on utilise la fonction sous le signe intégral ;
- Agrégation : la valeur de cette intégrale peut être définie comme un volume sous la courbe. Le volume peut être calculé comme le produit de l'aire de la base et de la hauteur moyenne. L'aire de la base est 1 (carré unité) et la hauteur moyenne correspond à la moyenne des résultats obtenus à l'étape précédente.
import numpy as np result = 0 # Many samples are required for estimates to be precise for i in range(100000): # Generation of random variables x, y = np.random.uniform(), np.random.uniform() # Computation of point value value = 1 / (1 + (x + y) ** 2) # Mean aggregation result += (value - result) / (i + 1) # Closed-form solution of this integral true_result = 2*np.arctan(2) - np.pi/2 - (1/2)*np.log(5) + np.log(2) print(f"Approximated result: {result}") print(f"True result: {true_result}")
Approximation de
L'approximation de est l'une des utilisations les plus emblématiques de la méthode de Monte Carlo. Elle illustre comment l'échantillonnage aléatoire permet de résoudre un problème géométrique sans recourir à un calcul complexe.
Considérer un carré unité avec un quart de cercle inscrit :
- Le carré s'étend sur ;
- Le quart de cercle a un rayon de 1 et est centré à l'origine.
L'aire du quart de cercle est ou , et l'aire du carré est 1. Échantillonnons maintenant des points aléatoires à l'intérieur du carré. Avec une taille d'échantillon suffisamment grande :
Ainsi, la valeur de peut être calculée comme suit :
import numpy as np import matplotlib.pyplot as plt # Lists for coordinates inside = [] outside = [] # Many samples are required for estimates to be precise for _ in range(100000): # Generation of random variables x, y = np.random.uniform(), np.random.uniform() # Splitting points inside and outside of the circle if x**2 + y**2 <= 1: inside.append((x, y)) else: outside.append((x, y)) # Plotting points plt.figure(figsize=(6,6)) plt.scatter(*zip(*inside), color="blue", s=1, label="Inside") plt.scatter(*zip(*outside), color="red", s=1, label="Outside") plt.legend() plt.xlabel("x") plt.ylabel("y") plt.show() estimate = 4 * len(inside) / (len(inside) + len(outside)) print(f"Estimated value of pi: {estimate}") print(f"True value of pi: {np.pi}")
Bandits à plusieurs bras
Dans le contexte des bandits à plusieurs bras, un objectif clé est d'estimer la valeur d'action pour chaque bras — c'est-à-dire la récompense attendue lors du choix d'une action particulière. Une stratégie courante consiste à estimer ces valeurs en moyennant les récompenses observées obtenues en tirant chaque bras au fil du temps. Cette technique constitue en réalité une méthode de Monte Carlo.
Méthodes de Monte Carlo pour les MDP
Contrairement aux méthodes de la programmation dynamique, qui reposent sur un modèle complet et précis des dynamiques de l'environnement, les méthodes de Monte Carlo apprennent uniquement à partir de l'expérience — c'est-à-dire à partir de séquences réelles ou simulées d'états, d'actions et de récompenses.
Cela rend les approches Monte Carlo particulièrement puissantes : elles ne nécessitent aucune connaissance préalable du fonctionnement de l'environnement. À la place, elles extraient les estimations de valeur directement à partir des événements survenus lors de l'interaction. Dans de nombreux scénarios réels, où modéliser l'environnement est impraticable ou impossible, cette capacité à apprendre à partir de l'expérience brute constitue un avantage majeur.
Lorsque l'interaction directe avec l'environnement est coûteuse, risquée ou lente, les méthodes de Monte Carlo peuvent également apprendre à partir d'une expérience simulée, à condition qu'une simulation fiable existe. Cela permet l'exploration et l'apprentissage dans un cadre contrôlé et reproductible — bien que cela suppose l'accès à un modèle capable de générer des transitions plausibles.
Merci pour vos commentaires !