Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Algorithme Epsilon-Greedy | Problème du Bandit Manchot
Introduction à l'Apprentissage par Renforcement
course content

Contenu du cours

Introduction à l'Apprentissage par Renforcement

Introduction à l'Apprentissage par Renforcement

1. Théorie Fondamentale de l'Apprentissage par Renforcement
2. Problème du Bandit Manchot
3. Programmation Dynamique
4. Méthodes de Monte Carlo
5. Apprentissage par Différence Temporelle

book
Algorithme Epsilon-Greedy

L'algorithme epsilon-greedy (ε\varepsilon-greedy) est une stratégie simple mais très efficace pour aborder le problème du bandit manchot. Bien qu'il ne soit pas aussi robuste que d'autres méthodes pour cette tâche spécifique, sa simplicité et sa polyvalence le rendent largement applicable dans le domaine de l'apprentissage par renforcement.

Fonctionnement

L'algorithme suit les étapes suivantes :

  1. Initialiser les estimations de la valeur d'action Q(a)Q(a) pour chaque action aa ;
  2. Choisir une action selon la règle suivante :
    • Avec une probabilité de ε\varepsilon : sélectionner une action aléatoire (exploration) ;
    • Avec une probabilité de 1ε1 - \varepsilon : sélectionner l'action ayant la valeur estimée la plus élevée (exploitation).
  3. Exécuter l'action et observer la récompense ;
  4. Mettre à jour l'estimation de la valeur d'action Q(a)Q(a) en fonction de la récompense observée ;
  5. Répéter les étapes 2 à 4 pour un nombre fixe d'itérations.

L'hyperparamètre ε\varepsilon (epsilon) contrôle le compromis entre exploration et exploitation :

  • Un ε\varepsilon élevé (par exemple, 0.5) favorise l'exploration ;
  • Un ε\varepsilon faible (par exemple, 0.01) privilégie l'exploitation de la meilleure action connue.

Exemple de code

class EpsilonGreedyAgent:
  def __init__(self, n_actions, epsilon):
    """Initialize an agent"""
    self.n_actions = n_actions # Number of available actions
    self.epsilon = epsilon # epsilon
    self.Q = np.zeros(self.n_actions) # Estimated action values
    self.N = np.zeros(self.n_actions) # Action selection counters

  def select_action(self):
    """Select an action according to the epsilon-greedy strategy"""
    # With probability epsilon - random action
    if np.random.rand() < self.epsilon:
      return np.random.randint(self.n_actions)
    # Otherwise - action with highest estimated action value
    else:
      return np.argmax(self.Q)

  def update(self, action, reward):
    """Update the values using sample average estimate"""
    # Increasing the action selection counter
    self.N[action] += 1
    # Updating the estimated action value
    self.Q[action] += (reward - self.Q[action]) / self.N[action]

Informations supplémentaires

L'efficacité de l'algorithme ε\varepsilon-greedy dépend fortement de la valeur de ε\varepsilon. Deux stratégies sont couramment utilisées pour sélectionner cette valeur :

  • ε\varepsilon fixe : il s'agit de l'option la plus générale, où la valeur de ε\varepsilon est choisie comme une constante (par exemple, 0.1) ;
  • ε\varepsilon décroissant : la valeur de ε\varepsilon diminue au fil du temps selon un certain calendrier (par exemple, commence à 1 et diminue progressivement jusqu'à 0) afin de favoriser l'exploration aux premiers stades.

Résumé

L'algorithme ε\varepsilon-greedy constitue une approche de référence pour équilibrer exploration et exploitation. Bien que simple, il sert de base pour comprendre des stratégies plus avancées telles que upper confidence bound (UCB) et gradient bandits.

question mark

Quelle est une caractéristique principale de l'algorithme ε\varepsilon-greedy ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 3

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

course content

Contenu du cours

Introduction à l'Apprentissage par Renforcement

Introduction à l'Apprentissage par Renforcement

1. Théorie Fondamentale de l'Apprentissage par Renforcement
2. Problème du Bandit Manchot
3. Programmation Dynamique
4. Méthodes de Monte Carlo
5. Apprentissage par Différence Temporelle

book
Algorithme Epsilon-Greedy

L'algorithme epsilon-greedy (ε\varepsilon-greedy) est une stratégie simple mais très efficace pour aborder le problème du bandit manchot. Bien qu'il ne soit pas aussi robuste que d'autres méthodes pour cette tâche spécifique, sa simplicité et sa polyvalence le rendent largement applicable dans le domaine de l'apprentissage par renforcement.

Fonctionnement

L'algorithme suit les étapes suivantes :

  1. Initialiser les estimations de la valeur d'action Q(a)Q(a) pour chaque action aa ;
  2. Choisir une action selon la règle suivante :
    • Avec une probabilité de ε\varepsilon : sélectionner une action aléatoire (exploration) ;
    • Avec une probabilité de 1ε1 - \varepsilon : sélectionner l'action ayant la valeur estimée la plus élevée (exploitation).
  3. Exécuter l'action et observer la récompense ;
  4. Mettre à jour l'estimation de la valeur d'action Q(a)Q(a) en fonction de la récompense observée ;
  5. Répéter les étapes 2 à 4 pour un nombre fixe d'itérations.

L'hyperparamètre ε\varepsilon (epsilon) contrôle le compromis entre exploration et exploitation :

  • Un ε\varepsilon élevé (par exemple, 0.5) favorise l'exploration ;
  • Un ε\varepsilon faible (par exemple, 0.01) privilégie l'exploitation de la meilleure action connue.

Exemple de code

class EpsilonGreedyAgent:
  def __init__(self, n_actions, epsilon):
    """Initialize an agent"""
    self.n_actions = n_actions # Number of available actions
    self.epsilon = epsilon # epsilon
    self.Q = np.zeros(self.n_actions) # Estimated action values
    self.N = np.zeros(self.n_actions) # Action selection counters

  def select_action(self):
    """Select an action according to the epsilon-greedy strategy"""
    # With probability epsilon - random action
    if np.random.rand() < self.epsilon:
      return np.random.randint(self.n_actions)
    # Otherwise - action with highest estimated action value
    else:
      return np.argmax(self.Q)

  def update(self, action, reward):
    """Update the values using sample average estimate"""
    # Increasing the action selection counter
    self.N[action] += 1
    # Updating the estimated action value
    self.Q[action] += (reward - self.Q[action]) / self.N[action]

Informations supplémentaires

L'efficacité de l'algorithme ε\varepsilon-greedy dépend fortement de la valeur de ε\varepsilon. Deux stratégies sont couramment utilisées pour sélectionner cette valeur :

  • ε\varepsilon fixe : il s'agit de l'option la plus générale, où la valeur de ε\varepsilon est choisie comme une constante (par exemple, 0.1) ;
  • ε\varepsilon décroissant : la valeur de ε\varepsilon diminue au fil du temps selon un certain calendrier (par exemple, commence à 1 et diminue progressivement jusqu'à 0) afin de favoriser l'exploration aux premiers stades.

Résumé

L'algorithme ε\varepsilon-greedy constitue une approche de référence pour équilibrer exploration et exploitation. Bien que simple, il sert de base pour comprendre des stratégies plus avancées telles que upper confidence bound (UCB) et gradient bandits.

question mark

Quelle est une caractéristique principale de l'algorithme ε\varepsilon-greedy ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 3
some-alt