Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Statistiker an die Front
- - By Johannes Ozymandias Date 2013-12-16 19:30 Edited 2013-12-16 19:34
Salvete amici,

ich hoffe, daß ich mit der folgenden Frage nicht etwas anspreche,
was hier oder anderwärts schon vielfach diskutiert und/oder vielleicht
sogar gut beantwortet worden ist. Falls doch, bitte ich die Kundigen
bloß um einen entsprechenden weiterführenden Hinweis.

Hintergrund der Frage ist eine Unterhaltung, die ich jüngst mit einem
befreundeten FM führte. Sein Name und seine Elozahl tun hier nichts
zur Sache, ich halte ihn jedenfalls für einen starken Schachspieler, was
nur insofern wichtig ist, als mir manches von dem, was er mir erzählte,
befremdlich naiv erschien. Einer entsprechenden Wertung habe ich mich
freilich enthalten, weil mir der statistische Background dafür fehlt. Dem
soll hier abgeholfen werden.

Im Verlauf besagter Unterhaltung erzählte er mir zum einen, daß er zu
Traningszwecken viel Fernschach spielt, und zum anderen, daß er zu
diesem Behufe seine Engines, namentlich den aktuellen Platzhirsch auf
diesem Gebiet, manchmal tagelang an einer Stellung rechnen läßt, um
auf eine möglichst große Rechentiefe zu kommen und so die resultierende
Stellungsbewertung zu verbessern. Ich fragte ihn, ob er denn glaube, daß
es noch einen wesentlichen Unterschied ausmache, ob sein Programm
(egal welches, nennen wir es der Einfachheit halber Hoaxini) nun 30
oder 32 Halbzüge tief rechnet. Diese Frage hat er bejaht - und dabei
auch Erfahrungen angedeutet, in denen der Unterschied sich als
wesentlich sowohl für die Bewertung der Stellung wie auch für den
weiteren Partieverlauf erwiesen habe.

Das kann ich nicht so recht glauben - was zu folgender Frage führt:

In einem fiktiven Testszenario spielen zwei Engines gegeneinander.
Die Engines und ihre Parametrierung sind bis hin zur Größe der
Hashtables identisch(!) und auch ihr Biotop (sprich: Hardware, OS,
dessen Konfiguration, GUI usw.) ist absolut gleich. Engine A jedoch
ist darauf programmiert, nur exakt 1 (i.W.: einen) Halbzug tief zu
rechnen, während Engine B exakt 2 (i.W.: zwei) Halbzüge tief
rechnet. Dann ist (vermutlich) davon auszugehen, daß die
Gewinnerwartung von Engine B deutlich höher liegt als die von
Engine A. Liege ich damit noch einigermaßen richtig? Ich habe
keine noch so vage Vorstellung davon, um wieviel höher genau
die Gewinnerwartung von B liegt, gehe aber von einem erklecklich
hohen Wert X aus, der hier der Einfachheit halber auf den
hypothetischen Wert 100 normiert sei.

Im zweiten Versuch lassen wir Engine_A dann 2HZ tief rechnen
und Engine_B 3HZ.
Im dritten Versuch lassen wir Engine_A dann 3HZ tief rechnen
und Engine_B 4HZ.
[usw.]
bis - sagen wir mal - 30HZ (Engine_A) und 31HZ (Engine_B)
erreicht sind.

Ich würde dann erwarten, daß mit jedem weiteren Schritt auf
dieser Leiter der Wert X abnimmt - und zwar in Form einer sich
gegen Null abflachenden Kurve mit dem von mir aus dem Bauch
heraus behaupteten Resultat, daß bei dem Vergleich 30HZ/31HZ
die Gewinnerwartung von Engine_B nur noch wenig, vielleicht
sogar nur minimal/unerheblich größer ist als die von Engine_A;
will sagen, der oben beschriebene Wert X dürfte dann dann
von 100 auf nur noch 3 bis 5 geschrumpft sein.

Gibt es dazu bereits verläßliche Untersuchungen/Berechnungen
oder gar Erfahrungswerte? Wenn ja: Wo kann ich mich darüber
genauer informieren? Wenn nein: Was wäre das angewiesene
Verfahren, hierüber zu brauchbaren Aussagen zu kommen? Der
sicher beschwerlichste, zugleich aber auch aussagekräftigste
Weg wäre doch wohl, entsprechende Simulationen mit einer sehr
hohen Zahl von Partien zu starten, aber um eine belastbare Aussage
über den Vergleich 30HZ/31Hz zu treffen, wird man die erforderliche
große Zahl nicht erreichen können. Deshalb die Gretchenfrage: Läßt
sich allein von dem geschilderten hypothetischen Testszenario aus
eine statistische Aussage über die prospektive Veränderung der
Gewinnerwartung machen?

[Randbemerkung:] Hilfreich wären für mich auch bereits angestellte
punktuelle Beobachtungen der Art, daß sich die von Engines
ausgespuckten Bewertungen ab einer bestimmten Tiefe von
beispielsweise 25 auf 26 Halbzüge nur noch sehr sehr selten (oder
umgekehrt: sehr oft) wesentlich ändern bzw. verbessern.

Für sachliche und sachdienliche Hinweise aller Art wäre dankbar

** JO **
Parent - - By Tom Paul Date 2013-12-16 20:00
Was verstehst du unter einem wesentlichen Unterschied?

Für mich ist 30 in den meisten Fällen ausreichend, aber eben nicht immer und da brauche ich dann einfach 31, 32, 33 oder mehr.
Weil Stockfish mehr Zeit/Tiefe braucht um die korrekte Bewertung anzuzeigen oder den besten Zug zu finden.

Habe das auch oft im nTCEC gesehen, dass Stockfish den besten Zug nicht fand, weil etwas Tiefe fehlte, was ich eben auf meiner Hardware mit mehr Tiefe sehen konnte.
Oder Stockfish fand den besten Zug aber er hatte ihn z.B. mit +0.50 anstatt mit +1.50 bewertet.

Interessanterweise findet Stockfish den besten Zug im Multivariantenmodus viel öfter.
Evtl. sollte Stockfish im nächstem nTCEC mit Multi 4 spielen.
Parent - - By Johannes Ozymandias Date 2013-12-16 20:23
Sorry, da liegt ein erhebliches Mißverständnis vor:

Ich habe nicht danach gefragt (und schon gar nicht
bezweifelt), ob etwas mehr Rechentiefe einen erheblichen
Unterschied für den Partiverlauf ausmachen kann (denn das
steht doch wohl außer Frage), sondern ob eine belastbare
statistische Aussage darüber möglich ist, wie sich in dem
beschriebenen Testszenario die Gewinnerwartung von Engine_B
gegenüber der (immer einen Halbzug weniger rechnenden)
Engine_A verändert. Mich interessiert also i.w., ob sich
der Funktionsverlauf verläßlich beschreiben oder beziffern läßt.
Anders formuliert: Beim Vergleich von 1HZ zu 2HZ dürfte der
Unterschied so beträchtlich sein, daß Engine_B deutlich
mehr Partien gewinnen wird als Engine_A. Um wieviel niedriger
(wenn überhaupt) fällt dann die Gewinnerwartung von Engine_B
bei schrittweise steigender Rechentiefe aus?

Viele Grüße reihum von

** JO **
Parent - By Klaus Meier Date 2013-12-17 08:53
Manchmal sollte man wohl auch selbst mal in der Lage sein,
die dafür nötigen Experimente durchzuführen, um sich solch eine Frage selbst zu beantworten.
Parent - - By Jörg Oster Date 2013-12-16 20:15
Das nennt man "Diminishing returns". Schau mal hier: https://chessprogramming.wikispaces.com/Depth

Gruß, Jörg.
Parent - - By Johannes Ozymandias Date 2013-12-16 20:46
Danke, das ist schon mal ein toller Tip ganz in meinem
Sinne - sieht man davon ab, daß ich mit dem Abarbeiten
der dort zu findenden Literaturhinweise bis Weihnachten
2014 beschäftigt sein dürfte.
  
Immerhin glaube ich aus den Ausführungen, bes. den
exemplarischen Tabellen des Artikels eine Bestätigung
meiner eigenen These herauslesen zu können. Dort
ist zwar nicht von Gewinnerwartung, sondern von
Elo-Differenzen die Rede, aber das könnten ja auch
Synonyme sein. Wesentlich für mich ist, daß bei
steigender ply-Zahl (das sind doch die Werte für die
Rechentiefe in Halbzügen, richtig?) die Elo-Unterschiede
tendenziell immer kleiner werden. Leider sind dort nur
HZ-Werte bis 12 zu finden. Weiß jemand, wie sich das
jenseits der 20 bis 30 HZ weiterentwickelt? Oder kann
mir einen ungefähren Anhaltspunkt dafür nennen?
Konkret gefragt: Nehmen wir rein hypothetisch an,
daß die Engine_A bei 30HZ Rechentiefe genau eine
(ebenso hypothetische) Elozahl von 3000 hat. Um
wieviel höher könnte dieser Wert dann bei 31HZ
Rechentiefe liegen: Ist mit mehr als als 5 Punkten
zu rechnen? Oder gar mit 30 oder 50?

Viele Grüße reihum von

** JO **
Parent - By Michael Scheidl Date 2013-12-17 01:41
Leider ist das schwer zu testen, nicht nur weil das auf solchen Tiefen sehr zeitaufwendig wäre. Aber welche GUI erlaubt Enginematches auf unterschiedlichen fixen Rechentiefen je Engine?

In Fritz kann man je Engine einen Zeitaufschlag f.d. Bedenkzeit definieren, was eine brauchbare Näherung sein könnte: Es ist je Engine unterschiedlich, aber derzeit bewirken +90% ungefähr einen Halbzug mehr.

Siehe auch http://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?pid=61201
Parent - By Stefan Pohl Date 2013-12-17 08:52
Johannes Ozymandias schrieb:

Wesentlich für mich ist, daß bei
steigender ply-Zahl (das sind doch die Werte für die
Rechentiefe in Halbzügen, richtig?) die Elo-Unterschiede
tendenziell immer kleiner werden. Leider sind dort nur
HZ-Werte bis 12 zu finden. Weiß jemand, wie sich das
jenseits der 20 bis 30 HZ weiterentwickelt? Oder kann
mir einen ungefähren Anhaltspunkt dafür nennen?


Hilfreich ist, die Erhöhung der Suchtiefe prozentual zu berechnen (als Anhaltspunkt).
Beispiel: Erhöhung der Tiefe von 10 auf 11 = +10% Zunahme der Suchtiefe. Gibt gemessene X Elo Zuwachs. Nun (gedanklich): Erhöhung der Tiefe von 30 auf 31 = +3.33% Zunahme der Suchtiefe. Das gäbe dann einen geschätzten Elozuwachs von X*(3.33/10), also in diesem Fall ca. ein Drittel des Wertes, der bei Eröhung von 10 auf 11 gemessen wurde.

Stefan
Parent - - By Benno Hartwig Date 2013-12-17 07:33 Edited 2013-12-17 07:35
Sorry, ich habe keinen 'sachlichen HInweis'.
Aber ich wollte einfach anfügen, dass ich solch eine Betrachtung auch superinteressant fände!

Durchgeführt für verschiedene Engines.
Wie steigen die Houdini-Spielstärken an, wie die Stockfish-Stärken und wie die von Komodo.
Vielleicht käme hier auch eine bestätigender Hinweis für die Thesen:
- Houdini kann mit steigender Tiefe vglw. wenig an Stärke gewinnen
- Stockfish macht daraus mehr
- Komodo profitiert davon am meisten.
(Oder auch nicht)

Im Auge behalten muss man dabei aber auch der unterschiedlichen Zeitbedarf für den jeweligen Extraply.
SF braucht ggf. am wenigsten Zeit um einen ply tiefer zu kommen.

Benno
Parent - - By Johannes Ozymandias Date 2013-12-17 16:22
Zitat:
Durchgeführt für verschiedene Engines.
Wie steigen die Houdini-Spielstärken an, wie die Stockfish-Stärken
und wie die von Komodo. Vielleicht käme hier auch eine bestätigender
Hinweis für die Thesen:
- Houdini kann mit steigender Tiefe vglw. wenig an Stärke gewinnen
- Stockfish macht daraus mehr
- Komodo profitiert davon am meisten.


Ja, super, das hatte ich (noch) gar nicht im Blick, weil
ich irgendwie - und zwar vermutlich zu Unrecht - davon
ausging, daß das Phänomen bei allen Engines strukturell
ähnlich ausgeprägt sei. Aber das wäre erst noch zu beweisen
(oder zu widerlegen). An der Gewinnung statistisch fundierter
Aussagen dieser Art wäre ich jedenfalls auch sehr interessiert.
Wie es scheint, ist freilich ein Großversuch dieser Art noch nicht
unternommen worden - vermutlich weil er für Rechentiefen
jenseits der 20HZ oder gar der 25HZ außerordentlich
ressourcenfressend wäre. Mal sehen: Wenn im neuen Jahr
meine nächste PC-Beschaffung ansteht, könnte ja der alte
Rechner (ein i7-980X mit 6 Kernen) für eine solche Aufgabe
umfunktioniert werden. - In diesem Zusammenhang die nicht
ganz unwesentliche Frage: Weiß jemand, ob es eine Chess-GUI
gibt, in der die von mir beschriebenen Vorgaben (i.w.: Stop
des Rechenprozesses bei einer bestimmten HZ-Tiefe, nach
Engine getrennt) umgesetzt werden können? Kann Arena das?

Viele Grüße reihum von

** JO **
Parent - - By Michael Scheidl Date 2013-12-17 16:33
Ja das stimmt Arena (2.0.1) kennt im Engineturnier auch Rechentiefe-Stufen. Allerdings nur generell, nicht für jede Engine einzeln.

Leider führt das zu einer kaum kontrollierbaren Verzerrung im Vergleich zu Zeitkontroll-Stufen. Nicht nur, daß eine RT. von X bei verschiedenen Engines sehr verschiedene Bedenkzeiten erfordern kann, es kommt noch dazu daß manche Ausgaben (Stichwort Rybka) gefaket sein könnten.

D.h. Rechentiefe-Stufen sind eher experimentell, und werden im Resultat immer das Handicap des Zweifels in sich tragen. Als fair gelten normale Zeitkontrollen unter ansonsten identischen Bedingungen.
Parent - By Guest Date 2013-12-17 16:59
dann muss man das so machen wie die tester der ssdf. händisch! dauert zwar etwas, aber für ein uni-projekt langt das alle male.
dann berichte bitte, wenn es so weit ist. wir sind alle gespannt auf die erkenntnisse...
Parent - - By Ingo B. Date 2013-12-17 16:31
Benno Hartwig schrieb:

....
Durchgeführt für verschiedene Engines.
Wie steigen die Houdini-Spielstärken an, wie die Stockfish-Stärken und wie die von Komodo.
Vielleicht käme hier auch eine bestätigender Hinweis für die Thesen:
- Houdini kann mit steigender Tiefe vglw. wenig an Stärke gewinnen
- Stockfish macht daraus mehr
- Komodo profitiert davon am meisten.
(Oder auch nicht)
...


Der Vergleich ist schwierig weil Tiefe 25 für Stockfish, Houdini und Komodo jeweils etwas anderes bedeutet ... leider. "Macht daraus mehr" ist also schwierig ... Der einzige Faktor der wirklich bei allen gleich ist ist Zeit.

Gruß
Ingo
Parent - - By Benno Hartwig Date 2013-12-17 20:19
Vergleiche mit Suchtiefeneinstellungen von verschiedenen Engines sind natürlich kaum sinnvoll.
Aber reine Komodo-, Stockfish- oder Houdini-Testreihen fänd' ich schon interessant.

Es an der Suchtiefe festzumachen, ist ein so schön klares Kriterium.
Aber die eine Engine braucht für den weiteren Ply ggf. die doppelte Zeit, die andere die zweieinhalbfache.

Darum wäre wohl genau so interessant, Zeitvorgaben für die Züge zu machen.
Also z.B. ein reines Stockfish-DD-Turnier mit einer 0,25s/Zug-, 0,5s/Zug-, 1s/Zug-, 2s/Zug-, 4s/Zug-, 8s/Zug-, 16s/Zug-, 32s/Zug-Engine.
Ggf. auch jeweils nur Zweikämpfe der in dieser Reihe benachbarten Engines.

Aber mit welcher GUI sich so was automatisiert durchführen lässt, weiß ich nicht.

Benno
Parent - - By Guest Date 2013-12-17 20:50
Benno Hartwig schrieb:

Vergleiche mit Suchtiefeneinstellungen von verschiedenen Engines sind natürlich kaum sinnvoll.
Aber reine Komodo-, Stockfish- oder Houdini-Testreihen fänd' ich schon interessant.
...


OK, Testreiehen innerhalb einer Engine ja.

Danach aber zu sagen S-DD gewinnt X Elo beim Schritt von 20 auf 21 Elo und Komo gewinnt bei 20 auf 21 X-y (oder X+y) Elo, also ist S oder K besser ist Mumpitz. Das wollte ich nur klarstellen.

Im Allgemeinen gehe ich von einem abnehmendem Grenznutzen aus. Die Effizens mag in den letzten Jahren gestiegert worden sein*, das Prinzip schint mir aber schlüssig.

* Wo vor vielen Jahren ein Cray Blitz vielleicht bei 15 auf 16 Plys praktisch nichts mehr gewonnen hat sind wir heute womöglich tiefer, aber trotzdem steht das Prinzip (für jede Engine)
Interessanterweise könnte man vielleicht sagen (Hypothese): Von 1 auf 2 Minuten pro Zug ist der Gewinn gewaltig, von 60 auf 61 Minuten irrelevant ... und das gilt unabhänig von der Hardware und der Software! ... Zeit ist eine Konstante

Gruß
Ingo
Parent - By Benno Hartwig Date 2013-12-18 08:51

> Wo vor vielen Jahren ein Cray Blitz vielleicht bei 15 auf 16 Plys praktisch nichts mehr gewonnen hat sind wir heute womöglich tiefer, aber trotzdem steht das Prinzip


Ich vermute, auch heute bringt der Wechsel von 15 auf 16 Plys nicht mehr als damals, und der Wechsel von 25 auf 26 noch mal deutlich weniger.

Aber damals benötigte man annähernd die 6-fache Zeit für den zusätzlichen Ply.
(Hoffe, dass meine Erinnerung korrekt ist. Reines alpha-beta will, wenn alles optimal läuft, für jeden Ply durchschnittlich ungefähr die Quadraturzel(Anzahl legaler Züge)-fache Zeit.)
Und heute kommen wir oft mit ca. Faktor 2 aus.

Der eine zusätzliche Ply machte damals viel Mühe.
Heute bekommen wir aber für dieselbe Mühe ca. 2,5 zusätzliche Plys

Benno
Parent - - By Frank Brenner Date 2013-12-17 17:04
Die Frage lässt sich sehr schwer beantworten weil hier zwei Effekte gemischt werden beim  nTCEC und beim Turnier von Clemens Keck:

Bei den o.g. Turnieren haben die Engines jeweils 16 bzw 12 Cores.

Es kann durchaus sein, dass die Implementierung der parallelen Suche bei Houdini für so viele Cores sehr schlecht ist.

Bei den anderen Tests von Ipon , Cegt und  usw... werden meistens 1 Core oder maximal 4 cores verwendet. Es ist gut möglich, dass Houdini hier  auch bei hohen Bedenkzeiten auch führen könnte.

Vielleicht schneidet also Houdini nur wegen der vielen cores so schlecht ab.
Parent - - By Benno Hartwig Date 2013-12-18 08:59

> Vielleicht schneidet also Houdini nur wegen der vielen cores so schlecht ab.


Das ist denkbar.
Vermutet wird ja auch, dass H bei sehr kurzen Zeiten im Vergleich saustark ist, dass die Überlegenheit bei längeren Zeiten aber schrumpft. (ganz so wie damals beim Rybka-Ipollit-Vergleich)
Und dass eine Engine ggf. mit sehr vielen Cores wenig anzufangen weiß, kann ich mir sehr gut vorstellen.

Hier hatten wir eben ein Event mit Super-Ressourcen.
Mich würde ja brennend eine Wiederholung interessieren mit gleichen Regeln aber 1/4 der Zeit und der 4-fachen Partienzahl.
Die größere Partienzahl würde halt etwas mehr Aussagekraft hiter die Turnierergebnisse bringen. Und die durchschnittlich dann 2 Plys weniger pro Zug erscheinen mir leichter verschmerzbar.
Und dann im Herbst wieder sehr gern ein 120min-Event.

Benno
Parent - - By Frank Brenner Date 2013-12-18 10:53
Spannender wäre für mich eine Wiederholung mit 6 facher Bedenkzeit, aber auf einem Core. Dann können 12 Spiele simultan gespielt werden.

So könnten wir herausfinden ob die Schwäche von Houdini an den vielen Cores oder tatsächlich an der hohen Bedenkzeit liegt.

(6 fache Beddenkzeit auf 1 core, entspricht etwa einfache Bedenkzeit auf 12 Cores)
Parent - By Benno Hartwig Date 2013-12-18 14:32

> Spannender wäre für mich eine Wiederholung mit 6 facher Bedenkzeit, aber auf einem Core. Dann können 12 Spiele simultan gespielt werden.


Ich denke, es sollte diese heute noch ungewöhnliche Maschine genutzt werden für Experimente, die eben nur auf solch einer Maschine nachbar sind.
--> viel Hash und viele Kerne.
Lange rechnen lassen kannst du die Engines ja schließlich auf jedem Hobel, der irgendwo rumsteht.
Benno
Up Topic Hauptforen / CSS-Forum / Statistiker an die Front

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill