Quelle est la différence entre le Q-learning et SARSA?
Même si je sais que SARSA est politique, tout en Q-learning est hors de la politique, quand on regarde leurs formules, il est difficile (pour moi) de voir la différence entre ces deux algorithmes.
Selon le livre L'Apprentissage Par Renforcement: Une Introduction (par Sutton et Barto). Dans l'algorithme SARSA, donné un la politique, l'action correspondante de la valeur de la fonction Q (dans l'état s et action, à timestep t), i.e. Q(st,t), peut être mis à jour comme suit
Q(st,t) = Q(st,t) + α*(rt + γ*Q(st+1,t+1) - Q(st,t))
D'autre part, l'étape de mise à jour pour le Q-learning de l'algorithme est le suivant
Q(st,t) = Q(st,t) + α*(rt + γ*maxa Q(st+1, a) - Q(st, t))
qui peut aussi être écrit comme
Q(st,t) = (1 - α) * Q(st,t) + α * (rt + γ*maxa Q(st+1, a))
où γ (gamma) est le facteur d'actualisation et rt est la récompense reçue de l'environnement à timestep t.
Est la différence entre ces deux algorithmes le fait que SARSA ne regarde que le côté politique de la valeur alors que le Q-learning regarde la prochaine maximum valeur de la stratégie?
TLDR (et ma propre réponse)
Merci à tous ceux qui ont répondu à cette question depuis que j'ai demandé. J'ai fait un dépôt github jouer avec Q-Learning et empiriquement compris quelle est la différence. Tous les montants de la façon dont vous sélectionnez votre prochain meilleur de l'action, qui, à partir d'un point de vue algorithmique peut être un dire, max ou meilleur d'action en fonction de la façon dont vous avez choisi de la mettre en œuvre.
L'autre principale différence est quand de sélection de ce qui se passe (par exemple, en ligne vs hors ligne) et comment/pourquoi qui affecte l'apprentissage. Si vous lisez ceci en 2019 et plus de mains sur la personne, en jouant avec un RL jouet problème est probablement la meilleure façon de comprendre les différences.
Une dernière important noter est que les deux Suton & Barto ainsi que Wikipédia ont souvent mixte, déroutant ou mal de formule représentations en ce qui concerne la état suivant le meilleur/max action et de récompenser:
r(t+1)
est en fait
r(t)
Espère que cela aide quelqu'un jamais être bloqué au ce.
Vous devez vous connecter pour publier un commentaire.
Oui, c'est la seule différence. Sur la politique de SARSA apprend les valeurs d'action relatif à la politique qu'elle suit, tandis que la politique de Q-Learning est-il par rapport à la gourmande politique. Sous certaines conditions communes, ils ont tous deux convergent vers la valeur réelle de la fonction, mais à des taux différents. Q-l'Apprentissage tend à converger vers un peu plus lent, mais a la capabilitiy pour continuer l'apprentissage, alors que l'évolution des politiques. Aussi, le Q-Learning n'est pas garantie de convergence lorsqu'il est combiné avec de l'approximation linéaire.
En termes pratiques, en vertu de l'ε-gourmand politique, Q-Learning calcule la différence entre Q(s,a) et le maximum de la valeur de l'action, tandis que SARSA calcule la différence entre Q(s,a) et de la somme pondérée de la moyenne de la valeur de l'action et la maximale:
Q-Learning: Q(st+1,t+1) = maxaQ(st+1,a)
SARSA: Q(st+1,t+1) = ε·moyenneaQ(st+1,a) + (1-ε)·maxaQ(st+1,a)
Quand j'étais à l'apprentissage de la présente partie, je l'ai trouvé très déroutant trop, j'ai donc mis ensemble, les deux pseudo-codes de R. Sutton and A. G. Barto en espérant faire la différence plus clair.
Bleu boîtes de mettre en évidence la partie où les deux algorithmes différents. Les numéros de mettre en évidence la plus détaillée de la différence sera expliqué ultérieurement.
TL;NR:
où π est une ε-gourmand politique (par exemple, ε > 0 avec l'exploration), et m est un gourmand de la politique (par exemple, ε = 0, PAS d'exploration).
Donné que le Q-learning est l'utilisation des stratégies différentes pour le choix de la prochaine action' et la mise à jour de Q. En d'autres termes, c'est d'essayer d'évaluer π tout en suivant une autre politique μ, c'est donc un hors-la politique de l'algorithme.
En revanche, SARSA utilise π tout le temps, donc c'est une politique de l'algorithme.
Explication plus détaillée:
La différence la plus importante entre les deux est de savoir comment Q est mise à jour après chaque action. SARSA utilise le Q' à la suite d'une ε-gourmand politique exactement, comme Un " est tirée. En revanche, le Q-learning utilise le maximum d'Q' sur toutes les actions possibles pour la prochaine étape. Ce la fait ressembler à la suite d'une gourmande politique avec ε=0, c'est à dire AUCUN exploration dans cette partie.
Toutefois, lorsque le fait de prendre une action, Q-learning utilise encore les mesures prises à partir d'un ε-gourmand politique. C'est pourquoi "Choisir ...", c'est à l'intérieur de la répéter en boucle.
À la suite de la boucle de logique dans le Q-learning, le " reste de l'ε-gourmand politique.
Quelle est la différence mathématiquement?
Comme cela est déjà décrit dans la plupart des autres réponses, la différence entre les deux mises à jour mathématiquement est, en effet, que, lors de la mise à jour de la Q-valeur pour un état-action paire (St,t):
Qu'est-ce que cela signifie intuitivement?
Comme mentionné dans d'autres réponses, la différence est décrit ci-dessus, au moyen d'une terminologie technique, qui Sarsa est un sur la politique algorithme d'apprentissage, et Q-learning est un hors de la politique algorithme d'apprentissage.
Dans la limite (donnée une quantité infinie de temps pour générer de l'expérience et d'apprendre), et sous certaines hypothèses supplémentaires, cela signifie que Sarsa et Q-learning converger les différentes solutions "optimales" politiques:
Lors de l'utilisation de l'algorithme?
Un algorithme de type Sarsa est généralement préférable dans les situations où nous nous soucions de l'agent pendant le processus de l'apprentissage et de générer de l'expérience. Considérons, par exemple, que l'agent est cher robot qui va briser si elle tombe en bas d'une falaise. Nous préférons ne pas faire tomber trop souvent pendant le processus d'apprentissage, parce que c'est cher. Par conséquent, nous nous soucions de ses performances au cours du processus d'apprentissage. Cependant, nous savons aussi que nous en avons besoin pour agir de façon aléatoire, parfois (par exemple, epsilon-gourmand). Cela signifie qu'il est très dangereux pour le robot de marcher aux côtés de la falaise, car il peut décider d'agir de façon aléatoire (avec une probabilité epsilon) et de tomber. Donc, nous préférerions pour apprendre rapidement qu'il est dangereux d'être proche de la falaise; même si une gourmande politique serait capable de marcher à vos côtés sans tomber, nous savons que nous sommes à la suite d'un epsilon-gourmand politique avec de l'aléatoire, et nous nous soucions de l'optimisation de nos performances étant donné que nous savons que nous allons être stupide parfois. C'est une situation où Sarsa serait préférable.
Un algorithme de type Q-learning serait préférable, dans des situations où nous ne se soucient pas de l'agent pendant le processus de formation, mais nous voulons juste qu'il pour en savoir optimale gourmand de la politique que nous allons passer à la suite. Considérons, par exemple, que nous avons jouer à quelques jeux (où nous n'avons pas l'esprit de la perdre à cause de l'aléatoire, des fois), et par la suite jouer un tournoi important (où nous allons arrêter d'apprendre, et de passer de l'epsilon-gourmand le gourmand de la politique). C'est là Q-learning serait mieux.
Il y a un indice d'erreur dans votre formule pour le Q-Learning.
Page 148 de Sutton et Barto est.
La typo est dans l'argument de la max:
les indices sont st+1 et une,
alors que dans votre question, elles sont st+1 et+1 (ils sont corrects pour SARSA).
Espère que cela aide un peu.
Dans Le Q-Learning
C'est votre:
Q-Learning: Q(St,At) = Q(St,At) + a [ R(t+1) + rabais * max Q(St+1,À) - Q(St,At) ]
doit être modifié pour
Q-Learning: Q(St,At) = Q(St,At) + a [ R(t+1) + rabais * max Q(St+1,un) - Q(St,At) ]
Comme vous l'avez dit, vous devez trouver le maximum de valeur Q pour la mise à jour de l'eq. en changeant la un, Alors vous aurez un nouveau Q(St,At). SOIGNEUSEMENT, les un que vous donner le maximum de Q-valeur n'est pas la prochaine action. À ce stade, vous ne connaissez que le prochain état (St+1), et avant de passer à la prochaine ronde, vous souhaitez mettre à jour la St le St+1 (St <-- St+1).
Pour chaque boucle;
choisir À partir de la St à l'aide de la Q-valeur
prendre et À respecter la Rt+1 et St+1
Mise à jour Q-valeur à l'aide de l'eq.
St <-- St+1
Jusqu'à St est la borne