2017-02-10 6 views
-2

Ich habe eine einfache Implementierung eines einfachen Spiels in Python.Verstehen Neural Network Basics auf kleinen Spielbeispiel

Das Spiel hat einfache Regeln:

  • 2 Spieler gegeneinander spielen
  • Jeder Spieler hat 10 Karten
  • jeder Runde werden die Spieler gleichzeitig
  • der Spieler eine Karte spielen, die eine höhere gespielt Karte gewinnt die Runde
  • Wenn keine Karten mehr übrig sind, gewinnt der Spieler mit den meisten gewonnenen Runden das Spiel

Jetzt (Sie können sehen, die Feinde hier zuletzt gespielt Card) Ich wollte eine KI mit einem Neural Network

Es gibt eine init-Funktion, eine chooseMove-Funktion bauen und eine gameover-Funktion (hier können Sie sehen, das Ergebnis des Spiels)

Nun meine Frage:

-> Wie kann ich diesen Ansatz? Erstelle ich verschiedene Netzwerke für die verschiedenen Züge (1. Zug, 2. Zug, ....) oder einen für alles? Was würde ich als Input und Output definieren und wie erzähle ich dem Netzwerk, was ein Gewinn ist und was ein Verlust ist?

Und mache ich schon ein paar Gedanken für das Netzwerk? (ZB ist es gut, wenn Sie die Runde gewinnen, dass der Unterschied zwischen Ihrer Karte und der Karte sehr klein ist, aber wenn Sie die Runde verlieren, sollte der Unterschied sehr groß sein)

Ich weiß, das sind alles sehr grundlegende Fragen und vielleicht auch zeigt, dass mein Verständnis von NN nicht wirklich gut ist, aber ich dachte, dass dies mir helfen könnte, die Grundlagen von NNs zu verstehen.

Antwort

1

Neuronale Netzwerke können für die Klassifizierung und einige für die Regression verwendet werden. Wenn Sie mit einem NN experimentieren möchten, müssen Sie ein Problem in einem Format darstellen, das der obigen Beschreibung entspricht. Darüber hinaus arbeiten NNs normalerweise mit Vektoren fester Länge als Eingabe, so dass die Handhabung der verschiedenen Runden Ihres Spiels ein Problem darstellen würde. Eigentlich ist dein einfaches Spiel für ein NN sehr kompliziert. Wenn Sie weitermachen möchten, müssten Sie:

  1. Definieren Sie das Problem als eine Klassifizierung oder eine Wahl Weg. z.B. Das Programm muss auswählen, welche Karte von einer bestimmten Hand gespielt wird.
  2. Normalisieren Sie Ihre Daten auf Vektor fester Länge.
  3. Erhalten Trainingsdaten z.B. Aufnahmen von Spielen in einem Datenbankformat
  4. Erstellen Sie Ihre NN
  5. Trainieren Sie Ihre NN die umcodiert Spiele

Jede Punkte über komplexe Themen und mehrere hundert Seiten mit über jeden von ihnen geschrieben werden konnte.

Darf ich Ihnen eine andere Option vorschlagen, wenn Sie etwas Einfaches wollen: Ein NN zu schreiben, das entscheidet, ob ein Pokerspieler am Anfang folden oder dem Spiel beitreten sollte, ist viel näher an einem typischen NN-Problem. Ihre Eingabe ist 2 Karten und die Größe des Pokertisches (6 oder 10) um es einfach zu halten. Es wird erwartet, dass der NN eine Ja-Nein-Entscheidung als Ausgabe trifft. Dies ist ein Klassifizierungsproblem mit einer geringen Anzahl von Parametern.Sie müssen Trainingsdaten erhalten, die Aufzeichnungen von Spielen sein sollen, die von Menschen gespielt werden. Die Basislogik besteht darin, zu überprüfen, was die Starthand eines Spielers war, und zu prüfen, wie viel Geld der Spieler in diesem Spiel gewonnen hat, das eine erwartete Entscheidung darüber festlegt, ob er am Anfang falten oder dem Spiel beitreten möchte. Sie können dafür ein RBF-Netzwerk wählen. Das Definieren des Lernalgorithmus und das Präsentieren der Trainingsdaten würden Ihren NN trainieren. Sie können als erste Trainingsmethode Random Walk wählen. Nach dem Training sollte dein NN entscheiden können, ob du mit einer bestimmten Hand spielen sollst oder nicht. Eine Poker-Datenbank ist von der University of Alberta zur Verfügung, die verwendet werden kann Trainingsdaten zu erstellen:
http://poker.cs.ualberta.ca/irc_poker_database.html

+0

ich das als die richtige Antwort nicht wirklich wählen kann, aber ich denke, es gibt keine richtige Antwort auf meine Frage, so .. Aber vielen Dank für die Erklärung und auch für Ihre vorgeschlagene Idee! Ich werde ein bisschen mehr über mein Problem nachdenken und dann könnte ich zu einem einfacheren :) wechseln – greece57

Verwandte Themen