Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Algoritmo del Limite Superiore di Confidenza | Problema del Multi-Armed Bandit
Introduzione al Reinforcement Learning
course content

Contenuti del Corso

Introduzione al Reinforcement Learning

Introduzione al Reinforcement Learning

1. Teoria Fondamentale dell'RL
2. Problema del Multi-Armed Bandit
3. Programmazione Dinamica
4. Metodi Monte Carlo
5. Apprendimento a Differenza Temporale

book
Algoritmo del Limite Superiore di Confidenza

L'algoritmo Upper Confidence Bound (UCB) è un approccio popolare ed efficace per risolvere il problema del multi-armed bandit. Presenta solide garanzie matematiche di rapida convergenza, ottimizzando il processo di esplorazione.

Nonostante la sua efficacia nella risoluzione del problema MAB, l'algoritmo UCB presenta alcune limitazioni rilevanti che ne restringono l'applicazione nell'ambito più ampio del reinforcement learning:

  • Assunzione di ricompense stazionarie: l'algoritmo UCB presume che le distribuzioni delle ricompense non cambino nel tempo;
  • Vincoli sugli spazi di stati e azioni: per poter iniziare a scegliere le azioni secondo una logica, l'algoritmo UCB richiede di provare ogni azione in ogni stato almeno una volta.

Mentre la prima limitazione può essere affrontata modificando leggermente l'algoritmo, la seconda limitazione rimane una sfida significativa in molte applicazioni pratiche.

Come funziona

L'algoritmo UCB bilancia esplorazione e sfruttamento assegnando un intervallo di confidenza al valore stimato di ciascuna azione e selezionando l'azione con il limite superiore più alto. Questo approccio garantisce che vengano esplorate le azioni con ricompense incerte, privilegiando allo stesso tempo le azioni che sembrano essere ottimali.

I passaggi dell'algoritmo UCB sono identici a quelli dell'algoritmo epsilon-greedy, ad eccezione del passaggio di scelta di un'azione. L'algoritmo UCB seleziona un'azione AtA_t al passo temporale tt utilizzando la seguente formula:

At=arg maxa(Qt(a)+clntNt(a))A_t = \argmax_a\Biggl(Q_t(a) + c \sqrt\frac{\ln t}{N_t(a)}\Biggr)

dove:

  • Qt(a)Q_t(a) è la ricompensa stimata dell'azione aa al tempo tt;
  • Nt(a)N_t(a) è il numero di volte in cui l'azione aa è stata selezionata fino al tempo tt;
  • c>0c > 0 è un parametro regolabile che controlla l'equilibrio tra esplorazione e sfruttamento, simile a ε\varepsilon nell'algoritmo ε\varepsilon-greedy;
  • ln\ln è la funzione logaritmo naturale;
  • arg max\argmax è il valore dell'argomento (aa, in questo caso) che massimizza l'espressione.

Intuizione

arg max\argmax sceglie l'azione che massimizza la somma di due parti: il valore stimato dell'azione e un intervallo di confidenza. L'intervallo di confidenza è scalato da un fattore cc, dove valori maggiori rendono l'intervallo più ampio, il che significa che l'agente è meno sicuro del valore dell'azione, favorendo così l'esplorazione.

La dimensione di questo intervallo di confidenza dipende da due fattori:

  1. Tempo: con il passare del tempo, l'agente diventa meno sicuro del valore dell'azione;
  2. Frequenza dell'azione: più spesso un'azione viene scelta, più sicuro l'agente diventa del suo valore.

Codice di esempio

class UpperConfidenceBoundAgent:
  def __init__(self, n_actions, confidence):
    """Initialize an agent"""
    self.n_actions = n_actions # Number of available actions
    self.confidence = confidence # c
    self.Q = np.zeros(self.n_actions) # Estimated action values
    self.N = np.zeros(self.n_actions) # Action selection counters
    self.t = 0 # Time step counter

  def select_action(self):
    """Select an action according to the upper confidence bound strategy"""
    # Increase the time step counter
    self.t += 1

    # Each action should be taken at least once
    for action in range(self.n_actions):
      if self.N[action] == 0:
        return action

    # Return the action with highest upper confidence bound
    return np.argmax(self.Q + self.confidence * np.sqrt(np.log(self.t) / self.N))

  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'algoritmo UCB integra un meccanismo di esplorazione, che richiede un'attenta regolazione dell'iperparametro cc per funzionare in modo efficace. Il valore ottimale di cc varia a seconda del problema specifico. Di seguito alcune linee guida generali:

  • Elevata varianza nelle ricompense: un valore cc più grande garantisce un'esplorazione sufficiente;
  • Ricompense stabili: un valore cc più piccolo permette all'algoritmo di concentrarsi rapidamente sull'azione ottimale;
  • Valore predefinito comune: un punto di partenza tipico è c=1c = 1, ma spesso è necessario un aggiustamento sperimentale per ottenere i migliori risultati.

Riepilogo

L'algoritmo UCB è un metodo potente e ben fondato per bilanciare esplorazione ed exploitazione nei problemi multi-armed bandit. Selezionando le azioni in base sia alle ricompense stimate che all'incertezza, garantisce un apprendimento efficiente riducendo al minimo il rimpianto.

question mark

In che modo l'algoritmo UCB affronta il compromesso tra esplorazione ed exploitazione?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 4

Chieda ad AI

expand

Chieda ad AI

ChatGPT

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

course content

Contenuti del Corso

Introduzione al Reinforcement Learning

Introduzione al Reinforcement Learning

1. Teoria Fondamentale dell'RL
2. Problema del Multi-Armed Bandit
3. Programmazione Dinamica
4. Metodi Monte Carlo
5. Apprendimento a Differenza Temporale

book
Algoritmo del Limite Superiore di Confidenza

L'algoritmo Upper Confidence Bound (UCB) è un approccio popolare ed efficace per risolvere il problema del multi-armed bandit. Presenta solide garanzie matematiche di rapida convergenza, ottimizzando il processo di esplorazione.

Nonostante la sua efficacia nella risoluzione del problema MAB, l'algoritmo UCB presenta alcune limitazioni rilevanti che ne restringono l'applicazione nell'ambito più ampio del reinforcement learning:

  • Assunzione di ricompense stazionarie: l'algoritmo UCB presume che le distribuzioni delle ricompense non cambino nel tempo;
  • Vincoli sugli spazi di stati e azioni: per poter iniziare a scegliere le azioni secondo una logica, l'algoritmo UCB richiede di provare ogni azione in ogni stato almeno una volta.

Mentre la prima limitazione può essere affrontata modificando leggermente l'algoritmo, la seconda limitazione rimane una sfida significativa in molte applicazioni pratiche.

Come funziona

L'algoritmo UCB bilancia esplorazione e sfruttamento assegnando un intervallo di confidenza al valore stimato di ciascuna azione e selezionando l'azione con il limite superiore più alto. Questo approccio garantisce che vengano esplorate le azioni con ricompense incerte, privilegiando allo stesso tempo le azioni che sembrano essere ottimali.

I passaggi dell'algoritmo UCB sono identici a quelli dell'algoritmo epsilon-greedy, ad eccezione del passaggio di scelta di un'azione. L'algoritmo UCB seleziona un'azione AtA_t al passo temporale tt utilizzando la seguente formula:

At=arg maxa(Qt(a)+clntNt(a))A_t = \argmax_a\Biggl(Q_t(a) + c \sqrt\frac{\ln t}{N_t(a)}\Biggr)

dove:

  • Qt(a)Q_t(a) è la ricompensa stimata dell'azione aa al tempo tt;
  • Nt(a)N_t(a) è il numero di volte in cui l'azione aa è stata selezionata fino al tempo tt;
  • c>0c > 0 è un parametro regolabile che controlla l'equilibrio tra esplorazione e sfruttamento, simile a ε\varepsilon nell'algoritmo ε\varepsilon-greedy;
  • ln\ln è la funzione logaritmo naturale;
  • arg max\argmax è il valore dell'argomento (aa, in questo caso) che massimizza l'espressione.

Intuizione

arg max\argmax sceglie l'azione che massimizza la somma di due parti: il valore stimato dell'azione e un intervallo di confidenza. L'intervallo di confidenza è scalato da un fattore cc, dove valori maggiori rendono l'intervallo più ampio, il che significa che l'agente è meno sicuro del valore dell'azione, favorendo così l'esplorazione.

La dimensione di questo intervallo di confidenza dipende da due fattori:

  1. Tempo: con il passare del tempo, l'agente diventa meno sicuro del valore dell'azione;
  2. Frequenza dell'azione: più spesso un'azione viene scelta, più sicuro l'agente diventa del suo valore.

Codice di esempio

class UpperConfidenceBoundAgent:
  def __init__(self, n_actions, confidence):
    """Initialize an agent"""
    self.n_actions = n_actions # Number of available actions
    self.confidence = confidence # c
    self.Q = np.zeros(self.n_actions) # Estimated action values
    self.N = np.zeros(self.n_actions) # Action selection counters
    self.t = 0 # Time step counter

  def select_action(self):
    """Select an action according to the upper confidence bound strategy"""
    # Increase the time step counter
    self.t += 1

    # Each action should be taken at least once
    for action in range(self.n_actions):
      if self.N[action] == 0:
        return action

    # Return the action with highest upper confidence bound
    return np.argmax(self.Q + self.confidence * np.sqrt(np.log(self.t) / self.N))

  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'algoritmo UCB integra un meccanismo di esplorazione, che richiede un'attenta regolazione dell'iperparametro cc per funzionare in modo efficace. Il valore ottimale di cc varia a seconda del problema specifico. Di seguito alcune linee guida generali:

  • Elevata varianza nelle ricompense: un valore cc più grande garantisce un'esplorazione sufficiente;
  • Ricompense stabili: un valore cc più piccolo permette all'algoritmo di concentrarsi rapidamente sull'azione ottimale;
  • Valore predefinito comune: un punto di partenza tipico è c=1c = 1, ma spesso è necessario un aggiustamento sperimentale per ottenere i migliori risultati.

Riepilogo

L'algoritmo UCB è un metodo potente e ben fondato per bilanciare esplorazione ed exploitazione nei problemi multi-armed bandit. Selezionando le azioni in base sia alle ricompense stimate che all'incertezza, garantisce un apprendimento efficiente riducendo al minimo il rimpianto.

question mark

In che modo l'algoritmo UCB affronta il compromesso tra esplorazione ed exploitazione?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 4
some-alt