Epsilon-Grausamkeit
In dieser Übung wirst du eine select_action()
Funktion implementieren, die die abklingende Epsilon-Grausamkeit anwendet.
Die Epsilon-Gier wird deinen Agenten dazu ermutigen, die Umgebung zu erkunden, was das Lernen verbessern sollte!
Der Epsilon-Greediness-Plan bestimmt einen Schwellenwert \(\varepsilon\) für jede beliebige step
. Er ergibt sich aus der Formel:
$$\varepsilon = end + (start-end) \cdot e^{-\frac{step}{decay}}$$
select_action()
sollte eine zufällige Aktion mit der Wahrscheinlichkeit \(\varepsilon\) und die Aktion mit dem höchsten Q-Wert mit der Wahrscheinlichkeit \(1-\varepsilon\) zurückgeben.
Diese Übung ist Teil des Kurses
Deep Reinforcement Learning in Python
Anleitung zur Übung
- Berechne den Schwellenwert
epsilon
für den gegebenen Wert vonstep
. - Ziehe eine Zufallszahl zwischen 0 und 1.
- Gib mit der Wahrscheinlichkeit
epsilon
eine zufällige Aktion zurück. - Gib mit der Wahrscheinlichkeit
1-epsilon
die Aktion mit dem höchsten Q-Wert zurück.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
def select_action(q_values, step, start, end, decay):
# Calculate the threshold value for this step
epsilon = end + (____) * math.exp(____ / ____)
# Draw a random number between 0 and 1
sample = random.____
if sample < epsilon:
# Return a random action index
return random.____
# Return the action index with highest Q-value
return torch.____.item()
for step in [1, 500, 2500]:
actions = [select_action(torch.Tensor([1, 2, 3, 5]), step, .9, .05, 1000) for _ in range(20)]
print(f"Selecting 20 actions at step {step}.\nThe action with highest q-value is action 3.\nSelected actions: {actions}\n\n")