Gerade beim aktuelle 3CB (Three Card Blind) Turnier der Forenliga hat sich wieder gezeigt, wie komplex es sein kann, eine Auswertung von nur drei Karten gegen drei andere Karten durchzuführen.
Wollte bei der Auswertung unterstützen und ausnahmsweise einmal systematisch vorgehen. Doch als ich die ganzen Optionen alleine für den ersten Zug eines Spielers (erst nur für den Fall, dass dieser anfangen darf) darlegen wollte, habe ich gemerkt, dass es zu viele Varianten gibt, als dass ich diese systematisch mappen könnte. Skizze im Anhang: 3CB Tabernacle vs BlackLotus.pdf 135,59K 11 Mal heruntergeladen
Letzten Endes war es effizienter, das schlicht zu durchdenken und mit Cockatrice ein paar Situationen nachzustellen, die mir attraktiv erschienen.
Hier merkt man erst, wie unglaublich viele Varianten von unserem geschulten Hirn zusammengefasst, als irrelevant abgestempelt oder als beachtenswert gelabelt werden.
Vor oder nach dem Spielen eines Black Lotus anzugreifen erscheint uns (bei offenen Karten) irrelevant, doch woher sollte das ein Computer wissen?
Genau diese Arbeit des "Labelns" wird beim Machine Learning mit Hilfe immens vieler Beispiele erst antrainiert. Dazu muss es eine Metrik geben, die angibt, welchen "Erfolg" bzw. welche "Belohnung" in (letzter) Konsequenz gezogen werden kann.
Beispiele für Belohnungen beim Training:
- Anzahl an Lebenspunkten, die abgezogen wurden ist gestiegen
- Maß der Differenz zwischen eigenen und gegnerischen Lebenspunkten ist gestiegen
- Gesamtstärke an Kreaturen auf der eigenen Seite ist gestiegen
- Größter Stärke-Wert an Kreaturen auf der eigenen Seite ist gestiegen
- Sieg des Spiels
Dazu ein paar "Bestrafungen", die im Wesentlichen gegenteilig zu den Belohnungen sind und dem Bot auf die Finger hauen, falls etwas nicht gut läuft. Beides muss mit Parametern bewertet werden, wobei Bestrafungen sich negativ auswirken.
Die Summe an erwarteten Belohnungen und Bestrafungen für das Resultat nach einem oder mehreren Zügen ermöglicht dann die Perspektive eines Lern-Algorithmus auf Spiele, die sich in dem Lerndatensatz befinden. Die Sensoren oder Neuronen eines entsprechenden Netzwerks werden dann entweder bevorzugt genutzt oder in ihrem Einfluss herunter skaliert, je nachdem, welches Resultat mit der aktuellen erfassten Situation vorliegt. Züge, die sich als gut herausgestellt haben, werden (hoffentlich) generalisiert und veranlassen die KI dann in Spielen mit neuen Situationen dazu, dass die passend skalierten "Neuronen" auch feuern und einen guten Spielzug veranlassen.
Die größten Herausforderungen sind Belohnungen, die in Bezug auf aktuelle Spielzüge weit in der Zukunft liegen (z.B. Nachtstahlreaktor als einzige Wincon). Auch die Abwägung, kurzfristige Bestrafungen in Kauf zu nehmen, um eine langfristige Belohnung (Sieg des Spiels) zu verfolgen ist schwer zu skalieren.
"Erst hauen, dann bauen" ist einer der Grundsätze, die uns vielleicht anfangs durch einen Mentor beigebracht wurden, damit man möglichst spät Informationen Preis gibt, doch wann wertet man den +1/+1 Bonus eines Lord of Atlantis über dem Wert, Informationen zurück zu halten?
Ich bin mir sicher, dass mit genügend Aufwand eine KI mit entsprechend guten Lerndatensätzen auch Magic recht competitive spielen könnte. Und mit fortschreitender Entwicklung der KI könnten wir - wie auch die menschlichen GO-Spieler - etwas von der "Denkweise" der KI lernen.
Denkt doch alleine mal an das vergleichsweise junge Paradigma, neben Brainstorm auch Ponder im Playset zu spielen. Oder wie stark wir auf manch andere Paradigmen wie "60-Karten Decks sind das Optimum" eingeschossen sind. Manch "erfrischende" Neuerungen werden in der Community mit gutem Grund "unterdrückt". Manche haben vielleicht das Potential unser großes "Neuronales Netzwek" (oder Hive-Mind?) der Magic-Szene zu bereichern