Adversariale Suche Spielprogrammierung
Einleitung Spiel: Konkurrierende Multi-Agenten Umgebung Hier: Vollständige Information, d.h. Umgebung vollständig beobachtbar Adversariales Suchproblem Theoretisch jede mögliche Reaktion des Gegners berechenbar Offline-Problem! Aber: Immenser Verzweigungsfaktor Bsp. Schach: b = 35 100 Halbzüge 35100 = 10154 Knoten Praktisch: Online-Problem, da Suchbaum zu groß, um alle gegnerischen Aktionen zu berücksichtigen. Weitere Erschwerung: Zeitlimit ! Spiele interessant, weil suboptimale Echtzeit-Entscheidungen nötig !
Historisches Babbage, 1846: Erste Überlegungen zu Dame oder Schach spielender Maschine. Entwurf eine Tic-Tac-Toe Maschine. Torres y Quevedo, 1890: Maschine für Endspiel König + Turm vs. König Zermelo, 1912: Minimax Von Neumann, Morgenstern, 1944: Beginn Spieltheorie Zuse 1945: Erster programmierbarer Computer Wiener 1948: Entwurf Schachprogramm Shannon 1950: Verbesserungen, z.B. Ruhesuche Turing 1951: Erstes Schachprogramm Samuel 1952: Dameprogramm lernt Bewertungsfunktion durch Spiel gegen sich selbst, Niveau menschlicher Spieler, 1kHz Prozessor! McCarthy 1956: Pruning 1970: Erste Computerschach-Meisterschaft 1997: Deep Blue besiegt Kasparov Letzten Samstag: Kramnik Remis gegen Deep Fritz Gestern: Kramnik verliert gegen Deep Fritz
Spieltypen Vollständig beobachtbar : Teilweise beobachtbar: Deterministisch: Dame, Schach, Go, Reversi Zufallskomponente: Backgammon, Monopoly Teilweise beobachtbar: Schiffe versenken, Tic Tac Toe blind Bridge, Poker, Skat Beachte: Abgrenzung „teilweise beobachtbar“ / „Zufall“ teils schwierig!
Problemspezifikation Hier: Spiele mit zwei Spielern namens Max und Min Max versucht hohe Bewertung zu erhalten, Min niedrige Nullsummenspiel: Gewinn Spieler A = Verlust Spieler B Zustand: Brettposition Spieler, der den nächsten Zug macht Nachfolgerfunktion: Liste legaler Züge für jeden Zustand Endtest: Stellt fest ob Zustand Spielende ist Nutzenfunktion (Utility): Ordnet Endzuständen Wert zu Schach, Dame, Tic-Tac-Toe: +1, 0, -1 (= Max hat gewonnen / unentschieden / verloren) Backgammon: +192 … -192
Suchbaum Tic-Tac-Toe Ziel: 3 Steine in einer Reihe
Minimax-Algorithmus Optimal für deterministische Spiele Vollständige Suche Daher nur für überschaubare Suchbäume einsetzbar Idee: Berechne aus dem Nutzen (aus Sicht von Max) der Endknoten den Nutzen der anderen Knoten und wähle besten Knoten.
Minimax-Wert Jeder Knoten n stellt Zug von Min oder Max dar. Minimax-Wert(n) = Nutzen(n) falls n Endknoten Maximum des Nutzens der Nachfolger von n falls n Max-Knoten Minimum des Nutzens der Nachfolger von n falls n Min-Knoten
Minimax-Algorithmus Idee: Max wählt Zug mit höchstem Minimax Wert = bestes erreichbares Ergebnis falls Min ebenfalls optimal spielt Bsp. Spiel mit 2 Zügen:
Minimax-Algorithmus
Eigenschaften von Minimax Vollständig? Ja (falls Baum endlich) Optimal? Ja (gegen optimalen Gegner) Zeitkomplexität? O(bm) Speicherkomplexität? O(bm) (Tiefensuche) Für typische Schachspiele b ≈ 35, m ≈100 exakte Lösung unmöglich Wie kann Suchbaum verkleinert werden? Pruning = Abschneiden von Ästen, die keinen Erfolg versprechen (Buch: “Kürzen”)
α-β Pruning α ist Wert der besten Wahl die bislang entlang irgendeines Pfades für Max gefunden wurde. Wenn v < α, wird Max Pfad durch v vermeiden Zweig wird geprunt Entsprechende Definition für β für Min
α-β Pruning
α-β Pruning Max wird mittleren Knoten nicht wählen, da bessere Alternative vorhanden!
α-β Pruning
α-β Pruning
α-β Pruning
Eigenschaften von α-β Pruning Pruning beeinflusst Ergebnis nicht Effektivität des Pruning wird durch Ordnen der Knoten verbessert Perfektes Sortieren i. allg. nicht möglich, sonst wäre Problem bereits gelöst! Mit perfekter Ordnung Zeitkomplexität = O(bd/2) statt O(bd/2) Verdoppelt Suchtiefe Pruning ist einfaches Beispiel für Metareasoning, in diesem Fall die Überlegung, welche Berechnungen überhaupt relevant sind
α-β Algorithmus
α-β Algorithmus
Minimax-Erweiterung auf mehrere Spieler n-dimensionaler Nutzen-Vektor an jedem Knoten für n Spieler Beachte: Auch Spiel mit 2 Spielern hat 2-komponentige Nutzenvektoren, nämlich (x,-x) (Nullsummenspiel!) Endzustand: Vektor enthält Nutzen für jeden Spieler. Nicht-Endzustand, wobei Spieler X am Zug: Nutzenvektor wird von dem Nachfolger übernommen, der den höchsten Wert für X hat.
Minimax-Erweiterung auf mehrere Spieler
Begrenzte Resourcen Bsp.: 100 sec stehen zur Verfügung, 104 Knoten/sec können untersucht werden 106 Knoten pro Zug bm = 106, b=35 m=4 4-Züge Vorausschau ist für Schach völlig unzureichend: 4 Züge ≈ Menschlicher Anfänger 8 Züge ≈ Typischer PC, menschlicher Meister 12 Züge ≈ Deep Blue, Kasparov
Begrenzte Resourcen Standard-Ansatz: Minimax beibehalten, aber nicht bis Ende suchen: Cutoff-Test Ersetzt Terminal Z.B. Tiefenlimit Bewertungsfunktion Ersetzt Utility Schätzt Nutzen der Position
Erinnerung Minimax
Bewertungsfunktionen Eval(s) : Schätzung des Nutzens der Position s Anforderungen an Eval: Mindestens: Endzustände so ordnen wie wahre Nutzenfunktion Besser: Möglichst gute Schätzung echten Nutzens (insb. Ordnung der Zustände wiedergeben) Schnelle Berechenbarkeit Für Schach, typischerweise lineare gewichtete Summe von Merkmalen Eval(s) = w1 f1(s) + w2 f2(s) + … + wn fn(s) Merkmale: Materialwert: 1 – Bauer, 3 – Läufer, 5 – Turm, 9 – Dame Funktionsmerkmale: „Bauernstruktur“, „Königssicherheit“
Weitere Verbesserungen Nichtlineare Bewertungsfunktionen Bessere Abbruchtests (im Vgl. zu Tiefenlimit) Singuläre Erweiterung, Horizonteffekt Vorab-Pruning
Nichtlineare Bewertungsfunktionen Problem: Lineare Gewichtung u.U. unangemessen Bsp.: Erfahrung: 1 Punkt Materialvorteil: Gute Gewinnchance 3 Punkte: Nahezu sicher Gegenbeispiel s.u. Daher: Nichtlineare Bewertungsfunktionen erforderlich
Abbruchtest Bisher: Tiefenlimit Problem: Bsp. wie letzte Folie Programm sucht bis (a), dann Tiefenlimit erreicht D.h. Vorteil Schwarz errechnet Weiß erlangt erheblichen Vorteil in (b) Daher: Test, ob Position „ruhend“ (d.h. keine Möglichkeit zu drastischen Bewertungsänderungen)
Singuläre Erweiterung Weißer Bauer unmittelbar vor Damenzug Aber: Schach durch schwarzen Turm verschiebt dies über Horizont Singuläre Erweiterung erlaubt Züge über Tiefenlimit hinaus, falls ein Zug erheblich besser ist als andere Umgekehrt: Vorab-Pruning vermeidet Züge, die Bewertung nicht verändern (z.B. bei symmetrischen Situationen)
Probleme des Standardansatzes Standardansatz = Minimax + a-b + Bewertungsfkt. + Cut-Off weit verbreitet Aber: Beruht auf Annahme, dass Bewertungsfunktion korrekt Problem bei sehr ähnlichen Bewertungen, Bsp.: Minimax geht rechts Bei kleiner Ungenauigkeit der Schätzung ist links wahrscheinlich wesentlich besser! Verbesserung: Wahrscheinlichkeitsverteilungen möglicher Werte statt Wahrscheinkeiten
Deterministische Spielprogramme in der Praxis Dame: Chinook beendete 40-jährige Dominanz durch Weltmeister Marion Tinsley (1994). Verwendet vorab berechnete Datenbasis von Endspielen, die perfektes Spiel für alle Stellungen bis zu 8 Steinen enthält (insg. 444 Milliarden Stellungen). Schach: Deep Blue besiegte 1997 Weltmeister Garry Kasparov in 6-Spiele-Turnier. Deep Blue durchsucht 200 Millionen Stellungen pro Sekunde, verwendet ausgefeilte Evaluationsfunktionen und unveröffentlichte Methoden um einzelne Zweige bis zu 40 Halbzüge tief zu durchsuchen. Reversi: Menschliche Champions weigern sich gegen Computerprogramme anzutreten, die zu gut spielen. Go: Menschliche Champions weigern sich gegen Computerprogramme anzutreten, die zu schlecht spielen. Für Go ist b > 300, daher verwenden die meisten Programme Muster-Datenbasen.
Nicht-deterministische Spiele Nicht-Determinismus z.B. durch Würfeln, Kartenmischen Backgammon: Mischung aus Planbarkeit und Zufall
Baum für nicht-deterministische Spiele Erweiterung: Zufallsknoten Verzeigungen von Zufallsknoten: Für jede Möglichkeit eine Verzweigung Wahrscheinlichkeit für jede Möglichkeit berechnen Bsp. Backgammon: 2 Würfel, Reihenfolge unerheblich 21 Möglichkeiten Wahrscheinlichkeiten: Je 1/36 bei gleicher Augenzahl Je 1/18 bei ungleicher Augenzahl
Expectiminimax Expectiminimax-Wert(n) = wobei P(s) Wahrscheinlichkeit für Möglichkeit s. D.h. Zufallsknoten erhält gewichtetes Mittel der Expectiminimax-Werte. Baum von Blättern bis Wurzel berechnen Dann wie bei Minimax vorgehen
Expectiminimax Komplexität: Problem: Größe des Baums Ohne Würfeln: O(bm) Mit n Wurfmöglichkeiten: O(bm nm) Problem: Größe des Baums Lösung: Suche abbrechen, statt Nutzen der Endknoten Bewertungsfunktion verwenden Neues Problem: Skalierung der Bewertungsfunktion verändert Auswahl (s.u.) ! Lösung: Bewertungsfkt. muss positive, lineare Trafo des erwarteten Nutzens sein.
Kartenspiele Vermutung: Es zeigt sich: Vermutung ziemlich falsch Ähnlich wie Würfelspiele Zufälliges Verteilen der Karten entspricht Würfeln Daher kann mit Wahrscheinlichkeits-gewichtetem Nutzen gerechnet werden Es zeigt sich: Vermutung ziemlich falsch
Problem der Mittelung Straße A führt zu einem kleinen Haufen Gold Straße B führt zu einer Gabelung: Links: Abgrund Rechts: Berg Juwelen Links: Berg Juwelen Rechts: Abgrund Richtige Vermutung: Berg Juwelen Falsche Vermutung: Abgrund
Kartenspiele Intuition, dass Wert einer Aktion der Mittelwert aller möglichen Zustände ist, ist falsch! Bei teilweiser Beobachtbarkeit hängt der Wert einer Aktion vom Informationsstand oder „Glaubenszustand“ des Agenten ab. Daher: Agent muss versuchen, Information zu erhalten Signale (z.B. Verwirrung) an Partner geben U.u. zufällig und damit unvorhersehbar handeln
Zusammenfassung Spielprogrammierung weit entwickelt, insb. kommerziell Spiele illustrieren wichtige KI-Probleme, daher wichtige Benchmarks Insbesondere: Einbringen menschlichen Wissens in Suchprobleme Perfektion nicht realisierbar Zwang zum Improvisieren