Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Wann hat LC0, wann Stockfish recht?
- - By Raphael Raberger Date 2021-06-15 14:30
Hallo alle miteinander...
als Hobbyprogrammierer möchte ich LC0 und SF miteinander vereinen, zu einem Hybrid.

Es ist mir sehr wohl bekannt, dass in taktischen Stellungen SF wahrscheinlich besser dran ist als LC0, aber in positionellen Momenten hat LC0 die Nase vorne.

Meine erste Idee wäre, mit PV zu schauen, ob Stockfish eine starke Variante wählen würde, ob sie kritisch ist etc. Das gleiche bei LC0 und für die Bewertungen eine Bewertungsfunktion irgendwie einführen.
Meine Idee hier wäre, herauszufinden, in welchen Stellungenstypen eben Stockfish stärker und wann LC0 stärker ist, ob man diese Stellungen verallgemeinern kann usw.

LG,
Raberger Raphael
Parent - - By Frank Brenner Date 2021-06-16 14:50
In sehr vielen Bereichen ist LC0 taktisch stärker als SF-NNUE, zwar nicht bei relativ kurzfristigen Aufgaben in der Form  "Matt  in 12" oder  "Materialgewinn in 15"  aber lc0 hat oft Vorteile in Aufgaben in Stellungen der Art:  finde-Gewinnzug-Gewinn-in-40-oder-mehr

Da ein Gewinn in 40+ jenseits des Horizontes einer beweisführenden ab-Engine liegt, bezeichnen Menschen die taktische Fähigkeit von LC0 dann gerne auch als "positionelles Verständnis".

Die Lösung für das Vorben das du vorhast, könnte ebenfalls ein Neuronales Netz liefern: Ein Neuronales Netz entscheidet  anhand der Stellung und anhand der Bewertungsfolge des Iterative-Deepening von Stockfish und LC0 welcher Zug gewählt wird.

Jede Form von selbergefrickelten If-Then-Else Konstrukten welcher Zug genommen wird ist m.E. einem NN für die Entscheidungsfindung sehr deutlich unterlegen.

Also: Als Programmierer sollte sich jeder Mensch in das Thema NN einarbeiten.
Parent - - By Arno Nickel Date 2021-06-16 17:37
Inwiefern - außer der unterschiedlichen Hardwarenutzung (hier CPU, dort GPU) und der unterschiedlichen Netze - unterscheiden sich denn Stockfish-Versionen, die über das Parameter "pure NNUE" (wie Eman 7.22) verfügen - von LeelaZero? Sind die Such- und Bewertungsfunktionen da nicht sehr ähnlich?
Ich neige als Laie zu der Auffassung, dass es hier keine wesentlichen, sondern nur graduelle Unterschiede gibt. Aber vielleicht ist das zu einfach gedacht?!
Parent - - By Lothar Jung Date 2021-06-16 18:14
Die Suchfunktionen und der Bewertungsansatz sind zwischen A/B-Engines, NNUE-Engines und Lc0 und Derivaten unterschiedlich.
Auch spielt die Hardware und die Zeiteinstellung eine große Rolle.
Bei Testen, unter vergleichbaren Bedingungen sieht man zunächst die statistischen ELO-Unterschiede.
In den Gewinn-/Verlustpartien wird man die Stärken und Schwächen der Ansätze  erkennen.
Parent - By Arno Nickel Date 2021-06-16 18:26
Ok. Ich werd's mal für Langzeitberechnungen unter Fernschachbedingungen antesten, ob und welche signifikanten Unterschiede sich da in kritischen Stellungen zeigen. Ergebnisse Juli/August.
Parent - - By Frank Brenner Date 2021-06-17 00:46 Edited 2021-06-17 00:53
Stockfish NNUE führt eine ab Suche durch. Alphba-Beta Suchen sind sehr gut um kurzfristige (1-20 Vollzüge) Mattkombinationen/Gewinnkombinationen zu finden in kürztmöglicher Zugzahl.. Es werden außerdem im Rahmen der Suchtiefe nur wenige taktische Dinge übersehen.

Leela führt eine zufällig gesteuerte MC Suche durch. Warum ? Die Leela Bewertung benötigt 1000 mal so lange für den Aufruf der NN-Bewertung. 
Durch die MC Suche übersieht Leela durchaus schon mal taktische Wendungen innerhalb von 2-3 Halbzügen.  Die MC Suche kann oft mit +7 Vorteil und in einer Matt in 6 Stellung nicht das Matt finden ....
Das kommt nicht weil Das NN von Leela so schleht ist, sondern weil die MC Suche im Dunklen tappt.
Im Detail hat es die MC Suche mit Leela  aber auch schwer: So bewertet das NN eine Matt in 27 Stellung mit +3 Materialvorteil gerne einmal mit +23 und eine Matt in 2 Stellung mit Dame+Turmvorteil gerne einmal nur mit +14.
Das NNUE Netz leidet auch unter dieser Bewertung, aber Stockfish NNUE findet dank der eng einschnürenden AB-Suche alle kurzen Matts allein aufgrund der kleveren Suche.

Wären die Grafikkarten 1000 mal so schnell, so würde auch leela eine (ultraselektive) AB-Suche bekommen und Leela hätte dann keinerlei Schwächen mehr.
Parent - - By Arno Nickel Date 2021-06-18 14:04
Im Netz heißt es zur Erklärung der NNUE-Technik von Stockfish u.a. "...Im August 2020 hat ein neuer Patch Stockfish NNUE in eine Hybrid-Engine verwandelt: Es verwendet die NNUE-Auswertung nur bei recht ausgewogenen Materialpositionen, ansonsten wird die klassische verwendet."
Das hat mich zu der Interpretation veranlasst, SF würde auch eine MC-Suche durchführen und dass gerade darin der Sinn des neuronalen Netzes besteht, nämlich Zugkandidaten unabhängig vom der AB-Suche zu finden.
Was habe ich falsch verstanden? Anders gefragt: Worin besteht denn der Sinn eines NN ohne MC-Suche (=statistische Auswertung von simulierten Spielfortsetzungen)?
Parent - - By Benno Hartwig Date 2021-06-18 14:19

> ...und dass gerade darin der Sinn des neuronalen Netzes besteht, nämlich Zugkandidaten unabhängig vom der AB-Suche zu finden


Wieso soll gerade das DER Sinn sein?

Es ist doch erstmal ein sehr sinniger Ansatz, sich Stellungen mit Hilfe eines neuronalen Netzes zu bewerten und diese Bewertungen dann per AB-Suche auszuwerten.
Man mag ja auch gern andere Ansätze verfolgen, aber dieser Ansatz ist doch zumindest AUCH sinnvoll.
Parent - - By Arno Nickel Date 2021-06-18 15:27
Vielen Dank für die Hinweise. Gibt es irgendwo eine allgemein verständliche Quelle, wo genauer dargelegt wird, wie die neuronalen Netze von Stockfish geschaffen und trainiert werden?
Parent - - By Lothar Jung Date 2021-06-18 16:47 Edited 2021-06-18 17:47
Es gibt verschiedene Ansätze neuronale Netzwerke zu trainieren.
Im wesentlichen durch einen gesteuerten Ansatz (managed training) oder Self Learning bzw. eine Mischung davon.
Managed Training im Schach wäre durch einen Datensatz von guten menschlichen oder Computerpartien.
Selflearning ist der Zero-Ansatz von Lc0. Dem Netz werden nur die Schachregeln vorgegeben und der Datensatz wird durch Partien gegen sich selbst generiert. Das Netz lernt nur über Gewinn oder Verlust.
Bei beiden Ansätzen verläuft das Training über Parameter. Es werden Wahrscheinlichkeiten berechnet.
Also die Generierung von Netzen verläuft in zwei Schritten: 1. Datengenerierung 2. Training.
Hier eine Übersicht:

Der KI liegen komplexe Matrix- oder Feldberechnungen zugrunde (siehe Wikipedia). Sie erfordern sehr viel Rechenzeit.

Lothar
Parent - - By Frank Brenner Date 2021-06-18 20:31 Edited 2021-06-18 20:36 Upvotes 2
Ganz Allgemein zum Verständnis: Die Neuronalen Netzwerke von Leela und Stockfish-NNUE  liefern eine statische Positionsbewertung und führen keine explizite Suche durch.

Stockfish-NNUE macht eine reine AB Suche ohne MC.

Daher findet Stockfish-NNUE dank der über Jahrzehnte hinweg optimierten Suche die meisten taktischen Wendungen und übersieht taktisch kaum etwas und kann aus einem Matt in 15 zukkzessiv ein M14,13,12,11,.... finden ohne ewige Schleifen.

Das Umschalten von SF_NNUE auf SF-Classiv bei unausgewogenen Stellungen , also zb mit großem Materialvorteil bringt nur ein paar ELO und ist keineswegs eine Schlüssel Lösung.

Leela hat ein sehr großes NN mit sehr großen Matrizen und sehr langen Vektoren die multipliziert werden müssen und das schafft nur eine Grafikkarte und benötigt hierbei trotzdem noch für eine einzige Bewertung sehr viel Zeit (nur ein paar Tausend Bewertungen pro Sekunde)

Das NNUE Netzwerk von Stockfish-NNUE beherbergt einen Geniestreich und einen Nachteil: Das NN ist leider kleiner, d.h. die Qulität der Bewertung ist deutlich schlechter.
Dafür aber lässt sich die NNUE Bewertung durch die normale CPU blitzschnell ausführen (mit vielen Millionen KNoten/s)
NNUE heißt auf Deutsch "Effizient aktualisierbares neuronales Netz", d.h. wenn einmal die NNUE Bewertung langwierig ausgeführt wurde, so kann für Folgestellungen die sich ja nur um einen Halbzug unterscheiden das erneute aufrufen der NNUE Bewertung extrem stark beschleunigt werden. Und durch die Kleinheit des Netzes kann NNUE auch noch durch die Moderneren CPU von heute ausgeführt werden, da heutige CPUs bereits im Kern Vektoroperationen mit kurzen Vektoren ermöglichen.
 

Aber warum Spielt Leela mit MC und SF-NNUE mit ab ?

Eine ab Suche mit Leela würde wegen der geringen Knotenzahl nur sehr flach sein und nicht tief genug in die Stellung eindringen.

Leelas MC Suche ist in etwa so vergleichbar als wenn du in einer Stellung (zb eine wichtige Weichenstellende Schlüsselstellung aus einer FS Partie)  einige wenige Kandidaten ausprobierst und jeweils eine Test-Partie bis zum Ende (also bis zum Remis oder bis zu einem sehr wahrscheinlichen Gewinn/Verlust) durchführst um zu gucken wie sich der weitere Verlauf der Partie für die in Frage kommenden Kandidaten Züge entwickelt.  So kannst du dann z.B. Kandidaten ausschließen die im weiteren Verlauf in eine Tot-Remis-Stellung oder  in schwer zu verteidigende Stellungen münden oder mit Glück einen Zugkandidaten auswählen der im weiteren Verlauf viel Druck auf den Gegner ausübt.

Die Hochwertige Leela NN Bewertung kann das  "Zuendespielen" schon sehr gut bewerkstelligen.

Das Stockfish-NNUE Netzwerk, oder auch die klassische Stockfish Bewertung ist eher etwas zu schlecht hierzu und daher eher wenige geeignet für MC. 
Hier würde die Test-Partie bis zum Ende oder bis zur Entscheidung auf viel zu niedrigem Niveau verlaufen und  Rückschlüsse auf die Zugkandidaten in der Schlüsselstellung wären nur schwer möglich.

Für Fernschach wäre ganz Sicher Leela mit einer AB Suche optimal, denn nach 1 Tag Bedenkzeit kommt auch Leela auf 1 milliarde Knoten .. und das ist für eine ab schon eine ausgesprochen exzellente Zahl.

Leider gibt es das noch nicht. Es wäre auch schwer die AB Suche von Leela zu optimieren: Um die Suche zu optimieren und zu kalibrieren wären Testpartien mit sehr langen Bedenkzeiten nötig.

Aktuell werden bei Stockfish mal eben 60.000 Partien gespielt um eine einzige Verbesserung zu beurteilen. DAs dauert nur wenige Stunden.

Bei Leela mit AB Suche dauern 60.000 Partien dann mal gerne 1/2 Jahr oder so.
Parent - - By Jörg Oster Date 2021-06-18 22:00 Upvotes 3
Hallo Frank,

nur zur Klarstellung, Lc0 führt keine Rollouts/Simulationen aus!
Man verlässt sich hier auf die Bewertung des NN!

Noch wichtiger ist jedoch der policy head, also die legalen Züge plus Zugprioritäten für die Stellung.
Diese Prioritäten entscheiden maßgeblich, welche Züge als erstes weiter verfolgt werden.
Auch das geschieht nicht zufällig und ist von entscheidender Bedeutung für die Suche!

Gruß, Jörg.
Parent - - By Frank Brenner Date 2021-06-19 00:01 Upvotes 1
Hallo Jörg,

ja das stimmt.

Das sollte nur eine ganz allgemeine Erklärung von Monte Carlo sein:

Ganz Allgemein ist Monte Carlo beim Schach eine vielfache  Zufallssimulation einer Schachpartie und der beste Zug ist derjeinige,  nach dessen Ausführung die meisten Gewinne bei rauskommen.

Die tatsächliche MC-Implementation bei Stockfish NNUE ist dann  darauf aufbauend eine sehr starke weitergehende Optimierung davon.

Ein einfaches Beispiel für eine andere MC Methode ist das Integrieren von Funktionen innerhalb eines Intervalls.

Um eine Funktion zb auf [0,1] zu integrieren könnte man die Funktion an den Stellen 0.001 0.002, 0.003, 0.004, .... 0.999 und 1.000 auswerten und die Summe durch 1000 teilen.

Mit Monte Carlo würde man nicht an äquidistanten Stellen die Funktion auswerten sondern an 1000 zufälligen Stellen zwischen [0,1] und hinterher die Summe durch 1000 teilen.

Monte Carlo liefert hier  das genauere Ergebnis. Das ist eine ungeheuerliche Power des Zufalls.

Eine ELO liste ist  am genausten, wenn sowohl die Farbe als auch die Startstellung aus einer großen Gesamtheit ausgewürfelt wird.

Im Kern ist Monte Carlo das einfachste überhaupt.  Der beste Zug wird bei Zufallspartien im Limes häufiger gewinnen als alle anderen, selbst ohne NN. Das NN und die konkrete implementierung bei SF sind lediglich weiterführende "Advanced" optimierungen.

Grüße Frank
Parent - By Arno Nickel Date 2021-06-19 13:37 Upvotes 1
Nochmals besten Dank für die erhellenden Erklärungen und Hinweise von allen! Sie geben einen guten Einblick und Überblick zur Rolle der Netze. Als Anwender beschäftige ich mich zwar schon länger mit der Materie, aber hier und da tun sich doch Lücken im Verständnis auf, die zu falschen Urteilen führen können.

Im Fernschach, wo es auf die Analysequalität der Engines ankommt, zeigt sich deutlich, dass sich die Spitzenengines mit zunehmender Rechenzeit in ihren Ergebnissen und Bewertungen fast vollständig angleichen, was nicht nur einzelne Zugfavoriten betrifft, sondern oft lange Varianten, deren forcierter Charakter dem menschlichen Auge zunächst verborgen bleibt. Generell zeigt sich, dass leichte Stellungsvorteile einer Seite sich mit zunehmender Rechentiefe zu 0.00 verflüchtigen, ohne dass sich die Remismauer objektiv noch einmal durchbrechen lässt. (Ausnahmen sind sehr selten.)
Ganze Sets von Zugkandidaten und sich anschließenden Varianten gleichen sich in großen Rechentiefen an, und man sucht eigentlich oft schon frühzeitig, d.h. etwa in den ersten zehn Zügen - je nach Ausgangslage - nach solchen Fortsetzungen, die eine Remisforcierung bzw. Stellungsverödung vermeiden und schaut, welche Risiken man dabei eingehen kann (=Gewinnversuch mit Weiß bei dem man versucht, dem Gegner Probleme zu stellen) oder im Gegenteil die Remiswahrscheinlichkeit erhöhen (=Verteidigung mit Schwarz, wobei auch hier manchmal trotzdem Verödungen/Vereinfachungen vermieden werden können).
Die Unterschiede zwischen Leela und Stockfish erscheinen dabei nur noch als feine Nuancen, und es stellt sich die Frage, welche Erfahrungen und Überlegungen der menschliche Spieler selbst einbringen kann, um eine intelligente Wahl im überwuchernden Variantendschungel einbringen kann, um seine Chancen zu optimieren oder die Sache wenigstens noch interessant zu gestalten.
Vermutlich ist das alles sattsam bekannt, aber vielleicht interessiert es doch den einen oder anderen, es mal aus dem Munde eines Fernschach-GM zu hören. Hier ein Link, wo man die Partien des gegenwärtigen Topturnieres (70 Jahre ICCF) live (mit 5 Zügen Verzögerung) verfolgen kann. Teilnehmer ist - neben fünf ehemaligen Fernschach-Weltmeistern - FIDE-GM Jan-Krzysztof Duda (2743), gegen den ich mit Weiß eine sehr interessante Caro-Kann-Partie habe.
Hier der Link. Man gelangt zu den Partien durch Anklicken in der Tabelle: https://www.iccf.com/event?id=90496
Parent - - By Raphael Raberger Date 2021-06-16 18:19
Frank Brenner schrieb:

Die Lösung für das Vorhaben das du vorhast, könnte ebenfalls ein Neuronales Netz liefern: Ein Neuronales Netz entscheidet  anhand der Stellung und anhand der Bewertungsfolge des Iterative-Deepening von Stockfish und LC0 welcher Zug gewählt wird.


Ein interessanter Gedanke, dass ein NN zwei NN-Engines ansteuern könnte. Es wäre allerdings ein Reinforcement-Learning-Prozess, welcher ja (siehe A0 und LC0) zu erstaunlichen Ergebnissen führen kann, aber auch extreme Rechenresourcen benötigt, welche ich mit 6 Intelkernen einfach nicht habe. Und zudem bezweifle ich, dass es dafür ein Dataset gibt.

Es wäre ein langwiereiger Prozess zwischen zwei Versionen des NN, und ich habe keine Idee, welche TC bzw. Hash, Threads, TB ich dafür verwenden sollte...

LG,
Raberger Raphael
Parent - By Frank Brenner Date 2021-06-17 00:51
Das NN Netz welches entscheidet ob der Zug von Stockfish-NNUE oder der Zug von Leela genomen wird ist ein blitzschnelles Netz und benötigt keine relevante Rechenzeit. DIe Entscheidung würde innerhalb einer tausendstel Sekunde erfolgen. Hier muß schließlich nicht in die Schachstellung eingedrungen werden und auch sonst keine Suchedurchgeführt werden.
Die Entscheidung dauert etwa so lange wie ein einziger Knoten von Leela.
Parent - By Benno Hartwig Date 2021-06-17 06:30 Upvotes 1

> Die Lösung für das Vorben das du vorhast, könnte ebenfalls ein Neuronales Netz liefern:


Da magst du Recht haben.

Interessante Vorstellung:
Eine KI entscheidet, welche KI entscheiden darf.
Und kein Mensch weiß, was hier eigentlich warum passiert.
Parent - By Andreas Mader Date 2021-06-17 15:28
Diesen Ansatz gab es schon vor Jahrzehnten, das nannte sich damals "Dreihirn". Ich weiß nicht, ob er es erfunden hat, aber ich habe das zum ersten Mal von Helmut Weigel gehört, der sogar relativ lange an einem entsprechenden Programm gearbeitet hat.

Wenn du mehrere Rechner bei Chessbase "mietest", arbeiten die nach einem ähnlichen Prinzip. Es gibt die "Slaves", die die Kandidatenzüge vorschlagen, und den "Master", der diese Züge näher untersucht. Das Problem dabei ist, dass der "Master" im Grunde genommen überproportional wichtig ist.

Ein Ansatz wäre auch, einfach einen Menschen entscheiden zu lassen. Das bringt dann zwar nicht immer den besten Zug, aber oft den interessantesten.

Schöne Grüße
Andreas
- By Raphael Raberger Date 2021-06-18 20:51 Upvotes 1
Allererste Version online:
Alles noch sehr ALPHA;

https://github.com/mathsy/MeowFusionUCI

Das NN ist noch kaum trainiert, keine UCI Options: TO BE CONTINUED
Up Topic Hauptforen / CSS-Forum / Wann hat LC0, wann Stockfish recht?

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill