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 γ.