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).
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.
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.
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.
Der lang erwartete Quellcode lautet auf github aufgeführt. Detaillierte Parameter finden Sie im Quellcode.
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