Apprentissage par différences temporelles

Reinforcement Learning avec Gymnasium en Python

Fouad Trad

Machine Learning Engineer

TD vs Monte-Carlo

 

Apprentissage TD
  • Sans modèle
  • Estime la Q-table via l’interaction
  • Met à jour la Q-table à chaque pas dans l’épisode
  • Adapté aux tâches à épisodes longs/indéfinis

 

Monte-Carlo
  • Sans modèle
  • Estime la Q-table via l’interaction
  • Met à jour la Q-table 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 à différents 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 effectuée, 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 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 mise à jour SARSA.

Reinforcement Learning avec Gymnasium en Python

Dériver la politique 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 politique optimale dans l’environnement Frozen Lake, avec des actions en flèches, et l’agent évite les trous.

Reinforcement Learning avec Gymnasium en Python

Passons à la pratique !

Reinforcement Learning avec Gymnasium en Python

Preparing Video For Download...