Q-Learning mit Neural Network als Funktionsnäherung

11

Ich versuche, ein neuronales Netzwerk zu verwenden, um den Q-Wert beim Q-Learning wie bei Fragen zum Q-Learning mit neuronalen Netzwerken zu approximieren . Wie in der ersten Antwort vorgeschlagen, verwende ich eine lineare Aktivierungsfunktion für die Ausgabeebene, während ich weiterhin die Sigmoid-Aktivierungsfunktion in den verborgenen Ebenen verwende (2, obwohl ich dies später ändern kann). Ich verwende auch ein einzelnes NN, das wie empfohlen eine Ausgabe für jede Aktion zurückgibt Q(a).

Der Algorithmus divergiert jedoch immer noch für das einfache Problem des Auswuchtens von Wagenstangen. Ich fürchte, mein Q-Update ist falsch. Nach der Initialisierung habe ich bei jedem Schritt Folgendes getan:

  • Berechnen Sie Qt(st) Verwendung der Vorwärtsausbreitung des NN für alle Aktionen.
  • Wählen Sie eine neue Aktion, at , landen Sie in einem neuen Zustand st .
  • Berechnen Sie Qt(st+1) Verwendung der Vorwärtsausbreitung des NN für alle Aktionen.
  • a t Q t + 1 ( sQt+1(st,at)=Qt(st,at)+αt[rt+1+γmaxaQ(st+1,a)Qt(st,at)]atQt+1(s,at)=Qt(s,at)
  • Setzen Sie den Fehlervektor aufe=QtargetQt=Qt+1Qt
  • Backpropagieren Sie den Fehler durch die NN, um die Gewichtsmatrizen zu aktualisieren.

Könnte mir bitte jemand sagen, wo ich falsch gelaufen bin?

Glauben Sie außerdem, dass ich auch einen Bias-Term in die Eingabeebene und die erste verborgene Ebene (dh für die Sigmoid-Funktionen) aufnehmen sollte? Wird es einen Unterschied machen?

Vielen Dank im Voraus für Ihre Hilfe. Bei Bedarf kann ich helfen, die Frage zu klären oder den Code zu teilen.

Enrico Anderlini
quelle

Antworten:

9

Ihr Ziel sollte gerecht sein

.rt+1+γmaxaQ(st+1,a)

Beachten Sie, dass Ihr Fehlerterm (der korrekt ist) dann als r t + 1 + γ max a Q ( s t + 1 , a ) - Q t umgeschrieben werden kann rt+1+γmaxaQ(st+1,a)Qt

Q

rcpinto
quelle
Qt
Mein NN + Q-Lernen konvergiert jedoch immer noch nicht. Wenn die Methode korrekt ist, werde ich wahrscheinlich nur versuchen, mit der Lernrate und der Anzahl der Neuronen in den verborgenen Schichten
herumzuspielen
1
Ja, das sollten Sie tun (versuchen Sie auch, die ReLU-Übertragungsfunktion zu verwenden). Beachten Sie jedoch, dass Q-Learning keine Konvergenzgarantien für die Funktionsnäherung bietet. Wenn Ihr nächster Versuch nicht funktioniert, können Sie Advantage Learning ausprobieren. Und schließlich könnte das Problem sein, dass Ihre Daten nicht iid sind. Sie müssen also Experience Replay implementieren.
rcpinto
Qt+1rt+1
1
Sie nicht, es ist Null. Es wird jedoch langsam durch die Q-Werte in frühere Zustände übertragen, da der Q-Wert eine Schätzung der kumulierten zukünftigen Belohnungen ist.
rcpinto