Fair oder nicht fair? Ich habe nun von diversen Leuten in diversen Foren immer wieder gelesen, daß es unfair ist bzw. wäre, Brainfish mit den normalerweise üblichen Testbedingungen zu testen. Also mit fixen Vorgabestellungen, wie das in den meisten Ranglisten üblich ist. Oder mit einem vorgeschalteten Eröffnungsbuch. Daß also jede Engine in einem Wettkampf ein vorgeschaltetes Eröffnungsbuch benutzt, das von der GUI angesteuert wird - auch Brainfish. Daß also Brainfish wie eine ganz normale Engine behandelt wird.
Dies sei anderen Engines gegenüber unfair, weil Brainfish ja ein eingebautes Eröffnungsbuch besitzt, was andere Engines nicht besitzen. Und daher sollte man Brainfish nicht in Ranglisten aufnehmen.
Dazu möchte ich einen ausdrücklich gegensätzlichen Standpunkt vertreten. Und zwar aus einigen m.E. durchaus triftigen Gründen.
Zunächst möchte ich feststellen, daß es natürlich korrekt ist, daß Brainfish über eine eingebaute Datenbank mit z.Zt. ca. 4.5 Millionen Stellungen verfügt. Und es ist natürlich auch korrekt, daß andere Engines so eine Datenbank momentan nicht haben. Und es ist korrekt, daß Brainfish durch den Zugriff auf diese Datenbank Bedenkzeit einspart, die im späteren Partieverlauf für vertiefte Berechnungen verwendet wird.
Es ist somit völlig klar, daß Brainfish durch die Datenbank, also die Ceberellum Library, einen klaren Vorteil gegenüber konventionellen Engines hat.
Daraus aber zu folgern, daß dieser erlangte Vorteil anderen Engines gegenüber unfair sei, halte ich für zu oberflächlich gedacht. Warum?
Zunächst ist es so, daß sich die Ceberellum Library zwar so verhält, als sei sie ein konventionelles Eröffnungsbuch, indem Brainfish die aktuelle Brettstellung dort nachschlägt und falls er für diese Stellung einen Zug in der Library findet, diesen sofort ausspielt. Daß heißt aber noch lange nicht, daß die Library ein konventionelles Eröffnungsbuch ist. Denn ein konventionelles Eröffnungsbuch besteht entweder aus Stellungen/Zügen, die aus großen Partiedatenbanken statistisch erzeugt wurden, oder aus Zügen, die manuell eingetragen wurden. Oder aus einer Kombination dieser beiden Methoden.
Die Ceberellum Library besteht hingegen ausschließlich aus Stellungen/Zügen, die von der Stockfish-Engine (die Brainfish ja zugrunde liegt) selbst errechnet wurden. Daß heißt, daß Brainfish beim Zugriff auf die Library ausschließlich auf die Ergebnisse eigener, vorab durchgeführter, Berechnungen zugreift. Das unterscheidet die Library fundamental von jedem anderen, jemals erstellten Eröffnungsbuch. Und es entspricht zudem der üblichen Vorgehensweise starker, menschlicher Schachspieler, die auch in der Vorbereitung eigene Eröffnungszüge erarbeiten und in ihrem Gedächtnis speichern. Niemand käme auf die absurde Idee, einem Großmeister deswegen Unfairneß vorzuwerfen. Und ebenso wie Brainfish, spart auch ein menschlicher Schachspieler am Brett Bedenkzeit ein, wenn er auf Eröffnungszüge aus seinem Gedächtnis zugreift, die er sich zuvor in der häuslichen Analyse erarbeitet hat.
Das Abspeichern früherer Berechnungen und das erneute Zugreifen auf diese Berechnungen, so wie es die Ceberellum Library macht, ist also lediglich ein neues Feature, daß es so in anderen Engines (noch?) nicht gibt. Zudem ähnelt dieses Feature prinzipiell durchaus dem Konzept der Hashtables, wo auch Berechnungen abgespeichert werden, damit später erneut darauf zugegriffen und so von früheren Berechnungen erneut profitiert werden kann. Und auch die Hashtables waren vor vielen Jahren mal ein solch neues Feature, daß andere Schachprogramme (bzw. Brettcomputer) nicht hatten. Ich kann mich nicht entsinnen, daß seinerzeit über unfaire Verhältnisse gejammert wurde. Stattdessen wurde das Konzept der Hashtables schnell zum allgemein üblichen Standard. Es gibt m.E. keinen rationalen Grund, es bei der Ceberellum Library anders zu machen. Jedem Schachprogrammierer steht es ja frei, dieses innovative, neue Feature auch zu implementieren. Das zugrundeliegende, geniale Prinzip der Rückwärtsberechnung/Angleichung von Stellungen, Bewertungen und Zügen, ist ja nicht geheim, sondern - ganz im Gegenteil - Thomas Zipproth und auch meine Wenigkeit haben es ja mehrfach ausgiebig erläutert. Ganz am Rande sei noch erwähnt, daß Hashtables heutzutage weit mehr Ressourcen (RAM) beanspruchen, als es Brainfish mit der Ceberellum Library tut, die z.Zt. nur ca. 35 MByte umfaßt, was im Vergleich zu heutzutage üblichen Hashtable-Größen lächerlich wenig ist.
Zudem ist die Ceberellum Library aus programmtechnischer Sicht weitaus anspruchsvoller und durchdachter als es Hashtables sind, eben wegen des genialen Prinzips der Rückwärtskalkulation, während Hashtables nur ganz simpel bereits bewertete Stellungen im RAM ablegen.
Zusammenfassend möchte ich also schlußfolgern, daß die Ceberellum-Library konzeptionell weit mehr Gemeinsamkeiten mit Hashtables, als mit einem Eröffnungsbuch hat. Man könnte sie schlechtestenfalls als Hybriden dieser beiden Konzepte betrachten. In jedem Fall ist sie ein innovatives, neues Feature der Schachprogrammierung. Daß andere Schachprogramme z.Zt. noch nicht über dieses Feature verfügen, liegt nur daran, daß Brainfish die erste Engine ist, die dieses Feature hat. Andere Engines können ja jederzeit nachziehen. Das Prinzip der Ceberellum Library ist, wie erwähnt, ja nicht geheim. Und jedes innovative Feature der Schachprogrammierung (Hashtables, Nullmove, LMR-Pruning usw.) war irgendwann mal neu und irgendwann mal in nur einem einzigen Schachprogramm implementiert. Hieraus Unfairneß abzuleiten halte ich für absurd! Sonst wären Schachprogramme heute noch auf dem Stand von vor 50 Jahren...
Dies ist meine Sicht dieses Themas. Nicht mehr, nicht weniger. Es bleibt abzuwarten, wie Brainfish mittel- und langfristig von der Community des Computerschachs behandelt werden wird und ob andere Engines irgendwann das Konzept der Cerebellum Library in irgendeiner Form übernehmen werden.
Stefan (SPCC)
Ich bleibe weiter auf dem Standpunkt, so lang es kein etablierter Standard in den Top-x Engines ist, sollte BF nicht in offiziellen/namhaften Ranglisten mit (sehr) kurzen Bedenkzeiten (<10 oder 15 Minuten) aufgenommen werden. Unterhalb dieser Zeit sind keine sinnvollen und aussagekräftige Vergleiche möglich oder notwendig.
Patrick Jansen schrieb:
Ich bleibe weiter auf dem Standpunkt, so lang es kein etablierter Standard in den Top-x Engines ist, sollte BF nicht in offiziellen/namhaften Ranglisten mit (sehr) kurzen Bedenkzeiten (<10 oder 15 Minuten) aufgenommen werden. Unterhalb dieser Zeit sind keine sinnvollen und aussagekräftige Vergleiche möglich oder notwendig.
Ich sehe nicht, warum du eine Unterscheidung zwischen Ranglisten mit kurzen und langen Bedenkzeiten machst. Entweder man hält das Brainfish-Konzept für geeignet, in Ranglisten getestet zu werden, oder nicht.
Das sehe ich nicht so.
Brainfish kann in jeder Liste auftauchen.
Wichtig ist aber dass man die Testbedingungen ausführlich darlegt insbesondere wenn auch die anderen Engines mit einem eigenen Buch spielen.
Hier ist es wichtig zu unterscheiden ob Brainfish in den ersten Zügen mit dem globalen Buch spielt oder ob es von anfang an mit seinem eigenen Buch spielt.
Solange man alles schön dokumentiert ist es stets fair.
Es ist sogar sehr interessant zu erfahren ob zb Brainfish gegen Stockfish(ohne Buch) besser performt als gegen Komodo oder Houdini (jeweils ohne Buch) ... .weil ja das Brainfish Buch mit Stockfish Bewertungen berechnet wurde.
Wenn man allerdings Tests durchführt um ein beliebiges Buch B mit dem festeingebauten Brainfish Buch zu verlgleichen, so wäre es nicht fair wenn Brainfish in den ersten Zügen vom Buch B gesteuert würde.
By Tom Paul
Date 2016-07-26 08:53
Upvotes 1
Stefan Pohl schrieb:
Zunächst ist es so, daß sich die Ceberellum Library zwar so verhält, als sei sie ein konventionelles Eröffnungsbuch, indem Brainfish die aktuelle Brettstellung dort nachschlägt und falls er für diese Stellung einen Zug in der Library findet, diesen sofort ausspielt. Daß heißt aber noch lange nicht, daß die Library ein konventionelles Eröffnungsbuch ist. Denn ein konventionelles Eröffnungsbuch besteht entweder aus Stellungen/Zügen, die aus großen Partiedatenbanken statistisch erzeugt wurden, oder aus Zügen, die manuell eingetragen wurden. Oder aus einer Kombination dieser beiden Methoden.
Die Ceberellum Library besteht hingegen ausschließlich aus Stellungen/Zügen, die von der Stockfish-Engine (die Brainfish ja zugrunde liegt) selbst errechnet wurden. Daß heißt, daß Brainfish beim Zugriff auf die Library ausschließlich auf die Ergebnisse eigener, vorab durchgeführter, Berechnungen zugreift. Das unterscheidet die Library fundamental von jedem anderen, jemals erstellten Eröffnungsbuch.
Stefan (SPCC)
Mein Engine Buch ~70 GB groß besteht auch ausschließlich aus Stellungen/Zügen, die von der Stockfish-Engine selbst errechnet wurden.
Das heißt, dass mein Stockfish beim Zugriff auf sein Buch ausschließlich auf die Ergebnisse eigener, vorab durchgeführter, Berechnungen zugreift.
Das unterscheidet die Library von diesem Buch in keinster weiße.
Tom Paul schrieb:
Mein Engine Buch ~70 GB groß [...]
Wahnsinnig gross
Kurt
Hallo Stefan
Sehr gut überlegt und beschrieben. Ich kann mich Deinen
Argumenten voll und ganz anschliessen.
Mfg
Kurt
By Benno Hartwig
Date 2016-07-26 09:53
Edited 2016-07-26 10:04
Upvotes 1
Thanx für die Darstellung deiner Gedanken. Stefan.
"unfair" ist meiner Meinung nach nicht das richtige Wort.
Du gibst Software in Testbedingungen, die du beschreibtst, und du erhältst Ergebnisse, die du beschreibst.
Ob man sich genau dafür interessiert oder nicht, muss dann jeder für sich überlegen.
Und welche Aussagen durch die Ergebnisse gerechtfertigt sind, ist zu überlegen.
Hier könnte man zu unpassenden, irgendwie eben auch "unfairen" Aussagen kommen.
Wir haben halt viellerorts einen Wettbewerb der Engines im herkömmlichen Sinne.
Brainfish ist schon ein Paket aus zwei Komponenten: Engine + Buch.
Ist schon irgendwie was anderes.
Du könntest ja auch ein Event ohne Tablebases starten, und dann einzelne Engines teilnemen lassen, die die Tablebases integriert haben.
"Kann doch jede Engine machen!"
Wäre IMHO auch fragwürdig.
Oder du startest ein Event auf einem Kern deines Rechners, aber eine Engine bringt noch eine Steckkarte mit, wo ein 8-Kern-Prozessor läuft.
"Kann doch jede Engine machen!"
Oder eine Engine nutzt zusätzlich die Rechenleistung deiner superduper-Grafikkarte.
"Kann doch auch jede Engine machen!"
Wirklich sinnvoll?
Oder es kommt jemand mit einem SF, dem er ein ganz übliches handgetuntes Buch an die Seite gestellt hat, ein Paket geformt hat.
"Kann doch jeder Engine-Entwickler ziemlich einfach machen!"
Interessiert sowas in einer Liste von ansonsten "nackten" Engines?
Solche Ranglisten fänd ich nicht sehr interessant. Du?
Andererseits auf jeden Fall:
Ja, die Brainfish-Idee ist superinteressant, wenn es um die Frage geht: wie bekomme ich einen möglichst spielstarken Schachspieler auf meinen Rechner. Toll dass Brainfisch entstanden ist! Und noch toller, wenn diese Idee weiterverfolgt wird!!
Die Leistungsfähigkeit hast du ja sehr überzeugend dargestellt.
Und deine Tests, Stefan, sind auch super interessant. Geben sie doch einen Eindruck davon, was Brainfish zu leisten imstande ist. Sonst hingen wir in der Luft. Und es wäre toll, wenn du hin und wieder weitere Einblicke geben könntest.
(Auch wenn ich mir nicht recht klar bin, wie man den Test so gestalten kann, dass man dem Brainfish-Ansatz wirklich gerecht wird.)
Ich denke, der Brainfish sollte in Konkurrenz stehen zu anderen Kombinationen aus Engine und Buch.
Hoffentlich Büchern, die der Engine wirklich zu mehr Erfolg verhelfen, (wie groß ist der Nutzen von echten Top-Büchern eigentlich tatsächlich?)
und dass in dieser Konkurrenz auch "nackte" Engines antreten, ist für den Vergleich und die Einordnung natürlich auch wichtig.
Benno
By Stefan Pohl
Date 2016-07-26 10:27
Edited 2016-07-26 10:44
Benno Hartwig schrieb:
Du könntest ja auch ein Event ohne Tablebases starten, und dann einzelne Engines teilnemen lassen, die die Tablebases integriert haben.
"Kann doch jede Engine machen!"
Wäre IMHO auch fragwürdig.
Der Fall könnte durchaus eintreten. Im Stockfishforum wurde das vor kurzem schon mal angestoßen, die 3- und 4-Steiner TBs in den Stockfishcode einzubauen. Wenn das passiert (oder vielleicht ist das bei einer anderen Engine schon insgeheim passiert?!?), was dann?
Selbst, wenn eine Rangliste (z.B. IPON) diese TBs extern erlaubt und zur Verfügung stellt, so wäre der Zugriff innerhalb des Engineprogrammcodes immer noch erheblich schneller und somit ein Vorteil gegeben. Willst du dann Stockfish aus den Ranglisten rauswerfen?
Benno Hartwig schrieb:
Oder du startest ein Event auf einem Kern deines Rechners, aber eine Engine bringt noch eine Steckkarte mit, wo ein 8-Kern-Prozessor läuft.
Externe Zusatzhardware hat es doch schon gegeben. Chessmachine hieß das Teil, glaube ich. Wurde in der SSDF getestet. Generell, zu Brettcomputerzeiten war es normal, daß jede "Engine" eigene Hardware genutzt hat. So what? Man müßtee natürlich in der betreffenden Rangliste ggf. darauf hinweisen, daß ein zusätzliches Hardwarepaket dabei ist.
Benno Hartwig schrieb:
Oder eine Engine nutzt zusätzlich die Rechenleistung deiner superduper-Grafikkarte.
Auch darüber wurde im Stockfishforum vor kurzem gesprochen. Scheint aber nicht sinnvoll zu sein. Aber wenn es gemacht würde, und was bringt, warum nicht? Würden andere Engines allerdings auf nur einen CPU-Kern beschränkt (1 Thread), dann sollte man das wohl nicht zulassen.
Benno Hartwig schrieb:
Oder es kommt jemand mit einem SF, dem er ein ganz übliches handgetuntes Buch an die Seite gestellt hat, ein Paket geformt hat.
"Kann doch jeder Engine-Entwickler ziemlich einfach machen!"
Interessiert sowas in einer Liste von ansonsten "nackten" Engines?
Naja, deswegen betone ich ich ja so ausdrücklich, daß die Cerebellum Library eben nicht handgemacht und handgetunt ist, sondern von Stockfish selbst berechnet wurde. Das ist ein so bedeutender und prinzipieller Unterschied, daß ich in diesem Fall eine Engine mit einem normalen, konventionellen Buch nicht zulassen würde.
Benno Hartwig schrieb:
Ja, die Brainfish-Idee ist superinteressant, wenn es um die Frage geht: wie bekomme ich einen möglichst spielstarken Schachspieler auf meinen Rechner. Toll dass Brainfisch entstanden ist! Und noch toller, wenn diese Idee weiterverfolgt wird!!
Die Leistungsfähigkeit hast du ja sehr überzeugend dargestellt.
Und deine Tests, Stefan, sind auch super interessant. Geben sie doch einen Eindruck davon, was Brainfish zu leisten imstande ist. Sonst hingen wir in der Luft. Und es wäre toll, wenn du hin und wieder weitere Einblicke geben könntest.
(Auch wenn ich mir nicht recht klar bin, wie man den Test so gestalten kann, dass man dem Brainfish-Ansatz wirklich gerecht wird.)
Ich denke, der Brainfish sollte in Konkurrenz stehen zu anderen Kombinationen aus Engine und Buch.
Hoffentlich Büchern, die der Engine wirklich zu mehr Erfolg verhelfen, (wie groß ist der Nutzen von echten Top-Büchern eigentlich tatsächlich?)
und dass in dieser Konkurrenz auch "nackte" Engines antreten, ist für den Vergleich und die Einordnung natürlich auch wichtig.
Benno
Thanx
Ich denke die Sache wie folgt auf des Pudels Kern zu bringen:
Warum wurden die Cerebellum-Daten überhaupt in die Engine-Exe integriert? Warum werden sie nicht einfach als externes Enginebuch, wie man es von vielen Engines kennt, beigelegt? Standard-Stockfish müßte dann nur um einen entsprechenden Zugriffscode erweitert werden um zu Brainfish (besser vielleicht "Bookfish") zu werden, und alles wäre ganz normal.
Ob die Buchzüge von Stockfish selbst bewertet bzw. vorberechnet wurden, oder nur der Statistik menschlicher Spieler entspringen, macht hinsichtlich Fairneß keinen Unterschied. Buch ist Buch. Wenn es auf Ranglisten und in Bewerben heißt,
kein Eigenbuch, dann geht das eben nicht.
Bei mir zu Hause bin ich liberal
und da lasse ich "außergewöhnliche" Eigenbücher mitunter gerne mitspielen, wie z.B. seinerzeit auch bei ProDeo. Allerdings wird für diese Engines dann eine Nutzung meines allgemeinen Buches abgeschaltet (welches vermutlich ohnehin schlechter ist). Ent- oder weder.