[PYTHON] Ich habe versucht, Othello AI zu machen, dass ich 7,2 Millionen Hände durch tiefes Lernen mit Chainer gelernt habe

Es ist schon eine Weile her, aber es war erstaunlich, dass AlphaGo dreimal hintereinander den Weltmeister gewann. Inspiriert davon habe ich diesmal eine KI für Othello gemacht, das gleiche Brettspiel.

Der Grund, warum ich mich für Othello entschieden habe, ist, dass ich nicht genug Computerressourcen habe! !! Weil. Bei der Entwicklung von AlphaGo sind 50 GPUs eine enorme Menge von 3 Wochen, aber für eine solche Person ist dies absolut unmöglich. Also entschied ich mich für Othello, das ein kleines Go-Board und einfache Regeln hat.

Ich habe über AlphaGo gesprochen, aber die verwendete Technologie unterscheidet sich von AlphaGo. AlphaGo kombiniert überwachtes tiefes Lernen, vertiefendes Lernen und Monte-Carlo-Baumerkundung. Dieses Mal verwenden wir jedoch nur überwachtes tiefes Lernen. Es funktioniert nicht gut, aber im Gegenteil, der Algorithmus ist so einfach, dass selbst diejenigen, die die beiden letzteren nicht kennen, die ich gerade gehört habe (ich verstehe tiefes Verstärkungslernen, aber nicht Monte-Carlo-Baumsuche), tiefes Lernen. Sie können es nur mit dem Wissen von verstehen! In der folgenden Erklärung wird davon ausgegangen, dass es ein gewisses Verständnis für tiefes Lernen gibt (ich habe tiefes Lernen von Grund auf neu gelesen).

Überblick

Ich habe die Daten von Website der French Othello Association als Partiturdaten von Othello verwendet. Da ich ein mysteriöses Format namens WTHOR verwendet habe, war es ziemlich schwierig, die Daten zu verarbeiten.

Das neuronale Netzwerk verwendete den Musikpartiturzustand (0: keine, 1: eigener Stein, 2: gegnerischer Stein) für die Eingabedaten und die Wahrscheinlichkeit jeder Bewegung für die Ausgabedaten. Für die Lehrerdaten habe ich die Position der Hand verwendet, die ich geschlagen habe. Ich denke, es ist schwer, nur mit Worten zu verstehen, deshalb zeige ich Ihnen ein Diagramm.

説明1.png

Struktur des neuronalen Netzes

Wie AlphaGo habe ich nur die Faltungsschicht ** und nicht die vollständig verbundene Schicht verwendet. Dies liegt daran, dass es sich bei der Ausgabe um zweidimensionale Daten handelt. Daher ist es besser, sie als CNN zu belassen. ** Softmax ** wurde für die Ausgabeebene und Conv-> BN-> ReLU ** für die anderen Ebenen verwendet. Es wird empfohlen, Batch Normalization (BN) einzuführen, da das Lernen stabil ist.

Lernen neuronaler Netze

Für die Verlustfunktion haben wir den Kreuzentropiefehler für orthodox verwendet. Ich habe ** Adam ** als Optimierungsalgorithmus verwendet. Das Lernen ist schneller und das Endergebnis ist besser als SGD.

Quellcode

Der lang erwartete Quellcode lautet auf github aufgeführt. Detaillierte Parameter finden Sie im Quellcode.

Lernergebnis

Die Leistung der KI ist ... Es scheint, dass die Regeln allgemein verstanden werden, aber leider sind sie nicht sehr stark geworden. Die Ursache wurde wahrscheinlich überwacht und nur tiefes Lernen verwendet.

Aus Zeitgründen habe ich jedoch nur etwa zweieinhalb Stunden auf einem PC mit nur einer CPU studiert, sodass dieser möglicherweise noch stärker ist.

Also, ** auf der Suche nach jemandem, der eine GPU hat! ** ** **

Es könnte stärker sein, wenn Sie etwa einen Tag lang mit der GPU lernen.

Recommended Posts

Ich habe versucht, Othello AI zu machen, dass ich 7,2 Millionen Hände durch tiefes Lernen mit Chainer gelernt habe
Ich habe versucht, Deep Learning zu implementieren, das nicht nur mit NumPy tiefgreifend ist
Ich habe versucht, Othello AI mit Tensorflow zu machen, ohne die Theorie des maschinellen Lernens zu verstehen ~ Einführung ~
Ich habe versucht, Othello AI mit Tensorflow zu erstellen, ohne die Theorie des maschinellen Lernens zu verstehen ~ Implementierung ~
Ich habe versucht, Deep Learning mit Spark × Keras × Docker 2 Multi-Host-Edition skalierbar zu machen
Ich habe versucht, Othello AI mit Tensorflow zu erstellen, ohne die Theorie des maschinellen Lernens zu verstehen ~ Battle Edition ~
Ich habe versucht, mit Open AI Gym eine verbesserte Lernumgebung für Othello zu schaffen
Ich habe versucht, ListNet of Rank Learning mit Chainer zu implementieren
Ich habe versucht, in einem tief erlernten Sprachmodell zu schreiben
765 Ich habe versucht, die drei Berufsfamilien durch CNN zu identifizieren (mit Chainer 2.0.0).
Ich habe versucht, Oba Hanana und Otani Emiri durch tiefes Lernen zu klassifizieren
Ich überarbeitete "Ich habe versucht, Othello AI zu machen, als Programmieranfänger Python studierten"
Ich habe versucht, nächstes Jahr mit AI vorherzusagen
Ich habe versucht, KI für Smash Bra zu machen
Ich habe versucht, meinen eigenen Quellcode mit Chainer v2 alpha kompatibel zu machen
[Python] Ich habe versucht, eine Shiritori-KI zu erstellen, die den Wortschatz durch Schlachten verbessert
Ich habe versucht, die Strichzeichnung mit Deep Learning aus dem Bild zu extrahieren
Ich habe versucht, Cifar10 mit der SONY Deep Learning Library NNabla [Nippon Hurra] zu implementieren.
Ich habe versucht, Hanana Oba und Emiri Otani durch tiefes Lernen zu klassifizieren (Teil 2)
Ich habe versucht, tief zu lernen
Ich habe versucht, maschinelles Lernen (Objekterkennung) mit TouchDesigner zu verschieben
Ich habe versucht, eine OCR-App mit PySimpleGUI zu erstellen
Ich habe versucht, Dropout zu erklären
Ich habe versucht, mit Python Machine Learning ein Echtzeit-Modell zur Trennung von Tonquellen zu erstellen
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 16) Ich habe versucht, SimpleConvNet mit Keras zu erstellen
Ich habe versucht, Pferderennen vorherzusagen, indem ich alles von der Datenerfassung bis zum tiefen Lernen getan habe
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 17) Ich habe versucht, DeepConvNet mit Keras zu erstellen
Ich habe versucht, mit AI kreative Kunst zu machen! Ich habe eine Neuheit programmiert! (Artikel: Creative Adversarial Network)
Ich habe versucht, es ein- und auszuschalten, indem ich "Ein Plug-In erstellen, das Leerzeichen mit Sublime Text 2 in voller Breite hervorhebt" eingestellt habe.
[Python] Ich habe versucht, mit tkinter eine Anwendung zu erstellen, die das Gehalt anhand der Arbeitszeit berechnet
Ich habe versucht, die Erkennung von Anomalien durch spärliches Strukturlernen zu implementieren
[1 Stunde Herausforderung] Ich habe versucht, eine Wahrsagerseite zu erstellen, die für Python zu geeignet ist
Ich habe versucht, MNIST nach GNN zu klassifizieren (mit PyTorch-Geometrie).
Mayungos Python Learning Episode 3: Ich habe versucht, Zahlen zu drucken
Ich habe versucht, einen Generator zu erstellen, der mit Python eine C # -Containerklasse aus CSV generiert
Erstellen Sie eine KI, die Zuckerbergs Gesicht mit tiefem Lernen identifiziert learning (Datenlernen)
Ich habe das Toho-Projekt mit Deep Learning aufgenommen ... ich wollte.
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Ich habe versucht, Perceptron Teil 1 [Deep Learning von Grund auf neu] zu implementieren.
DQN mit Chainer. Ich habe verschiedene Verstärkungslernen hintereinander ausprobiert. (Deep Q Network, Q-Lernen, Monte Carlo)
Ich habe versucht, eine Originalsprache "PPAP Script" zu erstellen, die PPAP (Pen Pineapple Appo Pen) mit Python abbildet
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, eine Aktivität zu erstellen, die gemeinsam die Positionsinformationen festlegt
Ich habe versucht, ein System zu erstellen, das nur gelöschte Tweets abruft
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, die Satzklassifizierung durch Self Attention mit PyTorch zu implementieren
Ich habe ein Werkzeug ausprobiert, das Gochs Muster mit KI imitiert
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Einführung in Deep Learning (2) - Versuchen Sie Ihre eigene nichtlineare Regression mit Chainer-
[1.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, Jojo mit LSTM ein seltsames Zitat zu machen
Ich habe versucht, mit Python + OpenCV eine Bildähnlichkeitsfunktion zu erstellen
Ich habe versucht, mit Go einen exklusiven Kontrollmechanismus zu erstellen
Machen Sie ASCII-Kunst mit tiefem Lernen
Ich habe maschinelles Lernen mit liblinear versucht
Deep Learning durch Implementierung 1 gelernt (Return Edition)