Gibt es eine Schachengine, die KEINE Brute-Force-Suche verwendet?


10

Jede Schachengine, von der ich jemals gehört habe (einschließlich aller auf Wikipedia gefundenen), verwendet die Brute-Force-Suche mit einer Bewertungsfunktion (Minmax-Algorithmus), um über ihren Zug zu entscheiden.

Dies ist nicht die Art und Weise, wie die meisten Menschen sich dem Spiel nähern und stattdessen eine allgemeine Mustererkennung verwenden. Daher wäre es im Prinzip für Computer möglich, dasselbe zu tun.

Gibt es eine Schachmaschine, die sich nicht auf den Brute-Force-Ansatz verlässt, um ihre Züge zu finden?


9
Magnus Carlsen. ;)
Wes

3
In Bezug auf die Leute, die sagen, dass moderne Motoren keine Brute Force sind, weil sie Bewegungen beschneiden ... Ich denke, es ist ziemlich klar, dass eine Schach-Engine, wenn sie zig Millionen Positionen bewertet, Brute Force anwendet, unabhängig von den Augenbrauen, die jemand ziehen könnte auf den Algorithmus.
Tony Ennis

Moderne Motoren können Bewegungen verpassen, z. Opfer, bei denen die Auszahlung erst recht tief ist. Ich denke, das liegt wahrscheinlich daran, dass sie beschnitten und nicht gründlich untersucht werden.
Ein Passant

Antworten:


6

In den 1980er Jahren gab es Versuche, Schach-Engines mit Wissensdatenbanken zu schreiben, die Kandidatenbewegungen wie Menschen auswählen würden, aber sie waren erfolglos. Das Problem ist, dass der menschliche Mustervergleich schwer in Worte zu fassen ist, weshalb die Erstellung der Regeln für die Wissensbasis äußerst schwierig war.

Das Training eines neuronalen Netzwerks zur Auswahl von Kandidatenbewegungen scheint eine vielversprechende Forschungsrichtung zu sein. Hier und hier könnten zwei relevante Papiere sein. (FWIW, es ist nicht mein Gebiet von Comp Sci)



3

Ich möchte Details zu @ Ian_Bushs Antwort auf Giraffe hinzufügen.

In der Antwort von @ Ian_Bush wird darauf hingewiesen, dass Giraffe keine Brute-Force-Berechnung verwendet. Dies ist nicht richtig , da Giraffe immer noch eine Alpha-Beta-Engine (Nega-Max) ist. Der einzige Unterschied zu einer Standard-Engine besteht darin, dass die Bewertungsfunktion durch Deep-Learning automatisch angepasst wird. Daher lernt die Engine, wie man selbst spielt.

Traditionell stellt der Motorprogrammierer die Parameter in einem Motor selbst ein. Ich habe selbst viel getan. Wie viel Gewicht sollten Sie beispielsweise einem Bischof und einem Ritter geben? 3,0? 3,1? 3,2? Es ist schwer zu sagen.

Giraffe geht das Problem viel intelligenter an. Es beginnt mit einigen Anfangswerten. Die Engine verwendet den Gradientenaufstiegsalgorithmus, um diese Werte abzustimmen. Wir müssen nicht explizit codieren, wie viel Gewicht eine Königin im Code haben sollte. Das ist es, was wir "Lernen" meinen. Dies bedeutet nicht, dass die Engine Schach spielen kann, ohne zu suchen.

EDIT : Giraffe modelliert die Baumknoten als Wahrscheinlichkeit, dass sie in die Hauptvariation fallen. Überprüfen Sie das Papier auf Details. Ich persönlich glaube diesem Ansatz nicht, und das Papier zeigt wenig Beweise dafür, wie nützlich er wäre.


Stimmt es, dass Giraffe Stockfish Eval als Ziel verwendet? Wenn ja, lernt es nicht selbst Schach, sondern lernt nur eine Annäherung an die Stockfish-Bewertung mithilfe eines nnet über den Board-Funktionen.
Fernando

@ Fernando Giraffe hat nichts mit Stockfisch zu tun, glaube ich.
SmallChess

Ich werde die gesamte Zeitung lesen, aber auf Seite 18 heißt es: We evaluated board representations by training neural networks to predict the output of Stock- fish’s evaluation function in a supervised fashion, given 5 million positions as input, in the board representation under evaluation. Das lernt also nicht durch Selbstspiel-IMO.
Fernando

1

Es ist fraglich, ob Sie einen heuristischen Such- und Bewertungsansatz als Brute-Force bezeichnen können. Die meisten erstklassigen Schach-Engines verfolgen heute einen regelbasierten Ansatz zur Bewertung einer Position und eine regelbasierte Suchfunktion zum Beschneiden von Zügen.

Dies ist eigentlich nicht garantiert, um den "global optimalen" Zug zu wählen, jedoch sind diese Züge für den Zweck gut genug. In diesem Sinne verwenden die meisten Schach-Engines eine Annäherung an das globale Optimum und kommen tatsächlich durch.

Bis heute haben wir nicht viele Schach-Engines auf der obersten Ebene mit einem anderen Ansatz erfolgreich, zumindest nicht mit billiger Hardware.


0

Claude Shannon schlug zwei Arten von Algorithmen zur Erstellung von Schach-Engines vor. Eine "Typ A" -Maschine untersucht alle möglichen Bewegungen bis zu einer endlichen Tiefe, minimiert den Baum und spielt dann die Bewegung mit der höchsten Bewertung des minimierten Baums (auch bekannt als Brute Force). Engines vom Typ B beschränken ihre Suche nur auf eine Teilmenge möglicher Bewegungen, die auf bestimmten Kriterien basieren. Ich glaubte, er bevorzugte Typ B als vielversprechender.

Die Motoren, die in den 1970er Jahren entwickelt wurden (z. B. Hitech, Kaissa), waren in der Regel reine Brute Force ohne Beschneiden oder nur Alpha-Beta, aber die Leute erkannten bald den Wert des Beschneidens des Baums von Bewegungen und Linien, die sich wahrscheinlich nicht als stark herausstellten . Fast alle neueren Motoren beschneiden den Baum der Linien, die deutlich schwächer sind (Alpha-Beta), und die meisten Motoren verwenden auch verschiedene Arten des Vorwärtsbeschneidens (Sinnlosigkeit, Reduzierung verspäteter Bewegungen, Nullbewegung, Rasieren). In diesem Sinne gibt es nicht mehr viele Motoren, die reine rohe Gewalt anwenden.

In den 1970er Jahren arbeitete Botvinnik an einer Engine namens Pioneer, die sich mit dem Begriff der Angriffspfade befasste, die evaluationsgesteuert gewesen wären. Es erreichte nie den Punkt, an dem es eine vollständige Partie Schach spielen konnte.

In den 90er Jahren sprach sich Chris Wittington für die Einbeziehung von mehr Schachwissen aus und schuf ein Programm namens Chess System Tal, das für seine Zeit ziemlich stark war.

Kasparov, Anand und Tord Romstad haben alle festgestellt, dass Hiarcs eine detailliertere Bewertung zu haben scheint als viele der Top-Motoren, deren Stärke von einer schnellen Suche herrührt.


-2

Grundsätzlich alle!

Schachengines verwenden wirklich nur Brute-Force, wenn:

  • erzählt zu
  • analysieren Positionen (Problemlösung)
  • Auf der Suche nach einem Schachmatt (Problemlösung, nicht beim Spielen, wie Probleme im Stil "Finde den Partner in N")

Andernfalls haben sie eine "selektive Suche", bei der alle möglichen Bewegungen für ein bestimmtes Board-Layout berücksichtigt werden, aber nur eine Handvoll davon untersucht werden. Ein Motor kann jedoch auf Brute-Force umschalten, wenn er zwei Züge sehr ähnlich bewertet (mehr als eine starke Bewegung) oder wenn er keine Bewegung findet, die ihm gefällt (keine starken Bewegungen).

Sie neigen auch dazu, als letzte Verteidigungslinie Brute-Force zu betreiben. Wenn Sie einen Schachmatt gesehen haben, ist die Wahrscheinlichkeit groß, dass er kommt, und er wird sich wirklich bemühen wollen, zu zeichnen, und kann keinen Ausweg finden (der "Horizon-Effekt") "ist ein Problem mit Motoren, nehmen wir an, es wird seine Königin verlieren, und es wurde begrenzt, um nur 4 Spiele tief zu gehen; wenn es Bauern tauschen und diesen Verlust der Königin um 4 Züge verschieben kann, wird es denken, dass es die Königin gerettet hat Dabei verliert es mindestens 1 Bauern (da der nächste Zug den Horizont von früher näher bringt) und das Gewicht, das es auf die Rettung der Königin legt, kann bedeuten, dass es etwas Verteidigung opfert, umsonst, wenn der Tod über den Horizont hinausgeht.) .

Es wird auch Brute-Force, wenn die selektive Suche nicht sehr nützlich ist. Aus diesem Grund brauchen Motoren länger, wenn noch 3 Teile übrig sind. Sie müssen Brute-Force-Maßnahmen ergreifen, da der Auswahlalgorithmus eine Bewegung nicht bewerten kann. Der Auswahlalgorithmus ist während des Midgames großartig, weil er wie folgt aussehen kann: "Oohh, dies mit dem Bauern zu tun, blockiert sein [was auch immer] und sichert mein [was auch immer] und [was auch immer], das ich weniger verteidige als angreife" - zum Beispiel .

Wenn Sie einen König in der Mitte des Bretts haben, gibt es 8 Züge. Die selektive Suche lautet wie folgt: "Keiner von diesen macht etwas Nützliches, ich kann es nicht sagen."

Sie können sich die selektive Suche als zweiteilig vorstellen. Sie ist taktisch in dem Sinne, dass sie versucht, taktische Bewegungen zu erkennen. Sie ignoriert normalerweise das Gewicht der beteiligten Teile, da eine Königin, die nicht Teil einer Strategie ist, keinen Wert hat mehr als ein Bauer, der für ihn lebenswichtig ist. Es ist auch insofern von strategischer Bedeutung, als es Bewegungen untersucht, die eine Verteidigung stärken, und sich später potenziellen Angriffen öffnet.

Der Motor macht dann dasselbe aus Ihrer Sicht und hin und her und hin und her.

Etwas, das als Transpositionstabelle bezeichnet wird, ist eine große Liste von Dingen, über die es nachgedacht hat. Wenn es also etwas in Betracht zieht, das es bereits getan hat, weiß es es und muss es nicht neu bewerten.

AUSSER (selektiv :)) kommt es anders oder will es weiter erforschen. Angenommen, es stellt beispielsweise fest, dass Ihr ... Turm für einen bevorstehenden Angriff unerlässlich ist, und die Engine bewertet möglicherweise eine Linie neu, wenn sie dies feststellt. Das vorherige Gewicht, das es auf diesen Turm gelegt hat (z. B. 5 Punkte, wie wichtig es für Sie ist), könnte eine Unterschätzung sein.

Die selektive Suche kann auch zurückverfolgen, wie beispielsweise die Betrachtung eines Bischofs, der direkt in das feindliche Gebiet vordringt. Es ist nicht wichtig, dass sie leicht genommen werden kann. Sagen wir, es entdeckt, dass dies strategisch gesehen ein großartiger Schachzug ist! Es kann dann zurückgehen, um zu versuchen, einen Weg zu finden, diesen Platz zu schützen, um diesen Bischof dorthin zu bringen. Angenommen, es handelt sich um einen Bauern.

Die Brute-Force-Methode würde die Linie berücksichtigen, die diesen Bauernzug ​​beinhaltet, und (durch Brute-Force) auch den Bischofszug, und dasselbe Material, das die Brettposition bewertet (die selektive Suche selbst), sagt "das ist gut", also das Brett bewertet diese Variation hoch, beide finden es.

Es ist sehr schwierig, eine Position mit der Brute-Force-Methode zu bewerten. Deshalb funktioniert die selektive Suche so gut.

Die Brute-Force aus der Ausgangsposition könnte diesen berühmten Mate-in-4 finden, bei dem es sich um eine Königin f7 handelt, die von einem Bischof gedeckt wird, und wenn es so hoch bewertet würde (ich habe einen Scheck gefunden! JOB FERTIG! SPIELEN!) wäre falsch, weil schwarz offensichtlich kontern wird. Die selektive Suche bewertet eine Position (zur weiteren Bewertung), weil sie gut zu sein scheint . Dies bedeutet, wenn es über Ihre Antwort nachdenkt, kann es entscheiden, was für Sie gut wäre ...

Das Zeug, das die selektive Suche verwendet, um Dinge zu bewerten, wird sowieso von der Brute-Force-Person verwendet, weil "einen Schachmatt gefunden hat, der diesen Zug beinhaltet" nicht ausreicht, um zu sagen, dass der Zug gut ist.

Daher Was sind die ersten Schritte gewählt (weiß), mit roher Gewalt Schach - Engines?

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.