[PYTHON] Maschinelles Lernen Minesweeper mit PyTorch

Einführung

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.

Ziel

Um das Anfängerniveau des Windows-Standards (was) Minesweeper stabil löschen zu können. Streben Sie vorerst eine Gewinnquote von ca. 90% an.

Verfassung

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 ) und der Ausgabeschicht ( Q_ {s, a} $) ist die Anzahl der Augen auf der Platine. Es gibt zwei versteckte Schichten, und die Anzahl der Neuronen in jeder Schicht ist die Anzahl der Augen auf der Tafel x 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

Fortschritt

Erstes Mal

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?

Zweites Mal

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.

n-tes Mal

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 ...

Nach einer Nacht ...

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 ...

Plötzlich

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

Maschinelles Lernen Minesweeper mit PyTorch
Maschinelles Lernen mit Pytorch in Google Colab
Maschinelles Lernen mit Pokemon gelernt
Maschinelles Lernen mit Python! Vorbereitung
Beginnend mit maschinellem Python-Lernen
Versuchen Sie es mit Kaggle leicht maschinell
Maschinelles Lernen
[PyTorch Tutorial ⑤] PyTorch anhand von Beispielen lernen (Teil 2)
Ich habe maschinelles Lernen mit liblinear versucht
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
SVM versucht maschinelles Lernen mit Scikit-Learn
[PyTorch Tutorial ⑤] PyTorch anhand von Beispielen lernen (Teil 1)
Quanteninspiriertes maschinelles Lernen mit Tensornetzwerken
Beginnen Sie mit dem maschinellen Lernen mit SageMaker
"Scraping & maschinelles Lernen mit Python" Lernnotiz
Vorhersage des Strombedarfs durch maschinelles Lernen Teil 2
Verstärken Sie Bilder für maschinelles Lernen mit Python
Unausgeglichenes Datenlernen mit maschinellem Lernen k-NN
Maschinelles Lernen mit Python (2) Einfache Regressionsanalyse
Spiele mit PyTorch
Eine Geschichte über maschinelles Lernen mit Kyasuket
Maschinelles Lernen mit Docker (42) Programmieren von PyTorch für Deep Learning Von Ian Pointer
[Shakyo] Begegnung mit Python zum maschinellen Lernen
Kreuzvalidierung mit PyTorch
Beginnend mit PyTorch
[Memo] Maschinelles Lernen
Klassifikation des maschinellen Lernens
Aufbau einer KI / maschinellen Lernumgebung mit Python
Beispiel für maschinelles Lernen
[Python] Einfache Einführung in das maschinelle Lernen mit Python (SVM)
[Super Einführung in das maschinelle Lernen] Lernen Sie Pytorch-Tutorials
Maschinelles Lernen beginnend mit Python Personal Memorandum Part2
Maschinelles Lernen beginnend mit Python Personal Memorandum Part1
[Super Einführung in das maschinelle Lernen] Lernen Sie Pytorch-Tutorials
Ich habe mit der maschinellen Vorverarbeitung von Python Data begonnen
Erstellen Sie eine Python-Umgebung für maschinelles Lernen mit Containern
Zusammenfassung des Lernprogramms für maschinelles Lernen
Verwenden Sie RTX 3090 mit PyTorch
Python lernen mit ChemTHEATER 03
"Objektorientiert" mit Python gelernt
Maschinelles Lernen Über Overlearning
Python lernen mit ChemTHEATER 05-1
Maschinelles Lernen: Betreut --AdaBoost
Logistische Regression beim maschinellen Lernen
Maschinelles Lernen unterstützt Vektormaschine
Python lernen mit ChemTHEATER 02
Lineare Regression des maschinellen Lernens
Memo zum Kurs für maschinelles Lernen
Bibliothek für maschinelles Lernen dlib
Maschinelles Lernen (TensorFlow) + Lotto 6
Installieren Sie Fackelstreuung mit PyTorch 1.7
Lerne irgendwie maschinelles Lernen
Bibliothek für maschinelles Lernen Shogun
Maschinelles Lernen Kaninchen Herausforderung
Einführung in das maschinelle Lernen
Maschinelles Lernen: k-Nächste Nachbarn
Was ist maschinelles Lernen?
Ich habe versucht, maschinelles Lernen (Objekterkennung) mit TouchDesigner zu verschieben
Einfaches maschinelles Lernen mit AutoAI (Teil 4) Jupyter Notebook