CommencerCommencer gratuitement

Gourmandise epsilon

Dans cet exercice, vous allez implémenter une fonction d'select_action() qui applique l'algorithme epsilon-greedy avec décroissance.

La cupidité epsilon encouragera votre agent à explorer l'environnement, ce qui devrait améliorer l'apprentissage.

Le programme epsilon-greediness détermine un seuil d'\(\varepsilon\) s pour tout step donné, selon la formule suivante : $$\varepsilon = end + (start-end) \cdot e^{-\frac{step}{decay}}$$

select_action() doit renvoyer une action aléatoire avec une probabilité \(\varepsilon\), et l'action ayant la valeur Q la plus élevée avec une probabilité \(1-\varepsilon\).

Cet exercice fait partie du cours

Apprentissage par renforcement profond en Python

Afficher le cours

Instructions

  • Veuillez calculer l'epsilon e de seuil pour la valeur donnée de l'step.
  • Veuillez générer un nombre aléatoire compris entre 0 et 1.
  • Avec une probabilité epsilon, renvoie une action aléatoire.
  • Avec une probabilité 1-epsilon, renvoie l'action ayant la valeur Q la plus élevée.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

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")
Modifier et exécuter le code