Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Wie gehen Engines mit TB um?
- - By Tom Paul Date 2015-08-23 12:11
Siehe Komodo vs Gull Bewertung.
http://tcec.chessdom.com/archive.php?se=8&st=1a&ga=11

Wie beim TCEC öfters zu sehen:

Engine A greift schon in der Eröffnung auf TB zu.
Engine B erst im Mittelspiel.
Engine C erst im Endspiel.
Engine D erst wenn ein 5 Steiner auf dem Brett ist.

Auch die Anzahl der Zugriffe (Tb hits) ist von Engine zu Engine unterschiedlich, selbst wenn beide z.B. schon in der Eröffnung oder beide erst im Endspiel auf TB zugreifen.

Wann sollten die Engines eurer Meinung nach auf TB zugreifen und wie stark?

Und welche Zugriffe sind sinnvoll?

Z.B. Beide Seiten haben jeweils ~10 Figuren übrig und weiß bewertet seine Stellung mit +1.60.
Die TB sagen jetzt kurz darauf, dass die Stellung aber 0.00 ist und es ist ganz egal welchen der vielen TB Remiszüge weiß jetzt in seiner Stellung spielt.
Spielt weiß jetzt den Zug den er selbst als besten Zug ohne TB erachtet, falls dieser auch mit 0.00 von den TB bewertet wird?
Oder spielt weiß jetzt irgendeinen der vielen 0.00 TB Züge da jeder Remis macht?
Oder spielt weiß den 0.00 Zug wo der Gegner als Antwort möglichst wenige 0.00 Züge hat? der Rest sind dann Verlustzüge des Gegners.
Parent - - By Tom Paul Date 2015-08-26 17:52
Interessant, dass hier jeder die Antworten kennt oder doch nicht?
Parent - - By Dirk Triebel Date 2015-09-10 18:06
Servus,

ich finde das ist eine gute und interessante Frage, die wohl nur der Programmierer der jeweiligen engine beantworten kann. Persönlich bin ich noch nicht dahinter gestiegen. Jedoch habe ich bei manchen engines den Eindruck, sie spielen ohne TBs stärker als mit, da sie mit den TBs offenbar zu Zügen "genötigt" werden, die offenbar der Gegner voraussieht und zur Niederlage führen. Außerdem werden sie im Offensivspiel durch die TBs gehemmt. Aber eine Statistik hierzu wäre natürlich sehr interessant.

Dirk
Parent - - By Hauke Lutz Date 2015-09-10 19:26
Ich denke, dass es erst macht Sinn macht auf TBs zugreifen zu lassen, wenn sich die Engine sich zwischen Varianten entscheiden muss, welche innerhalb der Rechentiefe zu 7-Steinern führen.
Es macht keinen Sinn etwas zu suchen, wenn man es nicht finden kann.

Gruß
Hauke
Parent - By Dirk Triebel Date 2015-09-10 19:54
Hallo,

gebe ich Dir vollkommen recht. Aber manche Engine greifen schon eher auf die TBs zu und es schein so als versuchten sie mit aller Macht in die Remis Stellung der TBs zu folgen. Bei Stockfish finde ich es ganz schlimm, Komodo verhält sich meiner Ansicht nach viel besser mit TBs. Nach meinen Erfahrungen auf dem Server mit MP. Vielleicht hat jemand andere Erfahrungen.

Gruß,
Dirk
Parent - By Benno Hartwig Date 2015-09-10 21:10 Edited 2015-09-10 21:17

> Es macht keinen Sinn etwas zu suchen, wenn man es nicht finden kann.


Konkret wann ist es falsch auf Tablebases zuzugreifen, wenn halt eine Stellung bewertet werden muss, die in den Tablebases vorhanden ist?
Wann ist es besser, dass die Engine sich in solch einem Fall lieber selbst eine Bewertung ausdenkt, und vor allem: warum?
Dass sie ggf. bewerten muss, welche der erreichbaren Remisstellungen sie anspielen sollte, ist natürlich richtig. Die Basis sollte aber eben die Tablebase-Info "ist tatsächlich eine Remis-Stellung" sein.

Benno
(der sich bislang eigentlich keine derartigen Fälle denken kann)
Parent - - By Thomas Plaschke Date 2015-09-10 22:23
Ehrlich gesagt, verstehe ich das Problem nicht.
Die TBs geben der Engine eine Stellungsbewertung doch nur für Stellungen zurück, die in ihnen enthalten ist. Diese Stellung ist:

a) gewonnen. Die Engine nimmt den Zug, der am schnellsten zum Sieg führt (wie immer das in den jeweiligen TBs codiert ist).
b) verloren. Die Engine nimmt den Zug, der das Ende am längsten hinaus zögert (wie immer das in den jeweiligen TBs codiert ist).
c) remis. Die Engine nimmt irgendeinen Zug, der nicht verliert (Woher soll sie wissen, welcher Zug dem Gegner die größten Probleme bereitet?).

Im Übrigen sind TB-Stellungen so eindeutig wie Matt und Patt oder 3-fache Zugwiederholung und 50-Züge-Regel - die Partie hat quasi ein "technisches" Ende. Entsprechend wirksam sind die dadurch erreichten cutoffs im Spielbaum - weitere Vertiefung überflüssig!

Was soll eine Engine ohne TBs da besser können? Man kann natürlich annehmen, dass der Gegner keine TBs hat und meine Engine die besser Bewertungsfunktion. Vielleicht können dann andere Züge als die aus den Kategorien a)-c) - je nachdem - auf irgendeinem Weg mehr rausholen als die TB-Züge. Reine Spekulation. Denn das kann natürlich genauso gut nach hinten losgehen.

Ich lese immer, (besonders Stockfish) ginge zu früh auf die Pfade der TBs und verliert dadurch halbe Punkte. Die Verwendung der TBs wäre eigentlich eine Stärkung der unterlegenen Gegnerschaft. Aber ob die Engine ohne TBs insgesamt besser spielt, hat bislang niemand getestet, oder?

Vielleicht hilft auch folgende Überlegung: Was wäre, wenn man bspw. statt der n-Steiner-Tabellen Terme in der Bewertungsfunktion hätte, die exakt das gleiche leisten wie TBs? Ich glaube, niemand würde sagen, dass diese Terme aus Bewertungsfunktion verschwinden müssen. Man stelle sich das für andere Stellungstypen vor. Die Engine spielt perfekt Turm auf der 7. Reihe. Sie unterlässt Züge, für die sie selbst die Widerlegung gefunden hat, die der Gegner aber objektiv nicht finden würde. Aber woher weiß man letzteres vorher - also das der Gegner die Widerlegung nicht findet?

Es würde mich überraschen, wenn einer Engine zu viel Wissen schadet.

Viele Grüße
Th. Plaschke
Parent - - By Benno Hartwig Date 2015-09-12 14:12 Edited 2015-09-12 14:22

> Es würde mich überraschen, wenn einer Engine zu viel Wissen schadet.


+1
Der Entwickler sollte aber schon noch überlegen, was gespielt werden soll, wenn er die Auswahl unter mehreren Remis-Zügen hat (und kein Sieg-Zug da ist).
Wie kann seine Engine dann ggf. am meisten Schwierigkeiten machen?

Vor einiger Zeit noch sah ich Engines, die mit einem Bauern mehr eine Remisstellung hatten.
Dass die dann ganz bereitwillig diesen Bauern herschenken, fand ich dann doch etwas unglücklich.
Womöglich wären sie auch noch ganz bereitwillig in Remisstellungen gelaufen, in denen der Gegner einen Mehrbauern hat.
Nein, ein wenig "den Gegner quälen wollen"  ist auch dann noch angebracht, finde ich.

Benno
Parent - By Michael Scheidl Date 2015-09-12 14:21
Der Trick ist, Tablebase-Remis mit Materialdifferenz als +/- 0.01 statt 0.00 zu bewerten, wie von Shredder seit langem so gehandhabt. Ich glaube, mitunter kann das sogar elomäßig etwas bringen falls der Gegner keine Tables benutzt und irgendwann fehlgreift. Schöner ist es auf jeden Fall.
Parent - - By Thomas Plaschke Date 2015-09-13 00:54

> "wenn [...] zu viel Wissen schadet."


In einem mir sehr eingängigem Lied heißt es: "... too much is never enough". "Zu viel" impliziert "nicht gut". Gemeint war natürlich "..., wenn einer Engine viel Wissen schadet". 

Ich weiß, worauf Du hinaus willst. Wenn eigentlich nichts geht, muss man dem Gegner Gelegenheit geben, daneben zu greifen. Oder wie Napoleon sagte: "Unterbrich den Gegner nicht, wenn er dabei ist, einen Fehler zu machen."
Hat er TBs wird er nicht daneben greifen. Hat er keine, greift er vielleicht daneben. Das ist eine bessere Chance als keine.

@Michael Scheidl:

> ... Schöner ist es auf jeden Fall.


Na, eher länger.

Die Fragestellung/Behauptung weiter oben im Thread war, ob die Nutzung von TBs die Engines schwächt. - Übrigens dürften die TB-probes die "teuersten" (bezogen auf die Rechenzeit) Stellungsbewertungen sein. Ihr Nutzen sollte daher auch entsprechend hoch sein.

Die Kritik an der TB-Verwendung läuft immer wieder darauf hinaus, dass Partien remis gespielt werden, die gewonnen würden, wenn auf die TBs verzichtet würde. Frei nach Lasker: Die Engine würde bessser spielen, wenn sie suboptimal spielt. - Also nicht den besten Zug macht, sondern den, der dem Gegner die meisten Schwierigkeiten bereitet.

In schlechteren Stellungen verteidigt sie sich zwar optimal. Andererseits sieht sie möglicherweise "zu früh" ihre aussichtslose Stellung und bricht einen "spekulativen" Angriff ab.

Andererseits findet sie mit TBs wahrscheinlich spielentscheidende Züge, die ihr sonst entgehen.

Bei all dem sollten wir nicht vergessen, dass Stockfish die Engine ist, die immer wieder über den Nutzen von TBs diskutieren lässt. Selbst ohne TBs spielt sie bis auf eine Engine alle in Grund und Boden. Deswegen könnten die - möglicherweise - bestehenden Nachteile in remisen oder verlorenen Endknoten bei Stockfish (oder auch Komodo) zählbare Auswirkungen haben. Ich würde es trotzdem in Kauf nehmen. Lieber ein optimales Spiel als ein unverdientes remis oder ein Schummelsieg.

Viele Grüße
Th. Plaschke
Parent - - By Benno Hartwig Date 2015-09-13 13:23

> Übrigens dürften die TB-probes die "teuersten" (bezogen auf die Rechenzeit) Stellungsbewertungen sein.


Das hängt davon ab, womit du vergleichst.
Wenn wir es mit Knoten im inneren des Suchbaums zu tun haben, wenn also zu dessen Bewertung noch ein ganzer Teilbaum analysiert werden müsste, dann ist solch ein Tablebase-Zugriff doch eine vergleichsweise schnelle und "billige" Handlung.

Benno
Parent - By Thomas Plaschke Date 2015-09-13 13:49
Im Verhältnis zu dem, was sie potentiell erspart (-und welchen Gewinn er bringen kann), ist eine Stellungsbewertung über die TBs natürlich insgesamt preiswert (nicht billig).
Ich bezog meine Vermutung auf die "normale" Stellungsbewertung. Wegen des Festplattenzugriffs (trotz Pufferung) sind die TB-Recherchen (zeit-)aufwändiger.

> [...] eine vergleichsweise schnelle und "billige" Handlung.


Allerdings! Die "normale" Stellungsbewertung ist regelmäßig nur eine (grundsätzlich unsichere) Abschätzung. TB-Ergebnisse sind sicher ("... spielt wie Gott").

Viele Grüße
Th. Plaschke
Parent - By Thomas Plaschke Date 2015-09-13 11:59
Über Nacht habe ich ad hoc einen Test durchgeführt - den grau ist alle Theorie (Anfangs-Wertungszahl = 3200):
Code:
    Program                          Elo    +   -   Games   Score   Av.Op.  Draws
  1 Stockfish 150910               : 3211   15  15   757    53.2 %   3189   64.3 %
  2 Stockfish 150910 (ohneTBs)     : 3189   15  15   757    46.8 %   3211   64.3 %

Ich werde den Test aber wiederholen, weil ich ihn dummerweise mit Abbruchkriterien durchgeführt habe. Bei der Durchsicht der Partien sind mir nämlich einige Partien aufgefallen, bei denen SF-mit-TBs sich verloren sah, SF-ohne-TBs aber noch keinen wirklichen Schimmer von seinem Sieg hatte. Umgekehrt wurden Partien remis, die SF-mit-TBs bereits richtig wertete, SF-ohne-TBs hätte diese Partien aber erst noch nach Hause bringen müssen.

Aber die Tendenz, die für einen generellen Nutzen der TBs spricht, finde ich für den Anfang relativ deutlich.

Viele Grüße
Th. Plaschke
Parent - - By Thomas Plaschke Date 2015-09-15 17:51
Dieses Ergebnis habe ich ohne Angabe von Abbruchkriterien erhalten:
Code:
   # PLAYER                      : RATING  ERROR   POINTS  PLAYED    (%)   CFS(next)
   1 Stockfish 150910            :   3200      6    514.0    1000   51.4%      95
   2 Stockfish 150910 (noTBs)    :   3190      6    486.0    1000   48.6%     ---

Nehme ich auch die Partien aus zweifelhafteren Testbedingungen  , sieht das Ergebnis so aus:
Code:
   # PLAYER                      : RATING  ERROR   POINTS  PLAYED    (%)   CFS(next)
   1 Stockfish 150910            :   3200      4   1419.0    2749   51.6%     100
   2 Stockfish 150910 (noTBs)    :   3188      4   1330.0    2749   48.4%     ---
Die Abbruchbedingungen hätten dem Ergebnis doch keinen Abbruch getan .
Für mich habe die TBs damit ihren Nutzen ausreichend bewiesen. Bestenfalls stellt sich mir die Frage, ob die TBs den Engine stärker helfen, je weniger Endspielfähigkeiten (oder -kenntnisse) sie haben. Stockfish würde ich eher ins Spitzenfeld einordnen und relativ wenig Nutzen vermuten.
Welche Engine ist für ihre Endspielschwäche berühmt/berüchtigt und nutzt TBs?

Viele Grüße
Th. Plaschke
Parent - - By Benno Hartwig Date 2015-09-15 20:55 Edited 2015-09-15 20:58
Thanx,
ja, interessantes Ergebnis.
Wieviel-Steiner hattest du dabei benutzt?

Und die Info weckt Lust auf mehr:
Wieviel ELO mögen die Wechsel im Einzelnen von
keine Tablebases -> 3-Steiner (nix?)
3-Steiner -> 4-Steiner
4-Steiner -> 5-Steiner
5-Steiner -> 6-Steiner
6-Steiner -> 7-Steiner
...
bringen?
Dann mit einer Ahnung, welchen Wert z.B. effizient angebundene 8-Steiner haben könnten.

Benno
Parent - By Thomas Plaschke Date 2015-09-15 22:39

> Wieviel-Steiner hattest du dabei benutzt?


6-Steiner. Wie viel die Steigerung von n zu n+x -Steinern ausmacht, dürfen andere ermitteln .

Zu Tests mit Nalimov-5-Steinern würde ich mich noch hinreißen lassen, um einen etwaigen Spielstärkeunterschied bei endspiel-schwachen und -starken Engines zu ermitteln.
Welche Engines kommen da in Frage?
Hiarcs 14, Shredder 12 (mit Nalimovs, ohne Shredderbases eventuell) als starke Engines, denke ich?
Aber im Endspiel schwache Engines - die TBs unterstützen? Vorschläge?

Viele Grüße
Th. Plaschke
Parent - - By Tom Paul Date 2015-09-12 17:47
Thomas Plaschke schrieb:

Ehrlich gesagt, verstehe ich das Problem nicht.
Die TBs geben der Engine eine Stellungsbewertung doch nur für Stellungen zurück, die in ihnen enthalten ist. Diese Stellung ist:

a) gewonnen. Die Engine nimmt den Zug, der am schnellsten zum Sieg führt (wie immer das in den jeweiligen TBs codiert ist).
b) verloren. Die Engine nimmt den Zug, der das Ende am längsten hinaus zögert (wie immer das in den jeweiligen TBs codiert ist).
c) remis. Die Engine nimmt irgendeinen Zug, der nicht verliert (Woher soll sie wissen, welcher Zug dem Gegner die größten Probleme bereitet?).

Im Übrigen sind TB-Stellungen so eindeutig wie Matt und Patt oder 3-fache Zugwiederholung und 50-Züge-Regel - die Partie hat quasi ein "technisches" Ende. Entsprechend wirksam sind die dadurch erreichten cutoffs im Spielbaum - weitere Vertiefung überflüssig!

Was soll eine Engine ohne TBs da besser können? Man kann natürlich annehmen, dass der Gegner keine TBs hat und meine Engine die besser Bewertungsfunktion. Vielleicht können dann andere Züge als die aus den Kategorien a)-c) - je nachdem - auf irgendeinem Weg mehr rausholen als die TB-Züge. Reine Spekulation. Denn das kann natürlich genauso gut nach hinten losgehen.

Ich lese immer, (besonders Stockfish) ginge zu früh auf die Pfade der TBs und verliert dadurch halbe Punkte. Die Verwendung der TBs wäre eigentlich eine Stärkung der unterlegenen Gegnerschaft. Aber ob die Engine ohne TBs insgesamt besser spielt, hat bislang niemand getestet, oder?

Vielleicht hilft auch folgende Überlegung: Was wäre, wenn man bspw. statt der n-Steiner-Tabellen Terme in der Bewertungsfunktion hätte, die exakt das gleiche leisten wie TBs? Ich glaube, niemand würde sagen, dass diese Terme aus Bewertungsfunktion verschwinden müssen. Man stelle sich das für andere Stellungstypen vor. Die Engine spielt perfekt Turm auf der 7. Reihe. Sie unterlässt Züge, für die sie selbst die Widerlegung gefunden hat, die der Gegner aber objektiv nicht finden würde. Aber woher weiß man letzteres vorher - also das der Gegner die Widerlegung nicht findet?

Es würde mich überraschen, wenn einer Engine zu viel Wissen schadet.

Viele Grüße
Th. Plaschke


Vielleicht ist das Problem etwas klarer wenn: Wie gehen Engines mit TB um wenn der Gegner keine hat?
z.B. Stockfish hat laut TB mehrere 0.00 Züge zur Auswahl, davon würde er ohne TB einen Zug mit +1.60 bewerten.
Der Gegner bewertet diesen Zug auch mit ~+1.60, freut sich aber das Stockfish einen anderen 0.00 TB Zug spielt den sein Gegner ebenfalls mit 0.00 bewertet.
Jetzt sollte doch wohl alles klar sein oder?
Parent - By Tom Paul Date 2015-09-12 17:50
Das selbe gilt auch wenn beide TB haben, weil: Stockfish TB hits 100000 und die gleiche Position Gegner TB hits 10.
Alles klar?
Parent - By Benno Hartwig Date 2015-09-13 09:21
Davon schrieb ich ja auch.
Es ist gut(!), dass die Engines anhand der Tablebases erkennen können (auch gern möglichst früh erkennen!), dass eine Stellung Remis ist.
Sie sollten von den Remis-Zügen dann aber gern einen auswählen, der dem Gegner (ohne Tablebases, oder mit nicht korrekter Behandlung der Tablebases, oder eben auch einem Menschen) ggf. eben doch Probleme bereitet.
--> Nachgucken in Tablebases immer! Dann aber klug wählen.

Benno
Up Topic Hauptforen / CSS-Forum / Wie gehen Engines mit TB um?

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill