Glarean Magazin

Neues Test-Verfahren für Schach-Programme

.

Der «Barometer»-Engine-Test (B-E-T)

Walter Eigenmann

 

Die Computerschach-Testergruppe CCRLSchon seit Jahren besteht die Hauptbeschäftigung der weltweit zahlreichen PC-Schach-Anwender darin, auf ihren heimischen Rechnern die mittlerweile hunderte von Schach-Engines mehr oder weniger systematisch gegeneinander antreten zu lassen, um aufgrund der Partien-Ergebnisse Rankings zu generieren. Denn in der internationalen (Computer-)Schach-Szene galt und gilt es bis heute als ausgemacht, dass die Spielstärke eines Schach-Programmes allein mit Hilfe von entsprechenden Turnieren zuverläßig zu ermitteln sei. Andere Verfahren der Rangierung wurden/werden praktisch einhellig als «zufällig», als «partikulär» oder gar als «subjektiv» kritisiert.
In vielwöchiger Arbeit – verteilt auf zwei Jahre – hat der Autor nun einen Stellungstest für Schach-Programme entwickelt, welcher die Rangliste der Engines genau so zuverläßig generiert wie die beiden Referenz-Turnier-Rankings der aktuellen Computerschach-Szene (nämlich CEGT und CCRL).
Die neue Test-Suite heißt B-E-T («Barometer Engine Test») und umfasst exakt 400 Schach-Aufgaben, die je innerhalb einer Minute zu lösen sind. Der «Barometer» benötigt also nur knapp sieben Stunden, um die definitive Spielstärke eines neuen Programmes zu eruieren. Das u.U. wochen- und monatelange zeitaufwändige Austragen abertausender Turnier-Partien allein zwecks Ermittlung der Engine-Performances ist damit Vergangenheit.
Positiv formuliert: Der B-E-T setzt Rechner- wie Human-Time-Ressourcen frei, welche inskünftig sinnvolleren Computerschach-Beschäftigungen als der (statistisch relevanten, aber schachlich meist völlig ignorierten Blitz-) Partien-«Produktion auf Halde» zugute kommen (könnten).
Unnötig zu erwähnen, dass selbstverständlich die Generierung von Engine-Engine-Partien, sofern sie mit langen Bedenkzeiten (=mind. 30Min/Engine) auf schneller Hardware gespielt werden und damit qualitativ hochstehendes Schach produzieren, nach wie vor wichtig ist, ja immer wichtiger wird. Denn je länger die Software-Entwicklung des Computerschachs andauert, umso klarer wird der gesamten Schach-Welt, dass mittlerweile das  ganz «hohe Schach» nicht mehr in den Säälen der Großmeister-Turniere, sondern in den Veranstaltungen des virtuellen «Freestyle-Chess» stattfindet – oder in absehbarer Zeit überhaupt nur noch auf den privaten 8-Cores-Maschinen.

Exkurs1: Die «Spielstärke»

Ein ewiger definitorischer Streitpunkt nicht in der weltweiten Schach-Community, aber in den Computerschach-Foren ist der Begriff der «Spielstärke». Die vorliegende Untersuchung verwendet diesen Terminus in einem pragmatischen Sinne – wie das in der gesamten Schach-Welt der Fall ist. Demnach nennt man beispielsweise Ex-Weltmeister-Kasparow (zurecht) deshalb den «stärksten Spieler» seiner Epoche, weil er mehr Turnier-Partien gegen seinesgleichen gewann als die anderen. Er war also nicht zwingend gleichzeitig der «stärkste Blitzer», der «stärkste Problemlöser», der «stärkste Kommentator», der «stärkste Eröffnungstheoretiker», etc. – aber er war der stärkste Turnier-Spieler, weltweit anerkannt als die Nummer Eins, und als solche mathematisch dokumentiert im internationalen Elo-System.
Die Dominanz Kasparows hat im aktuellen Computerschach ihr Analogon: Das Programm «Rybka» beherrscht zurzeit die Turnier-Szene unangefochten; es ist das also «spielstärkste» Programm. (Dabei ist es beispielsweise allenfalls Image-schädigend, aber ihre Performance nicht wirklich beeinflussend, dass diese «stärkste» Engine bis heute auch durchaus Peinlichkeiten produzieren kann, wie sie andere Spitzen-Programme nicht aufweisen (beispielsweise mangelhafte Unterverwandlung, oder spezifische Zugzwang-Probleme, oder ziemliche Defizite im Königsangriff, u.a.)
Eine wesentliche Komponente von «Spielstärke» ist zweitens – gerade, aber nicht nur im Zusammenhang mit Computerschach – die Schnelligkeit. Bereits Vidmar (in seinen legendären «Goldenen Schachzeiten») wies explizit darauf hin, dass «die Geschwindigkeit des Denkapparates» für den Erfolg in dem Zeit-Sport Schach entscheidend ist. Für den B-E-T heißt das, dass das schnellste Programm in einer bestimmten Stellung auch dann das «stärkste» heißt, wenn alle anderen (langsameren) Programme die Aufgabe genauso lösen. (Pointiert formuliert: Irgendwann findet auch die «dümmste» unter den Engines die Lösung…) Der «Barometer» relativiert allerdings diesbezüglich nicht weiter (im Gegensatz etwa zu differenzierteren, aber mit anderen Fehlern behafteten Auswertungsverfahren wie z.B. «EloStatTS» des Statistikers Frank Schubert), sondern addiert schlicht die richtigen Lösungen; Der B-E-T gibt ein Zeit-Fenster vor, und das vermag ein Programm einzuhalten – oder eben nicht einzuhalten.

Exkurs2: Der «beste Zug»

Für gehörige Begriffsverwirrung, und diesmal nicht nur in der Computerschach-Szene, sorgt eine zweite, ebenso häufig wie nebulös benützte Vokabel: jene des sog. besten Zuges. Der Grundsatz-Streit, ob – wie z.B. Tarrasch proklamierte – jede Schach-Stellung (auch die vordergründig völlig «ausgeglichene») einen objektiv «einzigen besten» Zug aufweise, den es zu finden gelte, ist alt. Nun kann für den menschlichen Turnier-Kämpfer die Maxime, nach diesem «Einzigen» zu fahnden, nur schon aus Zeit-Gründen nicht gelten. Vielmehr beziehen bekanntlich moderne Großmeister nicht nur ihr theoretisches, sondern konsequent ebenso ihr Wissen über die spezifischen (auch psychologischen) Stärken und Schwächen der Gegnerschaft mit in die Zug-Auswahl ein.
Anders beim computerisierten Schach – zumal im Zusammenhang mit einer Aufgaben-Sammlung: Hier ist die Forderung nach dem «Einzigen Besten» nicht nur legitim, sondern sogar zwingend. Denn es gilt (ohnehin jenseits aller Psychologie) die Zufälligkeiten der Engine-typischen Zug-Generierung, resultierend aus meist «vager» Bewertung nach Bauerneinheiten, dergestalt zu umgehen, dass sich der gesuchte von den Kandidaten-Zügen «deutlich» abhebt, damit die Test-Stellung aussagekräftig wird.
«Praktisch gleich gute Züge» können schachlich interessant oder amüsant sein (und z.B. im Fernschach durchaus zur Plan-Findung durch den Menschen beitragen), sind aber als Test-Grundlage für Schach-Programme völlig ungeeignet, weil sie die «Entscheidung», den «Willen», das «wahre» Rechen-Ergebnis einer Engine nicht unmissverständlich und definitiv dokumentieren, sondern der präferierte Zug zum Zufalls-Produkt auch außerschachlicher Prozesse (Hardware-technische «Unebenheiten», Hintergrund-Aktivitäten, Memory-Nutzung u.a.) werden kann.

Dieses Problem der Nichtreproduzierbarkeit von Test-Ergebnissen wird noch verschärft durch die modernen Multi-CPU-fähigen Engines; schon bald nach Erscheinen der ersten Dual- und Quad-Geräte wurde klar, dass manchmal Partie-Züge in gleichen Stellungen bei manchen Programmen unter sonst gleichen Bedingungen unterschiedlich ausfallen (Siehe dazu auch einen im technischen Kern richtigen, aber  in seinen Schlussfolgerungen irrational übertriebenen Artikel von Lars Bremer: Chaos-System Deep Engine, CSS-Online 2007).
Das Phänomen kann jedenfalls (von einem Stellungstest-Autor) grundsätzlich ignoriert werden. Denn erstens sind die angesprochenen Verwerfungen sehr selten (sprich auf ein paar hundert Stellungen und hundert Engines schätzungsweise in 15-20 Fällen vorkommend, wie entspr. Meldungen in einschlägigen Foren sowie eigene Stichproben nahelegen), und zweitens kann es durch die (schon oben angesprochene) sorgfältige Selektion «deutlich bester» Züge praktisch eliminiert werden. Drittens fängt allein schon ein je großzügig bemessenes Zeitfenster – in unserem Falle: 60 Sek./Zug – solche Verwerfungen in der Zug-Suche auf. Denn auch MP-Schach-Engines sind mitnichten Chaoten mit zufälligen Produkten: Eine MP-Engine wird, wie jede praktische Erfahrung beweist, immer stärker Schach spielen als ihr Single-Pendant, sofern sie hardwareseits gut adaptiert wurde.
(Sobald die 400 Aufgaben-Stellungen allgemein verfügbar sind, wird es für interessierte Tester ein Leichtes sein, das Ausmaß dieser «Nicht-Reproduzierbarkeit» im Experiment nachzuprüfen, indem die fraglichen MP-Engines je drei Mal (besser 5-7 Mal) den B-E-T zu durchlaufen haben. Dabei dürfte es jedesmal zu leicht abweichenden Gesamt-Lösungszahlen kommen, aber unterm Strich (= im Durchschnitt) werden sich die Ergebnisse die Waage halten, wie der Autor überzeugt ist. Dass also schließlich eine ganz andere Rangliste als die untenstehende resultiert, ist zwar theoretisch nicht unmöglich – aber extrem unwahrscheinlich.) 
Kurzum: Erfolgreiches Spielen heißt grundsätzlich, einerseits gute Züge zu finden und andererseits schlechte Züge zu vermeiden – in diesem Grundsatz unterscheiden sich Mensch und Maschine nicht; Das bessere Programm findet insgesamt mehr beste Züge, und das insgesamt schneller, als das schlechtere – und genau dies zu dokumentieren ist Aufgabe eines sorgfältig konzipierten Computerschach-Stellungstests.
 

Genesis eines Stellungstests

Ausgangspunkt meiner Beschäftigung mit dem B-E-T war die Frage, welchen Grad an (computer-)schachlicher Repräsentanz ein paar hundert Aufgaben-Stellungen aufweisen müssen/können, damit die jeweilige Summe der von einem Programm erzielten Lösungen stark mit jenem Rang korreliert, den dieses Programm im durchschnittlichen Turnier-Betrieb innehat. Dieser «durchschnittliche» Rang wird ausgewiesen in den «Elo»-Ergebnissen, welche die beiden weltweit meistkonsultierten und zuverläßigsten, weil statistisch abgesicherten und dabei sowohl personell wie organisatorisch unabhängig voneinander agierenden Engine-Test-Organisationen CEGT und CCRL liefern. Die Zielsetzung war also, dass die Engine-Ergebnisse des B-E-T in keinem Falle einen höheren Abweichungsgrad aufweisen, als ihn eine Engine im direkten durchschnittlichen Vergleich dieser beiden Referenz-Ranglisten aufweist.
Nun war dem Problem mit mehr oder weniger wahllosem Engine-«Ausprobieren» von ein paar hundert Schachstellungen grundsätzlich nicht beizukommen. Angesichts so hochkomplexer Wirkungsketten, wie sie Schachpartien-Züge darstellen, würde einen Sterblichen das schiere Material erschlagen, und stünden ihm auch zwanzig Hochleistungs-Computer gleichzeitig zur Verfügung.
Die Lösung lag vielmehr da, wo sie auch jeder Großmeister sehr erfolgreich findet: in der Typisierung. Es galt, die insbesondere computer-schachlich relevanten Stellungs-Muster so systematisch wie möglich zu katalogisieren: Taktisch bereinigte, analoge Zug- bzw. Züge-Elemente wurden zu übergeordneten Motiven zusammengefasst; diese miteinander verwandten Motiv-Bündel wiederum ergaben ein neuerlich übergeordnetes Paradigma. Das heißt also, dass jede Aufgabe des B-E-T quasi als Paradigma fungiert, welches seinerseits eine Reihe von taktisch verschiedenen, aber «im Kern» analogen, also von ihrer schachlichen «Idee» her grundsätzlich austauschbaren Motive subsumiert. Dies Verfahren ist stark an das vielgerühmte «Muster-Denken» aller Meisterspieler angelehnt. Auf diese Weise lassen sich noch am ehesten die Miriaden von Schach-Zugmöglichkeiten bändigen bzw. durch ein paar hundert Stellungen repräsentieren.
Hierzu waren selbstverständlich eine Menge Recherchen vonnöten. Neben vielerlei moderner Schach-Lektüre war mir hier  insbesondere der große Systematiker Max Euwe mit seinem 750-seitigen »Mittelspiel» hilfreich; die methodische Akribie in diesem Wälzer ist m.E. immer noch unerreicht. Rein vom Katalogisieren her konsultierte ich sodann ein zweites einschlägiges Kompendium, nämlich die Polgar-Enzyklopädie «ChessMiddleGames» (siehe deren Inhaltsverzeichnis unten) – obschon daraus kaum eine der rund 4’000 Positionen in meinem Test auftaucht, weil erstens eine Suite mit vorwiegend erstmals von mir veröffentlichten Aufgaben entstehen sollte, zweitens der grössere Teil der Test-Stellungen aus spezifischen Computerschach-Partien stammen musste, und drittens viele dieser Polgar-Aufgaben (gemäß zahlreichen Stichproben) nicht 100%ig korrekt sind.
Was wiederum das Computerschach-Material betrifft, nutzte ich sehr ausgedehnt die sog. COMP2007, deren (bei fast 700’000 Partien) umfassende Sammlung von ausschließlich Games mit längeren und langen Bedenkzeiten auf sehr langsamer bis sehr schneller Hardware ideal für meine Stellungs-Recherchearbeit war. Hinsichtlich des Endspiels durchforstete ich – neben zahlreichen Computer- und Fernschach-Partien – schließlich die große Studien-Datenbank von H. Van Der Heijden; deren Kompositionen präsentieren, wo sie auf technisch hohem Niveau daherkommen, die «Idee», den thematischen Kern eines Endspieles oft in besonders «reiner», unverschnörkelter Form, womit sie sehr geeignet sind für Computerschach-Tests. Dabei wurde allerdings auf größtmögliche Realitätsnähe geachtet; bis auf wenige Ausnahmen hätten die fraglichen Stellungen problemlos auch in tatsächlich gespielten Computer- oder Menschen-Partien entstanden sein können. Die «Ausnahmen» betreffen v.a. spezifisch Computerschach-Technisches wie beispielsweise «Zugzwang»-, «Horizont»- oder «Nullmove»-Probleme, welche gerade mit Studien hervorragend untersucht werden können.

Bedenkzeit: 60 Sekunden pro Stellung

Für eine Computerschach-Testsuite ist die Dauer der Bedenkzeit pro Aufgabe von wesentlicher Bedeutung – zumal dann, wenn mehrere hundert Stellungen von möglicherweise mehreren hundert Programmen getestet werden sollen… Hier verfolgte ich einen pragmatischen bzw. praktikablen Ansatz, denn zum einen soll der «Barometer» ein «Über-Nacht-Test» sein, der Resultate nach wenigen Stunden liefert; andererseits muss pro Aufgabe eine hohe Stabilität der Zug-Generierung gewährleistet sein; drittens soll die Bedenkzeit einigermaßen mit jener zu tun haben, die im durchschnittlichen Engine-Turnier-Betrieb der internationalen Computerschach-Community – namentlich der beiden erwähnten CEGT- und CCRL-Tester-Gruppierungen – favoritisiert wird; und schließlich war die aktuelle Hardware bzw. deren Entwicklung zu berücksichtigen.
Um allen diesen vier Punkten zu genügen, wurde der B-E-T – mittels recht ausgedehntem Stichproben-Experimentieren mit ein paar sehr starken wie sehr schwachen Engines auf einem (eher gemütlichen) «Athlon64/3000+» – auf eine Bedenkzeit von 60 Sekunden pro Stellung «geeicht». (Übrigens enthält der «Barometer» auch ca. zwei Dutzend extrem schwierige, vornehmlich strategische Aufgaben, die wahrscheinlich in absehbarer Zukunft von keinem Schachprogramm gelöst werden dürften).
Der Einfluss der Partie-Bedenkzeiten auf die Turnier-Ränge eines Schach-Programmes wird im übrigen immer wieder überschätzt. Hierzu sei eine eigene kleine Untersuchung zitiert (siehe hier ), welche das Fazit hat, dass sogar der Unterschied zwischen langer Turnier- und kurzer Blitz-Bedenkzeit nur in Ausnahmefällen relevant auf die Ranglisten durchschlägt. Mehr noch: Bei einer statistisch ausreichenden Anzahl Partien sind überhaupt Match-Details wie Rechner-Typen, Programm-Parameter, Pondering-Einstellungen, Eröffnungsbücher, Endspiel-Datenbanken oder die Hash-Größen von sekundärer Bedeutung.

Der B-E-T in der Praxis

Dem Autor steht seit kurzem (anfangs Mai 2008) ein No-Name-Dual-Core6400-Gerät (mit Vista-Home/32bit, 128Mb Hash, 3-6 Nalimov-, Shredder- & EGBB-Bases, «Arena»-, «Fritz»- & «Shredder»-GUIs) zur Verfügung, und inzwischen hat er mit der Test-Arbeit bzw. der Generierung der entspr. Rangliste begonnen (siehe unten). (Ich behalte mir allerdings vor, nicht absolut jede kommerzielle Engine-Neuheit zu kaufen… :-)
Diese Rangliste wird über einen längeren Zeitraum hinweg ständig aktualisiert werden; für interessierte Computerschach-Freunde und Programmierer dürfte es sich also lohnen, hier regelmäßig reinzuschauen. Die 400 Aufgaben sind zurzeit nur privat, da die (in der Vergangenheit immer wieder bestätigte) «Gefahr» besteht, dass manche Programmierer der Verlockung nicht widerstehen können (= ihre Engines gezielt auf die bekannten Stellungstests zu tunen pflegen…) Zu gegebenem Zeitpunkt wird aber der B-E-T selbstverständlich (inklusive Analysen sowie PGN-&EPD-Files) zum Gratis-Download angeboten werden.

Wie ist das nachstehende Ranking grundsätzlich zu interpretieren?
Der B-E-T kann (und will) seine Rangierungen nicht so differenzieren wie z.B. Listen, die nach Arpad Elos berühmter Formel berechnet wurden (siehe u.a. die oben erwähnten CEGT- und CCRL-Ranglisten). Der «Barometer»-Test erlaubt aber Aussagen wie: «Engine A ist ungefähr gleich stark wie Engine B», «Engine C ist deutlich schwächer als Engine C», «Engine D ist etwas stärker als Engine E». Dabei entsprechen ca. 0-5 BET-Punkte der Charakterisierung «ungefähr gleich stark», 6-10 BET-Punkte «etwas stärker/schwächer» und 11-n BET-Punkte «deutlich stärker/schwächer».
Der B-E-T zeigt also das relative Spielstärke-«Umfeld» eines Programmes an, ohne absolute Vergleiche anzustellen; dementsprechend sind auch die Abstände der Engines cum grano salis zu nehmen. Aber selbstverständlich kann dort von einem massiven Spielstärke-Unterschied ausgegangen werden, wo eine BET-Differenz mehr als 40 Punkte beträgt.

Die Computerschach-Rangliste gemäß B-E-T

    Programm                       Lösungen
001 Rybka 2.3.2a x32 2CPU          273
002 Rybka 2.3.2a x32 1CPU          263
003 Zappa Mexico II x32 2CPU       249
004 Naum 3 x32 2CPU                248
005 Zappa Mexico x32 2CPU          244
006 Deep Shredder 11 x32 2CPU      244
007 Toga II 1.4.2JD x32 2CPU       240
008 Fritz 11 CB x32 1CPU           237
009 Glaurung 2.1 x32 2CPU          237
010 Hiarcs 11.2 x32 1CPU           230
011 Deep Shredder 11 x32 1CPU      229
012 Fritz 10 CB x32 1CPU           229
013 Loop 13.6 x32 2CPU             228
014 Toga II 1.3.1 x32 1CPU         224
015 Fruit 05/11/03 x32 1CPU        224
016 Bright 0.3a x32 2CPU           224
017 Spike 1.2 Turin x32 2CPU       223
018 Zappa Mexico x32 1CPU          222
019 Shredder 10 x32 1CPU           222
020 Rybka WinFinder 2.2 x32 1CPU   221
021 Fritz 9 x32 1CPU               219
022 Deep Sjeng 2.7 x32 2CPU        218
023 Bright 0.2c x32 2CPU           218
024 Glaurung2 eps/5 x32 2CPU       217
025 Hiarcs 10.0 x32 1CPU           216
026 Spike 1.2 Turin x32 1CPU       201
027 Deep Sjeng 2.7 x32 1CPU        201
028 Chessmaster11000 x32 2CPU      201
029 Junior 10.1 CB x32 1CPU        196
030 Ktulu 8.0 x32 1CPU             194
031 Bright 0.2c x32 1CPU           194
032 Glaurung2 eps/5 x32 1CPU       192
033 Naum 2.0 x32 1CPU              191
034 Chess Tiger 2007.1 x32 1CPU    190
035 Frenzee Feb08 x32 1CPU         190
036 SmarThink 1.00 x32 1CPU        189
037 Junior 9 CB x32 1CPU           183
038 Alaric 707 x32 1CPU            181
039 Pharaon 3.5.1 x32 2CPU         181
040 Movei 0.08.438 x32 1CPU        179
041 Gandalf 6.0 x32 1CPU           178
042 Chessmaster10000 x32 1CPU      173
043 WildCat 8 x32 1CPU             171
044 Ruffian 2.1.0 x32 1CPU         164
045 SlowChessBlitzWV2.1 x32 1CPU   162
046 Pharaon 3.5.1 x32 1CPU         160
047 Pro Deo 1.2 x32 1CPU           153
048 WildCat 7 x32 1CPU             153
049 Aristarch 4.50 x32 1CPU        153
050 The Baron 1.8.1 x32 1CPU       153
051 Crafty 20.14 CB x32 2CPU       150
052 Anaconda 2.0.1 CB x32 1CPU     150
053 SOS 5.1 x32 1CPU               150
054 Colossus 2007a x32 1CPU        146
055 Alfil 8.11 x32 1CPU            140
056 Hermann 2.3 x32 2CPU           136
057 Crafty 20.14 CB x32 1CPU       136
058 Nimzo 8 CB x32 1CPU            134
059 Yace 0.99.87 x32 1CPU          130
060 Quark 2.35 x32 1CPU            129
061 Amyan 1.597 x32 1CPU           125
062 Gaia 3.5 x32 1CPU              125
063 AnMon 5.60 x32 1CPU            124
064 Delphil 1.9 x32 1CPU           117
065 Twisted Logic 20080404x/32/1   112
066 Cyrano 0.4 x32 1CPU            112
067 Comet B68 CB x32 1CPU          109
068 Djinn 0.925x x32 1CPU          105
069 NanoSzachy 3.3 x32 1CPU        104
070 Cheese 1.2 x32 1CPU            102
071 Homer 2.0 x32 1CPU             099
072 Caligula 0.3b x32 1CPU         093
073 Doctor? 3.0 CB x32 1CPU        090
074 ZCT 0.3.2447 x32 1CPU          082
075 Arion 1.7 x32 1CPU             081
076 Resp 0.19 x32 1CPU             081
077 FireFly 2.5 x32 1CPU           081
078 BikJump 1.7 x32 1CPU           081
079 Uralochka 1.1b x32 1CPU        079
080 GreKo 5.7 x32 1CPU             070
081 BSC 0.3 x32 1CPU               068
082 Bambam CB x32 1CPU             066
083 Wing 2.0a x32 1CPU             065
084 Mint 2.3 x32 1CPU              063
085 Ifrit B2.1 x32 1CPU            062
086 ECE 0.3 x32 1CPU               061
(Stand: 14.Juni 2008 - Die Testarbeit am B-E-T wurde bis auf weiteres eingestellt)
.
Folgen

Erhalte jeden neuen Beitrag in deinen Posteingang.

Schließe dich 102 Followern an