Implémenter le Monte Carlo à visites multiples
La méthode Monte Carlo à visites multiples (Every-Visit) se distingue de la variante à première visite (First-Visit) en mettant à jour les valeurs à chaque apparition d’un couple état–action, et non seulement lors de la première occurrence. Cette approche offre une évaluation plus complète de la politique en exploitant toutes les informations disponibles dans les épisodes, mais elle peut aussi introduire davantage de variance dans les estimations de valeur puisqu’elle inclut tous les échantillons, quel que soit le moment où ils surviennent dans l’épisode. Votre objectif est de compléter l’implémentation de la fonction every_visit_mc(), qui estime la fonction valeur d’action Q sur num_episodes épisodes.
Les dictionnaires returns_sum et returns_count, ayant pour clés des couples état–action, ont été initialisés et préchargés pour vous, ainsi que la fonction generate_episode().
Cet exercice fait partie du cours
Reinforcement Learning avec Gymnasium en Python
Instructions
- Générez un épisode avec la fonction
generate_episode(). - Mettez à jour les retours et leur nombre pour chaque couple état–action au sein d’un épisode.
- Calculez les valeurs Q estimées.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
Q = np.zeros((num_states, num_actions))
for i in range(100):
# Generate an episode
episode = ____
# Update the returns and their counts
for j, (state, action, reward) in ____:
returns_sum[(state, action)] += sum(____)
returns_count[(state, action)] += ____
# Update the Q-values for visited state-action pairs
nonzero_counts = ____
Q[nonzero_counts] = ____
render_policy(get_policy())