Obwohl ich weiß, dass SARSA nicht den Richtlinien entspricht, während Q-Learning nicht den Richtlinien entspricht, ist es (für mich) schwierig, bei der Betrachtung ihrer Formeln einen Unterschied zwischen diesen beiden Algorithmen festzustellen.
Nach dem Buch Reinforcement Learning: An Introduction (von Sutton und Barto). In dem SARSA-Algorithmus kann bei gegebener Richtlinie die entsprechende Aktionswertfunktion Q (im Zustand s und Aktion a zum Zeitpunkt t), dh Q (s t , a t ), wie folgt aktualisiert werden
Q (s t , a t ) = Q (s t , a t ) + α * (r t + γ * Q (s t + 1 , a t + 1 ) - Q (s t , a t ))
Andererseits ist der Aktualisierungsschritt für den Q-Learning-Algorithmus der folgende
Q (s t , a t ) = Q (s t , a t ) + α * (r t + γ * max a Q (s t + 1 , a) - Q (s t , a t ))
was auch geschrieben werden kann als
Q (s t , a t ) = (1 - α) * Q (s t , a t ) + α * (r t + γ * max a Q (s t + 1 , a))
Dabei ist γ (Gamma) der Abzinsungsfaktor und r t die Belohnung, die zum Zeitpunkt t von der Umgebung erhalten wird.
Ist der Unterschied zwischen diesen beiden Algorithmen die Tatsache, dass SARSA nur den nächsten Richtlinienwert nachschlägt, während Q-Learning den nächsten maximalen Richtlinienwert nachschlägt ?
TLDR (und meine eigene Antwort)
Vielen Dank an alle, die diese Frage beantwortet haben, seit ich sie zum ersten Mal gestellt habe. Ich habe ein Github-Repo mit Q-Learning gemacht und empirisch verstanden, was der Unterschied ist. Alles hängt davon ab, wie Sie Ihre nächstbeste Aktion auswählen. Unter algorithmischen Gesichtspunkten kann dies eine mittlere , maximale oder beste Aktion sein, je nachdem, wie Sie sie implementiert haben.
Der andere Hauptunterschied ist , wenn diese Auswahl geschieht (zB Online - vs offline ) und wie / warum das Lernen auswirkt. Wenn Sie dies im Jahr 2019 lesen und eher eine praktische Person sind, ist das Spielen mit einem RL-Spielzeugproblem wahrscheinlich der beste Weg, um die Unterschiede zu verstehen.
Ein letzter wichtiger Hinweis ist, dass sowohl Suton & Barto als auch Wikipedia häufig gemischte, verwirrende oder falsche formelhafte Darstellungen in Bezug auf die beste / maximale Aktion und Belohnung des nächsten Staates haben :
r (t + 1)
ist in der Tat
r (t)
Hoffe, das hilft jedem, der jemals daran hängen bleibt.
Als ich diesen Teil lernte, fand ich ihn auch sehr verwirrend, also habe ich die beiden Pseudocodes von R. Sutton und AGBarto zusammengestellt, um den Unterschied klarer zu machen.
Blaue Kästchen markieren den Teil, in dem sich die beiden Algorithmen tatsächlich unterscheiden. Die Zahlen verdeutlichen den detaillierteren Unterschied, der später erläutert wird.
TL; NR :
wobei π eine ε-gierige Politik ist (z. B. ε> 0 mit Exploration) und μ eine gierige Politik ist (z. B. ε == 0, KEINE Exploration).
Angesichts der Tatsache, dass Q-Learning unterschiedliche Richtlinien verwendet, um die nächste Aktion A 'auszuwählen und Q zu aktualisieren. Mit anderen Worten, es wird versucht, π zu bewerten, während eine andere Richtlinie μ befolgt wird. Es handelt sich also um einen Algorithmus außerhalb der Richtlinie.
Im Gegensatz dazu verwendet SARSA ständig π, daher handelt es sich um einen On-Policy-Algorithmus.
Detailliertere Erklärung :
Der wichtigste Unterschied zwischen den beiden besteht darin, wie Q nach jeder Aktion aktualisiert wird. SARSA verwendet das Q 'genau nach einer ε-gierigen Richtlinie, wie A' daraus gezogen wird. Im Gegensatz dazu verwendet Q-Learning das maximale Q 'über alle möglichen Aktionen für den nächsten Schritt. Dies lässt es so aussehen, als würde man einer gierigen Politik mit ε = 0 folgen, dh KEINER Erkundung in diesem Teil.
Wenn Q-Learning jedoch tatsächlich eine Aktion ausführt, verwendet es immer noch die Aktion, die aus einer ε-gierigen Richtlinie stammt. Aus diesem Grund befindet sich "Choose A ..." in der Wiederholungsschleife.
Nach der Schleifenlogik beim Q-Learning stammt A 'immer noch aus der ε-gierigen Politik.
quelle
Was ist der mathematische Unterschied?
Wie bereits in den meisten anderen Antworten beschrieben, besteht der Unterschied zwischen den beiden Aktualisierungen mathematisch tatsächlich darin, dass beim Aktualisieren des Q- Werts für ein Zustands-Aktions-Paar (S t , A t ) :
Was bedeutet das intuitiv?
Wie in anderen Antworten erwähnt, bedeutet der oben beschriebene Unterschied unter Verwendung der technischen Terminologie, dass Sarsa ein On-Policy- Lernalgorithmus und Q-Learning ein Off-Policy- Lernalgorithmus ist.
In der Grenze (bei unendlich viel Zeit, um Erfahrung zu sammeln und zu lernen) und unter einigen zusätzlichen Annahmen bedeutet dies, dass Sarsa und Q-Learning zu unterschiedlichen Lösungen / "optimalen" Richtlinien konvergieren :
Wann soll welcher Algorithmus verwendet werden?
Ein Algorithmus wie Sarsa ist normalerweise in Situationen vorzuziehen, in denen wir uns um die Leistung des Agenten während des Lernprozesses / der Generierung von Erfahrung kümmern . Stellen Sie sich zum Beispiel vor, dass der Agent ein teurer Roboter ist, der kaputt geht, wenn er eine Klippe hinunterfällt. Wir möchten, dass es während des Lernprozesses nicht zu oft herunterfällt, weil es teuer ist. Daher kümmern wir uns um die Leistung während des Lernprozesses. Wir wissen jedoch auch, dass wir es brauchen, um manchmal zufällig zu handeln (z. B. epsilon-gierig). Dies bedeutet, dass es für den Roboter sehr gefährlich ist, entlang der Klippe zu laufen, da er sich möglicherweise dazu entschließt, zufällig (mit Wahrscheinlichkeit epsilon) zu handeln und herunterzufallen. Wir würden es also vorziehen, schnell zu lernen, dass es gefährlich ist, in der Nähe der Klippe zu sein.Selbst wenn eine gierige Politik in der Lage wäre, direkt daneben zu gehen, ohne zu fallen, wissen wir, dass wir eine epsilon-gierige Politik mit Zufälligkeit verfolgen, und wir legen Wert darauf, unsere Leistung zu optimieren, da wir wissen, dass wir manchmal dumm sind . Dies ist eine Situation, in der Sarsa vorzuziehen wäre.
Ein Algorithmus wie Q-Learning wäre in Situationen vorzuziehen, in denen wir uns nicht um die Leistung des Agenten während des Schulungsprozesses kümmern, sondern nur eine optimale gierige Richtlinie lernen möchten, zu der wir irgendwann wechseln werden. Stellen Sie sich zum Beispiel vor, wir spielen ein paar Übungsspiele (bei denen es uns manchmal nichts ausmacht, aufgrund von Zufälligkeiten zu verlieren) und spielen anschließend ein wichtiges Turnier (bei dem wir aufhören zu lernen und von epsilon-gierig zu gierig wechseln ). Hier wäre Q-Learning besser.
quelle
Ihre Formel für Q-Learning enthält einen Indexfehler. Seite 148 von Sutton und Barto.
Der Tippfehler steht im Argument des max:
Die Indizes sind st + 1 und a, während sie in Ihrer Frage st + 1 und bei + 1 sind (diese sind für SARSA korrekt).
Hoffe das hilft ein bisschen.
quelle
Im Q-Learning
Dies ist Ihr: Q-Learning: Q (St, At) = Q (St, At) + a [R (t + 1) + Rabatt * max Q (St + 1, At ) - Q (St, At)]
sollte in Q-Learning geändert werden: Q (St, At) = Q (St, At) + a [R (t + 1) + Rabatt * max Q (St + 1, a ) - Q (St, At)]
Wie Sie sagten, müssen Sie den maximalen Q-Wert für die Update-Gl. Wenn Sie das a ändern , erhalten Sie ein neues Q (St, At). SORGFÄLTIG ist das a , das Ihnen den maximalen Q-Wert gibt, nicht die nächste Aktion. Zu diesem Zeitpunkt kennen Sie nur den nächsten Status (St + 1), und bevor Sie zur nächsten Runde gehen, möchten Sie die St um St + 1 aktualisieren (St <- St + 1).
Für jede Schleife;
Wählen Sie At aus der St mit dem Q-Wert
nimm At und beobachte Rt + 1 und St + 1
Aktualisieren Sie den Q-Wert mit der Gl.
St <- St + 1
Bis St Terminal ist
quelle
Der einzige Unterschied zwischen SARSA und Qlearning besteht darin, dass SARSA die nächste Aktion basierend auf der aktuellen Richtlinie ausführt, während qlearning die Aktion mit maximalem Nutzen des nächsten Status ausführt
quelle