Über den Bot
Auf der Stufe „Neuronal“ spielt ein neuronales Netz mit 1,86 Millionen Gewichten. Niemand hat ihm gezeigt, wie man gut spielt. Es kannte nur die Regeln und hat 33 Millionen Spiele gegen sich selbst gespielt.
- 33 Mio.
- Spiele gegen sich selbst im Training
- 62 Min.
- Training auf einer Grafikkarte (RTX 4090)
- 1–2 ms
- Rechenzeit je Zug, im Browser
- 55,3 %
- der Spiele gewonnen gegen „Stark“
Drei Bots mit Regeln, einer ohne
Die Stufen Leicht und Mittel spielen nach Faustregeln: billig ausspielen, Paare zusammenhalten, hohe Karten nur für lohnende Stiche opfern. Stark ergänzt das um eine Suche. Für jeden Zug würfelt sie hunderte mögliche Verteilungen der unbekannten Karten aus, spielt jede zu Ende und nimmt den Zug mit dem besten Durchschnitt. Sobald nicht mehr gezogen wird, rechnet sie exakt.
Neuronal sucht nicht. Das Netz sieht die Stellung einmal an und gibt für jeden erlaubten Zug eine Wahrscheinlichkeit aus. Das Gespür dafür stammt aus dem Training, nicht aus Regeln, die ein Mensch aufgeschrieben hat.
Was das Netz sieht
Ein echtes Beispiel aus dem Selbstspiel. Trumpf ist Karo, die Hand hält Trumpf-König und -Dame und die Trumpf-Neun, offen liegt das Trumpf-Ass. Das Netz bekommt keine Bilder, sondern Zahlen: für jede der 24 Karten, ob sie in der eigenen Hand ist, schon gespielt wurde, offen liegt oder noch unbekannt ist.
Deine Hand
Offene Trumpfkarte
Talon: 8 Karten
Augen 14 : 0, Stiche 2 : 0
Die Karten-Eingaben: sechs Zeilen zu je 24 Feldern
Jedes Feld ist eine Karte. Gefüllt heißt 1, leer heißt 0. Trumpf steht immer links.
| ♦︎ | ♣︎ | ♠︎ | ♥︎ | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| A | 10 | K | D | B | 9 | A | 10 | K | D | B | 9 | A | 10 | K | D | B | 9 | A | 10 | K | D | B | 9 | |
| Eigene Hand | ||||||||||||||||||||||||
| Schon gespielt | ||||||||||||||||||||||||
| Gegner hat gezeigt | ||||||||||||||||||||||||
| Offene Trumpfkarte | ||||||||||||||||||||||||
| Ausgespielte Karte | ||||||||||||||||||||||||
| Noch unbekannt | ||||||||||||||||||||||||
Dazu kommen 44 Zahlen für Talongröße, Punktestand, Stiche, Zudrehen, Ansagepflicht und Paare auf der Hand.
Die Antwort des Netzes
Wahrscheinlichkeit für jeden erlaubten Zug. Wert der Stellung: +2,9 Spielpunkte.
Ein Kniff macht das Lernen leichter: Die Karten werden so gedreht, dass Trumpf immer die erste Farbe ist. Ob Herz oder Pik Trumpf ist, ändert am Spiel nichts, also muss das Netz jede Lage nur einmal lernen statt viermal.
Aufbau
Das Netz ist bewusst einfach: eine Eingangsschicht, drei Residualblöcke und zwei Köpfe. In jedem Block wird die Stellung auf 768 Merkmale aufgefächert, durch eine GELU-Kurve geschickt und wieder auf 384 verdichtet. Die Abkürzung um jeden Block herum sorgt dafür, dass das Training stabil bleibt.
Der Zug-Kopf bewertet alle 30 möglichen Züge: 24 Karten, 4 Ansagen, Neun tauschen und Zudrehen. Verbotene Züge werden vor der Auswahl gestrichen. Der Wert-Kopf schätzt, wie viele Spielpunkte am Ende herauskommen. Diese Zahl zeigt die Bewertungsgrafik im Spiel.
Im Browser läuft das Netz in reinem JavaScript, ohne Bibliothek und ohne Server. Die Gewichte stecken als 8-Bit-Zahlen in der Spieldatei (2,5 MB). Die gerundeten Gewichte wählen in 99,5 % der Stellungen denselben Zug wie das Original.
Wie viel Genauigkeit kostet das Runden?
| Bits je Gewicht | gleicher Zug wie das Original |
|---|---|
| 8 | 99,5 % |
| 6 | 97,6 % |
| 5 | 95,0 % |
| 4 | 89,8 % |
36.000 Stellungen aus dem Selbstspiel.
Training durch Selbstspiel
Trainiert wurde mit PPO (Proximal Policy Optimization), einem Standardverfahren des bestärkenden Lernens. In jeder der 4.000 Runden spielt die Grafikkarte 8.192 Spiele gleichzeitig. Die Hälfte davon gegen die aktuelle Fassung des Netzes, die andere Hälfte gegen bis zu 12 ältere Fassungen, damit es keine Schwäche entwickelt, die nur es selbst nicht ausnutzt.
Die einzige Rückmeldung ist das Ergebnis: gewonnene oder verlorene Spielpunkte, 1 bis 3 pro Spiel. Welche Züge dazu geführt haben, muss das Netz selbst herausfinden. Die Lernrate sinkt dabei von 0,0003 auf 0,00001, damit das Netz am Ende fein abstimmt, statt zu springen.
Siegquote gegen die drei Regel-Bots während des Trainings
Gemessen alle 200 Runden: 250 Spiele gegen Leicht und Mittel, 1.000 gegen Stark.
Werte als Tabelle
| Runde | gegen Leicht | gegen Mittel | gegen Stark |
|---|---|---|---|
| 200 | 75,0 % | 59,4 % | 50,6 % |
| 400 | 76,5 % | 60,1 % | 52,3 % |
| 600 | 77,1 % | 62,3 % | 51,5 % |
| 800 | 73,2 % | 60,7 % | 53,2 % |
| 1.000 | 76,6 % | 62,4 % | 54,4 % |
| 1.200 | 77,3 % | 65,1 % | 53,6 % |
| 1.400 | 73,7 % | 61,9 % | 53,1 % |
| 1.600 | 78,1 % | 62,1 % | 53,9 % |
| 1.800 | 78,7 % | 63,3 % | 53,6 % |
| 2.000 | 76,2 % | 66,0 % | 52,7 % |
| 2.200 | 78,0 % | 64,0 % | 54,5 % |
| 2.400 | 77,0 % | 60,9 % | 54,3 % |
| 2.600 | 76,0 % | 61,5 % | 55,3 % |
| 2.800 | 77,6 % | 66,3 % | 54,7 % |
| 3.000 | 74,8 % | 62,7 % | 55,9 % |
| 3.200 | 75,9 % | 63,0 % | 56,3 % |
| 3.400 | 76,2 % | 64,5 % | 55,6 % |
| 3.600 | 78,0 % | 64,5 % | 57,1 % |
| 3.800 | 74,8 % | 64,0 % | 56,8 % |
| 4.000 | 77,1 % | 65,2 % | 56,6 % |
Was das Netz sich angewöhnt: Aktionen je Spiel im Selbstspiel
Durchschnitt über beide Seiten, alle 10 Runden gemessen.
Wie stark ist er?
Jeder gegen jeden, je 1.000 Spiele. Jede Kartenverteilung wird zweimal gespielt, mit getauschten Plätzen, damit Glück beim Geben sich ausgleicht. Lies eine Zeile: So oft gewinnt dieser Bot gegen den Gegner in der Spalte.
| Zeile gegen Spalte, Siege in % | Zufall | Leicht | Mittel | Stark | Netz nach 400 | Netz nach 1.600 | Netz final (Neuronal) |
|---|---|---|---|---|---|---|---|
| Zufall | 19 | 8 | 7 | 5 | 5 | 5 | |
| Leicht | 81 | 30 | 21 | 24 | 24 | 22 | |
| Mittel | 92 | 70 | 36 | 39 | 38 | 36 | |
| Stark | 92 | 78 | 64 | 49 | 46 | 43 | |
| Netz nach 400 | 94 | 75 | 61 | 50 | 47 | 46 | |
| Netz nach 1.600 | 95 | 76 | 62 | 53 | 52 | 47 | |
| Netz final (Neuronal) | 95 | 77 | 64 | 57 | 54 | 53 |
Spielt er anders als der Suchbot?
Beide gewinnen etwa gleich oft gegen die schwachen Stufen, aber nicht auf dieselbe Weise. Gemessen über 10.000 Spiele je Bot:
Was nicht geholfen hat
Nach dem ersten guten Netz folgten viele Versuche, es noch stärker zu machen: länger trainieren, mehr Eingaben, eine Suche obendrauf, den Partiestand mitgeben. Keiner kam messbar über die rund 55 % gegen Stark hinaus. Die Monte-Carlo-Suche machte es sogar schwächer, weil sie so tut, als kenne sie die gegnerischen Karten.
Zwei Messungen erklären, warum. Ein Netz, das 16 Millionen Spiele lang nur darauf trainiert wurde, v3 zu schlagen, kommt auf 49,8 %: Es findet keine Schwäche. Ein Netz, das die gegnerische Hand und den Talon sehen darf, gewinnt dagegen 77,8 %. Der Abstand ist der Preis der verdeckten Karten, nicht schwaches Spiel. Ohne Blick in fremde Karten ist dort wenig zu holen.
Siegquote je Versuch, mit Standardfehler
Gestrichelt: 50 %, gleich stark. Der Balken um jeden Punkt zeigt die Messunsicherheit.
Gegen den Suchbot „Stark“
Gegen das Netz v3 selbst
Der Bot als Trainer
Das Netz hilft auch dir. Der Knopf Tipp zeigt seinen besten Zug, wie sicher es sich ist und was die zweitbeste Wahl wäre. Stimmt eine Faustregel mit dem Netz überein, steht ihre Begründung dabei.
In den Einstellungen unter Trainingshilfen lässt sich die Bewertungsgrafik einschalten. Sie zeigt wie beim Schach nach jedem deiner Züge, wie das Netz die Stellung einschätzt, und ordnet deinen Zug ein: bester Zug, gut, ungenau oder Fehler, je nachdem, wie wahrscheinlich das Netz ihn selbst gespielt hätte. Am Ende des Spiels siehst du, wo es anders gespielt hätte.