SARSA attendu

Reinforcement Learning avec Gymnasium en Python

Fouad Trad

Machine Learning Engineer

SARSA attendu

  • Méthode TD
  • Technique sans modèle
  • Met à jour la Q-table différemment de SARSA et Q-learning

Diagramme montrant les étapes de SARSA attendu : initialiser une Q-table, choisir une action, recevoir une récompense de l’environnement et mettre à jour la table. L’agent boucle jusqu’à convergence après un certain nombre d’épisodes.

Reinforcement Learning avec Gymnasium en Python

Mise à jour SARSA attendu

SARSA

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

Q-learning

Image montrant la formule mathématique de la mise à jour Q-learning.

SARSA attendu

Image montrant la formule mathématique de la mise à jour de SARSA attendu.

Reinforcement Learning avec Gymnasium en Python

Valeur attendue de l’état suivant

Image montrant la formule mathématique de la mise à jour de SARSA attendu.

  • Prend en compte toutes les actions

Image montrant la formule mathématique de la valeur Q attendue pour l’état suivant.

  • Actions aléatoires → probabilités égales

Image montrant la formule mathématique de la valeur Q attendue pour l’état suivant lorsque les actions sont choisies aléatoirement avec des probabilités égales.

Reinforcement Learning avec Gymnasium en Python

Implémentation avec Frozen Lake

env = gym.make('FrozenLake-v1', 
               is_slippery=False)

num_states = env.observation_space.n
num_actions = env.action_space.n
Q = np.zeros((num_states, num_actions))

gamma = 0.99 alpha = 0.1 num_episodes = 1000

Image montrant l’environnement Frozen Lake

Reinforcement Learning avec Gymnasium en Python

Règle de mise à jour SARSA attendu

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

expected_q = np.mean(Q[next_state])
Q[state, action] = (1-alpha) * Q[state, action] + alpha * (reward + gamma * expected_q)

Image montrant la formule mathématique de la mise à jour de SARSA attendu.

Reinforcement Learning avec Gymnasium en Python

Entraînement

for i in range(num_episodes):
    state, info = env.reset()    
    terminated = False  

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

Politique de l’agent

policy = {state: np.argmax(Q[state]) 
          for state in range(num_states)}
print(policy)
{ 0: 1,  1: 2,  2: 1,  3: 0, 
  4: 1,  5: 0,  6: 1,  7: 0, 
  8: 2,  9: 2, 10: 1, 11: 0, 
 12: 0, 13: 2, 14: 2, 15: 0}

Image montrant la politique apprise par l’agent, indiquant l’action à exécuter dans chaque état.

Reinforcement Learning avec Gymnasium en Python

Passons à la pratique !

Reinforcement Learning avec Gymnasium en Python

Preparing Video For Download...