Zacznij terazZacznij za darmo

Strategia epsilon-zachłanna

W tym ćwiczeniu zaimplementujesz funkcję select_action(), która stosuje wygaszaną strategię epsilon-zachłanną.

Strategia epsilon-zachłanna zachęca agenta do eksplorowania środowiska, co powinno poprawić efektywność uczenia!

Harmonogram epsilon-zachłanności wyznacza próg \(\varepsilon\) dla danego kroku step zgodnie z formułą: $$\varepsilon = end + (start-end) \cdot e^{-\frac{step}{decay}}$$

Funkcja select_action() powinna zwracać losową akcję z prawdopodobieństwem \(\varepsilon\), a akcję o najwyższej wartości Q z prawdopodobieństwem \(1-\varepsilon\).

To ćwiczenie jest częścią kursu

Głębokie uczenie ze wzmocnieniem w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Oblicz próg epsilon dla danej wartości step.
  • Wylosuj liczbę z przedziału od 0 do 1.
  • Z prawdopodobieństwem epsilon zwróć losową akcję.
  • Z prawdopodobieństwem 1-epsilon zwróć akcję o najwyższej wartości Q.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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")
Edytuj i uruchom kod