Politique epsilon-greedy
Dans cet exercice, vous allez implémenter une fonction select_action() qui applique une politique epsilon-greedy avec décroissance.
La stratégie epsilon-greedy incite votre agent à explorer l'environnement, ce qui devrait améliorer l'apprentissage !
L'horaire d'exploration définit un seuil \(\varepsilon\) pour une step donnée, selon la formule :
$$\varepsilon = end + (start-end) \cdot e^{-\frac{step}{decay}}$$
select_action() doit retourner une action aléatoire avec la probabilité \(\varepsilon\), et l'action ayant la plus grande valeur Q avec la probabilité \(1-\varepsilon\).
Cette activité fait partie du cours
Deep Reinforcement Learning en Python
Instructions de l’exercice
- Calculez le seuil
epsilonpour la valeur donnée destep. - Générez un nombre aléatoire entre 0 et 1.
- Avec la probabilité
epsilon, retournez une action aléatoire. - Avec la probabilité
1-epsilon, retournez l'action ayant la plus grande valeur Q.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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")