Gibt es einen Motor, der die beste „praktische“ Bewegung findet?

25

Eine Standard-Schachengine findet den Zug, den sie für am besten hält, vorausgesetzt, sie spielt von beiden Seiten am besten. Dieser Zug kann jedoch zu einem unbedeutenden Vorteil oder einer schwierigen Linie führen, die leicht zu Fehlern für einen menschlichen Spieler einer bestimmten Fähigkeit führen kann. Gibt es ein Programm, das zB für fortgeschrittene Spieler den besten "praktischen" Zug findet? Zum Beispiel könnte er einen Zug wählen, der zu einer sehr starken Angriffsposition führt, in der der Gegner höchstwahrscheinlich einen Fehler macht, obwohl er mit perfektem Spiel verteidigt werden könnte.

Ari
quelle
5
Sehr interessante Frage, aber ich denke, so etwas umzusetzen könnte schwierig sein, weil "praktisch", je nach Situation sehr unterschiedlich sein kann. Wäre zum Beispiel der gleiche Zug gegen einen Gegner, der 200 Punkte darüber und 200 Punkte darunter liegt, gleichermaßen praktisch? Was ist mit klassischem Spiel gegen Blitzspiel?
Akavall
Scheint, Sie wollen etwas näher als Minimax erwarten?
Mehrdad
Das erinnert mich an Poker. Ich denke, die meisten Pokerbots spielen immer praktische Moves, anstatt ein Nash-Gleichgewicht anzunehmen und zu versuchen, die theoretisch besten Moves zu spielen.
Paul
Eine Möglichkeit, darüber nachzudenken, besteht darin, eine andere Zielfunktion zu quantifizieren. Wenn Sie verlieren, möchten Sie nicht nur minimieren, um wie viel Sie verlieren (wen kümmert es, wenn Sie um einen Centipawn oder eine Dame verlieren). Stattdessen möchten Sie minimieren, wie viel Sie verlieren, vorausgesetzt, es gibt noch eine Linie, auf die Ihr Gegner vernünftigerweise fallen könnte. Sie können "vernünftigerweise verlieben" durch Zählen von "nur" Zügen oder Situationen, in denen nur der oberste Zug (oder zwei) ihren Vorteil fortsetzt, quantifizieren, aber andere Züge führen dazu, dass Sie den Vorteil haben.
ddunn801
In Analogie dazu steht man im American Football auf der Seite des Gegners, weil man die Möglichkeit hat, schnell zu punkten, obwohl das erwartete Ergebnis einen schlechteren Eindruck hinterlassen würde.
ddunn801

Antworten:

22

Sie beschreiben etwas, das der Verachtung sehr ähnlich ist . Die Idee mit Verachtung ist, dass, wenn Sie mehr Dynamik in der Position behalten, ein schwächerer Gegner eher Fehler macht, die Sie dann ausnutzen können. Aus diesem Grund wählt ein Motor mit hoher Verachtung bei zwei Bewegungen, die ähnliche Ergebnisse liefern, diejenige, die mehr Dynamik in der Position beibehält. Die derzeit stärksten traditionellen Motoren haben alle Verachtung umgesetzt (Beispiel für Komodo ).

Die Gefahr der Verachtung besteht darin, dass Sie gegen einen starken Gegner durch starke Verachtung getötet werden. Sie zwingen die Engine schließlich, einen schwächeren Zug auszuführen, um das Spiel am Leben zu erhalten.

Locken
quelle
1
Danke, das ist ähnlich wie das, wonach ich suche, aber meine Frage richtet sich auch an Spieler mit den gleichen Fähigkeiten. Zum Beispiel könnte ein Zug 9/10 mal zu einem Sieg führen, wenn man bedenkt, welche Züge der Gegner wahrscheinlich machen wird.
Ari
3
@Ari es ist aber ähnlich. Nehmen Sie zwei Züge, von denen einer zu einem Unentschieden und der andere zu einem Gewinn in 90% der Fälle und zu einem Verlust in den verbleibenden 10% der Fälle führen kann. Ein Motor mit einer sehr hohen Verachtungseinstellung könnte letzteres wählen (und gegen die perfekte Verteidigung verlieren).
Verführen Sie den
1
Ohne Verachtung würden Motoren wahrscheinlich die meisten Spiele gegen minderwertige Gegner gewinnen, indem sie erzwungene Wiederholungen zu keinem Zeitpunkt ausschließen.
Inertial Ignorance
1
Kann sehr gut sein, wenn dem anderen Spieler die Zeit auf der Uhr ausgeht.
Ian Ringrose
@Ari Befindet sich Ihr Gegner auf dem gleichen Level wie Sie, können Sie eine Metaanalyse einer Linie durchführen (dh nicht nur entscheiden, ob sie gewinnt, sondern auch abschätzen, wie wahrscheinlich Ihr Gegner den Gewinn sieht) werde wohl eine analyse davon bekommen können.
Akkumulation
6

Mir wurde klar, dass diese Frage hauptsächlich für Standard-Schachengines gilt, die Minimax-Funktionen zur Auswertung von Zügen verwenden. Allerdings verwenden Schach-Engines wie Alphazero die Monte Carlo Tree-Suche, um viele verschiedene Spiele zu simulieren, sodass sie nicht nur die bestmöglichen Züge betrachten. Es ist möglich, dass sie bereits verwendet werden, um den besten "praktischen" Zug zu finden, oder dass sie für diesen Zweck angepasst werden könnten. Zum Beispiel könnte der Suchalgorithmus von Monte Carlo aktualisiert werden, um nach "vernünftigen" Bewegungen zu suchen und zu simulieren, was passiert.

Ari
quelle
Dann muss man aber "vernünftig" in den Algorithmus programmieren.
Inertial Ignorance
1

Nicht wirklich.

Datenbanken sind nützlich, weil sie Ihnen oft mitteilen können, dass ein Zug gespielt wird und das Ergebnis ist. Sie sind jedoch aus verschiedenen Gründen nicht perfekt.

Fritz 12 (nicht sicher über spätere Versionen) hat eine "Hotness" -Anzeige, die Ihnen sagt, wie komplex eine Variation ist.

Endeffekt. Es ist eine Kombination von Dingen. Sie suchen nach Zügen, bei denen sich die grundsätzlichen Züge als schlecht herausstellen. Kein Motor kann dir das sagen.

Savage47
quelle