Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Stockfish - welcher Turm wo hin?
- - By Tom Paul Date 2014-01-31 19:06

2-3 User hatten mich letztens um ein/mehrere Stellungen gebeten, weiß jetzt nicht mehr in welchem Thread und von wem, wo Stockfish Schwächen hat.
Hier ein Beispiel Turmschwäche Tab1 oder Thb1 , mit Stockfish überprüft und Stockfish kann sich nicht entscheiden, dabei ist das gar nicht so schwer.
Ich vermute mal das im Code ein Abschnitt fehlt der das Problem löst bzw. es wurde noch nichts passendes in der Programmierer Sprache dazu geschrieben.
Und die Schwankungen sind gewaltig +0.00 bis +0.40 auf die Bewertung drauf, je nach Tiefe.
Welcher Turm gehört eurer Meinung nach auf b1?
MMn. Thb1.
Parent - - By Michael Scheidl Date 2014-01-31 19:24
Zitat:
Welcher Turm gehört eurer Meinung nach auf b1?

Spontan gesagt: Der A-Turm, denn nach Thb1 hätte dieser null Mobilität. Der Bauer a2 ist für den Moment gedeckt und kann kurzfristig mit a2-a3 völlig sichergestellt werden (...so denkt mein Patzerhirn).

Sehen wir nun was Engines meinen. Ich stelle MultiPV(3) damit wir sehen, um wieviel sie den einen oder anderen Turmzug bevorzugen.

Analysis by Houdini 1.5a x64-2d (Tiefe 20):

1. +/=  (0.48): 16.Rhb1 Nb6 17.a3 Qc4 18.a4 Nbd7 19.a5 Qa6 20.Re1 g5 21.Bc1 Qb7 22.Ra2 Ra6 23.Bd2 Rba8
2. =  (0.28): 16.Rab1 Ne8 17.Rhd1 Nc7 18.Rdc1 Rb6 19.a3 Qb3 20.Be3 Qc4 21.a4 Rb4 22.Re1 Rb7 23.Nd2 Qa6 24.b3 Ne5 25.Re2 Qa5
3. =  (0.13): 16.Bc1 Ne8 17.Rd1 Nb6 18.a4 Nc4 19.Ra2 Nc7 20.Nd2 Na5 21.Re1 h5 22.Kg1 h4 23.gxh4 Kf8 24.h5 gxh5 25.Nf3 Nc4 26.Qd3 Re8

Analysis by Komodo CCT 64-bit (Tiefe 19):

1. +/-  (0.71): 16.Rhb1 Nb6 17.a3 Qc4 18.a4 Qa6 19.Nb5 Rc8 20.Ra3 Rab8 21.Rc1 Rd8 22.Re1 Rdc8 23.Be3 Rd8 24.Kg1 Nbd7 25.Bd2 Nb6
2. +/=  (0.48): 16.Rab1 Ne8 17.Rhe1 Nc7 18.Rec1 Ra7 19.a3 Qa5 20.a4 Qa6 21.b3 Rab7 22.Be3 Rb6 23.Rd1 R6b7 24.Kg1 Qa5 25.Bd2 Qa6 26.Re1
3. =  (0.29): 16.b3 c4 17.Rab1 cxb3 18.axb3 Rc8 19.Rhc1 h5 20.Ne1 Qb7 21.f3 h4 22.g4 Qb4 23.Nd3 Qd4 24.Ra1 Ne5 25.Rxa8 Rxa8 26.Nxe5

Analysis by Stockfish 101213 64 SSE4.2 (Tiefe 25):

1. +/-  (0.80): 16.Rhb1 g5 17.Qd3 Rc8 18.a3 Qb7 19.Be3 Rcb8 20.b4 Qc8 21.b5 g4 22.hxg4 Nxg4 23.a4 c4 24.Qd2 Nc5 25.Bxc5 Qxc5 26.Ra2 Qb6 27.Qc2 Rc8 28.Rc1 e6 29.dxe6 fxe6 30.Qd2
2. +/-  (0.80): 16.Rab1 Ne8 17.Rhc1 g5 18.h4 g4 19.Ne1 Ne5 20.Nd3 Nxd3 21.Qxd3 Nf6 22.a3 Qb3 23.Bf4 Nh5 24.Be3 Nf6 25.Qe2 Rb7 26.Kg1 h5 27.Bg5 c4 28.e5 Nh7 29.e6 Nxg5 30.hxg5 Be5 31.a4
3. +/=  (0.34): 16.b3 c4 17.Rab1 cxb3 18.axb3 Ra3 19.Rhe1 Rxb3 20.Qxb3 Qxb3 21.Rxb3 Rxb3 22.Nd4 Rb2 23.Bc1 Rb7 24.Nc6 Nc5 25.Re3 Nfd7 26.Nxe7+ Kf8 27.Nc6 Rb3 28.Ne2 Rxe3 29.Bxe3 Nxe4

Schwer dagegen zu argumentieren wenigstens gibt mir Stockfish die Hoffnung daß ich nicht völlig falsch lag (zweimal +0.80).

P.S. Im Vertrauen gesagt: Engines sind blöd; natürlich ist hier Tab1 richtig.
Parent - - By Tom Paul Date 2014-02-04 11:48

Welcher Turm wo hin?
Tcd1 oder Tfd1?
Stockfish denkt auch an
Tfe1
Tb1
e4
Sg5
Die Bewertungen schwanken je nach Tiefe 20-31, somit ist fast jeder Zug einmal als Topfavorit gekennzeichnet.
Erst ab Tiefe 31 wird ersichtlich warum Tfd1 der bessere Turm-Zug ist. Auch mein Favorit.
e4 wird gleich gut bewertet, als Begründung: Zugumstellung von schwarz.
Nur ist das so ein typischer Stockfish-Fehler immer vorpreschen zu wollen anstatt erstmal alle Figuren zu entwickeln.
Habe das oft schon bei Stockfish beobachtet, da wird dann das gesamte Pulver verschossen, weil der Gegner eben nicht die von Stockfish erwartete Zugumstellung spielt, sondern etwas anderes.
Da fehlt im Code etwas nach dem Motto: Wenn zwei Züge gleich gut sind und einer davon eine Figur entwickelt, dann sollte dieser Zug zuerst gespielt werden.

Wie bewerten Komodo und Houdini diese Stellung?
Parent - - By Circular Date 2014-02-04 12:05
Das steht in jedem Schachlehrbuch für Anfänger! Es sei denn, es droht irgend etwas was sofort entschärft werden muss.

MfG

Circular
Parent - - By Benno Hartwig Date 2014-02-04 15:23

> Das steht in jedem Schachlehrbuch für Anfänger! Es sei denn, es droht irgend etwas was sofort entschärft werden muss.


Schachlehrbücher unterrichten aber nicht auf dem analytischen Niveau, welches von Engines gespielt wird.

Wenn die Engine aufgrund ihrer 20 oder 25 Halbzüge tiefen Analyse meint, es wäre besser, irgendwelche Figurenentwicklungen erst 2, 4 oder 6 Plys später zu machen, dann will zumindest ich ihr nicht mit dem Finger auf eine Lehrbuchpassge klopfend widersprechen.

Benno
Parent - By Michael Scheidl Date 2014-02-04 20:56
Zitat:
Schachlehrbücher unterrichten aber nicht auf dem analytischen Niveau, welches von Engines gespielt wird.

Sehr richtig! Es wird zwar nicht so sein, daß solche Bücher vor Fehlern strotzen - mit Ausnahme skurriler Beispiele wie Edward Winter sie gerne darbietet - aber zahlreiche "suboptimale" Züge gibt es sicher. Umso mehr, als höchstrangige Meister typischerweise keine (Anfänger-)Lehrbücher schreiben. Ich glaube Lasker war der letzte?
Parent - - By Benno Hartwig Date 2014-02-04 12:39 Edited 2014-02-04 12:46

> Wenn zwei Züge gleich gut sind und einer davon eine Figur entwickelt, dann sollte dieser Zug zuerst gespielt werden.


Wenn diese Züge als gleichgut bewertet werden, dann ist da eben die Entwicklung der Figur durch den einen Zug bei der Analyse mit einbezogen worden.
Oder wie stellst du dir die Anlyse eine Schachengine vor?

Aber generell könnte es Vorteile bringen, bei gleichen minimax-Endstellunge diejenige Variante zu wählen, die über kurzfritig besser erscheinende Positionen läuft.
Vielleicht mit einem besonderen Blick auf diejenigen Varianten, die möglichst gleich sehr früh diese guten Positionen erreichen. ("Hier könnte es ggf. noch unerkannte andere Chancen geben!")
Gelungen ist mir das aber noch nicht.

Benno
Parent - - By Circular Date 2014-02-04 19:32
Hi Benno,

Werden denn Züge bewertet? Das wäre mir neu. Wir sprechen doch immer von Stellungsbewertungen.

Mfg

Circular
Parent - - By Benno Hartwig Date 2014-02-05 11:14
Ich denke die Sprechweise, dass ein Zug bewertet wird (eben mit dem Wert der resultierenden Stellung) ist ausgesprochen üblich.
Beim Futility-Pruning erfolgt die Bewertung soweit ich weiß auch hinreichend genau ohne Betrachtung der resultierenden Stellung.

Benno
Parent - - By Circular Date 2014-02-05 17:32
O.k., verstanden. Jetzt muss ich mal eine Frage loslassen:

Wenn ein Zug eine Bewertung von z.B. 0,38 erfahren hat, kann man dieses konkret nachrechnen?
Wie setzen sich die einzelnen Summanden zusammen?

Circular
Parent - - By Michael Scheidl Date 2014-02-05 19:15
Hierbei ist zu beachten daß nicht die Stellung direkt nach dem Zug statisch bewertet wurde (was ja nur eine 1-Ply-Suche bedeuten würde), sondern die am Ende der Hauptvariante, weit in der Zukunft. Wie sich die Summanden zusammensetzen, steht im jeweiligen Programmcode der Bewertungsfunktion und dürfte einigermaßen komplex sein...
Parent - - By Circular Date 2014-02-06 09:16
Könnte man denn, wenn die letzte Stellung in der berechneten Variante bekannt ist diese gemäß den Bewertungsrichtlinien kalkulieren, oder muss auch der Weg dorthin auch noch mit irgendwelchen Punkten versehen werden?

Und: machen das alle Programmierer gleich?

MfG

Circular
Parent - By Jörg Oster Date 2014-02-06 11:45
Circular schrieb:

Könnte man denn, wenn die letzte Stellung in der berechneten Variante bekannt ist diese gemäß den Bewertungsrichtlinien kalkulieren, oder muss auch der Weg dorthin auch noch mit irgendwelchen Punkten versehen werden?

Im Grunde genommen wird immer nur die Endstellung bewertet.
Nur, der Weg dorthin wurde ja in den vorangegangenen Iterationen bewertet.

Circular schrieb:
Und: machen das alle Programmierer gleich?

Ja, so funktioniert die Alpha-beta-Suche nunmal.
Parent - - By Benno Hartwig Date 2014-02-06 09:49

> kann man dieses konkret nachrechnen?


Angenommen, ich kann diesen Zug machen und für mich sind möglichst hohe Werte günstig, dann ergibt sich in der Hauptsuche dieser Wert aus den Werten der darauf antwortenden Züge, indem der kleinste (oder ein hinreichend kleiner Wert) gefunden und genommen wird.
Und diese wiederum... Und diese wiederum...
Bis man sich schließlich sagt "Ich kann ja nicht immer tiefer in die Tiefe rennen, ich muss endlich mal Ruhe finden."
[Minimax (oder alpha-beta) mit Ruhesuche im Ultrakurzformat skizziert.]

Benno
Parent - - By Circular Date 2014-02-06 10:17
Hallo Benno,

Du versteht mich falsch. Wenn der Suchbaum soweit erstellt ist, wie ist erst einmal egal, dann wird doch das letzte Blatt bewertet. Noch richtig? Zufälliger Weise ist das das stärkste Blatt. Wenn ich dieses Blatt (Stellung) kenne, dann müsste ich auch die Bewertung dieses Blattes händisch nachrechnen können. Oder ist das falsch? Nur liefern die gängigen MVP Varianten das letzte Blatt nicht...Schade

MfG

Circular
Parent - - By Thomas Plaschke Date 2014-02-06 12:23
Circular schrieb:
...
Wenn der Suchbaum soweit erstellt ist, wie ist erst einmal egal, dann wird doch das letzte Blatt bewertet.
...
Wie mag denn der Suchbaum eines multi-threaded arbeitenden Programms aussehen?
Lässt man so ein Programm mehrmals und frisch aus dem Ei gepellt auf eine Stellung los, geschieht es nicht selten, dass es zwar den gleichen stärksten Zug anzeigt, aber dafür eine unterschiedliche Zahl von Knoten bewältigen musste und eine andere Stellungsbewertung anzeigt. "Das letzte Blatt" ist bei zwei Suchen unter gleichen Bedingungen nicht immer identisch. Und selbst wenn es identisch wäre, könnte der (Such-)Weg dorthin Spuren in den Parametern der Bewertungsfunktion hinterlassen haben.

Circular schrieb:
...
Wenn ich dieses Blatt (Stellung) kenne, dann müsste ich auch die Bewertung dieses Blattes händisch nachrechnen können.
...
Bei Turings Programm zweifellos ja (Das existierte ursprünglich auch nur auf Papier    ). Die Bewertungsfunktion des CSS-Schachprogramms aus den 80gern konnte man wohl auch noch händisch ausführen. Bei den optimierten Programmen von heute habe ich meine Zweifel: Teile des Bewertungsterms könnten unter bestimmten Bedingungen nur geschätzt werden, andere Teile könnten außerhalb der Bewertungsfunktion ermittelt werden (wie bspw. Mobilität im Zuggenerator), die Bewertungsfunktion könnte sich komplexe Teilbewertungen eher wurzelnah vorbehalten (wenn so eine Bewertung ihren Weg in die Hashtabellen findet, steht sie auch in größeren Suchtiefen zur Verfügung, wenn nicht, wird die tiefere Stellung weniger gut (=mit geringerem qualitativen Gewicht) bewertet) und und und. Ob man sich unter solchen Bedingungen die händische Bewertung einer (End-)Stellung der Ruhesuche antun will? (Es müsste ja die gleiche Bewertung herauskommen, die das Programm vorgenommen hat.)

Die Programmierer müssten wirksame Verfahren haben, um ihre Bewertungsfunktionen debuggen zu können. Aber es ist ein Unterschied, ob ich einen Teil der Bewertungsfunktion untersuche oder das Ganze.
Circular schrieb:
...
dann müsste ich auch die Bewertung dieses Blattes händisch nachrechnen können.
...
Also, ich würd's lassen   .

Viele Grüße
Th. Plaschke
Parent - By Michael Scheidl Date 2014-02-06 15:52
Na dann lag ich mit der Einschätzung
Zitat:
dürfte einigermaßen komplex sein...
ja richtig.

P.S. Ein Programm welches die statische Bewertung der aktuellen Brettstellung anzeigt und somit der aus der Suche entsprungenen gegenüberstellt, war bzw. ist "Der Bringer" (bei Interesse bitte googeln).
Parent - By Benno Hartwig Date 2014-02-06 13:58

> Wenn ich dieses Blatt (Stellung) kenne...


Ich stimme dir zu, dass wohl (meist) ein Blatt die Bewertung bringt, die sich dann minimaxmäßig bis zum Rootknoten fortpflanzt. Dieses Blatt liegt aber womöglich einiges weiter entfernt, als es die HV angibt. Es wird schwierig, die Stellung zupacken zu kriegen.

Sei einiger Zeit experimentiere ich damit herum, Stellungsbewertungen mitten im Suchbaum leicht zu modifizieren, in der Hoffnung, so eine Spielstärkesteigerung zu erreichen. Ich gebe also Bonus oder Malus, wenn die Stellung beispielsweise
- ein materielles Übergewicht/Ungergewicht hat
- die Ruhesuche hier angewandt einen Vorteil oder Nachteil anzeigt
- mehrere Züge zeigt, die fast so gut wie der besten sind
- alle Züge außer einem echter Mist sind
...
Brachte bislang nix
Ich will aber nicht ausschließen, dass sich andere da geschickter anstellten.
Dann entspricht die Root-Bewertung nur noch ungefähr einer bestimmten Blattbewertung.

Außerdem (so als Idee):
Ich will im Spiel den 'besten' Root-Zug finden. Dafür reicht zu wissen, dass er besser als alle anderen ist. Seinen konkreten Wert muss ich nicht unbedingt kennen.
Nutzt das irgendeine Engine leicht zeitsparend aus?
Einfachste Realisierung: Falls sich im Rootknoten bei der Nullfenstersuche beim letzten Zug der Liste zeigt, dass er besser als der bislang erkannte Beste ist, muss ich diesen Zweig nicht unbedingt mit vollem Fenster noch einmal bewerten.

Benno
Parent - - By Michael Scheidl Date 2014-02-04 21:07
Zitat:
Wenn zwei Züge gleich gut sind (...)

Das weiß keine Engine. Soviel ich weiß, und man korrigiere mich wenn ich mich irre, hat eine Engine ja intern keine solche Liste wie wir etwa bei MultiPV herausbekommen. Im Normalbetrieb wird der nach bestem Wissen und Gewissen beste Zug ermittelt, einer, und kein zweit- dritt- oder sonstbester. Somit gibt es am Schluß nichts mehr zum Vergleichen was besser entwickelt oder sonstiges. Das muß schon vorher in der Baumsuche gesehen und bewertet worden sein.
Parent - By Tom Paul Date 2014-02-05 16:18
Man könnte die Entwicklung einer Figur mit z.B. +0.05 höher bewerten.

Wenn man jeweils in den zwei Stellungen die verschiedenen Züge ausspielen lässt, z.B. gegen Komodo, Houdini, Stockfish gegen Stockfish, dann sieht man den Unterschied in %.
Da dieser bei langen Partien klein ist, dürfte sich der Unterschied bei Blitzpartien deutlich bemerkbar machen, wie viele Elo da wohl verloren gehen???
Parent - By Benno Hartwig Date 2014-02-06 09:53

> Das weiß keine Engine.


Sie weiß es nur dann nicht, wenn nach dem Bewerten eines Zuges mit Wert w der nächste Zug mit alpha-beta-Fenster (w,beta) untersucht wird. (ist heute wohl üblich)
Sie könnte es aber sofort erkennen, wenn die Analyse des zweiten Zuges mit Fenster (w-1,beta) vorgenommen würde.

Der mehr-Zeitbedarf wäre wohl sehr gering. Und wenn jemand mit dieser Situation wirklich was anzufangen weiß, warum nicht...

Benno
Parent - By Tom Paul Date 2014-02-06 11:01
[quote="Tom Paul"]

[/quote]
Was sagen denn Komodo und Houdini zu dieser Stellung im MV Modus?
Ist für sie Tfd1 mit Abstand der beste Zug oder Bewerten sie die Züge auch gleich?
Up Topic Hauptforen / CSS-Forum / Stockfish - welcher Turm wo hin?

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill