Kursinhalt
Einführung in das Reinforcement Learning
Einführung in das Reinforcement Learning
Epsilon-Greedy-Algorithmus
Der Epsilon-Greedy (-greedy) Algorithmus ist eine unkomplizierte, aber äußerst effektive Strategie zur Lösung des Multi-Armed-Bandit-Problems. Obwohl er für diese spezielle Aufgabe möglicherweise nicht so robust ist wie einige andere Methoden, machen ihn seine Einfachheit und Vielseitigkeit in der Praxis des Reinforcement Learnings weit verbreitet.
Funktionsweise
Der Algorithmus folgt diesen Schritten:
- Initialisierung der Aktionswertschätzungen für jede Aktion ;
- Auswahl einer Aktion nach folgender Regel:
- Mit Wahrscheinlichkeit : Auswahl einer zufälligen Aktion (Exploration);
- Mit Wahrscheinlichkeit : Auswahl der Aktion mit dem höchsten geschätzten Wert (Exploitation).
- Ausführung der Aktion und Beobachtung der Belohnung;
- Aktualisierung der Aktionswertschätzung basierend auf der beobachteten Belohnung;
- Wiederholung der Schritte 2-4 für eine feste Anzahl von Zeitschritten.
Der Hyperparameter (Epsilon) steuert den Kompromiss zwischen Exploration und Exploitation:
- Ein hoher (z. B. 0,5) fördert mehr Exploration;
- Ein niedriger (z. B. 0,01) bevorzugt die Ausnutzung der bisher besten bekannten Aktion.
Beispielcode
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]
Zusätzliche Informationen
Die Effizienz des -greedy-Algorithmus hängt stark vom Wert von ab. Zwei Strategien werden üblicherweise zur Auswahl dieses Wertes verwendet:
- Festes : Dies ist die allgemeinste Option, bei der der Wert von als Konstante gewählt wird (z. B. 0,1);
- Abnehmendes : Der Wert von nimmt im Laufe der Zeit gemäß einem bestimmten Zeitplan ab (z. B. beginnt bei 1 und verringert sich schrittweise auf 0), um in den frühen Phasen die Exploration zu fördern.
Zusammenfassung
Der -greedy-Algorithmus ist ein Basisansatz zur Balance zwischen Exploration und Exploitation. Obwohl er einfach ist, dient er als Grundlage für das Verständnis fortgeschrittenerer Strategien wie Upper Confidence Bound (UCB) und Gradienten-Banditen.
Danke für Ihr Feedback!