Algorithme Epsilon-Greedy
L’algorithme epsilon-greedy (ε-greedy) constitue 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 certaines 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 :
- Initialisation des estimations de la valeur d’action Q(a) pour chaque action a ;
- Sélection d’une action selon la règle suivante :
- Avec une probabilité ε : sélection d’une action aléatoire (exploration) ;
- Avec une probabilité 1−ε : sélection de l’action ayant la valeur estimée la plus élevée (exploitation).
- Exécution de l’action et observation de la récompense ;
- Mise à jour de l’estimation de la valeur d’action Q(a) en fonction de la récompense observée ;
- Répétition des étapes 2 à 4 pendant un nombre fixe d’itérations.
L’hyperparamètre ε (epsilon) contrôle le compromis entre exploration et exploitation :
- Un ε élevé (par exemple, 0.5) favorise l’exploration ;
- Un ε 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 ε-greedy dépend fortement de la valeur de ε. Deux stratégies sont couramment utilisées pour sélectionner cette valeur :
- ε fixe : il s'agit de l'option la plus générale, où la valeur de ε est choisie comme une constante (par exemple, 0,1) ;
- ε décroissant : la valeur de ε 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 ε-greedy constitue une approche de référence pour équilibrer l'exploration et l'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.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 2.7
Algorithme Epsilon-Greedy
Glissez pour afficher le menu
L’algorithme epsilon-greedy (ε-greedy) constitue 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 certaines 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 :
- Initialisation des estimations de la valeur d’action Q(a) pour chaque action a ;
- Sélection d’une action selon la règle suivante :
- Avec une probabilité ε : sélection d’une action aléatoire (exploration) ;
- Avec une probabilité 1−ε : sélection de l’action ayant la valeur estimée la plus élevée (exploitation).
- Exécution de l’action et observation de la récompense ;
- Mise à jour de l’estimation de la valeur d’action Q(a) en fonction de la récompense observée ;
- Répétition des étapes 2 à 4 pendant un nombre fixe d’itérations.
L’hyperparamètre ε (epsilon) contrôle le compromis entre exploration et exploitation :
- Un ε élevé (par exemple, 0.5) favorise l’exploration ;
- Un ε 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 ε-greedy dépend fortement de la valeur de ε. Deux stratégies sont couramment utilisées pour sélectionner cette valeur :
- ε fixe : il s'agit de l'option la plus générale, où la valeur de ε est choisie comme une constante (par exemple, 0,1) ;
- ε décroissant : la valeur de ε 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 ε-greedy constitue une approche de référence pour équilibrer l'exploration et l'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.
Merci pour vos commentaires !