Aan de slagGa gratis aan de slag

Epsilon-greediness

In deze oefening implementeer je een functie select_action() die gebruikmaakt van afnemende epsilon-greediness.

Epsilon-greediness stimuleert je agent om de omgeving te verkennen, wat het leren ten goede komt!

Het epsilon-greediness-schema bepaalt een drempel \(\varepsilon\) voor een gegeven step, volgens de formule: $$\varepsilon = end + (start-end) \cdot e^{-\frac{step}{decay}}$$

select_action() moet met kans \(\varepsilon\) een willekeurige actie retourneren, en met kans \(1-\varepsilon\) de actie met de hoogste Q-waarde.

Deze oefening maakt deel uit van de cursus

Deep Reinforcement Learning in Python

Cursus bekijken

Oefeninstructies

  • Bereken de drempel epsilon voor de gegeven waarde van step.
  • Trek een willekeurig getal tussen 0 en 1.
  • Retourneer met kans epsilon een willekeurige actie.
  • Retourneer met kans 1-epsilon de actie met de hoogste Q-waarde.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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")
Code bewerken en uitvoeren