Apprentissage par différence temporelle

Reinforcement Learning avec Gymnasium en Python

Fouad Trad

Machine Learning Engineer

TD vs Monte Carlo

 

Apprentissage TD
  • Sans modèle
  • Estime la table Q selon l'interaction
  • Met à jour la table Q à chaque étape de l'épisode
  • Adapté aux épisodes longs/indéfinis

 

Monte Carlo
  • Sans modèle
  • Estime la table Q selon l'interaction
  • Met à jour la table Q quand au moins un épisode est terminé
  • Adapté aux tâches épisodiques courtes
Reinforcement Learning avec Gymnasium en Python

TD comme prévision météo

Image montrant différentes conditions météo à divers moments au même endroit.

Reinforcement Learning avec Gymnasium en Python

SARSA

  • Algorithme TD
  • Méthode on-policy : ajuste la stratégie selon les actions prises

Image montrant que SARSA représente l'état courant, l'action prise, la récompense reçue, l'état suivant observé et l'action suivante.

Reinforcement Learning avec Gymnasium en Python

Règle de mise à jour SARSA

Image montrant la formule mathématique de la règle de mise à jour SARSA.

  • $\alpha$ : taux d'apprentissage
  • $\gamma$ : facteur d'actualisation
  • Tous deux entre 0 et 1
Reinforcement Learning avec Gymnasium en Python

Frozen Lake

Image montrant l'environnement Frozen Lake

Reinforcement Learning avec Gymnasium en Python

Initialisation

env = gym.make("FrozenLake", is_slippery=False)

num_states = env.observation_space.n num_actions = env.action_space.n
Q = np.zeros((num_states, num_actions))
alpha = 0.1 gamma = 1 num_episodes = 1000
Reinforcement Learning avec Gymnasium en Python

Boucle SARSA

for episode in range(num_episodes):

state, info = env.reset() action = env.action_space.sample()
terminated = False while not terminated: next_state, reward, terminated, truncated, info = env.step(action)
next_action = env.action_space.sample()
update_q_table(state, action, reward, next_state, next_action)
state, action = next_state, next_action
Reinforcement Learning avec Gymnasium en Python

Mises à jour SARSA

def update_q_table(state, action, reward, next_state, next_action):

old_value = Q[state, action]
next_value = Q[next_state, next_action]
Q[state, action] = (1 - alpha) * old_value + alpha * (reward + gamma * next_value)

  Image montrant la formule mathématique de la règle de mise à jour SARSA.

Reinforcement Learning avec Gymnasium en Python

Dériver la stratégie optimale

policy = get_policy()
print(policy)
{ 0: 1,  1: 2,  2: 1,  3: 0, 
  4: 1,  5: 0,  6: 1,  7: 0, 
  8: 2,  9: 1, 10: 1, 11: 0, 
 12: 0, 13: 2, 14: 2, 15: 0}

Image montrant la stratégie optimale dans l'environnement Frozen Lake avec des actions représentées par des flèches, où l'on voit l'agent éviter les trous.

Reinforcement Learning avec Gymnasium en Python

Passons à la pratique !

Reinforcement Learning avec Gymnasium en Python

Preparing Video For Download...