Versuchen Sie nach dem Üben, mit PyTorch Ihren eigenen Minenräumer maschinell zu erlernen. Es gibt so viele Dinge, die ich nicht verstehe, also mache ich mir Notizen, während ich verschiedene Dinge studiere. Erstellen Sie ein Memo einmal und formatieren Sie es gegebenenfalls später.
Um das Anfängerniveau des Windows-Standards (was) Minesweeper stabil löschen zu können. Streben Sie vorerst eine Gewinnquote von ca. 90% an.
Ich habe den DQN von [hier] kopiert (https://book.mynavi.jp/ec/products/detail/id=90706). Es ist nicht genug, also ist es einfach.
Das Netzwerk verwendet ein sequentielles Modell.
Die Anzahl der Neuronen in der Eingabeschicht (Zustand $ s SIZE_MAG
.
Ich frage mich, ob ich vorerst in Bezug auf die Anzahl der Augen auf dem Brett skalieren sollte (angemessen).
ReLU wird als Aktivierungsfunktion und Adam (Lernrate 0,001) als Optimierungsmethode verwendet.
Meine Kehrmaschine ist meine eigene Arbeit. Ich dachte, ich würde mein Bestes geben, indem ich die Bilder aufnehme, aber das Hauptthema ist nicht da. Der Algorithmus wird weggelassen.
Die Belohnungen sind wie folgt.
Variable | Bedingungen |
---|---|
reward_win |
Spiel klar |
reward_failed |
Spielfehler |
reward_miss |
Der Versuch, ein bereits geöffnetes Quadrat zu öffnen |
Versuchen Sie zunächst, die Brettgröße auf 6x6 und die Anzahl der Minen auf 5 einzustellen, um zu sehen, ob Sie lernen können.
param
GAMMA = 0.99
NUM_EPISODES = 1000
CAPACITY = 10000
BATCH_SIZE = 200
SIZE_MAG = 8
reward_failed = -100
reward_win = 100
reward_miss = -1
Ich kann sehr selten gewinnen, aber ich habe das Gefühl, dass ich zufällig gewinne. Betrachtet man den Fehler, wurde er in ungefähr 2000 Schritten auf ungefähr 4 Stellen weggeblasen. Ja ... Selbst wenn Sie sich die einfache Summe der Belohnungen ansehen, versuchen Sie, nur die bereits geöffneten Felder zu öffnen. Ist dies ein Problem mit Belohnungen?
Also fix die Belohnung.
reward
reward_failed = -100
reward_win = 100
reward_miss = -10
reward_open = 1
belohnung_open
ist eine Belohnung, die gegeben wird, wenn ein neues Feld geöffnet wird.
Der Fehler war ruhiger als zuvor, aber er zitterte gegen 10 Uhr.
Ich habe damit herumgespielt, aber die Vibration und Divergenz haben nicht aufgehört. Selbst wenn Sie sich das Verhalten ansehen, wird immer noch versucht, das bereits geöffnete Quadrat zu öffnen. Festes Ziel Q-Network wird eingeführt ...
Ich habe die folgenden Möglichkeiten in Betracht gezogen.
Selbst wenn Sie eine Zelle auswählen, die bereits als Test geöffnet ist, ändert sich der Fehler selbst nach Beendigung des Spiels auf weniger als 1. Wenn der Wert von & epsi; verringert wurde (Anfangswert 0,5 → 0,2), wurde der Fehler noch kleiner. (Ungefähr 0.1-0.01) Da das Problem der Erstellung eines Mini-Batches jedoch nicht gelöst wurde, werden wir Prioritized Experience Replay implementieren. Der Code ist wie er ist
Selbst wenn ich es versuche, funktioniert es nicht. Nun, ich wünschte ich hätte einen Codierungsfehler ( Sogar das Ziel-Q-Netzwerk war immer noch der Standardwert ...
Als Ergebnis der Korrektur funktionierte es nicht. Ist die Belohnung zu groß?
reward
reward_failed = -1
reward_win = 1
reward_miss = -1
reward_open = 1
Immerhin war es nutzlos Baby ...
Bis jetzt habe ich jedes Mal etwas über verschiedene Boards gelernt, Kann man für ein Board lernen ...? → Ich konnte es schaffen. Etwa 200 bis 300 Folgen, bevor die Gewinnrate 90% erreicht. Es ist niedlich, dass die Gewinnrate 90% beträgt, sobald Sie sie einmal löschen können.
Warum ändern Sie es dann nicht einmal auf 150 Folgen? → Ich kann überhaupt nicht gewinnen. Es scheint, dass es von früheren Lerndaten gezogen wird.
Dann gehen wir zurück und wechseln jedes Mal das Board!
Recommended Posts