Warum verpassen Schach-Engines manchmal gute Züge (oder brauchen ewig, um sie zu erkennen)?


17

Es ist nicht das erste Mal, dass ich einen überlegenen Zug gefunden habe als die Schachengine, es dauert sogar eine Weile, bis sie diese Züge verstanden haben, nachdem Sie sie ausgeführt haben.

Zum Beispiel die Bewegung 15 ... Bf2im Spiel unten:

NN - NN, 0-1
1. e4 e5 2. Sf3 Nc6 3. Bb5 Nf6 4. OO Ng4 5. h3 h5 6. hxg4 hxg4 7. Bxc6 gxf3 8. Dxf3 Qh4 9. Dh3 Qxh3 10. gxh3 dxc6 11. Re1 Bxh3 12. f3 Bc5 + 13. kh2 Bf1 + 14. Kg3 Rh3 + 15. kg4 Bf2 16. Rxf1 Rg3 + 17. Kf5 RXF 3 + 18. kg4 Rg3 + 19. Kf5 f6 20. d3 Kf7 0-1

Die Bewegung bleibt für eine Weile vom Motor unbemerkt. Erst wenn ich mich bewege, beginnt sie, den Rest des Eisbergs zu sehen.

Ich weiß, dass alles davon abhängt, wie viel Zeit Sie ihnen für die Analyse geben, aber es ist inakzeptabel, dass es manchmal Menschen gelingt, diese Bewegungen in kürzerer Zeit als Computer zu finden.

  • Warum erkennen Schach-Engines in einigen Positionen keine guten Züge? (Ich habe mal etwas über einen "Horizonteffekt" gelesen, vielleicht hängt das damit zusammen?)
  • Gibt es noch andere bemerkenswerte Beispiele? (zB dieses berühmte Rätsel , es dauert eine Weile, bis Computer es lösen)

Diese Fragen enthalten nützliche Informationen, um einige Faktoren, die diese Anomalie verursachen könnten, teilweise zu erklären: Welche Algorithmen und Heuristiken sind im Computerschach beliebt? , Welche Situationen sollte ich schaffen, wenn ich einen Computergegner spiele, um meine Gewinnchancen zu verbessern? , Computerauswertungen: Wie vertrauenswürdig sind sie?

Anmerkungen: Die Falle ist als Angelrute bekannt . Ich bin mir bewusst, dass ich einen Gefährten in 3 (und einen Gefährten in 7) verpasst habe :(, das Zeitlimit pro Zug war Tage (Fernschach), aber ich habe ungefähr 5-10 Minuten gebraucht um die Berechnung abzuschließen.


1
Sehr interessant. Stockfisch auf meinem PC mit durchschnittlicher Stärke wurde 15... Bf2nach 5 Minuten überhaupt nicht gefunden .
Tony Ennis

... und es dauerte über 7 Minuten, um im nächsten Zug einen ähnlichen Partner zu finden.
Tony Ennis

20 d3 ist ein Fehler. versuche 20 d4.
Dcaswell

1
Warum verwenden Sie die Sprache "inakzeptabel", damit ein Mensch in kürzerer Zeit einen Schritt findet als ein Computer? Können Sie Ihre Gedanken dazu auspacken?
Xonatron

Es hat viele bessere Moves verpasst. Warum dieses speziell herausgreifen?
Yobamamama

Antworten:


33

Warum erkennen Schach-Engines in einigen Positionen keine guten Züge?

Als Grund werden Forward-Pruning-Techniken (siehe http://chessprogramming.wikispaces.com/Pruning ) mit ProbCut in der ersten Zeile genannt.

Der Zug 15 ... Bf2 wird in flachen Tiefen beschnitten, da er das Opfer 16.Txf1 enthält, ohne unmittelbar danach etwas Konkretes mit Beweisen wiederzugewinnen. Das Matenet ist auch schwer zu erkennen, da es einige weitere "stille" Bewegungen enthält, wie zum Beispiel 17 ... Ke7, und ja, auch Motoren. Nicht nur Menschen haben Schwierigkeiten, entfernte stille Bewegungen zu sehen, da sie oft beschnitten werden.

In diesem konkreten Fall kann man nicht einmal sagen, dass Motoren keine guten Züge erkennen, denn auch die Fortsetzung 15 ... Rh3h1 ist ein sehr guter Zug und führt zu einer absolut gewonnenen Position.

Last but not least muss man bedenken, dass die Stärke eines Motors immer an der Elo-Stärke gemessen wird und nicht an der Fähigkeit, den absolut kürzesten Weg zum Sieg zu finden. Es ist egal, ob ein Motor in 8 Zügen oder in 25 Zügen gewinnt. Zu viel für den kürzesten Sieg zu suchen, würde Zeitverschwendung bedeuten, da es für die meiste Zeit überhaupt keinen so geheimen guten Zug gibt. Und Zeitverschwendung würde den Motoren ELO-Rating schaden.


1
Schöne Antwort, willkommen auf der Seite!
Andrew

+1 für die Erwähnung des Kompromisses zwischen beschnittener und vollständiger Suche. Ich bin nicht im Geringsten überrascht, dass eine Kombination von 13+ PLY nicht schnell gefunden wird. Der Motor hat "bessere Dinge zu tun", als jede Möglichkeit bis zu dieser Tiefe zu berechnen.
Daniel B

2
Insgesamt eine gute Antwort. +1 für „Last but not least Sie müssen bedenken, dass ein Kraft des Motors wird immer in Bezug auf der elo-strengh und nicht in der Fähigkeit gemessen , um den absoluten kürzesten Weg , um zu gewinnen zu finden“
Ferit

Hervorragende Antwort.
Xonatron

12

Ich versuche dies mit Houdini 1.5 (die kostenlose Version). Zuerst erscheinen 15 ... Bf2 nicht in den Top 5 Zügen, dann, wenn es die Tiefe 15 erreicht, wie # 1. Dauert auf meinem vierjährigen Computer ungefähr 19 Sekunden, nicht so lange.

Es wird also nicht übersehen, sondern erst nach Erreichen der Tiefe 15 als der beste Zug gewertet. Anscheinend sind andere Züge besser, solange es nur 14 Lagen tief aussieht (wie die, die ebenfalls 15 ... f5 + gewinnen).

Anscheinend ist 15 ... Bf2 ein Partner in 8, was 15 Lagen entspricht (8 Züge von Schwarz, 7 von Weiß). Aber zuerst betrachtet es es nur als +10 oder so, dann als +20, dann als Paar in 10, dann als Paar in 8.

Der Partner in Zeile 8 ist:

NN - NN
1. e4 e5 2. Sf3 Nc6 3. Bb5 Nf6 4. OO Ng4 5. h3 h5 6. hxg4 hxg4 7. Bxc6 gxf3 8. Dxf3 Qh4 9. Dh3 Qxh3 10. gxh3 dxc6 11. Re1 Bxh3 12. f3 Bc5 + 13. kh2 Bf1 + 14. Kg3 Rh3 + 15. kg4 Bf2 16. Rxf1 Rh4 + 17. KG5 Ke7 18. Rh1 Rxh1 19. Nc3 Rah8 20. Nd5 + cxd5 21. d3 R8h5 + 22 kg4 R1h4 #.

Wenn Houdini 1.5 15-lagig denkt, werden nicht alle möglichen Linien berücksichtigt , die 15-lagig sind. Andernfalls wird der Partner in 8 angezeigt, sobald die 15-lagige Suche abgeschlossen ist.

Ich denke, das liegt am Beschneiden , es hört auf, einige Zeilen zu betrachten, wenn es denkt, dass sie nicht vielversprechend genug sind. Auf diese Weise kann mehr Zeit für die vielversprechenden Zeilen aufgewendet werden, und der Programmierer ist der Meinung, dass die Vorteile die Nachteile überwiegen. Aber ich habe derzeit keine Antwort darauf, was hier beschnitten werden soll (wahrscheinlich werden in Tiefe 15 Millionen getrennter Schnittentscheidungen getroffen).

Es kann mit den lautlosen Bewegungen zu tun haben ... Ke7 und ... Rah8, zwei Nicht-Check-Nicht-Captures in einer Zeile, in der Schwarz ein Stück nach unten ist. Es ist wahrscheinlich, dass irgendwo entschieden wird, dass es nicht sinnvoll ist, weiter in dieser Zeile zu suchen. Erst später, wenn es die Linie fortsetzt und den Partner am Ende findet, erscheinen andere Linien, die das Spiel verlängern (mit 18.Th1 Rxh1 und so weiter).

Wie auch immer, es ist bekannt, dass es nicht so gut funktioniert, wenn ein Computer nur ein paar Sekunden lang nachdenkt, wenn man etwas auf den Grund gehen möchte. Ein paar Minuten sind besser.


Meine Vermutung, warum es beschneidet, ist, weil 16. Txf1 "heuristisch" aussieht, nicht dass der König von Großweiß im Freien ist, aber es gibt kein sofortiges Schachmatt und Schwarz ist ein Ritter für einen Bauern in Material. Der Wert dieses "Opfers" wird erst deutlich, wenn eine eingehendere Analyse erfolgt (wie Sie sagten).
Joe K

Beachten Sie, dass "15-lagig" bedeutet, dass es sich um einige Züge bis Tiefe 15 handelt, nicht um alle Züge . Das würde waay länger als 4 Sekunden, auch auf einem Supercomputer.
BlueRaja - Danny Pflughoeft

2

Nachdem ich alle Antworten und andere Quellen gelesen habe, verstehe ich jetzt, dass sie diese Bewegungen nicht „verpassen“ oder verpassen wollten. Die Menschen haben sie so programmiert, dass sie bei der Suche (wo / wie / wann +) einem bestimmten Muster folgen und was noch wichtiger ist, wann Sie die Suche unterbrechen und in vielversprechendere Zeilen schauen müssen, um Ressourcen zu sparen.

Wenn jedoch genügend Zeit zur Verfügung steht, kann ein Computer jede mögliche Kombination in einer bestimmten Tiefe ausführen.

TL; DR

  • Frage 1: Sie verpassen keine Züge, sie haben sie nur noch nicht gefunden
  • F2: Sie brauchen Zeit, weil sie so programmiert sind, dass sie Ressourcen sparen, und sie werden einige Zeilen vor anderen priorisieren (z. B. diejenigen, die keine passiven Züge haben oder in den nächsten paar Zügen kein Material zurückgewinnen).

-1

Ich denke, jeder vermisst einen viel schnelleren Partner. Wenn man die Position mit Houdini 3 prüft, hat Schwarz in Zug 13 tatsächlich einen Partner in 3. Anstelle von Bf1 + hätte Schwarz Bf2 spielen sollen, und er setzt sich mit 14. d3 bf1 + 15. Bh6 Rxh6 # fort. In einer ungewöhnlichen Antwort auf Ihre Frage haben vielleicht einige Motoren Ihre Bewegung nicht sofort bemerkt, aber im Fall von Houdini 3 hat es einen viel schnelleren Partner gefunden.


5
Wenn Sie die gesamte Frage lesen, werden Sie sehen, dass er den Partner in 3 kennt. Alle einigermaßen neuen Motoren werden den Partner in 3 sofort finden, und es ist kein Teil dessen, was hier gefragt wird.
Halvard
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.