Fragen zum Q-Learning mit neuronalen Netzen

14

Ich habe Q-Learning implementiert, wie in

http://web.cs.swarthmore.edu/~meeden/cs81/s12/papers/MarkStevePaper.pdf

Um ca. F (S, A) Ich verwende eine neuronale Netzwerkstruktur wie die folgende:

  • Aktivierung Sigmoid
  • Eingänge, Anzahl der Eingänge + 1 für Aktionsneuronen (alle Eingänge skaliert 0-1)
  • Ausgänge, einzelner Ausgang. Q-Wert
  • N Anzahl der M ausgeblendeten Ebenen.
  • Explorationsmethode zufällig 0 <rand () <propExplore

Bei jeder Lerniteration unter Verwendung der folgenden Formel

Bildbeschreibung hier eingeben

Ich berechne einen Q-Target-Wert und berechne dann einen Fehler mit

error = QTarget - LastQValueReturnedFromNN

und den Fehler über das neuronale Netzwerk weitergeben.

Frage 1: Bin ich auf dem richtigen Weg? Ich habe einige Artikel gesehen, die eine NN mit einem Ausgangsneuron für jede Aktion implementieren.

F2, Meine Belohnungsfunktion gibt eine Zahl zwischen -1 und 1 zurück. Ist es in Ordnung, eine Zahl zwischen -1 und 1 zurückzugeben, wenn die Aktivierungsfunktion sigmoid ist (0 1)?

F3: Nach meinem Verständnis dieser Methode sollte sie unter Quarantäne gestellt werden, um ein optimales Vorgehen zu finden. Wenn es für XOR trainiert, lernt es es manchmal nach 2k-Iterationen, manchmal wird es auch nach 40k-50k-Iterationen nicht lernen.

Hamza Yerlikaya
quelle
Wie haben Sie aus Neugier den Status-Input mit dem Action-Input kombiniert, um beide gleichzeitig in das Netzwerk einzuspeisen? Haben Sie diesen Codeabschnitt öffentlich verfügbar? Vielen Dank!
Pedro Lopes

Antworten:

9

Q1. Sie sind definitiv auf dem richtigen Weg, aber ein paar Änderungen könnten immens helfen. Einige Benutzer verwenden eine Ausgabeeinheit pro Aktion, sodass sie ihr Netzwerk für die Aktionsauswahl nur einmal ausführen müssen (Sie müssen Ihr Netz für jede mögliche Aktion einmal ausführen). Aber dies sollte keinen Unterschied in Bezug auf das Lernen machen , und ist nur die Umsetzung wert , wenn Sie planen , Ihr Modell auf die Skalierung deutlich nach oben.

Q2. Im Allgemeinen verwenden Menschen eine lineare Aktivierungsfunktion für die letzte Schicht ihres neuronalen Netzwerks, insbesondere für das verstärkte Lernen. Hierfür gibt es verschiedene Gründe. Der wichtigste ist jedoch, dass Sie mit einer linearen Aktivierungsfunktion den gesamten Bereich der reellen Zahlen als Ausgabe darstellen können. Selbst wenn Sie die Grenzen der Belohnungen für Ihre Aufgabe nicht kennen, können Sie diesen Bereich dennoch darstellen.

Q3. Leider gibt es so gut wie keine theoretischen Garantien für die Kombination von neuronalen Netzen (und der nichtlinearen Funktionsannäherung im Allgemeinen) mit dem verstärkten Lernen. Es gibt einige schickere Versionen des Bestärkungslernens (hauptsächlich aus dem Sutton-Labor), die die Art von Konvergenz-Behauptungen aufstellen können, die Sie erwähnen, aber ich habe diese Algorithmen noch nie in der Praxis gesehen. Der Grund dafür ist, dass eine hohe Leistung zwar nicht versprochen werden kann, jedoch in der Praxis unter Berücksichtigung von Hyperparametern und Anfangsbedingungen erzielt wird.

Ein letzter Punkt, der für neuronale Netze im Allgemeinen erwähnt werden sollte: Verwenden Sie Sigmoid-Aktivierungsfunktionen nicht für Netze mit vielen versteckten Schichten! Sie sind verflucht mit dem Problem des "Verschwindens von Gefällen"; Das Fehlersignal erreicht die früheren Schichten kaum (wenn man sich die Ableitung der Funktion ansieht, sollte klar sein, warum dies der Fall ist). Versuchen Sie stattdessen, gleichgerichtete Lineareinheiten (RELU) oder "Soft Plus" -Einheiten zu verwenden, da diese in tiefen Netzwerken im Allgemeinen eine viel bessere Leistung aufweisen.

In diesem Artikel finden Sie eine großartige Implementierung neuronaler Netze, die mit dem Erlernen von Verstärkung trainiert wurden:

Mnih, Volodymyr et al. "Atari spielen und dabei intensiv lernen." arXiv-Vorabdruck arXiv: 1312.5602 (2013).

Zergylord
quelle
0

Für die Aktivierungsfunktion funktioniert maxout ebenfalls gut. Die Verwendung eines geeigneten Trainers ist für tiefe Netzwerke von entscheidender Bedeutung. Ich hatte verschiedene Trainer ausprobiert, mich jedoch für RMSprop entschieden und es sieht großartig aus!

Nakosung
quelle
1
Willkommen auf der Site, @ user3355911. Dies ist wahrscheinlich zu spärlich, um hier eine Antwort zu geben. Können Sie es erweitern und es mehr ausarbeiten?
gung - Reinstate Monica