Ein kurzes Tutorial zum Richtliniengradientenalgorithmus

Warum wir ein politisches Gefälle brauchen

Wertbasierte Verstärkungslernmethoden sind im Allgemeinen deterministisch. Bei gegebenem Zustand kann die Belohnung (bestimmter Wert) jeder möglichen Aktion berechnet werden. Diese deterministische Methode kann jedoch einige reale Probleme, wie das Spielen mit 100 Steinen, nicht bewältigen Bei einem Schere-Papier-Spiel besteht die beste Lösung darin, Stein, Schere und Papier nach dem Zufallsprinzip zu verwenden und sicherzustellen, dass die Wahrscheinlichkeit dieser drei Gesten gleich ist, da jede Geste mit einer höheren Wahrscheinlichkeit als andere Gesten vom Gegner bemerkt wird Verwenden Sie die entsprechende Geste. Gewinnen Sie das Spiel.

Nehmen wir als weiteres Beispiel an, wir müssen das Labyrinth im Bild oben erkunden, um an den Geldbeutel zu gelangen. Wenn Sie einen wertbasierten Ansatz verwenden, erhalten Sie deterministisches Feedback in einem bestimmten Zustand. Wenn Sie also diese Methode verwenden, um die nächste Aktion (links oder rechts) zu bestimmen, wird das graue Feld (Zustand) bestimmt, d. h. immer links oder nach rechts, was dazu führen kann, dass man in die falsche Schleife fällt (ein weißes Quadrat links und zwei graue Quadrate links) und den Geldbeutel nicht bekommt. Manche Leute fragen sich vielleicht, dass der Staat zu diesem Zeitpunkt nicht durch ein Quadrat, sondern durch alle Quadrate im Labyrinth dargestellt werden sollte. Bedenken Sie jedoch, dass es, wenn wir uns in einem riesigen Labyrinth befinden und nicht die Layoutinformationen des gesamten Labyrinths erhalten können, immer noch dazu führt, dass wir uns in einem bestimmten Teil drehen, wenn wir immer im gleichen wahrnehmbaren Zustand feste Urteile fällen. Tatsächlich weisen viele praktische Probleme, insbesondere Schachprobleme, ähnliche Merkmale auf, das heißt, sie erfordern die Anwendung unterschiedlicher Aktionen im scheinbar gleichen Zustand, beispielsweise bei der Eröffnung einer Schachpartie.

Der politische Gradient wurde geschaffen, um die oben genannten Probleme zu lösen, und seine Geheimwaffe ist „Zufälligkeit“. Erstens kann Zufälligkeit nicht deterministische Ergebnisse liefern. Dieses nicht deterministische Ergebnis ist nicht vollständig zufällig, sondern zufällig und folgt einer bestimmten Wahrscheinlichkeitsverteilung. Der Richtliniengradient berechnet keine Belohnungen, sondern gibt eine Wahrscheinlichkeitsverteilung für die Auswahl aller Aktionen aus und wählt dann Aktionen basierend auf der Wahrscheinlichkeit aus . Das Grundprinzip seines Trainings besteht darin, die Strategie durch Feedback anzupassen. Insbesondere erhöht sich die Wahrscheinlichkeit der entsprechenden Aktion, wenn eine positive Belohnung erhalten wird, und wenn eine negative Belohnung erhalten wird, verringert sich die Wahrscheinlichkeit der entsprechenden Aktion. Die grünen Punkte im linken Bild unten stellen Aktionen dar, die positive Belohnungen erhalten, und das rechte Bild stellt die aktualisierte Strategie dar. Es ist zu erkennen, dass die Wahrscheinlichkeit, dass Bereiche positive Belohnungen generieren, zugenommen hat (der Abstand zum Mittelpunkt des Kreises ist kleiner). .

Schauen wir uns den Policy-Gradienten-Algorithmus genauer an.

Basiskonzept

Objektsystem : Das Lernobjekt des Richtliniengradienten. Dieses Objekt kann ein System wie ein Auto oder ein Spiel oder ein Gegner wie ein Schwung-Papier-Schere-Spielgegner oder ein professioneller Go-Spieler sein.

Richtlinienstrategie:\pi_{\theta } (\alpha | s) Stellt die Wahrscheinlichkeit dar , dass eine Aktion unter Zustands- Sund Parameterbedingungen auftritt .\theta\Alpha

Episodenrunde : bedeutet, vom Startzustand bis zum Ende eines bestimmten Endzustands eine bestimmte Strategie zu verwenden, um Aktionen zu generieren und mit dem Objektsystem zu interagieren. Beispielsweise beginnt eine Runde im Go-Spiel mit dem ersten Zug auf dem Brett, bis der Ausgang des Spiels feststeht, oder eine Runde beim autonomen Fahren bezieht sich auf den Start des Autos bis zum erfolgreichen Erreichen des festgelegten Ziels Natürlich stürzt es ab oder fährt ins Auto. Auch der Teich ist ein unerwünschter Endzustand.

Flugbahn:\ dürfen Stellt die Abfolge von Zuständen S, Aktionen \Alphaund Belohnungen in einer PG-Lernrunde dar. RGib eine Kastanie: \tau=((s_0,\alpha_0,r_0),(s_1,\alpha_1,r_1),......). Da die Strategie nicht deterministische Aktionen hervorbringt, kann dieselbe Strategie in mehreren Runden mehrere unterschiedliche Trajektorien erzeugen.

Rundenbelohnung:\sum r(\number) Stellt die Gesamtbelohnung dar, die durch aufeinanderfolgende Aktionen in einer Runde generiert wird. Bei der Implementierung wird bei der Bewertung der Belohnungserwartungen für jede Richtlinie ein Durchschnitt über mehrere Epochen ermittelt.

Das Erlernen des Richtliniengradienten ist ein Richtlinienoptimierungsprozess. Eine Richtlinie wird zu Beginn zufällig generiert. Natürlich weiß diese Richtlinie nichts über das Objektsystem, sodass die von dieser Richtlinie generierten Aktionen wahrscheinlich eine negative Belohnung vom Objektsystem erhalten. Um unsere Gegner zu besiegen, müssen wir unsere Strategien schrittweise ändern. Der Richtliniengradient verwendet dieselbe Richtlinie in einer Lernrunde bis zum Ende der Runde, ändert die Richtlinie durch den Gradientenanstieg und startet die nächste Lernrunde und so weiter, bis die kumulative Belohnung der Runde konvergiert.

Zielfunktion

Gemäß den oben genannten Grundprinzipien des Politikgradienten können wir sein Ziel formal wie folgt beschreiben:

J(\theta )=argmax_\theta E[r_0+r_1+r_2+......|\pi_\theta ]

Diese Funktion stellt \pi_\thetaden erwarteten Wert der kumulativen Belohnung der Strategie von Schritt 0 bis t dar. Der Grund dafür, dass es sich um einen erwarteten Wert handelt, liegt darin, dass die Belohnung für jeden Schritt die Belohnungserwartung basierend auf der Strategie ist (die die Wahrscheinlichkeitsverteilung der Aktionsauswahl generiert) und nicht eine bestimmte Aktion auswählt und eine bestimmte Belohnung erhält. Das Ziel des Richtliniengradienten besteht darin, die Parameter zu bestimmen, aus denen die Richtlinie besteht, \thetaum J(\theta)den maximal erwarteten Wert zu erreichen. Im Augenblick:

\theta ^*=argmaxJ(\theta )

Der Gradientenanstieg wird im Richtliniengradientenalgorithmus verwendet \theta, um Parameter gemäß der Definition der mathematischen Erwartung zu aktualisieren:

J(\theta )=E_{r\sim \pi_\theta (\tau)}[\sum r_\tau]=\int_{​{}^{\tau}} r(t)\pi_\theta (t )dt

Finden Sie die Ableitung:

\nabla_\theta J(\theta)=\int_{​{}^{\tau}}r(t)\nabla_\theta\pi_\theta(t)dt

Wir können hier nicht fortfahren. Da \pi_\theta(t)wir davon abhängig sind \theta, können wir die Ableitung nicht direkt ableiten, also müssen wir einen kleinen Trick anwenden. \nabla logf(x)=\frac{\nabla f(x)}{f(x)}Konvertieren nach :

\nabla_\theta \pi_\theta(t)=\pi_\theta(t)\frac{\nabla_\theta \pi_\theta(t)}{\pi_\theta(t)}=\pi_\theta(t ). )\nabla_\theta log\pi_\theta(t)

Ersatz:

\nabla_\theta J(\theta)=\int_{ {}^{\tau}}r(t)\pi_\theta(t)\nabla_\theta log\pi_\theta(t) dt

Dieses Mal konvertieren wir sie nach Abschluss der Berechnung gemäß der Erwartungsdefinition zurück und erhalten:

\nabla_\theta J(\theta)=E_{\tau \sim \pi_\theta(\tau)}[\nabla_\theta log\pi_\theta(\tau)r(\tau)]

Weil:

log(\pi_\theta(\tau))=\sum_{t=1}^{T} log(\pi_\theta(\alpha_t|s_t))+logp(s_{t+1}|s_t,\alpha_t )

r(\tau)=\sum_{t=1}^{T} r(s_t,\alpha_t)

Das Endergebnis liegt vor:

\nabla_\theta J(\theta)=E_{\tau \sim \pi_\theta(\tau)}[\sum_{t=1}^{T}\nabla_\theta log\pi_\theta(\alpha_t| s_t)(\sum_{t=1}^{T} r(s_t,\alpha_t))]

Nähern Sie die Erwartung im Mittel:

\nabla_\theta J(\theta)=\frac{1}{N}\sum_{i=1}^{N}[\sum_{t=1}^{T}\nabla_\theta log\pi_\theta (\alpha_t|s_t)(\sum_{t=1}^{T} r(s_t,\alpha_t))]

Nach so viel Mühe habe ich die Berechnung endlich abgeschlossen. Dies ist die zu optimierende Zielfunktion. Auch wenn Sie es nicht ganz verstehen, können Sie von hier aus ein intuitives Verständnis erlangen: Wenn die Belohnung hoch ist, erhöht die Strategie tendenziell die Wahrscheinlichkeit der entsprechenden Aktion, und wenn die Belohnung niedrig ist, sinkt sie. Der Lernprozess des Richtliniengradienten ist dem des traditionellen überwachten Lernens relativ ähnlich: Jede Runde besteht aus Vorwärtsberechnung und Rückwärtsausbreitung. Die Vorwärtsberechnung ist für die Berechnung der Zielfunktion verantwortlich, und die Rückwärtsausbreitung ist für die Aktualisierung der Parameter des Algorithmus verantwortlich usw. Mehrere Lernrunden führen dazu, dass der Lerneffekt stabil konvergiert. Der einzige Unterschied besteht darin, dass die Zielfunktion des überwachten Lernens relativ einfach ist, d Alle in der Runde erhaltenen Belohnungen. , und zur Berechnung sind bestimmte mathematische Umrechnungen erforderlich. Da außerdem Stichproben zur Simulation von Erwartungen verwendet werden, muss derselbe Parametersatz auch mehrmals abgetastet werden, um die Genauigkeit der Simulation zu erhöhen.

Anwendungen

Im Folgenden stellen wir anhand eines Beispiels vor, wie PG zur Lösung spezifischer Probleme eingesetzt werden kann: Erlernen des Spielens des Atari PONG-Spiels. PONG ist ein Spiel, das das Spielen von Tischtennis simuliert. Der Spieler steuert ein kleines Flugzeug auf einer Seite des Bildschirms, um einen Tischtennisschläger zu simulieren, der sich auf und ab bewegt, um den Ball zu schlagen. Wenn der Gegner gezwungen ist, den Ball aufzugeben, wird die Punktzahl seiner Mannschaft um eins erhöht, andernfalls wird die Punktzahl des Gegners gewertet. Die Grundidee bei der Verwendung des Richtliniengradienten zum Erlernen des PONG-Spiels besteht darin, eine vom Algorithmus kontrollierte Partei zum Spielen gegen die andere vom Spiel kontrollierte Partei zu verwenden und die Wahrscheinlichkeitsverteilung der Aktion (nach oben oder unten) durch Beobachtung anzupassen Spielstatus und Punktestand ändern sich, um den Punktestand der Gruppe zu maximieren. Der Lernprozess kann als folgender Code geschrieben werden:

policy = build_policy_model()
game.start()
while True:
    state = game.currentState()
    action, prob = policy.feedforward(state)
    reward = game.play(action)
    trajectory.append((state, prob, action, reward))
    if game.terminated():
        if count < SAMPLE_COUNT:
            trajectories.append(trajectrory)
            trojectroy = []
            count += 1
            break
        else:
            policy.backpropagation(trajectories)
            game.restart()
            trajectory = []
            trajectories = []
            count = 0

Zeile 1 erstellt ein Richtlinienmodell und initialisiert die Modellparameter zufällig \theta. Die Funktion des Modells besteht darin, die Wahrscheinlichkeitsverteilung aller Aktionen aus den Zustandsinformationen beispielsweise durch Vorwärtsrückmeldung (nach oben 90 %, nach unten 10 %) zu berechnen und die Aktion mit der höchsten Wahrscheinlichkeit auszuwählen, um sie als Aktion an das Spiel zu senden Anweisung.

Zeile 2 startet das Spiel.

Zeile 4 ermittelt den aktuellen Status, wie z. B. die Position des Schlägers sowie die Geschwindigkeit und Richtung des Balls.

Zeile 5 übergibt die Statusinformationen an das Richtlinienmodell, um die entsprechende Aktion zu berechnen. Hier wird auch die Wahrscheinlichkeit der Aktion erfasst \pi_\theta(s), um die Zielfunktionsableitung während der Umkehrphase zu berechnen.

Linie 6 spielt das Spiel mit 4 berechneten Aktionen und erhält die Belohnung

Zeile 7 speichert eine Reihe von Interaktionsinformationen (Status, Aktionswahrscheinlichkeit, Aktionen und Belohnungen) in der aktuellen \ dürfenFlugbahn

Zeile 8 Wenn das Spiel noch nicht vorbei ist (der Tischtennisball wird immer noch von beiden Seiten geschlagen), verwenden Sie für die nächste Interaktion weiterhin das aktuelle Strategiemodell.

Zeile 10: Wenn das Spiel endet (eine Partei schlägt den Tischtennisball nicht), werden die Flugbahninformationen der vorherigen Runde gespeichert und eine neue Runde des Spiels mit demselben Strategiemodell gestartet. Das heißt, um zu reduzieren Aufgrund der Auswirkungen individueller Unterschiede werden mehrere Variablen für dasselbe Strategiemodell generiert. Stichproben.

Nachdem in Zeile 15 genügend Stichproben generiert wurden, werden die Parameter durch die umgekehrte Übertragung des Richtlinienmodells aktualisiert, und dann wird eine neue Lernrunde mit der aktualisierten Richtlinie gestartet.

Probleme und Verbesserungen

Obwohl der Richtliniengradient theoretisch komplexe Probleme bewältigen kann, die wertbasierte Methoden nicht bewältigen können, weist diese Methode aufgrund der Abhängigkeit von Stichproben zur Optimierung der Richtlinie eine relativ große Varianz auf, die durch individuelle Unterschiede in den Stichproben beeinflusst wird, und der Lerneffekt ist nicht einfach, kontinuierlich zu sein verstärken und zusammenführen. Eine grundlegende Verbesserungsidee besteht darin, die Varianz durch Reduzierung ungültiger Elemente zu verringern. Da die aktuelle Aktion keine Auswirkungen auf frühere Belohnungen hat, kann die Zielfunktion wie folgt geändert werden:

\nabla_\theta J(\theta)=\frac{1}{N}\sum_{i=1}^{N}[\sum_{t=1}^{T}\nabla_\theta log\pi_\theta (\alpha_t|s_t)(\sum_{t^{'}=t}^{T} r(s_{t^{'}},\alpha_{t^{'}}))]

Sie können auch den klassischen Rabattfaktor nutzen, um die Auswirkungen von Fernaktionen zu reduzieren:

\nabla_\theta J(\theta)=\frac{1}{N}\sum_{i=1}^{N}[\sum_{t=1}^{T}\nabla_\theta log\pi_\theta (\alpha_t|s_t)(\sum_{t^{'}=t}^{T} \gamma ^{|tt^{'}|}r(s_{t^{'}},\alpha_{t^ {'}}))]

Darüber hinaus müssen wir auch ein Problem berücksichtigen: Die in der tatsächlichen Berechnung generierten Rundenbelohnungen stellen die Qualität der Strategie nicht genau dar. Wenn die Strategie beispielsweise bereits gut ist, wird eine weniger gute Stichprobe verwendet, um eine kleinere Rundenbelohnung zu generieren Da diese Belohnung nicht negativ ist, versucht der herkömmliche Richtliniengradientenalgorithmus immer noch, die Wahrscheinlichkeit der Aktion zu erhöhen, die diese Flugbahn erzeugt, was zu einer Verringerung des Lerneffekts statt zu einer Erhöhung führt. Daher müssen wir einen Basiswert einführen, damit der Algorithmus die Wahrscheinlichkeit von Aktionen besser als den Basiswert erhöhen und die Wahrscheinlichkeit von Aktionen unterhalb des Basiswerts verringern kann, das heißt:

\nabla_\theta J(\theta)=\frac{1}{N}\sum_{i=1}^{N}[\sum_{t=1}^{T}\nabla_\theta log\pi_\theta (\alpha_t|s_t)(\sum_{t^{'}=t}^{T} r(s_{t^{'}},\alpha_{t^{'}})-b)]

Als Mittelwert Bwird derzeit in der Regel der Benchmarkwert angenommen, also b=\frac{1}{N}\sum_{i=1}^{N}r(\alpha_i,s_i). Es ist zu erkennen, dass sich dieser Basiswert bei Aktualisierungen auch dynamisch ändert. Forscher versuchen immer noch, andere Methoden zu verwenden, um bessere Benchmark-Werte zu generieren. Wenn Sie sorgfältig darüber nachdenken, werden Sie tatsächlich feststellen, dass die dynamische Schätzung des Benchmark-Werts tatsächlich ein Schätzproblem der Wertfunktion ist. Daher kann der Richtliniengradientenalgorithmus mit dem wertbasierten Algorithmus kombiniert werden, um bessere Ergebnisse zu erzielen. Beispielsweise ist Actor-Critic meiner Meinung nach tatsächlich eine Kombination aus der Policy-Gradienten-Methode und DQN. Wir werden noch einmal darüber sprechen, wenn wir die Gelegenheit dazu haben~

Supongo que te gusta

Origin blog.csdn.net/FYZDMMCpp/article/details/112586572
Recomendado
Clasificación