Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Was-wäre-wenn-Turniere
- - By Joe Boden Date 2014-09-23 11:37
Schon komisch, aber die meisten regulären Engine-Turniere werden über Bedenkzeiten gespielt. Da siegen natürlich meistens die Engines, die besonders schnell besonders tief rechnen.

Was passiert aber, wenn man die Rechentiefe für alle Engines fest einstellt? Dann würde sich doch viel besser erweisen, inwieweit ein Programm schachlich besser spielt als ein Vergleichsgegner. Wurde dieser Ansatz hier eigentlich schon diskutiert?

Objektiv wäre das doch im Sinne der Chancengleichheit angezeigt.
Parent - By Tom Paul Date 2014-09-23 12:57
Es wäre interessant Komodo/Stockfish so zu tunen, dass die Engine je nach eingestellter Tiefe so stark wie möglich spielt.
Parent - By Ralf Mueller Date 2014-09-23 13:42
Hallo Joe,
ja, das wurde schon oft diskutiert. Das scheitert allerdings daran, dass die Suchtiefe bei jeder Engine etwas anderes heißt. Bei Rybka wurde gar die Suchtiefe um zwei Halbzüge zu niedrig angegeben, um den Eindruck einer wissensbasierten Engine zu verstärken.
1 Ply im neusten Stockfish heißt also nicht unbedingt das gleiche wie 1 Ply im neuesten Komodo. Auch die noch darauf folgende Ruhesuche kann sehr unterschiedlich gestaltet sein.
Parent - - By Michael Scheidl Date 2014-09-23 17:35
Über einen gleichen Bedenkzeitrahmen, und selber Anzahl Cores, gleichviel Hash usw., wird Engines dieselbe Computerkapazität zur Verfügung gestellt. Nur das halte ich für fair. Anderes kann interessant sein, ist aber "experimentell" und sollte zu keiner Aussage über die relativen Stärken und Schwächen verleiten.

Engines können ja im Detail sehr unterschiedlich bei ihrer Suchweise sein. Soweit ich glaube verstanden zu haben, bevorteilt fixe Tiefe Engines die einen breiten Suchbaum durchforsten - und somit im allgemeinen weniger schnell auf Tiefe kommen, und benachteiligt jene die einen schmalen Baum generieren. Das ist natürlich ganz vereinfacht beschrieben.

Stockfish wäre sicherlich bei fixer, gleicher RT. schwerst kastriert. Ein Gegenbeispiel fällt mir ad hok nicht ein.
Parent - By Benno Hartwig Date 2014-09-24 15:31 Edited 2014-09-24 15:34

> Ein Gegenbeispiel fällt mir ad hok nicht ein.


Rybka wird vermutlich dann die unangefochten Nr. 1 der fixe-Rechentiefe-Computerrangliste.
Eigentlich sollte ich einen Rechner mal 2 Nächte laufen lassen um zu sehen, ob und in welcher Heftigkeit sich meine These bestätigen lässt.
Aber einen Wert hätte ein derartiger Nr-1-Platz nicht.
Und Rückschlüsse auf die Qualität der Bewertung würde das auch nicht gestatten.

Benno
Parent - - By Benno Hartwig Date 2014-09-24 15:43 Edited 2014-09-24 15:45

> Über einen gleichen Bedenkzeitrahmen, und selber Anzahl Cores, gleichviel Hash usw., wird Engines dieselbe Computerkapazität zur Verfügung gestellt. Nur das halte ich für fair.


+1

> Anderes kann interessant sein, ist aber "experimentell"


Ja. Fixe Rechentiefen könnten z.B. nützlich sein, wenn man mal herausfinden möchte, ob und in welchem Maße die Qualität von Zügen einer Engine bei bestimmten Rechentiefen von Kriterien wie "Anzahl Cores" oder auch "MV-Modus" oder ... abhängen.
Fragen wie:

"Entsteht durch die Nutzung mehrerer Kerne zwar mehr Geschwindigkeit, aber ggf. auch ein gewisses Maß an Unschärfe? An Verschlechterung?"

Die Bewertungen und Rechenzeiten sind dann ja nicht mehr wirklich reproduzierbar. Tendenziell nachteilig? Oder etwa sogar ein Vorteil??

"Haben bei MV=2 oder MV=5 die generierten Züge im Durchschnitt eine etwas bessere Qualität als im normalen Spiel (MV=1)?"
Einzelne Meldungen und Beispiele hier haben solch eine These ja nahegelegt.

Benno
Parent - - By Michael Scheidl Date 2014-09-24 15:56
Soweit ich glaube verstanden zu haben, was nicht viel ist: Eine Multicore-Suche hat bei gleicher Tiefe einen breiteren Suchbaum. Müßte also tendenziell besser/verläßlicher sein...

(ohne Gewähr )
Parent - By Benno Hartwig Date 2014-09-24 16:48

> Eine Multicore-Suche hat bei gleicher Tiefe einen breiteren Suchbaum


Wäre schon mal einen Test wert.
Da wo der Suchbaum nur deshalb breiter ist, weil ein immer verlustfreier beta-cut mangels Wissen nicht möglich war (passiert bei Parallelbetrieb vermutlich immer mal wieder), wird uns diese größere Breite aber sicher keine bessere Bewertung bringen.

Wenn ich einen Zug nicht mache, weil ich erkannt habe, dass mein Gegner dann ein Matt in 5 gegen mich hat, dann spiele ich auch nicht dadurch stärker, dass ich außerdem noch erkenne, dass er mit einer anderen Antwort dann sogar ein Matt in 4 gegen mich hat.


Benno
Parent - - By GS Date 2014-09-23 19:12
Joe Boden schrieb:

Schon komisch, aber die meisten regulären Engine-Turniere werden über Bedenkzeiten gespielt. Da siegen natürlich meistens die Engines, die besonders schnell besonders tief rechnen.

Was passiert aber, wenn man die Rechentiefe für alle Engines fest einstellt? Dann würde sich doch viel besser erweisen, inwieweit ein Programm schachlich besser spielt als ein Vergleichsgegner. Wurde dieser Ansatz hier eigentlich schon diskutiert?

Objektiv wäre das doch im Sinne der Chancengleichheit angezeigt.


Auh ja, das wäre Klasse.
Ein einziges Spiel Stockfish vs T.rex mit fester Tiefe=18 auf
einem i5 mit 3.1GHz würde dann ca. 2-3 Wochen dauern.
Stockfish hätte gesamt 2-3 Sekunden an Bedenkzeit verbraucht,
T.rex den Rest der Zeit verbraten.
Tolle Idee ...
Parent - - By Joe Boden Date 2014-09-23 19:22
Warum so ironisch Gerhard. Michael Scheidl hat dazu was brauchbares gepostet.

Es ist doch vollkommen klar, dass Engines unterschiedlich ticken. Die einen rechnen schnell auf Tiefe, die anderen gehen mehr in Breite. Wieder andere rechnen noch verdeckt und ultraselektiv etwas tiefer als angezeigt wie K8 usw usw. Ply ist wohl nicht gleich Ply. usw usw

Was wäre denn im Sinne von Chancengleichheit und Objektivität von Teststaffeln wünschenswert und machbar ohne Monate zu warten.

Reine Bedenkzeitturniere können unmöglich die schachlichen Fähigkeiten im objektiven Vergleich abbilden. Da geht es nur um Punkte und sportlichen Programmierehrgeiz.

Jetzt bin ich mal gespannt, wie sehr Du das Thema hier erhellen kannst???
Parent - By Michael Scheidl Date 2014-09-23 19:24
Zitat:
Michael Scheidl hat dazu was brauchbares gepostet.

Das ist aber zum Teil stimmungsabhängig.
Parent - - By GS Date 2014-09-23 20:02
Dann mal so herum (last try):
ich bin Autor einer Schachengine und sehe diesen Aufruf.

Also gehe ich hin, da ich meiner Engine einen Vorteil verschaffen will,
und baue den Output so um, dass meine Engine nur sehr sehr sehr langsam,
nach aussen hin versteht sich, auf Tiefe kommt.

Für wen oder was brächte solch ein "Test" Erkenntnisse ?
Was würden die "Ergebnisse" solch eines "Tests" aussagen ?
Parent - - By Joe Boden Date 2014-09-23 20:30
Da stimme ich Dir zu. Aber eine Lösung für einen objektiven Vergleich hast Du leider auch nicht anzubieten.
Parent - - By Michael Scheidl Date 2014-09-23 20:31
Wieso sollte der übliche Vergleich: Gleicher Zeitrahmen, gleiche Hardware kein objektiver sein?
Parent - - By Joe Boden Date 2014-09-23 21:10
Das ist doch offensichtlich. Bei gleicher Zeit gewinnt die Engine, die ihre technischen Ressourcen besser verwerten kann.

Stell Dir mal einen Augenblick ein Rennen vor. Zwei Fahrer sagen wir stehen am Start. Der am schnellsten am Ziel ankommt hat gewonnen. Zeitfaktor eben. Der eine fährt Ferrari, der andere Opel Corsa.
Da ist doch klar, dass der Ferrari gewinnt, selbst wenn die Corsa-Fahrer der bessere Fahrer wäre, er sitzt nur im falschen Auto. Dieses Theater konnten wir doch jährlich in der Formel 1 erleben. Fahrertausch, Autotuning usw...

Wir fragen dann nicht mehr, wie wohl Fahrer xy auf Auto sowieso abgeschnitten hätte. Hauptsache der Punkt ist daheim. Wer die Kurven am schönsten fährt und gefühlvoller schalten kann spielt bei Reduktion auf einen Faktor praktisch keine Rolle mehr. Schönheit und Tiefe des Schachs wird zu einem Nebenprodukt.
Parent - - By Robert Richter (Mod.) Date 2014-09-23 22:04 Upvotes 1
Joe Boden schrieb:

Das ist doch offensichtlich. Bei gleicher Zeit gewinnt die Engine, die ihre technischen Ressourcen besser verwerten kann.



Ich dachte genau darum geht es in Engine-Engine Tests? Letztendlich geht es doch darum die beste Software zu finden und das ist nun mal "(...)die, die ihre technischen Ressourcen besser verwerten kann"
Oder unterliege ich da einem Denkfehler? 
Parent - - By Joe Boden Date 2014-09-23 22:21 Edited 2014-09-23 22:24
Würdest Du Dir gerne ein Turnier anschauen, wo Fritz 1 auf Supercomputer gegen K8 auf i7 Quadcore spielt? Mich würde das nicht interessieren. Natürlich würde Fritz 1 gewinnen, aber würde Dich das befriedigen?

Mich würde interessieren, wie gross das schachliche Leistungsspektrum jenseits des Hardwarefaktors und moderner Programmiertechnologien ist bei beiden Programmen. Und ich glaube, wenn Testreihen ausbalanciert sind lässt sich das sogar ermitteln. Deswegen gibt es ja gerade bei vielen Sportarten ein handycap.

Im Schach gibt es Zeit und Figurenvorgaben, warum wohl?
Parent - - By Mythbuster Date 2014-09-23 22:26
Das Problem ist: Jeder Programmierer interpretiert den Begriff "Tiefe" unterschiedlich.

Wenn Du überhaupt einen "fairen" Vergleich, unabhängig von der Geschwindigkeit, haben willst, dann ginge dies maximal über die Anzahl der berechneten Knoten ... sprich, ein Turnier, bei dem jedes Programm pro Zug zum Beispiel 1.000.000 Stellungen pro Zug berechnen darf ...
Parent - - By Joe Boden Date 2014-09-23 22:51
Ein interessanter Gedanke. Aber wie wäre das umzusetzen?
Parent - By Michael Scheidl Date 2014-09-23 22:56
Arena bietet bei den Spielstufen eine mit wählbarem Knotenlimit an.

Mit Rybka verboten!
Parent - - By Ralf Mueller Date 2014-09-23 23:19
Da jedes Programm Knoten anders zählt, ist auch dieser Vergleich leider nicht objektiv.
Parent - - By Mythbuster Date 2014-09-24 07:17
Ja, ich weiß, war schon zu Zeiten der Brettcomputer so, daß manche Programme die Zahl der berechneten Stellungen auf dem Brett als Knoten zählen, andere jeden virtuellen Teilzug.

Wobei ich mir nicht sicher bin, ob nicht inzwischen eine 'Angleichung' bei den Autoren stattgefunden hat ...

Auf jeden Fall wäre ein Vergleich anhand der berechneten Züge / Knoten der fairste Vergleich ...

Der Vergleich nach Rechentiefe kann nicht funktionieren. Denn genügend Programme zeigen zum Beispiel bei einer Rechentiefe von 10 Halbzügen ein Matt in 8 an ... weil alle Programme unterschiedliche selektive Spitzen haben ... und bei einigen Programmen stellt die Tiefenanzeige sogar eine Mischung aus Sockel und Spitzen dar ...

Könnte man wirklich eine maximale Tiefe vorgeben, so müsste diese ja auch die Spitzen beinhalten ... und wenn dies der Fall wäre, so wäre ein dumpfer Brute Force Brüter jedem intelligenten Programm überlegen ... denn auf die Zeit, die der Brüter für die komplette Berechnung braucht, kommt es ja hier nicht an ...

Man sieht, daß dieser Ansatz nicht wirklich funktionieren kann.

Der Zeitansatz (xy Minuten pro Partie / Zug) ist unterm Strich schon die sinnvollste Lösung, da es hier ja auf die Programmierkunst ankommt, die maximale Effektivität an den Tag zu legen. Sprich, es ist dem Programmierer überlassen, ein Programm mit viel Wissen auszustatten, das nicht tief rechnet, aber 'schlau' ist oder einen dummen schnellen Brüter (wie damals das erste Fritz Programm) ... oder eben halt den Mittelweg.
Parent - - By Benno Hartwig Date 2014-09-24 13:39

> Auf jeden Fall wäre ein Vergleich anhand der berechneten Züge / Knoten der fairste Vergleich ...


Darin sehe ich überhaupt keinen fairen Vergleich, weil  jeder Programmierer auch selbst befindet, was denn ein 'berechneter Knoten' sein soll.
Gerade Vas hat da ja immer gänzlich(!) andere Vorstellungen gehabt als andere Entwickler.
Und auch die werden noch Unterschiede in ihren Sichten haben, die nicht wirklich klein sind.

Benno
Parent - - By Michael Scheidl Date 2014-09-24 13:45
Ich sehe das unabhängig von Fake-Outputs oder angeblichen abweichenden Definitionen was Tiefe oder was ein Knoten ist. Darüber schmunzle man lediglich. Die Bewertungsfunktionen sind sowieso (meist) verschieden, vermutlich oftmals sehr verschieden auch im Umfang, und daher unterschiedlich schnell.
Parent - - By Benno Hartwig Date 2014-09-24 13:58

> angeblichen abweichenden Definitionen was Tiefe oder was ein Knoten ist


Dein 'angeblich' lässt mich nachfragen: hältst du den für so klar, was 'gefälligst' ein gezählter Knoten sein soll?

- sind es nur die, bei denen alle Antwortzüge betrachtet wurden oder auch die, die die lediglich sofort (im ersten Zug) widerlegt wurden?
- zählen die Knoten bei Futility Pruning und Extended Futility Pruning wirklich dazu?
- ggf. auch sogar die, die dank Pruning ja nur pauschal abgeschätzt wurden?
- zählen Ruhesuchen-Knoten mit, wo ja gar nicht alle Züge betrachtet werden.
- zäheln nur die, bei denen auch die Bewertung angeworfen wurde?
- ...

Ich denke, es gibt diverse Anlässe für abweichende Sichtweisen.
Der eine Entwickler kokettiert mit kleinen Zahlen ("Guck mal, wie stark mein Programm ist, wo es doch so wenig Knoten berechnet!" (Vas))
der andere will mit Geschwindigkeit verblüffen. ("Mein Programm hat den größten Knotendurchsatz überhaupt!")
Und es mögen auch wirklich verschiedene Überzeugungen dahinter stecken.

Benno
Parent - By Michael Scheidl Date 2014-09-24 14:05
Überdies kann ich mir vorstellen, daß einer Hashtreffer mitzählt und ein anderer nicht... Aber prinzipiell würde ich meinen, jeder Zug den die Engine intern macht, führt zu einem Knoten und der wird bewertet und mitgezählt.

Der Rest sind Details
Parent - - By Ralf Mueller Date 2014-09-24 11:57
Hallo Joe, ich bin mir da nicht so sicher, ob da tatsächlich Fritz 1 gewinnen würde. Schau dir mal diesen Artikel an:
http://en.chessbase.com/post/komodo-8-the-smartphone-vs-desktop-challenge
Parent - By Benno Hartwig Date 2014-09-24 12:48
"50 mal schneller"  bedeutet letztlich ja auch nur knapp 6 mal Verdopplung der Zeit,
also (so aus meinem Bauch heraus) 6*50=300 ELO.
Ich habe den Eindruck, so rein softwaretechnisch konnten diese 300 ELO auch relativ fix gewonnen werden.
Aus den 40/4-Daten von CEGT las ich, dass auf einem x64-Kern z.B. Stockfish von der Version 1.3 bis 5 annähernd 500 ELO gewinnen konnte.
(von 2673 ELO nach 3157 ELO)
Wieviele Jahre waren das eigentlich?
Nach meiner Erinnerung war auch die Version 1.3 schon nicht sooo weit von der Spitze entfernt. Richtig?

Benno
Parent - By Joe Boden Date 2014-09-24 15:40
Hallo Ralf.

Danke für den Link. Tatsächlich ein beeindruckendes Experiment, welches gewohnte Sichtweisen stark hinterfragt.
Parent - By Benno Hartwig Date 2014-09-24 17:21 Edited 2014-09-24 17:36

> wo Fritz 1 auf Supercomputer gegen K8 auf i7 Quadcore spielt? Mich würde das nicht interessieren. Natürlich würde Fritz 1 gewinnen...


Oh, ich fänd das interessant. Supercomputer finde ich immer interessant!
Und dass Fritz1 auf dem stärksten tauglichen Rechner der Welt auch nur annähernd eine Chance hätte gegen K8 auf i7 kann ich mir hingegen sowas von überhaupt nicht(!) vorstellen.
Nach meiner Erinnerung war Fritz 5.32 dann der erste 32bit-Fritz. Und ich vermute, selbst der würde absolut chancenlos untergehen, egal welchen Rechner er beackert. CEGT 40/20 gibt selbst hier noch eine ELO-Differenz von fast 1000 ELO an.  Mit welcher Rechenpowerdifferenz willst du das denn wieder rausrechnen?
Und SSDF gibt Fritz 1 (zugegeben, auf etwas schwächerem Prozessor) noch mal ungefähr 600 ELO weniger als Fritz 5.32.

Du favorisierst also eine ca. 1500 ELO schwächere Engine, wenn man ihr den nur endlich einen Prozessor spendieren würde, der stark genug ist.

Benno
Parent - - By Andreas Aicher Date 2014-09-24 20:57
nichts für ungut Joe, aber das Auto ist doch eigentlich die Hardware, nicht die Software, also spielen doch beide, sofern der Vergleich auf einen Rechner ausgetragen wird, entweder auf Ferrari oder Opel Corsa, die Software wäre dann analog, zumindest bei diesem Vergleich, der Fahrer, wobei derjenige gewinnt, der die gegebenen Resourcen am besten nutzt, wenn man so will, derjenige mit der besseren Reaktion, besseren Vorraussicht, besseren Kurventechnik etc.
Also ich zumindest bevorzuge für meine Analysen das Schachprogramm, das mit den gegebenen Resourcen die besten Resultate erzielt, in meinem Falle einen iMac mit 4 Cores

Andreas
Parent - By Joe Boden Date 2014-09-24 22:03
du hast recht
Parent - By Benno Hartwig Date 2014-09-23 20:14 Edited 2014-09-23 20:37

> Was passiert aber, wenn man die Rechentiefe für alle Engines fest einstellt?


Dann würde sich krass auswirken, was der Entwickler höchstpersönlich unter 'Tiefe' versteht.
Und derjenige, der hier frech die niedrigsten Werte angibt (Ich tippe mal ganz stark: Rybka!) verschafft seiner Engine viel mehr Zeit als den Gegnern, rechnet klammheimlich tiefer und holt den Titel.
Benno
Parent - By Wolfram Bernhardt Date 2014-09-24 20:44
Hi!

Das geht nicht so richtig.
Dann gebe ich Dir meine Engine nämlich auch - und die rechnet dann brute force bis zu der Tiefe alles durch.
Dabe ist es dann immer noch eine Frage der Bewertung an den Blättern - aber vor allem rechnet die dann 2 Wochen an einem Zug...

Das einzig faire und sinnvoll durchführbare ist gleiche Zeit bei gleicher Hardware.

Wobei.... mir kommt gerade noch eine Idee, aber für die müssten die Engines speziell angepasst werden:

Jede Engine darf pro Zug eine bestimmte Anzahl Stellungen (z.B. 10Mio.) durch die Bewertungsfunktion jagen.
Sofern die Engines eine einigermassen eigenständige Bewertungsfunktion habe  - und diese sich nicht zu stark mit der Suche mischt - sollte das auch gehen.
Engines, die viel Wert auf die Bewertung legen wären dann natürlich im Vorteil. Oder andersherum gesagt: Auf diese Weise könnte man solche Engines tendenziell ganz gut identifizieren.

Viele Grüße,
     Wolfram
Up Topic Hauptforen / CSS-Forum / Was-wäre-wenn-Turniere

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill