IniziaInizia gratis

Epsilon-greediness

In questo esercizio implementerai una funzione select_action() che applica l'epsilon-greediness con decadimento.

L'epsilon-greediness spingerà il tuo agente a esplorare l'ambiente, migliorando l'apprendimento!

Lo schedule di epsilon-greediness determina una soglia \(\varepsilon\) per un dato step, secondo la formula: $$\varepsilon = end + (start-end) \cdot e^{-\frac{step}{decay}}$$

select_action() dovrebbe restituire un'azione casuale con probabilità \(\varepsilon\) e l'azione con Q-value più alto con probabilità \(1-\varepsilon\).

Questo esercizio fa parte del corso

Deep Reinforcement Learning in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Calcola la soglia epsilon per il valore dato di step.
  • Estrai un numero casuale tra 0 e 1.
  • Con probabilità epsilon, restituisci un'azione casuale.
  • Con probabilità 1-epsilon, restituisci l'azione con Q-value più alto.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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")
Modifica ed esegui il codice