Reinforcement Learning in der Schachprogrammierung

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Algorithmen und Datenstrukturen
Heads-up am Flop OOP - C/C Flop ohne Initiative - mit Showdownvalue Strategie: Fixed Limit.
Agent Based Supply Chain Management1 ABSCM-Vorlesung im WS 2001/2002.
Perceptrons and the perceptron learning rule
AG Schachprogrammierung FUSC# Stand: Mai 2004
Polynomial Root Isolation
GIN2 SS05 Prof. Dr. W. Conen, Nullsummen-Spiele - Min-Max-Suche - Alpha-Beta-Pruning (späterer Termin)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Webseitenranking für Suchanfragen anhand von Linkgraphen
Algorithmische Anwendung
Kapitel 6: Klassifizierung von Sortiertechniken
WS 05/06Automatische Akquisition linguistischen Wissens1 Partielles Wissen erweitern 1.Zusammenhang mit bisherigen Algorithmen 2.Vom offensichtlichen zum.
Genetische Algorithmen für die Variogrammanpassung
Übung 6.6Schranken 1.Angenommen, Ihr Algorithmus habe einen Aufwand von g(n) = 5n 3 + n für alle n a)Geben sie eine obere Schranke O(g(n)) an. b)Beweisen.
Wie lernt FUSC# mit TD( )? Marco Block... X1X1 X2X2 XNXN x1x1 x2x2 pd[i] =w1f1(x) + w2f2(x) + w3f3(x) wnfn(x)... w1f1(x) + w2f2(x) + w3f3(x) +...
Mathematik des Bridge Tanja Schmedes.
Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen
1/21 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Reinforcement Learning in MAS Projektgruppe KIMAS Reinforcement Learning in MAS Marc Pannenberg.
Adversariale Suche Spielprogrammierung.
Informierte Suche.
Spielbäume Richard Göbel.
Suchbäume Richard Göbel.
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Heuristiken Automatic Problem Solving Institut für Informatik
Lernende Agenten Seminar Softwareagenten Wintersemester 2001/2002 Norman Neuhaus.
Genetische Algorithmen
Konfidenzintervalle für Parameter
Reinforcement Learning
Vom Amateur zum Grossmeister
Algorithmen und Komplexität
Algorithmen des Internets 2005 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität 1 Klausuraufgaben.
Was sind Histogramme? (1)
Relevanz Ranking Bisher: Sind wir davon ausgegangen, dass das Ergebnis des Rankings des statistischen Verfahrens in den Index geschrieben wird und dem.
Das Wunder der Koordinatentransformation Das Wunder der sexuellen Fortpflanzung = Rekombination.
Dieter Bergmann, Lichtenfels
Classification of Credit Applicants Using Data Mining. Thema.
Teil 5: Kollisionsvermeidung & Wegplanung
Handlungsplanung und Allgemeines Spiel „Game Description Language (GDL)“ Peter Kissmann.
Handlungsplanung und Allgemeines Spiel „Ausblick: GDL-II“
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Machine Learning KNN und andere (Kap. 8).
Maschinelles Lernen und automatische Textklassifikation
20:00.
Machine Learning & Spiele: Probleme und Ideen von Samuel bis heute Giuliana Sabbatini
Ideen der Informatik Suchen und Sortieren [Ordnung muss sein…]
? Was ist Informatik? Was ist Informatik? Alexander Lange
Computational Thinking Wie spielen Computer? [Sind sie unbesiegbar?]
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Game Programming mit Lua
Optimales Güterbündel
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Hartmut Klauck Universität Frankfurt SS
K-SAT: Ein heuristischer Algorithmen- Vergleich Kann man den Brute Force Search Algorithmus schlagen?
… oder wie finde ich den Weg
Go Das Spiel der Götter.
Symmetrische Blockchiffren DES – der Data Encryption Standard
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
1 Computergestützte Verifikation Binary Decision Diagrams (BDD) Inhalt: Die Datenstruktur BDD Operationen auf BDD CTL Model.
Lernmodelle und Experimentelle Untersuchungen
Vom Neuron bis zur Boltzmann Maschine Miguel Domingo & Marco Block Seminar : Maschinelles Lernen und Markov KettenSommersemester 2002.
Suche in Spielen mit unvollständiger Information.
Der A*-Algorithmus.
K-SAT: Ein heuristischer Algorithmen- Vergleich Kann man den ‚Brute Force Search‘ Algorithmus schlagen?
Institut für Informationssysteme Technische Universität Braunschweig Institut für Informationssysteme Technische Universität Braunschweig Verdrängung von.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 3 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Emanuel Mistretta Lukas Schönbächler
Schach – ein Kinderspiel für die ganze Familie
 Präsentation transkript:

Reinforcement Learning in der Schachprogrammierung 30% 50% 40% 20% x o ... Marco Block

Übersicht 1.Einführung Schachprogrammierung (sehr kurz) - Struktur von Schachprogrammen verstehen - Problematik der Spielqualität (Koeffizientenwahl) 2.Reinforcement Learning (RL) - Konzept und Einordnung in KI 3.KnightCap - erstes RL-Schachprogramm (erstaunliche Erfolge) - Studienarbeit kurze Schachprogrammiereinführung als Basis Reinforcement Learning, was ist das KnightCap, ein erstaunliches Programm FUSC# soll auch eigenständig lernen 4.FUSC# - Open Source Projekt - FUSC# && RL == Kasparov ? 

Schachprogrammierung 1.Einführung Schachprogrammierung (sehr kurz) - Struktur von Schachprogrammen verstehen + Brettdarstellung + Evaluation + Zugwahl - Problematik der Spielqualität (Koeffizientenwahl) Marco Block Juni 2004

Komponenten n ...  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Komponenten Brettrepräsentation 0100110 11001 ... Zuggenerator n EröffnungsDatenbank Stellungsbewertung Material Zentrierung der Figuren offene Linien offene Diagonalen Läuferpaar Vorposten Fianchettierung Rochade Entwicklung ...  Zugwahlalgorithmen ... Marco Block Juni 2004

Brettrepräsentation  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Brettrepräsentation BitBoardtechnologie alle Figuren werden in 64-Bit-Worten gespeichert mit und-, oder- und shift-Operationen alle möglichen Züge leicht generierbar Beispiel: Bauernschlagzüge nach rechts, Board shiften und anschliessend mit den gegnerischen Figuren verunden -> liefert alle möglichen Schlagzüge

Brettrepräsentation n 8x8-Brettdarstellung Brettmatrix durchlaufen  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Brettrepräsentation Brettrepräsentation 0100110 11001 ... Zuggenerator n 8x8-Brettdarstellung -4 -2 -3 -5 -6 -1 1 4 2 3 5 6 Brettmatrix durchlaufen Figur identifizieren mögliche Zugfelder betrachten und Regelsatz befolgen wenn Zug gültig in Zugliste speichern Jede Brettdarstellung besitzt individuelle Zuggenerierung. erste Idee (naheliegend) 8x8 Matrix, wobei positive Zahlen -> weisse Figuren negative Zahlen -> schwarze Figuren 0 -> leeres Feld Beispiel: weisser d-Bauer ein oder zwei Felder aus der Startposition Zuggenerator etwas schwer zu handeln Zug = (Startfeld, Zielfeld, Startfigur,)

BitBoards BitBoarddarstellung  Schachprogrammierung Reinforcement Learning KnightCap FUSC# BitBoards BitBoarddarstellung 1 ...  = 64 BIT-Wort 1 BitBoardtechnologie alle Figuren werden in 64-Bit-Worten gespeichert mit und-, oder- und shift-Operationen alle möglichen Züge leicht generierbar Beispiel: Bauernschlagzüge nach rechts, Board shiften und anschliessend mit den gegnerischen Figuren verunden -> liefert alle möglichen Schlagzüge + Zuggenerierung sehr schnell + Evaluationsfaktoren leicht in BitMuster giessbar (Königssicherheit) - keine „offiziellen“ Standards

Evaluation  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Evaluation Stellungsbewertung Material Zentrierung der Figuren offene Linien offene Diagonalen Läuferpaar Vorposten Fianchettierung Rochade Entwicklung ... 

∑ wi * fi(S) Evaluation 10 * Material(S) + 2 * Mobilität(S) + ...  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Evaluation Stellungsbewertung Faktoren - Material - Mobilität - gute/schlechte Figuren - starke/schwache Felder - Raum - Königsstellung - offene Linien/Diagonalen - Läuferpaar - Vorposten - Rochade - Bauernstruktur - Läufer gegen Springer - ... 10 * Material(S) + 2 * Mobilität(S) + ... ∑ wi * fi(S) - +

p n vv:ml tr wq k Material  p n l tr wq  1.0  3.0  3.0  4.5  9.0  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Material Material - Figurenbewertungen (weisse Figurensumme - schwarze) - verwendeten Daten von Kasparov vorgeschlagen - + Weiss Schwarz p n vv:ml tr wq k  1.0 p n l tr wq 7x1.0 7x1.0  3.0 2x3.0 2x3.0 2x3.0 2x3.0  3.0 2x4.5 2x4.5  4.5 1x9.0 1x9.0  9.0 37.0 37.0   0.0

∑ wi * fi(S) Evaluation 10 * 0.0 + 2 * Mobilität(S) + ...  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Evaluation Stellungsbewertung Faktoren - Material - Mobilität - gute/schlechte Figuren - starke/schwache Felder - Raum - Königsstellung - offene Linien/Diagonalen - Läuferpaar - Vorposten - Rochade - Bauernstruktur - Läufer gegen Springer - ... 10 * 0.0 + 2 * Mobilität(S) + ... ∑ wi * fi(S) - + konkrete Werte relativer Massstab

??? Evaluation 10 * Material(S) + 2 * Mobilität(S) + ...  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Evaluation Problem: Welche Konfiguration ist die richtige? Gibt es überhaupt eine richtig Konfiguration? => Falls JA, dann müsste schachliches Wissen als eine lineare Funktion darstellbar sein! (sehr unwahrscheinlich ;) ) ??? 10 * Material(S) + 2 * Mobilität(S) + ... 11 * Material(S) + 2.5 * Mobilität(S) + ... Lösung (bisher): Für professionelle Schachprogramme => Grossmeister engagiert, kritisiert Bewertung Lösung (KnightCap): Temporale Differenz auf Blattknoten

 Schachprogrammierung Reinforcement Learning KnightCap FUSC# TD & Brettspiele V TD()-Algorithmus dafür da, den Parametersatz w  k zu lernen. Also den Vektor so zu approximieren, dass er gegen die optimale Strategie konvergiert. Wahrscheinlichkeit des Überganges xt mit a nach xt+1

Evaluation Stellungsbewertungsfaktoren Evaluation sehr aufwendig  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Evaluation Stellungsbewertungsfaktoren BishopPair Knight_Outpost Supported_Knight_Outpost Connected_Rooks Opposite_Bishops Opening_King_Advance King_Proximity Blocked_Knight Draw_Value No_Material Bishop_XRay Rook_Pos Pos_Base Pos_Queenside Bishop_Mobility Queen_Mobility Knight_SMobility Rook_SMobility King_SMobility Threat Overloaded_Penalty Q_King_Attack_Opponent NoQ_King_attack_Opponent NoQueen_File_Safty Attack_Value Unsupported_Pawn Passed_Pawn_Control Doubled_Pawn Odd_Bishop_Pawn_Pos BishopPair Knight_Outpost Supported_Knight_Outpost Connected_Rooks Opposite_Bishops Opening_King_Advance King_Proximity Rook_Pos Pos_Queenside Bishop_Mobility Queen_Mobility Knight_SMobility Rook_SMobility King_SMobility Unsupported_Pawn Passed_Pawn_Control Doubled_Pawn King_Passed_Pawn_Supported Passed_Pawn_Rook_Supported Blocked_EPawn Pawn_Advance King_Passed_Pawn_Defence Pawn_Defence Mega_Weak_Pawn Castle_Bonus Bishop_Outpost Supported_Bishop_Outpost Seventh_Rank_Rooks Early_Queen_Movement Mid_King_Advance Trapped_Step Useless_Piece Near_Draw_Value Mating_Positions Ending_King_Pos Knight_Pos Pos_Kingside Knight_Mobility Rook_Mobility King_Mobility Bishop_SMobility Queen_SMobility Piece_Values Opponents_Threat Q_King_Attack_Computer NoQ_King_Attack_Computer Queen_File_Safty Piece_Trade_Bonus Pawn_Trade_Bonus Adjacent_Pawn Unstoppable_Pawn Weak_Pawn Blocked_Pawn Passed_Pawn_Rook_Attack Blocked_DPawn Pawn_Advance Pawn_Advance2 Pawn_Pos Isolated_Pawn Weak_Pawn_Attack_Value ... und viele viele mehr ! Evaluation sehr aufwendig und demnach „teuer“

Algorithmen ...  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Algorithmen Zugwahlalgorithmen ...

Brute-Force-Methode Shannon-A-Strategie (Brute-Force) -8 -5 3 -12 7 3  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Brute-Force-Methode Shannon-A-Strategie (Brute-Force) - Tiefensuche bis zu einer vorgegebenen festen Suchtiefe - Minimax-Idee: Weiß maximiert, Schwarz minimiert Nachfolger W am Zug S am Zug W am Zug -8 -5 3 -12 7 3 28 -4 17 Bewertungsroutine an den Blättern

Brute-Force-Methode Shannon-A-Strategie (Brute-Force) -8 -12 -4 -8 -5  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Brute-Force-Methode Shannon-A-Strategie (Brute-Force) - Tiefensuche bis zu einer vorgegebenen festen Suchtiefe - Minimax-Idee: Weiß maximiert, Schwarz minimiert Nachfolger W am Zug S am Zug -8 -12 -4 W am Zug -8 -5 3 -12 7 3 28 -4 17 Bewertungsroutine an den Blättern

Brute-Force-Methode Shannon-A-Strategie (Brute-Force) -4 -8 -12 -4 -8  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Brute-Force-Methode Shannon-A-Strategie (Brute-Force) - Tiefensuche bis zu einer vorgegebenen festen Suchtiefe - Minimax-Idee: Weiß maximiert, Schwarz minimiert Nachfolger W am Zug -4 S am Zug -8 -12 -4 W am Zug -8 -5 3 -12 7 3 28 -4 17 Bewertungsroutine an den Blättern

Alpha-Beta-Algorithmus  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Alpha-Beta-Algorithmus Alpha-Beta-Algorithmus - Abschneiden von unwichtigen Ästen des Spielbaumes - Alpha-/Beta-Werte bilden Erwartungsfenster [ MinWert , MaxWert ] W am Zug Alpha = - 8 S am Zug -8 W am Zug -8 -5 3 Bewertungsroutine an den Blättern

Alpha-Beta-Algorithmus  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Alpha-Beta-Algorithmus Alpha-Beta-Algorithmus - Abschneiden von unwichtigen Ästen des Spielbaumes - Alpha-/Beta-Werte bilden Erwartungsfenster [ - 8 , MaxWert ] W am Zug Alpha = - 8 S am Zug -8 W am Zug -8 -5 3 -12 Bewertungsroutine an den Blättern

Alpha-Beta-Algorithmus  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Alpha-Beta-Algorithmus Alpha-Beta-Algorithmus - Abschneiden von unwichtigen Ästen des Spielbaumes - Alpha-/Beta-Werte bilden Erwartungsfenster [ - 8 , MaxWert ] W am Zug Alpha = - 8 S am Zug -8 -12 < - 8 ! W am Zug -8 -5 3 -12 Bewertungsroutine an den Blättern

Zugsortierung Zugsortierung -8 -5 3 -4 28 17 28 -4 17 -8 < - 4 !  Schachprogrammierung Reinforcement Learning KnightCap FUSC# Zugsortierung Zugsortierung - iteratives Suchverfahren - Transpositions-, Killerzug- und Historytabellen -8 -5 3 -4 28 17 Schlechter Fall: 28 -4 17 -8 Bester Fall: < - 4 !

diverse Programmiertricks  Schachprogrammierung Reinforcement Learning KnightCap FUSC# diverse Programmiertricks - selbstlernendes Eröffnungsbuch - Hashtables - heuristische Zugsortierungen KillerMoves - parallele Suche - Ruhesuche - iterative Suche - NullMoves - weitere Heuristiken ...

Reinforcement Learning 2.Reinforcement Learning (RL) - Einordnung in die KI + Bestärkendes oder Halbüberwachtes Lernen + Dynamische Programmierung + Monte Carlo + Temporale Differenz - Beispiel: Tic-Tac-Toe kurze Schachprogrammiereinführung als Basis Reinforcement Learning, was ist das KnightCap, ein erstaunliches Programm FUSC# soll auch eigenständig lernen

Lernstrategie I 1. überwachtes Lernen Schachprogrammierung Reinforcement Learning KnightCap FUSC#  Lernstrategie I 1. überwachtes Lernen - „Ziel wird vom Lehrer vorgegeben“ - Neuronale Netze (BackPropagation) 2. unüberwachtes Lernen - „System klassifiziert nach eigenem Ermessen“ - EM, LBG 3. Reinforcement Learning - „System (Agent) findet durch Ausprobieren und Rückmeldung (Reinforcement-Signal) aus der Umwelt eine optimale Strategie, um Ziele innerhalb seiner Umgebung zu erreichen“ - „halbüberwachtes Lernen“ [Zhang] - Dynamische Programmierung, Monte Carlo, Temporale Differenz

Lernstrategie II Agenten, die immer oder niemals weiterforschen, Schachprogrammierung Reinforcement Learning KnightCap FUSC#  Lernstrategie II Agenten, die immer oder niemals weiterforschen, werden stets scheitern.

Beispiel: Tic Tac Toe Schachprogrammierung Reinforcement Learning KnightCap FUSC#  Beispiel: Tic Tac Toe o-Zug x-Zug 1. Tabelle V(s) erzeugen mit (Zustand s  Bewertung) Wahrscheinlichkeit zu gewinnen Gewinnstrategie 1 Sieg, 0 Niederlage, 0.5 Remis 1.0 0.7 0.6 0.51 0.5 x 0.5 ... x Belohnung x o 0.5 x ... 2. Es werden viele Partien gespielt meistens besten Zug wählen gelegentlich aber experimentieren! (zufällige Auswahl) während des Spiels wird Werte- funktion verändert (Belohnung) vorheriger Zustand verschiebt sich etwas in Richtung des nachfolgenden x o x o x x x o o 0.5 x x x ... x x o x o o o ... x-SIEG

KnightCap 3.KnightCap - erstes RL-Schachprogramm (Studienarbeitauszug) + Erfolg + Struktur kurze Schachprogrammiereinführung als Basis Reinforcement Learning, was ist das KnightCap, ein erstaunliches Programm FUSC# soll auch eigenständig lernen

Historie KnightCap „Open Source Projekt“ von Schachprogrammierung Reinforcement Learning KnightCap FUSC#  Historie KnightCap unkommentiertes, kryptisches C „Open Source Projekt“ von Jonathan Baxter, Andrew Tridgell und Lex Weaver Reinforcement Learning eingesetzt Evaluations-Koeffizienten „getunt“ Motivation: Tesauros TD-Gammon schlägt Weltmeister Startrating von 1650 in 3 Tagen (308 Spiele) auf 2150 + Eröffnungsbuch + weitere Programmierraffinessen KnightCap hat ein Niveau von über 2500 (max 2575)

Struktur  Brettdarstellung: ToPiecesBoard Figur j greift Feld i an. Schachprogrammierung Reinforcement Learning KnightCap FUSC#  Struktur Brettrepräsentation 0100110 11001 ... Zuggenerator  Brettdarstellung: ToPiecesBoard 1 ... 32 BIT-Wort wDame wSpringer wLäufer wTurm Figur j greift Feld i an.

Struktur Zugwahlalgorithmus: Schachprogrammierung Reinforcement Learning KnightCap FUSC#  Struktur Zugwahlalgorithmen ... Zugwahlalgorithmus: MTD(f) = weiterentwickelter AlphaBeta-Algorithmus mit minimalem Fenster - einige Heuristiken (Killerheuristik, ...)

Struktur Stellungsbewertungsfaktoren: Schachprogrammierung Reinforcement Learning KnightCap FUSC#  Struktur Stellungsbewertung Material Zentrierung der Figuren offene Linien offene Diagonalen Läuferpaar Vorposten Fianchettierung Rochade Entwicklung ...  Stellungsbewertungsfaktoren: BishopPair Knight_Outpost Supported_Knight_Outpost Connected_Rooks Opposite_Bishops Opening_King_Advance King_Proximity Rook_Pos Pos_Queenside Bishop_Mobility Queen_Mobility Knight_SMobility Rook_SMobility King_SMobility Unsupported_Pawn Passed_Pawn_Control Doubled_Pawn BishopPair Knight_Outpost Supported_Knight_Outpost Connected_Rooks Opposite_Bishops Opening_King_Advance King_Proximity Blocked_Knight Draw_Value No_Material Bishop_XRay Rook_Pos Pos_Base Pos_Queenside Bishop_Mobility Queen_Mobility Knight_SMobility Rook_SMobility King_SMobility Threat Overloaded_Penalty Q_King_Attack_Opponent NoQ_King_attack_Opponent NoQueen_File_Safty Attack_Value Unsupported_Pawn Passed_Pawn_Control Doubled_Pawn Odd_Bishop_Pawn_Pos Blocked_EPawn Pawn_Advance Castle_Bonus Bishop_Outpost Supported_Bishop_Outpost Seventh_Rank_Rooks Early_Queen_Movement Knight_Pos Pos_Kingside Knight_Mobility Rook_Mobility King_Mobility Bishop_SMobility Queen_SMobility Piece_Values King_Passed_Pawn_Supported Passed_Pawn_Rook_Supported Blocked_EPawn Pawn_Advance King_Passed_Pawn_Defence Pawn_Defence Mega_Weak_Pawn Castle_Bonus Bishop_Outpost Supported_Bishop_Outpost Seventh_Rank_Rooks Early_Queen_Movement Mid_King_Advance Trapped_Step Useless_Piece Near_Draw_Value Mating_Positions Ending_King_Pos Knight_Pos Pos_Kingside Knight_Mobility Rook_Mobility King_Mobility Bishop_SMobility Queen_SMobility Piece_Values Opponents_Threat Q_King_Attack_Computer NoQ_King_Attack_Computer Stand: August 2003 - KnightCap - FUSC# V1.09 Queen_File_Safty Piece_Trade_Bonus Pawn_Trade_Bonus Adjacent_Pawn Unstoppable_Pawn Weak_Pawn Blocked_Pawn Passed_Pawn_Rook_Attack Blocked_DPawn Pawn_Advance Pawn_Advance2 Pawn_Pos Isolated_Pawn Weak_Pawn_Attack_Value Unstoppable_Pawn Weak_Pawn Blocked_Pawn Blocked_DPawn Pawn_Pos Isolated_Pawn

Struktur Besonderheiten: - Nullmoves - Hashtables - Asymetrien Schachprogrammierung Reinforcement Learning KnightCap FUSC#  Struktur Besonderheiten: - Nullmoves - Hashtables - Asymetrien - kann auf Parallelrechner betrieben werden - 4 Stellungstypen: Eröffnung, Mittelspiel, Endspiel, Mattstellungen - evolutionäres Eröffnungsbuch

FUSC#-Projekt 4.FUSC# - RL goes to Fusc# - Diplomarbeit + Einbettung von RL (KnightCap) + KnightCap-Experimente + Fusc#-Experimente - Diplomarbeit + Erweiterung: Stellungsklassifikator kurze Schachprogrammiereinführung als Basis Reinforcement Learning, was ist das KnightCap, ein erstaunliches Programm FUSC# soll auch eigenständig lernen

Wiederholung - Problematik: Evaluierung einer Stellung Schachprogrammierung Reinforcement Learning KnightCap FUSC# Wiederholung  - Problematik: Evaluierung einer Stellung - Reinforcement Learning + „... durch Ausprobieren und Rückmeldung der Umwelt“ - Backgammon sehr gut für TD() geeignet + kleine Stellungsänderung  kleine Bewertungsveränderung + komplexe Evaluationsfunktion möglich - Schach eigentlich nicht für TD() geeignet + kleine Stellungsänderung  grosse Bewertungsveränderung + schnelle, lineare Bewertungsfunktion nötig (MinMax) + TD-Leaf() scheint eine Lösung zu sein (Baxter, Tridgell, Weaver -> KnightCap) - Ziel: Evaluationsvektor w lernen kurze Schachprogrammiereinführung als Basis Reinforcement Learning, was ist das KnightCap, ein erstaunliches Programm FUSC# soll auch eigenständig lernen

Daten vorbereiten Partie: Fusch–Internetgegner 0-1 ... Schachprogrammierung Reinforcement Learning KnightCap FUSC# Daten vorbereiten  Partie: Fusch–Internetgegner 0-1 ... P1 P2 P3 P4 P2N (Evaluationsvektor w wird benutzt) beste, forcierte Stellung Alpha-Beta als Zugwahlalgorithmus, Hauptvariante wird gespeichert Wahrscheinlichkeit des Überganges xt mit a nach xt+1 Stellungsfolge+HauptVarianten : ... X1 X2 XN für Evaluation nur eigene Stellungen

Arbeitsweise von TD-Leaf() Schachprogrammierung Reinforcement Learning KnightCap FUSC# Arbeitsweise von TD-Leaf()  Stellungsfolge+HauptVarianten(HV) : ... X1 X2 XN E1 E2 EN Evaluationswerte auch gespeichert Reward {-400, 0, 400} 4 Bauern im Vorteil als Sieg KnightCap {-1,0,1} E[N] := -400 for i:=1 to N-1 do td[i] := E[i+1] - E[i] go in HV[i] compute pd[i] go out HV[i] end i vectorUpdate Lernalgorithmus: E[x] = Stellungsbewertung der Stellung x mit Evaluationsvektor w bestehend aus n Stellungsfaktoren lineare Funktion: w1f1(x) + w2f2(x) + w3f3(x) + ... + wnfn(x) Wahrscheinlichkeit des Überganges xt mit a nach xt+1 w1f1(xi) + 0*f2(xi) + 0*f3(xi) + ... + 0*fn(xi) 0*f1(xi) + w2f2(xi) + 0*f3(xi) + ... + 0*fn(xi) 0*f1(xi) + 0*f2(xi) + w3f3(xi) + ... + 0*fn(xi) ... 0*f1(xi) + 0*f2(xi) + 0*f3(xi) + ... + wnfn(xi) pd[i] = Evaluationsvektor w auf diesen Berechnungen basierend erneuern und anschliessend normalisieren (auf Bauernwert 100)

Schachprogrammierung Reinforcement Learning KnightCap FUSC# Temporale Differenz  x1 , ..., xN-1, xN eigene Stellungen unserer Partie. x1 x2 xN-1 xN J~(x1, w) J~(x2, w) J~(xN-1, w) J~(xN, w) := r(xN) „ich stehe besser, ergo erwarte ich einen Sieg...“ td[1] td[N-1] Modifizierung : positive td[i] - auf 0 setzen, es sei denn KnightCap sagt den richtigen Zug des Gegners voraus negative td[i] - bleiben unverändert (eigene Fehler) Wahrscheinlichkeit des Überganges xt mit a nach xt+1

VectorUpdate bei TD() Schachprogrammierung Reinforcement Learning KnightCap FUSC# VectorUpdate bei TD()  Aktualisierung des Evaluationsvectors w : Lernrate Gradient gewichtete Summe der Differenzen im Rest der Partie Wahrscheinlichkeit des Überganges xt mit a nach xt+1

LeafNodes MinMax + TD() = TD-Leaf() xt A C F L Schachprogrammierung Reinforcement Learning KnightCap FUSC# LeafNodes  xt 4 A 4 C Tiefe d 4 F L 4 xtl MinMax + TD() = TD-Leaf()

VectorUpdate bei TD-Leaf() Schachprogrammierung Reinforcement Learning KnightCap FUSC# VectorUpdate bei TD-Leaf()  Aktualisierung des Evaluationsvectors w : Wahrscheinlichkeit des Überganges xt mit a nach xt+1

Welches  wählen? Gewichtung der Differenzen im Rest der Partie x1 xN Schachprogrammierung Reinforcement Learning KnightCap FUSC# Welches  wählen?  td[t] Gewichtung der Differenzen im Rest der Partie x1 xN =0: xt x1 xN 0<<1: xt Wahrscheinlichkeit des Überganges xt mit a nach xt+1 x1 xN =1: xt heuristisch: =0.7 (bis Fehler einen Effekt hervorruft)

VectorUpdate Aktualisierung des Evaluationsvectors w : t > 0: Schachprogrammierung Reinforcement Learning KnightCap FUSC# VectorUpdate  Aktualisierung des Evaluationsvectors w : kurz: t um wieviel was muss ich ändern t > 0:  Stellung xt wurde vermutlich unterbewertet  w‘ = w + pos. Vielfaches des Gradienten  J~(xt, w‘) > J~(xt, w) Wahrscheinlichkeit des Überganges xt mit a nach xt+1 Gradient = Richtung des steilsten Anstieges t < 0:  Stellung xt wurde vermutlich überbewertet  w‘ = w + neg. Vielfaches des Gradienten  J~(xt, w‘) < J~(xt, w)

Fazit: TD() -> TD-Leaf() Schachprogrammierung Reinforcement Learning KnightCap FUSC# Fazit: TD() -> TD-Leaf()  TD(): TDLeaf(): Wahrscheinlichkeit des Überganges xt mit a nach xt+1

KnightCap Experimente I Schachprogrammierung Reinforcement Learning KnightCap FUSC# KnightCap Experimente I  Experiment 1 alle Koeffizienten auf 0, Material auf Standard 1=Bauer, 4=Springer und Läufer, 6=Turm und 12=Dame nach 25 Spielen besitzt KnightCap ein rating von 1650 (+-50) TD-Leaf nun „on“ mit =0.7 „heuristisch gewählt“ und =1.0 „grosse Sprünge“ 3 Veränderungen wurden vorgenommen: + J‘(xil,w) wurde konvertiert zu einem Wert zwischen –1 und 1 mit vil=tanh[ J‘(xil,w)] + dt=vt+1l - vtl wurde modifiziert, negative Werte von dt wurden nicht verändert, alle positiven temporalen Differenzen wurden auf 0 gesetzt + der Bauernwert wird mit 1 als Basiswert fixiert nach 300 Spielen (in 3 Tagen) hatte KnightCap ein rating von 2150

KnightCap Experimente Schachprogrammierung Reinforcement Learning KnightCap FUSC# KnightCap Experimente  Experiment 2 Experiment wurde wiederholt aber in Abhängigkeit der Wurzelknoten nach 300 Spielen hatte KnightCap ein rating von 1850 (signifikant kleinerer peak und langsame Konvergenz) Experiment 3 - alle Koeffizienten auf Bauernwert=1 startrating=1250 nach 1000 Spielen rating=1550 Experiment 4 KnightCap vs. KnightCap 11% Punkte für KnightCap(selfplay) nach 600 Spielen gegen KnightCap(humanplay) nach 300 Spielen

FUSC# Experimente Experimente Schachprogrammierung Reinforcement Learning KnightCap FUSC# FUSC# Experimente  Experimente Fusc# (damalige Version) konnte im Experiment keine Partie gewinnen Temporale Differenz schlug fehl Grund: keine Siege => Fusch zweifelt an allem; keine positiven Updates => neue Engine musste her + Darkfusch im Januar 2004 geboren + heute 350.000 Knoten pro Sekunde! (Ruffian 600.000 Knoten pro Sekunde) 1.Versuch mit RL: SAL von Michael Gherrity spielte gegen GNUChess => RL für Schach nicht geeignet - Deep Blue verwendete RL (Match gegen Kasparov)! Le4!!

Kommunikation UCI-Protokoll (Universal Chess Interface) Schachprogrammierung Reinforcement Learning KnightCap FUSC# Kommunikation  UCI-Protokoll (Universal Chess Interface) Fritz, Arena Konsole UCI- Kommunikation

www.schach.de Schachprogrammierung Reinforcement Learning KnightCap FUSC# www.schach.de Pseudonym :) 

Diplomarbeit Fragen, Experimente: Zusätzlich: Schachprogrammierung Reinforcement Learning KnightCap FUSC# Diplomarbeit  Fragen, Experimente: In welcher Korrelation liegen Spielstärke und erlernbare Faktorenanzahl? Was geschieht, wenn man die Sache auf die Spitze treibt und z.B. 1000 verschiedene Stellungstypen einführt? Jeder hat ca. 1500 Stellungsfaktoren => 1.500.000 zu erlernende Bewertungskriterien!!! Kann Fusch in annehmbarer Zeit die Koeffizienten mit „guten“ Werten füllen? Algorithmuserweiterung behebt Problem. Ist =0.7 wirklich der richtige Parameter? Wie muss  sinnvoll konvergieren? Startkoeffizienten sinnvoll? Zusätzlich: Guide, um dieses Lernverfahren in jeden Schachmotor zu bringen

Stellungsklassifikator Schachprogrammierung Reinforcement Learning KnightCap FUSC# Stellungsklassifikator   Stellungen aus GM-DB x x x - Stellungsmuster identifizieren x o o o - Vektor bauen x o o - Vektoren aufspannen EM-Algorithmus => Pool - - - eine Evaluation für jede Stellungsklasse - - Vorteil: Stellungen können viel besser evaluiert werden (Eröffnung, Mittel- und Endspiel zu grobe Einteilung) Nachteil: Für jedes Stellungsmuster neue Klassifizierung

RL „feiner“ nutzen  1 2 n Schachprogrammierung Reinforcement Learning KnightCap FUSC# RL „feiner“ nutzen  KnightCap FUSC#  1 2 n 0.50 1.20 1.00 0.97 0.20 1.05 0.44 1.21 1.50 0.50 1.20 1.00 0.97 0.20 1.05 0.44 1.21 1.50 0.40 1.25 1.10 0.90 0.20 0.55 1.15 1.11 1.50 0.60 1.14 1.00 0.94 0.22 0.48 0.50 0.49 1.31 1.52 ... 4x1468 = 5872 (74 angegeben ...) 1000x1500 = 1.500.000

Visual Eval 1.0 Reinforcement Learning Schachprogrammierung Reinforcement Learning KnightCap FUSC# Visual Eval 1.0  Reinforcement Learning Anpassung des Evaluationsvektors

das wars vielen Dank fürs zuhören ... Fusc# Schachserver http://page.mi.fu-berlin.de/~fusch/ Schachserver http://www.schach.de/