Contenuti del Corso
Introduzione al Reinforcement Learning
Introduzione al Reinforcement Learning
Algoritmo Epsilon-Greedy
L'algoritmo epsilon-greedy (-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:
- Inizializzare le stime dei valori d'azione per ogni azione ;
- Scegliere un'azione utilizzando la seguente regola:
- Con probabilità : selezionare un'azione casuale (esplorazione);
- Con probabilità : selezionare l'azione con il valore stimato più alto (sfruttamento).
- Eseguire l'azione e osservare la ricompensa;
- Aggiornare la stima del valore d'azione in base alla ricompensa osservata;
- Ripetere i passaggi 2-4 per un numero fisso di intervalli temporali.
L'iperparametro (epsilon) controlla il bilanciamento tra esplorazione e sfruttamento:
- Un alto (ad esempio, 0.5) favorisce una maggiore esplorazione;
- Un basso (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 -greedy dipende fortemente dal valore di . Due strategie sono comunemente utilizzate per selezionare questo valore:
- fisso: questa è l'opzione più generica, in cui il valore di viene scelto come una costante (ad esempio, 0.1);
- decrescente: il valore di 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 -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.
Grazie per i tuoi commenti!