Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Nucleus - neues Mehrhirn-Projekt
- - By Stefan Pohl Date 2018-05-13 22:06 Upvotes 1
http://rebel13.nl/prodeo/prodeo27.html

Das klingt sehr, sehr interessant. Insbesondere jetzt, wo es mit Leela eine Engine gibt, die eigentlich eher ein elektronisches Gehirn ist und mit normalen Engines nullkommanix gemein hat, außer der UCI-Schnittstelle. Das ergibt sicher sehr interessante Kombinationsmöglichkeiten: Leela und eine taktisch starke Engine als die beiden Slaves und ein guter Allrounder wie Komodo als Entscheider. Fiele mir so spontan ein.
Noch scheint das ganze Projekt in einer recht frühen Phase zu sein:

Limitations
1. Currently there is only one time control available fixed time per move.
2. It's noted that sometimes during a match Nucleus might hang in EP situations.

Aber das sollte man im Auge behalten!
Parent - By Stefan Pohl Date 2018-05-14 05:27
Sicher, das Konzept selbst ist nicht neu. So etwas gibt es schon in ähnlicher Form in der ShredderGUI. Nur ist dort die ShredderEngine immer der Entscheider, und vor allem ist das Ganze dort fix an die ShredderGUI gebunden und läuft nur in dieser.
Und bisher gab es keine Leela. Insofern ist dieser neue Mehrhirn-Ansatz Nucleus sehr interessant.
Parent - - By Carsten Müller Date 2018-05-14 13:11 Upvotes 1
Da ist ein ganz großes Missverständnis, dass Leela ein elektronische Gehirn ist. Das neuronale Netz wird hier als Lernmethode um die Parameter des Schachprogramms zu ermitteln eingesetzt. Das geschieht im Prinzip durch Versuch und Irrtum um sukzessive das Ergebnis zu steigern. Da ist jede Stubenfliege intelligenter.
Parent - - By Stefan Pohl Date 2018-05-14 14:50
Carsten Müller schrieb:

Da ist ein ganz großes Missverständnis, dass Leela ein elektronische Gehirn ist. Das neuronale Netz wird hier als Lernmethode um die Parameter des Schachprogramms zu ermitteln eingesetzt. Das geschieht im Prinzip durch Versuch und Irrtum um sukzessive das Ergebnis zu steigern. Da ist jede Stubenfliege intelligenter.


Das ist überhaupt kein Mißverständnis. Im Gegenteil. Das menschliche Gehirn arbeitet beim Schachspielen auch ein Schachprogramm ab: heißt: spielt Varianten im Geiste durch (MCTS) und selektiert und bewertet diese per neuronaler Mustererkennung (neuronal Network). Und lernt dabei durch das spielen, das neuronale Netzwerk zu verbessern.
Genau das, was Leela auch macht.
Das einzige, was Leela fehlt, ist die Reflektion im Bewußtsein, logischerweise. Zumindest noch ?!?
Parent - - By Carsten Müller Date 2018-05-15 09:15
Das "Abarbeiten" eines Programmes macht das menschliche Gehirn gerade nicht. Das Gehirn funktioniert NICHT auf Basis von Algorithmen und Programmen.
Ein neuronales Netz ist mathematisch gesehen eine nicht-lineare Regression. D.h. man ändert die Verknüpfungen im Netz solange, bis die Zielfunktion (hier ELO) maximal wird. Aufgrund der im Netz verwendeten mathematischen Funktionen kann man eben nicht nur lineare Zusammenhänge abbilden, sondern auch nicht-lineare. D.h. kleine Änderungen in den Eingangsparametern können (müssen aber nicht) zu großen Auswirkungen bei den Ergebnissen führen. Voraussetzung ist, das solche Zusammenhänge existieren UND das Netz sie lernen kann. Letzteres hängt davon ab, ob diese Zusammenhänge stabil sind und dass sie ausreichend oft vorkommen, damit dieser Zusammenhang erkannt werden kann. Weil das lernen nicht durch Erkenntnis passiert sondern durch langsame Annäherung des Modelles an die Wirklichkeit.

Die Euphorie scheint mir hier etwas übertrieben zu sein. Das liegt wohl daran, dass
1. Google einen großen Erfolg hatte
2. die Fortschritte (am Anfang) recht groß sind und
3. die ELO Zahlen die hier im Raum rumschwirren massiv nach oben verzerrt sind.

zu 2. die Lernkurve ist am Anfang sehr steil und flacht aber danach sehr schnell ab (wie bereits vor zwei Wochen von mir prognostiziert wurde) Da man bei Leela viel zu viele Parameter genommen hat, wird das so bleiben und vielleicht wird nie ein signifikanter Zuwachs mehr kommen.

zu 3. laut https://docs.google.com/spreadsheets/d/18UWR4FVhPi0vNwwPreu_avd9ycujGQ5ayR2LzJOWP4s/edit#gid=823198584
hat das Netz +228 eine Elo von 2858.
Ich habe mal rund hundert Blitzpartien gegen Fritz 6 und Crafty 23.1 spielen lassen. Danach komme ich mit meiner Hardware auf nicht ganz 2500. Und ich will mich jetzt gar nicht auf die Diskussion einlassen, dass mit 4 GPUs und Netz xy etc. das Netz deutlich besser spielt. Das wäre Äpfel mit Birnen verglichen. Wenn ich die Stärke eines Programms vergleichen will, muss die gleiche Hardware verwendet werden!
Parent - - By Stefan Pohl Date 2018-05-15 10:29 Edited 2018-05-15 10:37
Bedaure, das sehe ich anders. Leela ist m.E. sehr ähnlich zu dem, wie ein menschliches Hirn Schach lernt und spielt. Aber das kann ja jeder einsortieren, wie er mag.
Was die Euphorie und die zu hohen Elozahlen angeht, stimme ich zu. Realistische Elozahlen gibt es bei mir: http://www.sp-cc.de/long-thinkingtime.htm

Ich kann aber jetzt schon sagen, daß die CUDA-Version von Leela, die ich gerade teste, erheblich stärker ist, als die bisherige, von mir getestete GPU-Version. Ich hoffe, in 5 Tagen mit dem Testrun durch zu sein, also über 300 Partien.
Mit der gleichen Hardware ist das so eine Sache. Leela läuft auf dem gleichen Notebook, wie die Gegner, logischerweise. Aber natürlich primär in der Grafikkarte, nicht auf der CPU. Das läßt sich kaum vermeiden. Die CPU-Leela (selbst die MKL-Version) ist so viel langsamer und schwächer, da kommt keine Elo-Freude auf.
Parent - By Carsten Müller Date 2018-05-15 10:46
Wie ein neuronales Netz funktioniert ist keine "Glaubensfrage". Ich habe das Thema in meiner Zeit als Student im Bereich der Wirtschaftsinformatik und später im beruflichen Einsatz begleitet. Und Du?
Parent - By Olaf Jenkner Date 2018-05-14 16:28
Carsten Müller schrieb:

Das neuronale Netz wird hier als Lernmethode um die Parameter des Schachprogramms zu ermitteln eingesetzt.

So einfach ist es wohl nicht. Das hieße, daß Leela ein gewöhnliches Schachprogramm mit ziemlich viel flexibel einstellbaren Parametern ist.
Die Lerndateien sind aber ziemlich groß, demnach müßte es in dem Schachprogramm hunderttausende Parameter geben. Wer soll das programmiert haben?
Parent - - By Florian Wieting Date 2018-05-14 23:17 Edited 2018-05-14 23:27
Ich habe gerade ein bisschen mit Nucleus experimentiert.

Ich habe Houdini als Entscheider, master genannt, gewählt und Stockfish und Komodo als Ideengeber, slaves genannt, installiert. In einigen Testaufgaben machte dieses Team subjektiv einen sehr analysestarken Eindruck.
Leider berechnen die beiden slaves ihre Vorschläge nicht parallel, sondern nacheinander, obwohl vier Cores zur Verfügung stehen. Dann erst analysiert der master, wieder nacheinander, die Antwortzüge auf die beiden Vorschläge und entscheidet anhand der Bewertungen der Antwortzüge, welcher Zug ausgespielt wird. Eine Parallelisierung würde die Cores natürlich wesentlich besser zur Wirkung bringen.
Ein bisschen kompensiert habe ich dieses Manko, indem ich jeder Engine die maximalen vier Cores zugewiesen habe. Gefühlsmäßig hatte ich nämlich anfangs eine Verteilung 2 - 1 - 1 gewählt.
Es bleibt für mich jedoch kein Zweifel: Für eine Version 0.0.1 beta ein vielversprechender Ansatz!

Ich wünsche allen viel Spaß beim Ausprobieren!
Florian

PS.: Bei identischen Vorschlägen wird der master überhaupt nicht aktiv, der Zug wird sofort ausgespielt.
Parent - - By Florian Wieting Date 2018-05-15 02:49 Upvotes 1
Um zu verdeutlichen, wie die Abfolge von slave1 - slave2 - master durchgeführt wird, hier ein kleines Beispiel aus einer Partie Anand - Bologan, 2000, FIDE-WM:



Nucleus:

slave1 Stockfish 9 64 POPCNT is searching ...
1  00:00   0  0  +0,78  Lb1-c2
[...]
27  00:30   0  0  +4,05  Sh5-f6 Te8-e5 g5-g6 h7xg6 Df4-h4+ Te5-h5 Sf6xh5 Kh8-g8 Lb1-c2 g6xh5 Td1-b1 Db2-a2 Dh4-d8 Da2-c4 Sd4-c6 Tc7xc6 d5xc6 Dc4xc6 Tg3-f3 Lc8-e6 Tb1-b6 Dc6-c4 Lc2-d3 Dc4-c7 Dd8xc7 Sa6xc7 Ld3-c2 Sc7-e8 Tf3xc3 d6-d5 e4xd5 Le6xd5+ Kg2-g3 h5-h4+ Kg3xh4 Lf8-e7+ Kh4-g3
slave1 Stockfish 9 64 POPCNT bestmove h5f6

slave2 Komodo 10.4 64-bit is searching ...
1  00:00   0  0  -2,93  Tg3-f3 c3-c2
[...]
26  00:30   0  0  +0,61  Lb1-c2 Db2-a2 Td1-b1
slave2 Komodo 10.4 64-bit bestmove b1c2

master Houdini 5.01 x64-popc is searching for reply to slave1 move h5f6
master reply to slave1 is bestmove c3c2
master Houdini 5.01 x64-popc is searching for reply to slave2 move b1c2
master reply to slave2 is bestmove a6b4
master reply to slave1 line: h5f6 c3c2 {-203}
master reply to slave2 line: b1c2 a6b4 {-135}
follow slave1 move h5f6

Und tatsächlich hat sich das Dreihirn für Anands Zug Sh5-f6 entschieden.
Parent - - By Kurt Utzinger Date 2018-05-15 08:07
Florian Wieting schrieb:

Und tatsächlich hat sich das Dreihirn für Anands Zug Sh5-f6 entschieden.


Kann mir jemand die Vorteile dieses Mehrhirn-Projekts aufzeigen? Wenn ich unter ChessBase-GUI
diese Stellung eingebe und drei Engines mitlaufen lasse, dann finden sowohl Houdini (bei ST 23)
als auch Stockfish (bei ST 26) den Zug Sf6 sehr rasch. Ich komme als zum selben Resultat, aber
wahrscheinlich schneller als mit Mehrhirn, oder?
Mfg
Kurt
Parent - By Florian Wieting Date 2018-05-15 12:48 Upvotes 1
Hallo, Kurt,

du hast vollkommen recht, dass mein kleiner Test in keiner Weise eine Wirksamkeit des Dreihirns beweist. Dazu müssten diverse Engineturniere durchgeführt werden. Da Nucleus bisher nur die Einstellung "Zeit pro Zug" unterstützt, sind reguläre Wettkampfbedingungen noch nicht herstellbar. Auch ist es mir bisher nicht gelungen, die Konfiguration der drei Engines zu beeinflussen. In den Einstellungen sind lediglich die Größen der Hashtables veränderbar.

Ich wollte mit meinen beiden Beiträgen lediglich die Arbeitsweise von Nucleus beschreiben.
Und selbstverständlich finden viele Engines im Beispiel Anand - Bologan den Lösungszug, weil es einen besten Zug gibt.
Wie aber verhält es sich, wenn innerhalb einer Partie viele Varianten sehr dicht beieinander liegen? Ich weiß es nicht.

Viele Grüße
Florian
Parent - By Stefan Pohl Date 2018-05-15 13:05
Kurt Utzinger schrieb:

Florian Wieting schrieb:

Und tatsächlich hat sich das Dreihirn für Anands Zug Sh5-f6 entschieden.


Kann mir jemand die Vorteile dieses Mehrhirn-Projekts aufzeigen? Wenn ich unter ChessBase-GUI
diese Stellung eingebe und drei Engines mitlaufen lasse, dann finden sowohl Houdini (bei ST 23)
als auch Stockfish (bei ST 26) den Zug Sf6 sehr rasch. Ich komme als zum selben Resultat, aber
wahrscheinlich schneller als mit Mehrhirn, oder?
Mfg
Kurt


Wenn man 3 klassische Engines in Nucleus nutzt, halte ich den Nutzen auch für überschaubar. Interessant kann es aber jetzt werden, wo es Leela gibt und nun noch Komodo 12 MCTS. Hier wäre vorstellbar Leela und Komodo MCTS als slaves zu nutzen und eine klassische Engine als Master zu taktischen Absicherung. Oder zwei klassische Engines als slaves und Leela als Master.
Parent - - By Carsten Müller Date 2018-05-15 09:24
Ich wage mal die Prognose, dass der Mehrhirnansatz nicht funktioniert. Dazu müsste ein Verfahren existieren, dass eindeutig sagt Zug A ist besser als Zug B (weil ....).
Wenn ich die Regel dafür wüsste "was" "wann" und "warum" besser ist, dann würde ich das bereits in Programm X einbauen und bräuchte kein Programm Y mehr.
Parent - - By Michael Scheidl Date 2018-05-15 14:01
Richtig, ein computerisierter Entscheider hat weder mehr noch bessere Information als die Engines. Er kann höchstens die Sache verschlimmbessern. Deswegen finde ich, das Mehrhirnkonzept ist auf einen menschlichen Entscheider ausgerichtet, der u.a. in Software nicht abbildbare Qualitäten wie z.B. Intuition einbringt. Oder Planverfolgung; man sieht manchmal wie Engines die dabei sind am Königsflügel zu gewinnen, sinnloserweise am Damenflügel rumrudern.
Parent - - By Florian Wieting Date 2018-05-16 01:15
Nach Stefan Meyer-Kahlens Ansatz in dem Shredder-GUI mal ein ganz neuer Versuch.
Gebt dem doch mal eine Chance.
Aber nein, ihr wisst schon jetzt, dass das nie wird klappen können.
Parent - By Michael Scheidl Date 2018-05-16 04:56
Es kann schon klappen, aber keiner wird wissen wieso.

Zitat:
mal ein ganz neuer Versuch

Das Konzept ist über 20 Jahre alt, und offenbar nicht ausreichend performant. - Es wäre interessant zu wissen, wie der Entscheider in Shredder genau funktioniert. Bezieht er etwa Sachen wie "Kontinuität der Bewertung" mit ein?

Das ist nicht etwas das ich leichtfertig beiseite schieben möchte (frei nach Dorothy Parker).
Parent - By Florian Wieting Date 2018-05-16 01:25
Geht dein Einwand nicht indirekt davon aus, dass alle zur Zeit bedeutsamen Programme im Wesentlichen auf geistiger Inzucht beruhen?
Wäre doch wünschenswert, wenn der Entscheider erkennen könnte, dass die Idee von A oder B ein bisschen besser ist, weil sein Algorithmus ein paar genfremde Quellcodezeilen enthält.

PS. Rechtschreibung berichtigt
- - By Guenter Stertenbrink Date 2018-05-16 05:51
kann man nicht die beiden Hashs zusammenladen und jeder weiss,
was der andere denkt ?

etwa SF rechnet 1s mit 16MB , Komodo rechnet 1s mit 16MN Hash ,
dann werden die Hashs gemerged und beide rechnen noch 1s mit 32MB Hash

oder etwa fuer Fernschach
ich lass Stockfish und Komodo beide 10min rechnen auf verschiedenen Tablets unter Droidfish,
dann gebe ich langsam Komodo's pv in SF ein , einige Zuege, forward-backward,
und umgekehrt , dann lasse ich beide wieder 10min rechnen mit dem neuen Hash etc.

Wenn der Hash voll wird wird ja selektiert und alte, niedrigtief evals kommen raus.
Jetzt brauchen wir festures fuer hash-save,hash-merge,hash-reduce
und evtl. eine Markierung bei den einzelnen hash-Eintraegen, von welcher engine der ist

oder einfach SF laeuft auf 11 threads und Komodo auf 5 threads
mit gemeinsamem Hash und lazy SMP

-----------------

ich wunder mich schon wie z.B. bei TCEC oftmals die evals der Engines verschieden sind.
Selbst HO und SF in Superfinale.
Meist liegt die Wahrheit dann etwa in der Mitte
Parent - By Stefan Pohl Date 2018-05-16 07:20
Guenter Stertenbrink schrieb:

kann man nicht die beiden Hashs zusammenladen und jeder weiss,
was der andere denkt ?


Das glaube ich nicht. Eine wesentliche Neuerung bei Nucleus, gegenüber dem ShredderGUI-Dreihirn, ist ja gerade, daß man als Anwender völlig frei in der Wahl der drei Engines (Master und zwei Slaves) ist. Und Engines können ja Stellungen nach verschiedenen Formeln verhashen. Oder sogar ganz ohne klassische Hashtables auskommen (Leela). Das kann man bei Nucleus nicht vorhersagen. Daher kann und wird es keinen gemeinsamen Hashspeicher für beide slaves und den master in Nucleus geben, würde ich meinen.
Parent - - By Michael Scheidl Date 2018-05-16 09:20
Die Idee eines gemeinsamen Hash klingt attraktiv und logisch, aber: Die verschiedenen Engines werden ja immer wieder auf dieselben Positionen stoßen. Wessen Bewertung soll dann im Hash landen?

Vermutlich gibt es noch weitere prinzipiell-technische Probleme die ich nicht absehen kann.
Parent - - By Guenter Stertenbrink Date 2018-05-16 09:36
bei unterschiedlichen Hash-Kodierungen muss dann ein Konvertierungsprogramm geschrieben werden.
Man sollte sich auf einen Standard einigen.

Bei zwei Hash-Eintraegen zu einer Position mit gleicher Tiefe und Aktualitaet nimm etwa den Durchschnitt der evals (?)
Parent - By Michael Scheidl Date 2018-05-16 10:06
Man müßte Schachprogrammierer heranziehen, die das beurteilen können. Beispielsweise, den Durchschnitt der Evals zu berechnen kostet ja Zeit und das widerspricht dem Prinzip der Hashtabellen. Die sollen blitzschnelle Bewertungen liefern ohne daß berechnet werden muß.

Leztendlich wird es am besten sein, die stärkste Engine auf allen Cores laufen zu lassen...
Up Topic Hauptforen / CSS-Forum / Nucleus - neues Mehrhirn-Projekt

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill