Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Self-Learning beim Stockfish?
- - By Eduard Nemeth Date 2019-08-27 07:07
Gibt es jemanden hier im Forum, der erklären kann, wie das Self-Learning beim Stockfish funktioniert? Ich würde gerne wissen was konkret gelernt wird, und wann?

Ich habe beim MZfish diese Funktion auf Schach.de aktiviert, aber die beiden Lerndateinen sind nach einigen Partien noch immer ohne Einträge
Parent - - By Peter Martan Date 2019-08-27 08:29 Edited 2019-08-27 08:48 Upvotes 1
Du musst Stellungen "lernen" lassen, die die komplette Move History von der Grundstellung aus dabei haben, es werden Lernfiles außer der experience.bin und der pawngame.bin nur dann angelegt, wenn die Eröffnungszüge in Zusammenhang mit den späteren Stellungen eingelesen werden können.

Ab dem 15. Halbzug beginnen sich die Files aufzufächern, für jede einzelne Eröffnung eigene, die eigentlichen Dateien für die späteren Stellungen, die experience.bin (allgemein) und die pawngame.bin (für Wenigsteiner) bleiben einzeln, wachsen aber nur dann und enthalten nur dann nützliche Einträge, wenn die übrigen Lernfiles von der Eröffnung her angelegt sind.
Stellungen ohne Eröffnungszüge und Move History bis zur Stellung legen auch eine .experience.bin und eine pawngame.bin an, die bleiben dann aber auf 0Kb stehen und verbessern die time to solution nicht.

Zum Unterschied von z.B. Eman, der auch ohne Move History lernt und von den anderen learning SF- branches abgespalten wurde von Omar Khalid.

Für genauere Infos siehe die github- Seiten von Marco Zerbinati, Andrea Manzo (ShashChess) und im Fishcooking von Kelly Kinyama, dessen Idee das ursprünglich war.
Willkürlich mittendrin ausgewählt ein Link zu einem Thread:

https://groups.google.com/forum/#!topic/fishcooking/fhX7dFAsyew%5B1-25%5D
Parent - - By Thomas Plaschke Date 2019-09-02 21:26 Upvotes 1
Die Lernfunktion von Eman 4.00 habe ich getestet, indem ich die Engine 3 Mal gegen dieselben Gegner unter denselben Bedingungen spielen lassen habe (Spießrutenlauf, HERT-Eröffnungen, 60"+0.6"). Die Lernfunktion war nur bei Eman 4.00 aktiviert.

Ergebnis 1. Lauf:
Code:
   # PLAYER                        :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)
   1 Stockfish 190826              :  3561.4    9.9   557.0    1000    56      99
   2 CorChess 3.1                  :  3543.8    9.5   532.5    1000    53      97
   3 SugaR-NN-1.1-PA               :  3529.6    9.6   512.5    1000    51      95
   4 Eman 4.00                     :  3520.8    4.0  2418.0    5000    48      60
   5 Raubfisch ME262_GTZ20b2_sl    :  3519.4    9.5   498.0    1000    50      92
   6 Stockfish 10                  :  3508.0    9.8   482.0    1000    48     ---

White advantage = 37.72 +/- 2.44
Draw rate (equal opponents) = 76.36 % +/- 0.63

Ergebnis 2. Lauf:
Code:
   # PLAYER                        :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)
   1 Stockfish 190826              :  3559.3   10.0   565.5    1000    57      99
   2 CorChess 3.1                  :  3541.4    9.8   540.5    1000    54     100
   3 Eman 4.00                     :  3512.6    4.1  2419.5    5000    48      78
   4 SugaR-NN-1.1-PA               :  3508.4    9.7   494.0    1000    49      52
   5 Stockfish 10                  :  3508.0   10.0   493.5    1000    49      72
   6 Raubfisch ME262_GTZ20b2_sl    :  3503.4    9.7   487.0    1000    49     ---

White advantage = 37.12 +/- 2.56
Draw rate (equal opponents) = 75.09 % +/- 0.64

Ergebnis 3. Lauf:
Code:
   # PLAYER                        :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)
   1 Stockfish 190826              :  3552.6   10.1   556.5    1000    56      96
   2 CorChess 3.1                  :  3538.6    9.7   537.0    1000    54     100
   3 Eman 4.00                     :  3512.3    4.2  2426.0    5000    49      71
   4 SugaR-NN-1.1-PA               :  3509.1    9.8   495.5    1000    50      55
   5 Stockfish 10                  :  3508.0   10.1   494.0    1000    49      60
   6 Raubfisch ME262_GTZ20b2_sl    :  3505.9    9.7   491.0    1000    49     ---

White advantage = 40.14 +/- 2.55
Draw rate (equal opponents) = 75.24 % +/- 0.64


Um zu sehen, ob identische Bedingungen identische Ergebnisse bringen, haben ich 2 Mal Stockfish 10 gegen den Stockfish vom 26.08.2019 spielen lassen.

1. Lauf:
Code:
   # PLAYER              :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)
   1 Stockfish 190826    :  3546.3    5.8   554.0    1000    55     100
   2 Stockfish 10        :  3508.0    5.8   446.0    1000    45     ---

White advantage = 31.28 +/- 6.28
Draw rate (equal opponents) = 71.08 % +/- 1.51

und 2. Lauf:
Code:
   # PLAYER              :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)
   1 Stockfish 190826    :  3554.9    5.9   566.0    1000    57     100
   2 Stockfish 10        :  3508.0    5.9   434.0    1000    43     ---

White advantage = 32.91 +/- 6.37
Draw rate (equal opponents) = 70.77 % +/- 1.51


Einen auffälligen Spielstärkezuwachs brachten die 15.000 Partien aus 1.000 Eröffnungsvarianten (je 500 mit Schwarz und Weiß), trotz der eigentlich idealen Voraussetzungen zum Lernen, nicht. Der Zugewinn an Gesamtpunkten stieg für Eman 4.00 von 2.418 (=48,36 %) zu 2.419,5 (=48,39 %) bis 2.426 (=48,52 %). In Elo-Punkten gemessen, war keine Steigerung zu verzeichnen.
Wie die Vergleichsläufe der Stockfische zeigen, konnte man auch keine identischen Ergebnisse erwarten. Daher ist mein Schluss, dass die Lernfunktion praktisch wirkungslos ist.

Viele Grüße
Th. Plaschke
Parent - By Martin Steinwandter Date 2019-09-03 07:42
Khalid Omar, von wem diese Engine ist, würde dir jetzt antworten: Was willst du mit 15.000 Partien! LC0 braucht Millionen Spiele um Stockfish zu schlagen.
So jedenfalls erging es mir als ich meine Zweifel über den Spielstärkezuwachs bei Eman mit einer Lerndatei anzweifelte.
Danach wurde ich von seiner Verteilerliste gestrichen.
Parent - - By Stefan Kleinert Date 2019-09-04 21:29
Hallo ,
das lernen bei Eman funktioniert bei mir bestens !  Bedenke das Eman erst lernt wenn er eine Tiefe von 25 ply erreicht hat .
Nehmen wir jetzt mal an das nur auf 1 Core getestet wurde , dann hat Eman nicht wirklich viel gelernt da er in der ersten Phase der Partie fast nie Tiefe 25 erreicht hat . Bitte nicht persönlich nehmen ich halte solche Tests mit so einer kurzen Bedenkzeit eh für Nonsens.
Was bei langer Bedenkzeit funktioniert muss nicht unbedingt bei kurzer Bedenkzeit funktionieren und umgekehrt .

Gruß
Stefan
Parent - By Thomas Plaschke Date 2019-09-04 22:49 Edited 2019-09-04 22:58

>Bedenke das Eman erst lernt wenn er eine Tiefe von 25 ply erreicht hat .


Berechtigter Einwand. Die release notes erklären dazu aber "... the engine is capable of utilizing any experience move of any depth during the search so it does not hurt to have experience data for various depths". Eine Mindestsuchtiefe gibt es aber dennoch als Parameter. Dessen Standardwert ist 25. Wenn ich ihn niedriger setze, müsste es auch bei kurzen Bedenkzeiten funktionieren.

Die 19 MBytes große Lerndatei dürfte in ihren fast 600.000 Positionen wegen der sehr kurzen Bedenkzeiten nun fast ausschließlich Endspielstellungen enthalten. Das wäre mir eine gute Erklärung für die nicht erkennbare Wirksamkeit der Lernfunktion. Aber man kann ja was machen, um auch das herauszufinden.

Viele Grüße
Th. Plaschke
Parent - - By Martin Steinwandter Date 2019-09-05 07:38
Stefan Kleinert schrieb:

. Bitte nicht persönlich nehmen ich halte solche Tests mit so einer kurzen Bedenkzeit eh für Nonsens.
Was bei langer Bedenkzeit funktioniert muss nicht unbedingt bei kurzer Bedenkzeit funktionieren und umgekehrt .

Gruß
Stefan


Dass das Lernen mit sehr schnellem gameplay funktioniert, beweist doch LC0 (800 Nodes) schon seit Beginn an.
Parent - - By Stefan Kleinert Date 2019-09-06 08:48
Martin Steinwandter schrieb:

Stefan Kleinert schrieb:

. Bitte nicht persönlich nehmen ich halte solche Tests mit so einer kurzen Bedenkzeit eh für Nonsens.
Was bei langer Bedenkzeit funktioniert muss nicht unbedingt bei kurzer Bedenkzeit funktionieren und umgekehrt .

Gruß
Stefan


Dass das Lernen mit sehr schnellem gameplay funktioniert, beweist doch LC0 (800 Nodes) schon seit Beginn an.


Das beweist für mich nur das es bei LC0 funktioniert , auf welchem Blatt steht denn geschrieben das alles was bei LC0 funktioniert auch auf Stockfish übertragbar ist ?
Parent - - By Walter Knobloch Date 2019-09-06 13:26
was für eine Art Lernen ist das denn bei SF?
Es wird doch wohl nichts substantiell an der Bewertungsfunktion verändert, sondern vermutlich nur eine Datenbank bekannter Stellungen erstellt, oder?
Wenn dem so ist, würde ich diesem Ansatz keine große Zukunft einräumen.
Parent - - By Eduard Nemeth Date 2019-09-06 13:51
Würde mich ebenfalls interessieren. Für mich bringt dass sowieso garnichts da ich mit grossen Büchern spiele (wo ich Zug um Zug auch editiere), und danach gibt es schon TB Zugriffe. Aber für TCEC möglicher Weise sinnvoll?
Parent - By Peter Martan Date 2019-09-06 14:13 Edited 2019-09-06 14:21
Ich sag jetzt mal, das bringt was für einzelne Eröffnungen mit sehr vielen Partien dazu (ab dem 15. Halbzug wird separat gespeichert) und noch mehr für einzelne Partien im Fernschach, je länger eine davon wird, umso mehr für diese eine corr.- Partie.
Natürlich auch für einzelne Stellungen, aber das steht ja nicht zur Diskussion.

Alles andere wird jedenfalls statistisch sehr schwer zu beweisen sein, ohne, dass ich das noch überhaupt probiert hätte.

Eventuell wäre es für mich noch einen Versuch wert, ein eigenes Buch mit sehr schmaler Editierung der ersten paar Züge (also mit der Absicht, es, das Buch, in möglichst wenigen Varianten möglichst tief aufs Brett zu bringen) in Kombination mit diesem Engine- Lernen auszuprobieren, aber das fange ich mir, wenn überhaupt, sicher frühestens dann an, wenn es Cerebellum nicht mehr nur in der light- Version geben wird, und ich eigene Bücher mit diesem eigenen Algorithmus von einer bestimmten Engine (oder einen Setting) meiner Wahl rückwärts bewerten lassen könnte. Wenn das dann so eine lernende Engine wäre, würde sich das vielleicht schon auch ergänzen.
Mal sehen, was weiter aus alledem wird.
Parent - - By Thomas Plaschke Date 2019-09-06 19:31
Ich habe in einem neuen Anlauf bei längerer Bedenkzeit (2'+1") die Lernfunktion ab Tiefe 20 aktiviert. Diese Tiefe wird auf dem verwendeten Rechner mit 1 Thread in Eröffnungs- und Mittelspielstellungen nach ca. 1-3 Sekunden erreicht. Die Nunn2-Stellungen dienten als Eröffnungsbibliothek. Das sind 20 Varianten, jeweils mit Weiß und Schwarz gegen drei Gegner. Pro Lauf waren damit jedesmal 120 Partien zu spielen. Hier das Elo-Ergebnis:
Code:
Lauf  Eman 4.00  Stockfish 190826  CorChess 3.1  Stockfish 10
1        3544,1     3553,1           3526,1           3508,0
2        3481,4     3516,9           3463,7           3508,0
3        3543,7     3570,4           3570,4           3508,0
4        3490,2     3481,3           3499,1           3508,0
5        3481,6     3508,0           3472,8           3508,0
6        3480,8     3489,9           3453,7           3508,0
7        3516,9     3552,6           3516,9           3508,0
8        3534,8     3508,0           3480,9           3508,0
9        3525,8     3561,6           3552,6           3508,0
10       3534,5     3543,3           3552,2           3508,0
11       3516,8     3525,6           3516,8           3508,0
12       3481,4     3490,2           3490,2           3508,0
13       3525,9     3516,9           3499,0           3508,0
14       3534,9     3543,8           3525,9           3508,0
15       3508,0     3534,6           3525,7           3508,0
16       3534,4     3552,0           3516,8           3508,0
17       3508,0     3481,3           3516,9           3508,0
18       3534,7     3570,4           3525,8           3508,0
19       3552,7     3543,8           3498,9           3508,0
20       3553,0     3561,9           3508,0           3508,0
Die Errorbar liegt bei so wenigen Partien pro Durchgang für die Elo-Zahl von Eman 4 bei ca. +-20. Für die anderen Engines bei etwa +- 40. Trotz dieser statistisch ungünstigen Situation hatte ich mir von den im Übrigen eigentlich optimalen Voraussetzungen für die Lernfunktion eine eindeutige Erkenntnis erhofft. Wertet man die Läufe mit Excel aus und lässt sich zur Veranschaulichung ein Diagramm anzeigen, sieht man nur ein wildes Durcheinander der Linien im stetigen Auf und Ab. Lediglich die (lineare) Trendlinie von Eman zeigt leicht nach oben. - Die von Stockfish 190826 und CorChess allerdings auch (Die von Eman ist aber etwas steiler.).
Eman hat 40 Varianten jeweils 60 mal gespielt und vorsichtig ausgedrückt keinen besonders hohen Nutzen aus der Lernfunktion gezogen. Auf Playchess oder anderswo sind die Bedingungen für die Lernfunktion weniger günstig, der Nutzen daher vermutlich noch geringer. Die Lerndatei war übrigens schließlich fast 7,4 MB groß (237.000 Positionen).

Viele Grüße
Th. Plaschke
Parent - By Guenter Stertenbrink Date 2019-09-06 22:01
ich erinnere mich, dass Aloril im TCEC-chat vor einigen Jahren Stockfish mit
(zunaechst leerem) Buch gegen sich selber ohne Buch spielen liess,
dann die Partie analysierte und ins Buch nahm , usw,
Das gab einen beeindruckenden Zuwachs auf die Dauer.
Partien mit 1min Bedenkzeit, glaub ich.

Das koennte noch irgendwo auf seinen Internetseiten stehen
Up Topic Hauptforen / CSS-Forum / Self-Learning beim Stockfish?

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill