Peter Martan schrieb:
Wenn du am SF- Output zweifelst, solltest du mit eine Engine, der du hier mehr vertraust oder mit SF selbst, den Output- Lines (dazu kopiere ich sie nämlich) nachgehen, wir können gern auch Output von einer der Engines anschauen, die du hier für besser hältst.
Ich zweifle immer am Output aller modernen Engines, da sie quasi den ganzen Suchbaum wegprunen (Branchig-Faktor 2!!!) und fast nichts darin wirklich anschauen.
Das heißt nicht, daß ich eine andere Engine für "besser" halte. Diesbzgl sind alle modernen Engines gleich schlecht bzw. unzuverlässig.
Ich füge mal eine kurze Abhandlung zum Thema Pruning ein, die ich Matthias Blübaum über TBG habe zuleiten lassen, als er in der Kandidatenturniervorbereitung war. Das sollte klar machen, warum man sich niemals nur auf Stockfish verlassen sollte:
Engines richtig nutzen als Spieler
(von Stefan Pohl (www.sp-cc.de))
Der Normalfall: Stockfish läuft als Analyseengine in ChessBase mit, während der Spieler seine Varianten oder Partien durchgeht.
Warum ist das unzureichend bzw. geradezu fahrlässig?
Das Pruning-Problem:
Bis ca. zur Jahrtausendwende haben Engines nur verlustfreies Pruning betrieben. Es wurden also in der Suche nur Varianten abgeschnitten und ignoriert, bei denen aufgrund der zugrundeliegenden Algorithmen klar war, daß sie auf jeden Fall schlecht sind. Zu dieser Zeit betrug der sogenannte Branching-Faktor noch ca. 5.5.
Heißt: Pro Stellung untersucht die Engine im Schnitt 5.5 Fortsetzungen/Züge, alle anderen (ca. 40 Züge sind meist legal möglich) kann man durch Programmierkniffe einsparen. Und zwar verlustfrei, also ohne einen guten Zug irrtümlich nicht zu untersuchen.
Aber: Das war einmal!
Heutzutage hat Stockfish einen Branching-Faktor von knapp 2. Statt 5.5, wie bei den „alles-sehenden“ Engines (innerhalb des Suchhorizonts) der Vorzeit.
Damit ist das Pruning von Stockfish und aller anderen, modernen Engines, eben nicht mehr verlustfrei. Es besteht nun die Gefahr, im Suchbaum an einer wichtigen Variante einfach „vorbeizurechnen“, weil der Pruning-Algorithmus irrtümlich der Meinung ist, diese Variante sei schlecht.
Das wäre kein Problem, wenn Stockfish nur wenige Varianten auf diese Weise abschneiden würde, aber das Gegenteil ist der Fall.
Rechenbeispiel:
Suchtiefe 25 (normal für Stockfish).
Branching-Faktor 2 (verlustbehaftet) Suchtiefe 25 plies: 2 hoch 25 =
33.554.432 Varianten zu berechnen
Branching-Faktor 5.5 (verlustfrei) Suchtiefe 25 plies: 5.5 hoch 25 =
3.228.993.995.007.387.461 Varianten zu berechnen
Es sind also ca. 100 Milliarden mal mehr Varianten zu berechnen, wenn man verlustfreies Pruning nutzt. Das heißt nun aber auch, daß moderne Engines 99.9999999% aller Varianten in ihrer Suche überhaupt nie auch nur zu Gesicht bekommen. Um es ganz klar und drastisch zu sagen: Von 100 Milliarden möglichen Zügen schaut sich eine moderne Spitzenengine nur 1 Zug an. In Worten: Einen von einhundert Milliarden...und das gilt für Tiefe 25. Bei noch höheren Suchtiefen wird dieses Verhältnis noch heftiger!
Es ist klar, daß es nicht immer gutgehen kann, wenn man 99.9999999% aller Varianten in der Suche ignoriert. Es muß zwangsläufig Fehler beim Pruning und damit auch in der Suche der Engines geben. Das ist den Engineautoren auch durchaus bewußt. Die Grundidee dieses radikalen, nicht-verlustfreien Prunings ist: Man gewinnt mehr Elo durch die steigende Suchtiefe (man hat ja dank radikalem Pruning viel weniger Varianten zu berechnen) hinzu, als man durch die bewußt hineingerissenen Löcher im Suchbaum und die damit einhergehenden Fehler, verliert. Und dieses Konzept funktioniert auch: Immerhin hat es die Engines von 2600 Elo auf ca. 3400 Elo katapultiert.
Leider ist es nun aber so, daß man als Spieler zwar von der überragenden Stärke der modernen Engines profitiert, aber man hat sich damit eben auch ein potentiell fatales Rest-Fehler-Risiko ins eigene Analyse-Boot geholt. Dieses Risiko ist zwar klein – daß Stockfish wirklich mal an einer wichtigen Variante vorbeirechnet, ist selten, aber eben keinesfalls Null. Man muß sich an dieser Stelle vor Augen führen, daß der Suchbaum durch dieses radikale Pruning nicht etwa zum löchrigen Schweizer Käse wird, sondern es ist viel krasser: Der Suchbaum ist eher nur noch eine Art Spinnennetz – ein paar dünne Pruningfäden, und man hofft schlicht, daß die richtigen Varianten daran klebenbleiben...
Somit sollte klar sein, warum es sehr gefährlich ist, in der Analyse als professioneller Spieler nur auf eine einzige Engine zu setzen – egal welche Engine das ist: Die Suche aller modernen Engines läuft nämlich lediglich unter dem Motto „Prinzip Hoffnung“... Zwar auf hohem Niveau, aber eine wirklich seriöse Analyse ist so natürlich völlig unmöglich: Hat man als Spieler das Pech, daß die Engine in der Analyse einen wichtigen Zug übersehen hat, ist die Katastrophe am Brett vorprogrammiert. In der Computerschach-Community kursieren Stellungsbeispiele, in denen Stockfish trotz minutenlangem Rechnen, ein simples 7 zügiges Matt nicht findet, oder einen 5 zügigen Figurengewinn. Was normalerweise natürlich in ein paar Zehntelsekunden gefunden werden sollte.
Die Abhilfe:
Zum Glück ist es sehr leicht, dieses gravierende Problem aus der Welt zu schaffen. Und zwar einfach durch eine zweite Engine/Meinung. ChessBase erlaubt ja zum Glück, eine zweite Engine parallel zur Analyse der Brettstellung laufen zu lassen (Kiebitz hinzuholen).
Auch, wenn heutzutage alle Top-Engines intern relativ eng verwandt sind, also sehr ähnliche Pruning-Methoden nutzen, ist es extrem unwahrscheinlich, daß zwei Engines an der gleichen Stelle einen „blinden Fleck“ im Suchbaum (durch fehlerhaftes Pruning) haben. Daher senkt die Verwendung einer zweiten Engine in der Analyse, dieses Pruning-Katastrophen-Risiko auf quasi Null.
Insbesondere dann, wenn man Patricia als zweite Engine benutzt. Denn Patricia ist aufgrund ihrer aggressiven Spielweise ein eher konservativer Pruner. Heißt: Wenn man so viele taktische Verwicklungen heraufbeschwört, wie Patricia es tut, macht man ein eher weniger radikales Pruning, damit die Gefahr minimiert wird, eine exotische, taktische Variante zu übersehen. Und durch ihr unkonventionelles, aggressives Spiel ist Patricia sowieso ideal als Ideengeber für altbekannte Stellungen und als Zweitmeinung, wenn man Stockfish als Haupt-Analyse-Engine nutzt.
Natürlich muß man die Rechner-Ressourcen dann auf 2 Engines aufteilen. Das ist aber bei weitem nicht so tragisch, wie es klingt. Denn moderne Neuralnetz-Engines (heutzutage sind das alle Engines!) benötigen für positionell gutes Schach weit weniger Rechenpower, als noch die alten Engines mit handgeschriebener, strunzdummer Bewertungsfunktion. Und zudem muß man die Rechner-Ressourcen ja nicht 50:50 aufteilen:
Patricia hat ein sehr kleines Neuralnetz und ist daher eine sehr schnell suchende Engine (berechnet daher etwa doppelt so viel Stellungen pro Sekunde wie Stockfish) und soll ja sowieso primär als Ideengeber und Verifikator dienen. Daher kann man Patricia guten Gewissens deutlich weniger Rechner-Ressourcen geben als Stockfish.
Beispiel:
Hat man einen 8-Kern PC, so hat man 16 Threads (virtuelle Kerne) zur Verfügung. Davon sollten immer 2 für Windows reserviert bleiben, man hat also noch 14 Threads übrig:
12 Threads für Stockfish und 2 für Patricia.
Damit läuft Stockfish fast ungebremst und der dadurch entstehende Spielstärkeverlust ist vernachlässigbar. Und Patricia reichen die 2 Threads für die ihr zugedachten Funktionen (Ideengeber und Verifikator) völlig aus.
Weiterer, großer Vorteil dieses Analyse Setups: Der Überraschungsfaktor. Wenn alle Spieler nämlich nur mit Stockfish analysieren, so bekommen sie auch alle dasselbe in derselben Stellung angezeigt. Es ist also sehr schwer, auf diese Art und Weise noch überraschende Neuerungen auf dem Schachbrett zu finden.
Nimmt man nun aber Patricia als Ideengeber hinzu, so ergeben sich unfaßbare Abspiele, an die Stockfish nicht mal im Traum denken würde, und die kein anderer Schachspieler daher in seiner Analyse je gesehen hat, es sei denn, das betreffende Abspiel wäre ihm selbst, also seinem biologischen Hirn, eingefallen.