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 .
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 Verwendung der Vorwärtsausbreitung des NN für alle Aktionen.
- Wählen Sie eine neue Aktion, , landen Sie in einem neuen Zustand .
- Berechnen Sie Verwendung der Vorwärtsausbreitung des NN für alle Aktionen.
- a t Q t + 1 ( s
- Setzen Sie den Fehlervektor auf
- 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.
quelle