SARSA

From Wikipedia, the free encyclopedia

En intelligence artificielle, plus précisément en apprentissage par renforcement, SARSA est un algorithme d'apprentissage. Son nom est l'acronyme de State-Action-Reward-State-Action (Etat-Action-Récompense-Etat-Action)[1]. C'est un algorithme on-policy : il utilise la politique en train d'être apprise pour mettre à jour les valeurs internes apprises.

Le nom SARSA signifie Etat-Action-Récompense-Etat-Action (en anglais State-Action-Reward-State-Action) qui est la suite des éléments mathématiques considérés par l'algorithme :

  • l'algorithme considère l'état courant s (par exemple, la position d'un robot dans un environnement et la position de ses bras)
  • puis il choisit une action à exécuter en fonction de ce qu'il a déjà appris, mais aussi un biais d'exploration pour éveiller sa curiosité et essayer des actions non préconisées. Il exécute cette action
  • il reçoit alors une récompense r. Par exemple, si le robot est toujours en vie, on peut décider de lui une récompense de 1€, alors que s'il tombe, il perd 100€ (i.e. une récompense négative de -100€)
  • il perçoit le nouvel état s' (par exemple, sa nouvelle position)
  • il choisit la nouvelle action a' exécuter

La mise à jour de ses valeurs internes tient compte de valeur Q(s', a') et Q(s, a) et la récompense r. On dit que SARSA est un algorithme on-policy car la mise à jour tient compte en particulier de Q(s', a'), où a' a été choisi par la politique en cours d'apprentissage.

Pseudo-code

Voici le pseudo-code de l'algorithme SARSA. Dans cet algorithme, l'objectif est de calculer un tableau Q où Q(s, a) désigne la valeur sur le long terme estimée d'exécuter l'action a dans l'état s. La politique que l'agent exécute une fois qu'il a appris Q est donnée à partir de ces valeurs Q(s, a). Plus précisément, dans l'état s, il choisit d'exécuter l'action a qui maximise Q(s, a). Voici le pseudo-code l'algorithme SARSA.

entrée : taux d'apprentissage α > 0 et un petit ε > 0, taux γ > 0
sortie : tableau Q[., .]

initialiser Q[s, a] pour tout état s non final, pour toute action a de façon arbitraire, 
         et Q(état terminal, a) = 0 pour tout action a

répéter
      //début d'un épisode

      s := état initial
      choisir une action a depuis s en utilisant la politique spécifiée par Q (par exemple ε-greedy)
      
      répéter
               //étape de l'épisode
               exécuter l'action a
               observer la récompense r et le nouvel état s'
               choisir une action a' depuis s' en utilisant la politique spécifiée par Q (par exemple ε-greedy)
               Q[s, a] := Q[s, a] + α[r + γQ(s', a') - Q(s, a)]

               s := s'
               a := a'
      jusqu'à ce que s soit l'état terminal 

L'algorithme commence par initialiser le tableau Q de façon arbitraire, sauf pour l'état terminal où la valeur vaut 0 pour toute action. L'algorithme réalise alors plusieurs épisodes, autrement dit, il part d'un état s jusqu'à un état terminal. Le nombre d'épisodes effectué est laissé au choix. Durant l'épisode, l'algorithme choisit l'action a à exécuter en fonction du tableau Q courant. Généralement, on choisit a de la façon suivante :

  • avec une probabilité ε, on choisit une action au hasard
  • avec une probabilité 1-ε, on choisit l'action a qui maximise Q(s, a)

On réalise alors la mise à jour de Q[s, a] de la façon suivante :

Q[s, a] := Q[s, a] + α[r + γQ(s', a') - Q(s, a)]

que l'on peut aussi écrire

Q[s, a] := (1-α)Q[s, a] + α[r + γQ(s', a')].

Dans l'expression précédente, α est le facteur d'apprentissage qui exprime un compromis (une combinaison linéaire) entre :

  • (α = 0) rien apprendre du tout, i.e. Q[s, a] := Q[s, a]
  • (α = 1) apprendre en oubliant ce que l'on a déjà appris, i.e. Q[s, a] = r + γQ(s', a')

L'expression r + γQ(s', a') représente la valeur de récompense courante r, à laquelle on additionne la valeur d'être en s' et d'exécuter a', pondérée par γ.

Estimation épisodique de semi-gradients de SARSA

Propriétés

Notes et références

Related Articles

Wikiwand AI