2017-04-15 2 views
0

Ich möchte Q-Learning für das Chrome-Dinosaurier-Spiel implementieren (das, das Sie spielen können, wenn Sie offline sind).Verschiedene Belohnungen für denselben Zustand beim Lernen mit Verstärkung

Ich definierte meinen Zustand als: Abstand zum nächsten Hindernis, Geschwindigkeit und die Größe des nächsten Hindernisses.

Für die Belohnung wollte ich die Anzahl der erfolgreich bestandenen Hindernisse verwenden, aber es könnte passieren, dass der gleiche Zustand verschiedene unmittelbare Belohnungen hat. Die gleiche Art von Hindernis könnte später im Spiel wieder auftauchen, aber die Belohnung für das Bestehen wäre höher, weil bereits mehr Hindernisse überwunden wurden.

Meine Frage ist jetzt: Ist das ein Problem oder würde Q-Learning noch funktionieren? Wenn nicht, gibt es einen besseren Weg?

+0

Ich würde vorschlagen, ein Belohnungsschema mit einer großen negativen Belohnung für das Sterben. Und eine positive Belohnung jedes Mal, wenn der Punktestand erhöht wird (wahrscheinlich gleich dem Punktezuwachs). Ich sehe kein Problem für Q-Learning - ich habe erstaunliche Pacman-Agenten gesehen, die Vanilla Q-Learning verwenden. Dinosaurier-Spiel sollte kein Problem sein. –

Antwort

2

Die Definition eines MDP sagt, dass die Belohnung r(s,a,s')s die erwartete Belohnung sein Handeln für die Aufnahme a im Zustand definiert ist s' Zustand zu suchen. Dies bedeutet, dass eine gegebene (s,a,s') eine konstante Belohnung oder eine gewisse Verteilung von Belohnungen haben kann, solange sie eine klar definierte Erwartung hat. Wie Sie es definiert haben, ist die Belohnung proportional zur Anzahl der bestandenen Hindernisse. Da das Spiel für immer fortfahren kann, beginnt die Belohnung für einige (s,a,s') wie die Summe der natürlichen Zahlen aussehen. Diese Reihe divergiert, so dass sie keine Erwartung hat. Wenn Sie Q-Learning betreiben, würden Sie wahrscheinlich die Wertfunktion divergieren (NaN-Werte) sehen, aber die Richtlinie in der Mitte des Lernens könnte in Ordnung sein, da die Werte, die am schnellsten wachsen, die besten Zustandsaktionspaare sein werden.

Um dies zu vermeiden, sollten Sie eine andere Belohnungsfunktion wählen. Du könntest den Agenten mit allem belohnen, was sein Ergebnis ist, wenn es stirbt (große Belohnung am Ende, sonst Null). Es wäre auch in Ordnung, eine Belohnung zu geben (kleine Belohnung jedes Mal), solange der Agent keine andere Wahl hat, als vorwärts zu gehen. Solange die höchsten Gesamtbelohnungen den längsten Läufen zugewiesen werden (und die Erwartung der Belohnung für ein (s,a,s') Tupel wohldefiniert ist), ist es gut.

Verwandte Themen