Warum normalisieren wir die reduzierten Belohnungen, wenn wir das Lernen zur Verstärkung von Richtliniengradienten durchführen?


11

Ich versuche, den Policy-Gradient- Ansatz zur Lösung des Cartpole- Problems zu verstehen . Bei diesem Ansatz drücken wir den Gradienten des Verlusts für jeden Parameter unserer Richtlinie als Erwartung der Summe der Gradienten unseres Richtliniengradienten für alle Aktionen in einer Sequenz aus, gewichtet mit der Summe der abgezinsten Belohnungen in dieser Sequenz:

θL.(θ)=E.[G(S.0::T.,EIN0::T.)t=0T.θlÖGπθ(EINt|S.t)]]

und wir schätzen es anhand eines empirischen Durchschnitts über alle Stichproben in einer Episode - was intuitiv sinnvoll ist.

ABER der weniger intuitive Teil ist, dass ich eine gängige Praxis gesehen habe, um die Vorteile zwischen Episoden in mehreren Implementierungen zu normalisieren (und tatsächlich funktioniert es besser). Nachdem sie den berechnet haben, würden sie den Vorteil nicht direkt nutzen, sondern ihn normalisieren, z. B. hier nach jeder Episode:

discounted_epr = discount_rewards(epr)
discounted_epr -= np.mean(discounted_epr)
discounted_epr /= np.std(discounted_epr)

Was ist die Rechtfertigung dafür - sowohl in der Theorie als auch in der Intuition? Es scheint mir, dass es sich lohnt, mehr aus dieser Episode zu lernen als aus einer Episode mit drei Zügen, wenn eine Episode lang ist und als solche große Vorteile hat. Was vermisse ich?


Diese Antwort ist möglicherweise hilfreich: stackoverflow.com/a/56464156/6541879
sg3.14

Antworten:


12

Im Allgemeinen bevorzugen wir es, die Renditen aus Stabilitätsgründen zu normalisieren. Wenn Sie die Backpropagation-Gleichungen berechnen, werden Sie feststellen, dass die Rückgabe die Gradienten beeinflusst. Daher möchten wir seine Werte in einem bestimmten geeigneten Bereich halten. Wir folgen dieser Praxis nicht aus theoretischen Gründen, sondern aus praktischen Gründen. Gleiches gilt für das Abschneiden von Wert-Funktionen beim Q-Learning in Kombination mit NNs. Natürlich gibt es bei diesen Ansätzen einige Nachteile, aber im Allgemeinen verhält sich der Algorithmus besser, da die Backpropagation Ihre Netzwerkgewichte nicht zu Extremwerten führt. Bitte werfen Sie einen Blick auf diesen ausgezeichneten Beitrag von Andrej Karpathy (ich füge den Teil zu Ihrer Frage als Blockzitat hinzu), der zusätzliche Einblicke bietet:Q.

Allgemeinere Vorteilsfunktionen. Ich habe auch ein bisschen mehr Diskussion über die Renditen versprochen. Bisher haben wir die Güte jeder einzelnen Aktion danach beurteilt, ob wir das Spiel gewinnen oder nicht. In einer allgemeineren RL-Einstellung würden wir bei jedem Zeitschritt eine Belohnung erhalten . Eine übliche Wahl ist die Verwendung einer reduzierten Belohnung, sodass die "eventuelle Belohnung" im obigen Diagramm zu , wobei eine Zahl zwischen 0 ist und 1 als Abzinsungsfaktor bezeichnet (z. B. 0,99). Der Ausdruck besagt, dass die Stärke, mit der wir eine Stichprobenaktion fördern, die gewichtete Summe aller Belohnungen danach ist, aber spätere Belohnungen sind exponentiell weniger wichtig. In der Praxis kann es auch wichtig sein, diese zu normalisieren. Nehmen wir zum Beispiel an, wir berechnenrtR.t=k=0γkrt+kγR.t für alle 20.000 Aktionen in den oben genannten 100 Pong-Rollouts. Eine gute Idee ist es, diese Renditen zu „standardisieren“ (z. B. Mittelwert subtrahieren, durch Standardabweichung dividieren), bevor wir sie in Backprop einfügen. Auf diese Weise ermutigen und entmutigen wir immer ungefähr die Hälfte der durchgeführten Aktionen. Mathematisch können Sie diese Tricks auch interpretieren, um die Varianz des Richtliniengradientenschätzers zu steuern. Eine eingehendere Untersuchung finden Sie hier.


Ich war mit der Notation für Blockzitate nicht vertraut und wollte nicht, dass das OP im langen Blog verloren geht. Ich werde die Antwort bearbeiten. Entschuldigung dafür!
Constantinos

Könnten Sie bitte erklären, warum es sinnvoll ist, JEDE EPISODE EINZELN zu normalisieren? Ich habe die Frage hier ai.stackexchange.com/questions/10196/… ausgearbeitet und würde mich über eine Antwort sehr freuen. Danke!
Gulzar

0

Die folgenden Referenzen sind möglicherweise hilfreich:

  • Abschnitt 4.1.2 Vorteilsnormalisierung : Sie erwähnen, dass die Normalisierung des Vorteils ein Trick ist, der für das Training nützlich ist. Dies führt normalerweise zu einem schnelleren Lernen.
  • Lernen von Werten über viele Größenordnungen : Sie bieten einen Algorithmus zur Normalisierung von Belohnungen und detaillierte Experimente zu den Atari-Umgebungen. Die Grundidee ist, dass die Belohnungen über einen großen Bereich von Größen variieren können und die in RL verwendeten Funktionsapproximatoren (wie z. B. neuronale Netze) normalerweise nicht unveränderlich für die Skala der Eingabe sind. So wird die Normalisierung zu einem Schlüsselschritt. Überprüfen Sie dieses Papier für weitere Details.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.