Ich lese gerade über maschinelles Lernen und überlege, wie ich es auf das Spielen von Connect Four anwenden kann .
Mein aktueller Versuch ist ein einfacher Klassifikator für mehrere Klassen, der ein Sigmoid-Funktionsmodell und die Ein-gegen-Alles-Methode verwendet.
Meiner Meinung nach müssen die Eingabemerkmale der Status (CD von Player 1, CD von Player 2, leer) der 7x6 = 42-Rasterfelder sein.
Die Ausgabe wäre die Nummer der Zeile, in die die Disc eingelegt werden soll. Da dies eine diskrete Zahl zwischen 1 und 7 ist, kann dies vermutlich als ein Problem der Klassifizierung mehrerer Klassen behandelt werden.
Aber wie erstelle ich Trainingsbeispiele, die für betreutes Lernen geeignet sind?
Das Hauptziel ist es, das Spiel zu gewinnen, aber das Ergebnis ist offensichtlich nicht bekannt, wenn man bis zur letzten Runde spielt. Wenn ich nur zwei Spieler, die nach dem Zufallsprinzip entscheiden, was zu tun ist, tausende Male gegeneinander spielen lasse, reicht es dann aus, einfach alle Spielzüge, die der Gewinner einer Spielrunde gemacht hat, als Trainingsbeispiele zu nehmen? Oder muss ich das ganz anders machen?
Bearbeiten: Wie in den Kommentaren vorgeschlagen, habe ich ein wenig über das Lernen von Bestärkungen gelesen. Soweit ich weiß, sollte Q-Learning den Trick machen, dh ich muss eine Funktion Q des aktuellen Zustands und die zu ergreifende Aktion approximieren, um die maximale kumulative Belohnung zu sein, die in diesem Zustand beginnt. Dann müsste in jedem Schritt die Aktion ausgewählt werden, die den Maximalwert von Q ergibt. Dieses Spiel hat jedoch viel zu viele Zustände, um dies z. B. als Nachschlagetabelle durchzuführen. Was ist also ein effektiver Weg, um diese Q-Funktion zu modellieren?
Antworten:
Um eine einfachere Alternative zum Verstärken des Lernens zu bieten, können Sie den grundlegenden Minimax-Algorithmus verwenden, um nach guten Zügen zu suchen, und maschinelles Lernen verwenden, um die Brettpositionen zu bewerten.
Zur Verdeutlichung erstellt Minimax einen Spielbaum, in dem jeder Knoten mit dem Ergebnis der Blätter beschriftet ist (1 = Spieler A gewinnt, 0 = Spieler B gewinnt), vorausgesetzt, A wählt die Züge, die diese Zahl maximieren, und B wählt die Züge das minimiert es.
Wenn das Spiel nicht sehr einfach ist, können Sie nicht den gesamten Spielbaum bis zu den Terminals erstellen. Sie müssen stattdessen an unfertigen Brettpositionen anhalten und die Blätter mit einer Heuristik bewerten (im Wesentlichen die Wahrscheinlichkeit, dass Spieler A von der angegebenen Position gewinnt). Sie können einen Algorithmus für maschinelles Lernen wie ein neuronales Netzwerk versuchen lassen, diese Wahrscheinlichkeit aus der Verbindung von vier Positionen mit bekannten Ergebnissen zu lernen.
Um Trainingsbeispiele zu generieren, können Sie Ihren Minimax-Player mit einer einfachen Heuristik erstellen, ihn tausendmal spielen lassen, diese Spiele zum Trainieren Ihres ersten neuronalen Netzwerks verwenden und sich dann tausendmal auszahlen lassen und so weiter. Mit etwas Glück verbessert sich Ihr System mit jeder Generation.
quelle
Ich habe vor einiger Zeit einen Blogpost über die Verwendung von Minimax zum Spielen von Connect Four geschrieben. Sie können den Code hier in Aktion sehen . Wenn Sie Ihre Modelle trainieren müssen, können Sie es vielleicht ein paar tausend Spiele gegen meine Minimax-Implementierung spielen lassen.
quelle