Lance-toi en Débuter Reinforcement Learning : ton premier pas concret aujourd'hui
Débuter Reinforcement Learning : l'essentiel en un article — vrai code, schémas et étapes concrètes, extraits d'un cours de 42 leçons.
La meilleure façon d'apprendre Débuter Reinforcement Learning, c'est de faire. Cet article te met le pied à l'étrier avec des extraits pratiques tirés d'un cours de 42 leçons — de quoi obtenir un premier résultat dès aujourd'hui.
- Ressources du cours et Installer l'environnement
- Introduction au Reinforcement Learning
- Notions Fondamentales du RL
- MDP Partie 1 - Etats Actions Recompenses
- MDP Partie 2 - Politique et Equations de Bellman
Chapitre 02 – Fiche de Terminologie Complète
Paradigme d'apprentissage automatique où un agent apprend à se comporter dans un environnement en effectuant des actions et en recevant des récompenses ou des pénalités en retour.
- L'agent observe l'état de l'environnement
- Il choisit une action à effectuer
- Il observe le résultat : nouvel état + récompense (positive ou négative)
- En répétant ce cycle, il apprend quelles actions maximisent la récompense à long terme
État — State st Composante fondamentale
Description complète de la situation actuelle de l'environnement à l'instant t. C'est l'information dont l'agent dispose pour décider quelle action entreprendre.
| Type d'état | Description | Exemple |
|---|---|---|
| État de départ | Position initiale au début d'un épisode | Case (1,1) dans un labyrinthe |
| État intermédiaire | Tout état en cours d'épisode (non terminal) | Cases traversées dans le labyrinthe |
| État terminal | État de fin d'épisode (victoire ou défaite) | Sortie du labyrinthe ou trou |
Action at Composante fondamentale
Ce que l'agent décide de faire dans un état donné. L'ensemble de toutes les actions possibles forme l'espace d'actions.
Nombre fini d'actions énumérables.
Exemples : Haut, Bas, Gauche, Droite (labyrinthe) ; 0 ou 1 (CartPole)
Valeurs numériques dans un intervalle.
Exemples : Force de 0 à 10 N ; angle de volant de −30° à +30°
Récompense rt — Reward Signal d'apprentissage
Signal numérique reçu par l'agent après chaque action. C'est le seul moyen pour l'environnement de dire à l'agent si son action était bonne ou mauvaise.
Récompense reçue directement après une action au pas t. Donne un retour instantané sur la qualité d'une seule action.
Notation : rt+1
Somme des récompenses accumulées sur tout l'épisode (ou à l'infini). C'est ce que l'agent cherche réellement à maximiser.
Notation : Gt = rt+1 + rt+2 + rt+3 + …
Discount — Facteur d'actualisation γ (gamma) Paramètre clé
Valeur comprise entre 0 et 1 qui pondère les récompenses futures. Plus une récompense est lointaine dans le temps, plus elle est "dévalorisée". C'est la pénalité appliquée aux récompenses futures.
L'agent est "myope" : il ne pense qu'à la récompense immédiate. Comportement court-termiste.
L'agent est "prévoyant" : il considère les récompenses futures avec presque autant d'importance. Comportement long-termiste.
Utilité — Utility / Return Gt Objectif final
La somme totale des récompenses actualisées obtenues à partir du pas de temps t. C'est LA valeur que l'agent cherche à maximiser. Aussi appelée retour ou rendement cumulé.
Politique — Policy π Cœur du RL
La stratégie de décision de l'agent : pour chaque état, elle définit quelle action entreprendre. C'est le "cerveau" de l'agent, ce qu'il cherche à apprendre.
Environnements Virtuels Python
Pourquoi des environnements virtuels ?
Le problème sans venv
La solution avec venv
| Environnement | Python | Bibliothèques | Projet |
|---|---|---|---|
myenv39 | 3.9 | TensorFlow 2.10, Gym 0.26 | Cours RL (ancien) |
myenv310 | 3.10 | Streamlit 1.28, pandas 2.0 | Dashboard |
myenv311 | 3.11 | TensorFlow 2.15, Gymnasium | Cours RL (actuel) |
rl-env | 3.12 | Gymnasium, NumPy, Matplotlib | Ce cours |
🪟 Windows Installer plusieurs versions de Python
Certaines commandes nécessitent les droits administrateur. Si vous avez une erreur de permissions lors de l'activation d'un venv, exécutez d'abord dans PowerShell :
# Ouvrir PowerShell en administrateur, puis : Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser # Répondre O (Oui) à la confirmation
Téléchargez et installez chaque version depuis python.org/downloads. Cochez «Add to PATH» pour la première version seulement. Pour les suivantes, décochez «Add to PATH» pour éviter les conflits.
py est installé automatiquement. Il vous permet d'appeler n'importe quelle version installée avec py -3.10, py -3.11, etc.python --version # Python 3.x.x (la version par défaut dans le PATH) py -3.9 --version # Python 3.9.x py -3.10 --version # Python 3.10.x py -3.11 --version # Python 3.11.x py -3.12 --version # Python 3.12.x py -3.13 --version # Python 3.13.x
# Vérifier la version py -3.9 --version # Créer l'environnement virtuel py -3.9 -m venv myenv39 # Activer l'environnement (PowerShell) .\myenv39\Scripts\activate # Le prompt change : (myenv39) indique que l'env est actif (myenv39) python --version # Python 3.9.x (myenv39) pip install streamlit (myenv39) pip show streamlit # Name: streamlit # Version: 1.x.x # ... # Désactiver l'environnement (myenv39) deactivate
py -3.10 --version
py -3.10 -m venv myenv310
.\myenv310\Scripts\activate
(myenv310) python --version
# Python 3.10.x
(myenv310) pip install streamlit
(myenv310) pip show streamlit
(myenv310) deactivate# Python 3.11 py -3.11 -m venv myenv311 .\myenv311\Scripts\activate (myenv311) python --version (myenv311) pip install streamlit (myenv311) deactivate # Python 3.12 py -3.12 -m venv myenv312 .\myenv312\Scripts\activate (myenv312) python --version (myenv312) pip install streamlit (myenv312) deactivate # Python 3.13 py -3.13 -m venv myenv313 .\myenv313\Scripts\activate (myenv313) python --version (myenv313) pip install streamlit (myenv313) deactivate
🔗 SSH Se connecter à une VM Linux depuis Windows
Étape 1 — Installer SSH sur la VM Linux
Dans le terminal de la VM Linux, en tant que root :
su # ou : sudo -s apt install openssh-server -y systemctl status ssh # vérifier le statut systemctl start ssh # démarrer si nécessaire systemctl enable ssh # démarrer automatiquement au boot # Trouver l'adresse IP de la VM ip -br addr # lo UNKNOWN 127.0.0.1/8 # eth0 UP 192.168.2.139/24 ← copier cette IP
Premier script Gym – Tester l'installation
Le but de cette leçon est uniquement de vérifier que votre environnement fonctionne. Vous allez copier-coller des scripts et observer les résultats. Vous ne devez pas encore tout comprendre — chaque ligne de code sera expliquée en détail dans les prochains chapitres. Respirez, c'est juste un test de démarrage !
Option A – Tester en local (Jupyter)
Si vous avez suivi les leçons 01 et 02 (installation Anaconda + configuration Jupyter), activez votre environnement et lancez Jupyter :
conda activate rl-env jupyter notebook
Ensuite copiez les scripts plus bas dans une cellule et exécutez avec Shift + Entrée.
Option B – Tester dans Google Colab (rien à installer !)
Google Colab fonctionne directement dans votre navigateur. Aucune installation requise — idéal pour tester maintenant et installer en local plus tard.
Ouvrez un nouveau notebook sur colab.research.google.com, puis installez Gymnasium en première cellule :
# Cellule 1 — Installation (Colab uniquement, déjà fait si vous êtes en local) !pip install gymnasium[toy-text] matplotlib --quiet
Ensuite copiez les scripts ci-dessous dans les cellules suivantes. C'est tout !
C'est quoi Gymnasium (ex-OpenAI Gym) ?
Gymnasium est la bibliothèque de référence pour tester des algorithmes de RL. Elle fournit des environnements standardisés avec une interface uniforme.
Environments classiques
Interface universelle
Script 1 – Explorer l'environnement CartPole
import gymnasium as gym
import numpy as np
# Créer l'environnement
env = gym.make("CartPole-v1")
obs, info = env.reset(seed=42)
print("=== CartPole-v1 ===")
print(f"Espace d'états : {env.observation_space}")
print(f" Nombre de dimensions : {env.observation_space.shape[0]}")
print(f" Valeurs min : {env.observation_space.low}")
print(f" Valeurs max : {env.observation_space.high}")
print(f"\nEspace d'actions : {env.action_space}")
print(f" Nombre d'actions : {env.action_space.n}")
print(f" Actions : 0 (gauche), 1 (droite)")
print(f"\nObservation initiale : {obs}")
print(f" [position cart, vitesse cart, angle bâton, vitesse bâton]")
env.close()Script 2 – Agent aléatoire sur CartPole
import gymnasium as gym
import numpy as np
import matplotlib.pyplot as plt
def run_random_agent(env_name, n_episodes=100):
"""Agent qui prend des actions aléatoires - notre baseline."""
env = gym.make(env_name)
total_rewards = []
for episode in range(n_episodes):
obs, info = env.reset()
episode_reward = 0
done = False
while not done:
# Action aléatoire (pas d'apprentissage)
action = env.action_space.sample()
obs, reward, terminated, truncated, info = env.step(action)
episode_reward += reward
done = terminated or truncated
total_rewards.append(episode_reward)
env.close()
return total_rewards
# Exécuter l'agent aléatoire
rewards = run_random_agent("CartPole-v1", n_episodes=100)
print(f"Récompense moyenne : {np.mean(rewards):.2f}")
print(f"Récompense maximale : {np.max(rewards):.0f}")
print(f"Récompense minimale : {np.min(rewards):.0f}")
# Visualiser
plt.figure(figsize=(10, 4))
plt.plot(rewards, alpha=0.6, label="Récompense par épisode")
plt.axhline(np.mean(rewards), color='red', linestyle='--', label=f"Moyenne: {np.mean(rewards):.1f}")
plt.xlabel("Épisode")
plt.ylabel("Récompense totale")
plt.title("Agent aléatoire - CartPole-v1")
plt.legend()
plt.tight_layout()
plt.savefig("agent_aleatoire_cartpole.png")
plt.show()Script 3 – Explorer FrozenLake (environnement discret)
import gymnasium as gym
# FrozenLake : grille 4x4 avec états discrets
env = gym.make("FrozenLake-v1", is_slippery=False)
obs, info = env.reset()
print("=== FrozenLake-v1 ===")
print(f"Espace d'états : {env.observation_space.n} états (grille 4x4)")
print(f"Espace d'actions : {env.action_space.n} actions")
print(f" 0=gauche, 1=bas, 2=droite, 3=haut")
print(f"\nÉtat initial : {obs}")
print("\nVisualisez la grille :")
env.render()
# Boucle manuelle
actions_manuelles = [2, 2, 1, 1, 1, 2, 1, 2, 2] # chemin vers la sortie
total_reward = 0
print("\n--- Simulation manuelle ---")
obs, _ = env.reset()
for i, action in enumerate(actions_manuelles):
obs, reward, terminated, truncated, _ = env.step(action)
total_reward += reward
direction = ["←", "↓", "→", "↑"][action]
print(f"Étape {i+1}: {direction} État={obs} Récompense={reward}")
if terminated or truncated:
break
print(f"\nRécompense totale : {total_reward}")
env.close()Cet article couvre les extraits les plus utiles — le cours complet Débuter Reinforcement Learning (12 chapitres, 42 leçons, exercices corrigés et projet final) t'emmène jusqu'au bout.
./acceder-au-cours-complet cours gratuit : Maîtriser Claude CodeFAQ
Combien de temps pour apprendre Débuter Reinforcement Learning ?
Faut-il des prérequis ?
Par où commencer concrètement ?
📬 Tu veux recevoir ce type de guide chaque semaine ? Abonne-toi gratuitement — code réel, zéro blabla.