Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Algoritmo Epsilon-Greedy | Problema del Multi-Armed Bandit
Introduzione al Reinforcement Learning

bookAlgoritmo Epsilon-Greedy

L'algoritmo epsilon-greedy (ε\varepsilon-greedy) è una strategia semplice ma estremamente efficace per affrontare il problema del multi-armed bandit. Sebbene possa non essere robusto quanto altri metodi per questo compito specifico, la sua semplicità e versatilità lo rendono ampiamente applicabile nel campo del reinforcement learning.

Come funziona

L'algoritmo segue questi passaggi:

  1. Inizializzare le stime dei valori d'azione Q(a)Q(a) per ogni azione aa;
  2. Scegliere un'azione utilizzando la seguente regola:
    • Con probabilità ε\varepsilon: selezionare un'azione casuale (esplorazione);
    • Con probabilità 1ε1 - \varepsilon: selezionare l'azione con il valore stimato più alto (sfruttamento).
  3. Eseguire l'azione e osservare la ricompensa;
  4. Aggiornare la stima del valore d'azione Q(a)Q(a) in base alla ricompensa osservata;
  5. Ripetere i passaggi 2-4 per un numero fisso di intervalli temporali.

L'iperparametro ε\varepsilon (epsilon) controlla il bilanciamento tra esplorazione e sfruttamento:

  • Un alto ε\varepsilon (ad esempio, 0.5) favorisce una maggiore esplorazione;
  • Un basso ε\varepsilon (ad esempio, 0.01) privilegia lo sfruttamento dell'azione migliore conosciuta.

Codice di esempio

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]

Informazioni aggiuntive

L'efficacia dell'algoritmo ε\varepsilon-greedy dipende fortemente dal valore di ε\varepsilon. Due strategie sono comunemente utilizzate per selezionare questo valore:

  • ε\varepsilon fisso: questa è l'opzione più generica, in cui il valore di ε\varepsilon viene scelto come una costante (ad esempio, 0.1);
  • ε\varepsilon decrescente: il valore di ε\varepsilon diminuisce nel tempo secondo una certa pianificazione (ad esempio, parte da 1 e diminuisce gradualmente fino a 0) per favorire l'esplorazione nelle fasi iniziali.

Riepilogo

L'algoritmo ε\varepsilon-greedy è un approccio di base per bilanciare esplorazione ed exploitazione. Pur essendo semplice, rappresenta una base per comprendere strategie più avanzate come il bound di confidenza superiore (UCB) e i gradient bandits.

question mark

Qual è una caratteristica principale dell'algoritmo ε\varepsilon-greedy?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 3

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Awesome!

Completion rate improved to 2.7

bookAlgoritmo Epsilon-Greedy

Scorri per mostrare il menu

L'algoritmo epsilon-greedy (ε\varepsilon-greedy) è una strategia semplice ma estremamente efficace per affrontare il problema del multi-armed bandit. Sebbene possa non essere robusto quanto altri metodi per questo compito specifico, la sua semplicità e versatilità lo rendono ampiamente applicabile nel campo del reinforcement learning.

Come funziona

L'algoritmo segue questi passaggi:

  1. Inizializzare le stime dei valori d'azione Q(a)Q(a) per ogni azione aa;
  2. Scegliere un'azione utilizzando la seguente regola:
    • Con probabilità ε\varepsilon: selezionare un'azione casuale (esplorazione);
    • Con probabilità 1ε1 - \varepsilon: selezionare l'azione con il valore stimato più alto (sfruttamento).
  3. Eseguire l'azione e osservare la ricompensa;
  4. Aggiornare la stima del valore d'azione Q(a)Q(a) in base alla ricompensa osservata;
  5. Ripetere i passaggi 2-4 per un numero fisso di intervalli temporali.

L'iperparametro ε\varepsilon (epsilon) controlla il bilanciamento tra esplorazione e sfruttamento:

  • Un alto ε\varepsilon (ad esempio, 0.5) favorisce una maggiore esplorazione;
  • Un basso ε\varepsilon (ad esempio, 0.01) privilegia lo sfruttamento dell'azione migliore conosciuta.

Codice di esempio

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]

Informazioni aggiuntive

L'efficacia dell'algoritmo ε\varepsilon-greedy dipende fortemente dal valore di ε\varepsilon. Due strategie sono comunemente utilizzate per selezionare questo valore:

  • ε\varepsilon fisso: questa è l'opzione più generica, in cui il valore di ε\varepsilon viene scelto come una costante (ad esempio, 0.1);
  • ε\varepsilon decrescente: il valore di ε\varepsilon diminuisce nel tempo secondo una certa pianificazione (ad esempio, parte da 1 e diminuisce gradualmente fino a 0) per favorire l'esplorazione nelle fasi iniziali.

Riepilogo

L'algoritmo ε\varepsilon-greedy è un approccio di base per bilanciare esplorazione ed exploitazione. Pur essendo semplice, rappresenta una base per comprendere strategie più avanzate come il bound di confidenza superiore (UCB) e i gradient bandits.

question mark

Qual è una caratteristica principale dell'algoritmo ε\varepsilon-greedy?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 3
some-alt