1

Ich bin auf der Suche nach etwas Hilfe bei der Modellierung dieser Maschine Lernproblem.Modellieren Kartenspiel für maschinelles Lernen

Eine Hand besteht aus drei Reihen (mit jeweils 3, 5 und 5 Karten). Ihr Ziel ist es, eine Hand zu bauen, die die meisten Punkte erzielt. Du erhältst die Karten in Intervallen, die Straßen genannt werden, fünf Karten in der ersten Straße und drei in den nächsten vier Straßen (du musst eine der Karten in den letzten vier Straßen ablegen). Karten können nicht verschoben werden, sobald Sie sie platziert haben. More details on scoring.

Mein Ziel ist es, ein System zu bauen, das bei einer Reihe von Straßen die Hand ähnlich wie unsere besten Spieler spielt. Es scheint ziemlich klar zu sein, dass ich für jede Straße ein neuronales Netzwerk aufbauen muss, das Funktionen nutzt, die auf der vorhandenen Hand und dem Kartensatz auf der Straße basieren. Ich habe viele Daten (Straßen, Platzierungen und Endergebnis), aber ich bin ein wenig unsicher, wie das Problem modelliert werden soll, da die möglichen Ausgaben auf dem Kartensatz einzigartig sind (obwohl es weniger als 3^5 gibt Platzierungen in der ersten Straße und 3^3 nach). Ich habe mich bisher nur mit Klassifizierungsproblemen mit festen Kategorien beschäftigt.

Hat jemand ein Beispiel für ein ähnliches Problem oder Vorschläge, wie man die Trainingsdaten vorbereitet, wenn Sie einzigartige Ausgänge haben?

+0

Interessantes Problem. Schlechte Frage .... als zu breit markiert. Bitte verfeinern Sie Ihre Frage. –

+0

Ich bin mir nicht sicher, ob ich das vollständig verstehe, aber könntest du nicht etwas wie Matrix-Abrollung verwenden, um den aktuellen Hand-/Feature-Satz und die Ausgabe darzustellen? Zum Beispiel würde eine Hand, die wie [23400; 56789; 10 11 12 13 14] aussieht, als [2340056789 10 11 12 13 14] dargestellt werden. Viel einfacher zu handhaben, und am Ende des dritten neuronalen Netzwerks für die dritte Straße können Sie den Vektor wieder in eine Matrix extrahieren, um die letzte Hand darzustellen. –

+0

Sollte diese Frage zu [DataScience] (http://datascience.stackexchange.com) (Host für ML-Fragen) verschoben werden? –

Antwort

4

Eine vage Frage gibt eine vage Antwort (was meine Entschuldigung dafür ist, zu faul zum Codieren zu sein ;-).

Sie haben geschrieben, dass Sie eine Menge Daten haben, und es scheint, dass Sie das Spiel auf Erfahrungen mit überwachtem Lernen abbilden möchten. Aber so funktioniert die Spieloptimierung nicht. Üblicherweise führt man kein überwachtes Lernen durch, sondern verstärkendes Lernen. Die Unterschiede sind subtil, aber verstärkendes Lernen (mit Markov-Entscheidungsprozessen als theoretischer Grundlage) bietet eher eine lokale Sichtweise - etwa die Entscheidung für einen bestimmten Zustand zu optimieren. Betreutes Lernen entspricht eher der Optimierung mehrerer Entscheidungen auf einmal.

Ein weiterer Show-Stopper für den üblichen überwachten Lernansatz ist, dass selbst wenn Sie viele Daten haben, es fast sicher zu wenig sein wird. Und es wird nicht die "erforderlichen Pfade" anbieten. Die übliche Herangehensweise zumindest seit Thesauros Backgammonspieler ist eher: die Grundregeln des Spiels aufzustellen, möglicherweise menschliches Wissen als Heuristik einzuführen und dann das Programm so oft wie möglich gegen sich selbst spielen zu lassen - so google Deep Mind hat zum Beispiel einen Master-Go-Player eingerichtet. Siehe auch this interesting video.

In Ihrem Fall sollte die Aufgabe im Prinzip nicht so schwer sein, da es eine vergleichsweise kleine Anzahl von Spielzuständen gibt und, was noch wichtiger ist, jegliche Probleme der Psychologie wie Bluffen, konsistentes Spielen usw. sind völlig abwesend.

Also noch einmal: Baue einen Bot, der gegen sich selbst spielen kann. Eine gemeinsame Basis ist eine Funktion Q(S,a), die jedem Spielzustand und jeder möglichen Aktion des Spielers einen Wert zuweist - dies nennt sich Q-Learning. Und diese Funktion wird oft als ein neurales Netzwerk implementiert ... obwohl ich denke, dass es hier nicht so anspruchsvoll sein muss.

Ich werde das für jetzt vage bleiben. Aber ich würde mich freuen, Sie bei Bedarf weiter zu unterstützen.

+0

Ihre Antwort ist wirklich interessant, aber ich bin sehr neu in Machine Learning und es ist nicht genug für mich, mein Projekt zu starten. Ich habe einen Ratschlag [link] (https://www.gamedev.net/forums/topic/692270-needed-advice-for-an-enjoyable-ai-in-buraco-card-game/) geschrieben, bitte nimm ein aussehen! Vielen Dank! – Giggioz

+0

@Giggioz: Ich habe Ihren Link gelesen, werde aber in diesem anderen Forum nicht antworten - einfach eine ähnliche Frage hier auf SO stellen und den Link im nächsten Kommentar teilen. Nur einige kurze Kommentare zu deinem Problem: Beginne mit dem Zwei-Spieler-Spiel. Der erste Schritt besteht darin, einen vollständigen Zustand des Spiels zu erzeugen, d. H. Die Information über Hände und Position der Karten. Als nächstes erfährst du, wie man Zustände der einzelnen Spieler daraus generiert (die weniger Informationen enthalten) ... du brauchst das sowieso, wenn du das Spiel programmierst. Ich würde vorschlagen, das als weitere Information zu Ihrer Frage hinzuzufügen, sonst ist es zu vage. – davidhigh

+0

Erledigt: https://stackoverflow.com/questions/46370218/needed-advice-for-an-enenjoyable-ai-in-buraco-card-game hinweis: ich habe bereits den ganzen motor gebaut. Es spielt komplette Spiele mit 2 oder 4 Spielern mit Dummy-Spielen. Ich habe ein Objekt (den "Zustand"), das alle Informationen des Spiels speichert (Karten in der Hand, Karten im Deck, lastMove ...) Aber bitte, lass uns die Diskussion im neuen Thread fortsetzen. Danke! – Giggioz

Verwandte Themen