1

Ich habe eine einfache Version von Curve Fever auch bekannt als "Achtung Die Kurve" gemacht. Ich möchte, dass die Maschine herausfindet, wie man das Spiel optimal spielt. Ich habe ein vorhandenes DQN aus einigen Atari-Spielbeispielen, die mit dem Tensorflow von Google erstellt wurden, kopiert und leicht modifiziert.Belohnungsfunktion zum lernen Curve Fever Spiel mit DQN

Ich tendiere dazu, eine angemessene Belohnungsfunktion herauszufinden. Derzeit verwende ich diese Belohnung Setup:

  • 0,1 für jeden Rahmen ist es nicht
  • Absturz
  • -500 für jeden Crash

Ist das der richtige Ansatz? Muss ich die Werte optimieren? Oder brauche ich einen ganz anderen Ansatz?

+0

Haben Sie es geschafft, dass der DQN funktioniert? – ericwenn

+0

Ja, ich habe das Scoring wie unten beschrieben implementiert. –

+0

Also -1 zum Sterben, +1 zum Töten. Haben Sie einen kleinen konstanten Wert zum Überleben verwendet? – ericwenn

Antwort

1

Die Belohnung von -500 kann Ihr Netzwerk zerstören. Sie sollten die Belohnungen auf die Werte zwischen 1 und -1 skalieren. (Skalieren Sie das Eingabebild ebenfalls zwischen -1 und 1 oder 0 und 1).

Geben Sie Ihrem Netzwerk eine Belohnung von -1 für einen Absturz und eine Belohnung von +1, sobald ein Gegner abstürzt. Ohne Feinde sollte eine Belohnung von -1 für den Absturz ausreichen. Eine kleine konstante positive Belohnung kann in manchen Situationen nützlich sein (wenn das Netzwerk sich zwischen zwei unvermeidlichen Abstürzen entscheiden muss, von denen einer schneller passiert als der andere), aber es wird auch das Erlernen der Q-Funktion komplizierter machen. Sie können einfach mit und ohne eine konstante Belohnung versuchen und sehen, was am besten funktioniert.

Das Beispiel mit einem unvermeidlichen Absturz zeigt auch, warum Sie keine kleine negative Belohnung für den Lebensunterhalt verwenden sollten. In einem solchen Fall würde das Netzwerk den Weg des schnellsten Crashs wählen, während es in dieser Situation die bessere Strategie wäre, den Crash so weit wie möglich zu verzögern.

0

Es ist am besten, wenn die Belohnungsfunktion genau das Ziel codiert, das der Agent verfolgen soll. In Curve Fever ist das Ziel, der letzte lebende Spieler zu sein. Wenn Sie eine Belohnungsfunktion verwenden, die nur eine Belohnung für den Verbleib im Spiel bietet, wäre es am besten, das Spiel auf unbestimmte Zeit zu zeichnen. Wahrscheinlich möchtest du, dass der Agent so schnell wie möglich gewinnt, also solltest du eigentlich jedes Mal eine kleine negative Belohnung geben und eine positive Belohnung für das Gewinnen einer Runde. Dies ist ein Beeilen Sie sich und gewinnen Sie Belohnungsfunktion.

+0

Das ist wahr. Aber das erste, was ich erreichen möchte, ist, den Agenten in der Welt zu lassen und ihn nicht in den eigenen Schwanz zu stürzen. Ich gebe eine positive Belohnung dafür, am Leben zu bleiben und eine große Strafe für den Absturz, aber ich bin mir nicht sicher, ob das der richtige Ansatz ist. –