SARSAEn 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. ExplicationLe 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 :
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-codeVoici 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 :
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 :
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 SARSAL'algorithme précédent manipule les états de manière explicite. Le problème est que le nombre d'états est souvent important en pratique, qui rend le stockage de Q impossible. C'est pourquoi on considère une approximation de la fonction . Cette approximation est représentée par une expression où s est l'état, a l'action, et est un vecteur de poids. Le vecteur contient les paramètres de . A chaque valeur de , correspond une fonction . On donne ici la version de SARSA donnée page 244 de [1]. La mise à jour générale de la descente de gradient pour la prédiction de la valeur d'action est : avec la valeur à mettre à jour. Cela forme la partie de prédiction de la valeur d'action, et pour le contrôle, nous devons coupler cela aux techniques d'amélioration des politiques et de sélection des actions. Cette estimation est utile dans les cas d'actions continues, ou des grands sets discrets de d'actions. entrée : fonction action-valeur de paramétrisation q, taux d'apprentissage α > 0 et un petit ε > 0, un taux γ > 0 sortie : vecteur w qui représente une fonction q Initialisation des poids action-valeur w aléatoirement pour chaque épisode initialiser l'état s et l'action a (avec politique ε-greedy) pour chaque étape de l'épisode exécuter l'action a observer la récompense r et l'état s' si s' est terminal : w := w + α[R - q(s, a, w)] q(s, a, w) aller à l'épisode suivant choisir une action a' depuis q(s', ., w) en utilisant la politique spécifiée par q(par exemple ε-greedy) w := w + α[R + γq(s', a', w) - q(s, a, w)] q(s, a, w) s := s' a := a' jusqu'à ce que s soit l'état terminal Propriétés
Notes et références
|