Wie trainiere ich ein neuronales Netzwerk für ein rundenbasiertes Brettspiel?


11

Ich frage mich, wie man ein neuronales Netzwerk für ein rundenbasiertes Brettspiel wie Tic-Tac-Toe, Schach, Risiko oder ein anderes rundenbasiertes Spiel trainiert. Das Erhalten des nächsten Zuges durch Inferenz scheint ziemlich einfach zu sein, indem der Spielstatus als Eingabe eingegeben und die Ausgabe als Zug für den aktuellen Spieler verwendet wird. Das Training einer KI für diesen Zweck scheint jedoch nicht so einfach zu sein, weil:

  1. Es gibt möglicherweise keine Bewertung, ob ein einzelner Zug gut ist oder nicht, daher scheint das Training einzelner Züge nicht die richtige Wahl zu sein
  2. Die Verwendung aller Spielzustände (Eingaben) und Bewegungen (Ausgaben) des gesamten Spiels zum Trainieren des neuronalen Netzwerks scheint nicht die richtige Wahl zu sein, da möglicherweise nicht alle Bewegungen innerhalb eines verlorenen Spiels schlecht sind

Ich frage mich also, wie ich ein neuronales Netzwerk für ein rundenbasiertes Brettspiel trainieren kann. Ich möchte mit Tensorflow ein neuronales Netzwerk für Tic-Tac-Toe erstellen.

Antworten:


10

Gute Frage! NN ist für diese Art von Problem sehr vielversprechend: Giraffenschach . Lais Leistung wurde als ziemlich große Sache angesehen , kam aber leider nur wenige Monate, bevor AlphaGo ins Rampenlicht geriet. (Es stellte sich heraus, dass Lai später von DeepMind eingestellt wurde, obwohl dies für den Giraffenmotor nicht so gut war .)

Ich habe Lais Ansatz als sehr hilfreich empfunden und er stützt sich auf solide Ergebnisse.


Möglicherweise möchten Sie " sequentiell " im Gegensatz zu "rundenbasiert" verwenden, da sequentiell der bevorzugte Begriff in der Spieltheorie und der kombinatorischen Spieltheorie ist. Dies sind die Felder, die die mathematische Analyse auf Spiele anwenden.

Die Spiele, die Sie auflisten, werden weiter als " abstrakt " bezeichnet, um sie von modernen Strategie-Brettspielen oder Spielen im Allgemeinen zu unterscheiden, die ein starkes Thema verwenden und in Bezug auf Mechanik und Elemente im Allgemeinen weniger kompakt sind als abstrakte Spiele. Dies beinhaltet die Einschränkung, dass abstrakte Spiele nicht auf sequentielle Spiele oder Brettspiele oder sogar Spiele speziell beschränkt sind, wie im Fall von Rätseln wie Sudoku.

Der formale Name für diese Gruppe von Spielen ist im Allgemeinen " parteiische , sequentielle, deterministische , perfekte Information " mit der weiteren Kategorisierung von Tic-Tac-Toe als "trivial" (gelöst und leicht lösbar) und nicht trivial (unlösbar und ungelöst) für Spiele wie Chess and Go.


7

Ich bin ein Schachspieler und meine Antwort wird nur auf Schach sein.

Das Training eines neutralen Netzwerks mit verstärkendem Lernen ist nicht neu, es wurde in der Literatur schon oft durchgeführt.

Ich werde kurz die gängigen Strategien erklären.

  • Der Zweck eines Netzwerks besteht darin, die Positionsbewertung zu lernen .Wir alle wissen, dass eine Königin stärker ist als ein Bischof, aber können wir das Netzwerk darüber informieren, ohne explizit zu programmieren? Was ist mit der Bauernstruktur? Versteht das Netzwerk, wie zu bewerten ist, ob eine Position gewinnt oder nicht?

  • Jetzt wissen wir, warum wir das Netzwerk brauchen, wir müssen es entwerfen. Das Design unterscheidet sich radikal zwischen den Studien. Bevor Deep Learning populär wurde, benutzten die Leute ein flaches Netzwerk. Heutzutage sticht ein Netzwerk mit vielen Schichten hervor.

  • Sobald wir das Netzwerk haben, müssen Sie eine Schach-Engine erstellen. Neuronales Netzwerk kann Schach nicht auf magische Weise spielen, es muss eine Verbindung zu einer Schachengine herstellen. Glücklicherweise müssen wir keinen Positionsbewertungscode schreiben, da das Netzwerk dies für uns tun kann.

  • Jetzt müssen wir Spiele spielen. Wir könnten mit einigen hochwertigen Schachdatenbanken beginnen oder stattdessen unseren KI-Agenten mit einem anderen Spieler (z. B. sich selbst, einem anderen KI-Agenten oder einem Menschen) spielen lassen. Dies wird als Verstärkungslernen bezeichnet .

  • Während wir Spiele spielen, aktualisieren wir den Netzwerkparameter. Dies kann durch stochastischen Gradientenabstieg (oder andere ähnliche Techniken) erfolgen. Wir wiederholen unser Training so lange wir wollen, normalerweise über Millionen von Iterationen.

  • Endlich haben wir ein trainiertes neutrales Netzwerkmodell für Schach!

Weitere Informationen finden Sie in den folgenden Ressourcen:

https://chessprogramming.wikispaces.com/Learning


Nur Kleinschach hat es hier
Quintumnia

Dies ist ein Beispiel dafür, wie die Bereitstellung eines externen Links ohne Zusammenfassung in Zukunft schädlich sein kann. Da der bereitgestellte Link jetzt tot ist
Greg Hilston

4

Ich denke, Sie sollten sich mit dem verstärkten Lernen vertraut machen. In diesem Bereich des maschinellen Lernens interagiert der Agent mit seiner Umgebung und erhält danach eine Belohnung. Jetzt ist der Agent das neuronale Netzwerk, die Umgebung ist das Spiel und der Agent kann eine Belohnung von +1 erhalten, wenn er gewinnt oder -1, wenn er verliert. Sie können diesen Status-, Aktions- und Belohnungstupel verwenden, um den Agenten zu schulen. Ich kann David Silvers Vorträge auf Youtube und Suttons Buch auch empfehlen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.