Sie sind bei Q-Learning-Implementierungen auf ein häufiges Problem gestoßen: Zustandsaktionswerte werden zu hoch. Lassen Sie uns dieses Problem untersuchen und eine Lösung anbieten.
Das Problem verstehen
Ihr Agent versucht, die erwartete Gesamtprämie zu maximieren. Ihre Belohnungsfunktion gibt jedoch positive Belohnungen für die Fortsetzung des Spiels zurück (0,5). Dies gibt dem Agenten einen Anreiz, Spiele auf unbestimmte Zeit zu verlängern, was zu einer unbegrenzten erwarteten Gesamtbelohnung und übermäßig hohen Q-Werten führt.
Lösung: Anpassung der Belohnungsfunktion
Um dieses Problem zu beheben Passen Sie Ihre Belohnungsfunktion an, um für jeden Zeitschritt negative Belohnungen bereitzustellen. Dies bestraft den Agenten für die Verlängerung von Spielen und ermutigt ihn, eine Gewinnstrategie zu suchen. Sie könnten beispielsweise das folgende Belohnungsschema verwenden:
Überlegungen zur Implementierung
In Ihrem Code verwenden Sie agent.prevScore als Belohnung für die vorherige Statusaktion. Dies sollte jedoch die tatsächlich erhaltene Belohnung sein, nicht der Q-Wert. Nehmen Sie diese Anpassung in Ihrem Code vor:
<code class="go">agent.values[mState] = oldVal + (agent.LearningRate * (reward - agent.prevScore))</code>
Erwartetes Verhalten
Nach der Implementierung dieser Änderungen sollten Sie das folgende Verhalten beobachten:
Denken Sie daran, dass Reinforcement-Learning-Algorithmen manchmal nicht-intuitive Verhaltensweisen zeigen und das Verständnis der zugrunde liegenden Prinzipien für die Entwicklung effektiver Lösungen von entscheidender Bedeutung ist.
Das obige ist der detaillierte Inhalt vonWarum sind meine Q-Learning-Werte so hoch? Eine Lösung für unbegrenzte erwartete Belohnungen.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!