EDIT (nach dem Lesen der Zeitung):
Ich habe die Zeitung nachdenklich gelesen. Beginnen wir mit dem, was Google in der Zeitung behauptet hat:
- Sie besiegten Stockfish mit Monte-Carlo-Tree-Search + Deep Neural Networks
- Das Match war absolut einseitig, viele Siege für AlphaZero, aber keine für Stockfish
- Sie waren in der Lage, es in nur vier Stunden zu tun
- AlphaZero spielte wie ein Mensch
Leider halte ich es nicht für eine gute Zeitschrift. Ich werde mit Links erklären (damit du weißt, dass ich nicht träume):
https://www.chess.com/news/view/alphazero-reactions-from-top-gms-stockfish-author
Die Spielergebnisse für sich genommen sind nicht besonders aussagekräftig, da die Zeitsteuerung und die Einstellungen der Stockfish-Parameter ziemlich seltsam sind: Die Spiele wurden zu einer festgelegten Zeit von 1 Minute pro Zug gespielt, was bedeutet, dass Stockfish keine Zeitmanagement-Heuristiken verwendet ( Es wurde viel Mühe darauf verwendet, Stockfish zu veranlassen, kritische Punkte im Spiel zu identifizieren und zu entscheiden, wann zusätzliche Zeit für einen Zug aufgewendet werden soll.
Stockfish hätte nicht mit nur einer Minute pro Zug das beste Schach spielen können. Das Programm war nicht dafür ausgelegt.
- Stockfish lief auf einer normalen kommerziellen Maschine, während AlphaZero auf einer 4-Millionen-TPU-Maschine lief, die auf AlphaZero eingestellt war. Dies ist ein Vergleich zwischen Ihrem High-End-Desktop und einem billigen Android-Handy. Tord schrieb:
Eines ist ein herkömmliches Schachprogramm, das auf normalen Computern ausgeführt wird, das andere verwendet grundlegend andere Techniken und wird auf kundenspezifisch entwickelter Hardware ausgeführt, die nicht käuflich zu erwerben ist (und sonst aus dem Budget gewöhnlicher Benutzer herauskommt).
- Google hat versehentlich einem 32-Kern-Rechner für Stockfish 64 Threads gegeben. Ich zitiere GM Larry Kaufman (Weltklasse-Computerschachexperte):
http://talkchess.com/forum/viewtopic.php?p=741987&highlight=#741987
Ich stimme zu, dass der Test alles andere als fair war. Ein weiteres Problem, das SF schadete, war, dass es anscheinend auf 64 Threads auf einem 32-Core-Rechner ausgeführt wurde, aber es würde viel besser funktionieren, wenn nur 32 Threads auf diesem Rechner ausgeführt würden, da es fast keinen SMP-Vorteil gibt, um die Verlangsamung von ungefähr 5 zu 3 auszugleichen. Auch das Kostenverhältnis war mehr als ich sagte; Ich dachte, es wäre ein 64-Kern-Rechner, aber ein 32-Kern-Rechner kostet ungefähr die Hälfte dessen, was ich vermutet habe. Also vielleicht ist alles in allem 30 zu 1 keine so schlechte Schätzung. Auf der anderen Seite, denke ich, unterschätzen Sie, um wie viel es noch verbessert werden könnte.
- Stockfisch gab nur 1 GB Hash-Tabelle. Dies ist ein Witz ... Ich habe eine größere Hash-Tabelle für meine Stockfish iOS-App (Haftungsausschluss: Ich bin der Autor) auf meinem iPhone! Tord schrieb:
... viel zu kleine Hash-Tabellen für die Anzahl der Threads ...
Eine 1-GB-Hash-Tabelle ist für ein Spiel wie dieses absolut inakzeptabel. Stockfische stießen häufig auf Hash-Kollisionen. Es dauert CPU-Zyklen, um alte Hash-Einträge zu ersetzen.
- Stockfish ist nicht für die Ausführung mit so vielen Threads ausgelegt. In meiner iOS-Schach-App werden nur wenige Threads verwendet. Tord schrieb:
... spielte mit weit mehr Suchthreads als jemals zuvor ...
- Stockfish lief ohne Eröffnungsbuch oder 6-teilige Syzygy-Endspiel-Tischbasis. Die Stichprobengröße war unzureichend. Die Stockfish-Version war nicht die neueste. Diskussion hier .
FAZIT
Google hat nicht ohne Zweifel bewiesen, dass ihre Methoden Stockfish überlegen sind. Ihre Zahlen sind oberflächlich und stark auf AlphaZero voreingenommen. Ihre Methoden sind für einen unabhängigen Dritten nicht reproduzierbar. Es ist noch etwas zu früh, um zu sagen, dass Deep Learning der traditionellen Schachprogrammierung überlegen ist.
BEARBEITEN (Dez 2017):
Es gibt eine neue Veröffentlichung von Google Deepmind ( https://arxiv.org/pdf/1712.01815.pdf ) zum vertieften Lernen im Schach. Aus der Zusammenfassung geht hervor, dass die weltweit führende Stockfish-Schachmaschine "überzeugend" besiegt wurde. Ich denke, dies ist der bedeutendste Erfolg im Computerschach seit dem Deep Blue-Match 1997. Ich werde meine Antwort aktualisieren, sobald ich die Zeitung ausführlich gelesen habe.
Original (vor Dez 2017)
Lassen Sie uns Ihre Frage klären:
- Nein, Schach-Engines verwenden keine Brute-Force.
- AlphaGo macht Gebrauch Baumsuch, verwendet es Monte Carlo Baumsuche . Google " Monte Carlo Tree Search alphaGo ", wenn Sie überzeugt sein wollen.
ANN kann für Schachengines verwendet werden:
Würde dieses Programm eine bessere Leistung erbringen als die Top-Schachengines (und Schachspieler) von heute?
Giraffe spielt ungefähr auf der Stufe Internation Master, was ungefähr der FIDE 2400 entspricht. Stockfish, Houdini und Komodo spielen jedoch alle um die FIDE 3000. Dies ist eine große Lücke. Warum? Warum nicht Monte-Carlo Tree Search?
- Die materielle Heuristik im Schach ist einfach. Meistens gewinnt / verliert eine Schachposition, indem nur die Materialien auf dem Brett gezählt werden. Bitte denken Sie daran, dass das Zählen von Materialien für Go nicht funktioniert. Die Materialzählung ist um Größenordnungen schneller als das Ausführen neuronaler Netze - dies kann durch Bitboards erfolgen, die durch eine 64-Bit-Ganzzahl dargestellt werden. Auf dem 64-Bit-System können nur mehrere Maschinenbefehle ausgeführt werden. Suchen mit dem herkömmlichen Algorithmus ist viel schneller als maschinelles Lernen. Höhere Knoten pro Sekunde bedeuten eine tiefere Suche.
- In ähnlicher Weise gibt es sehr nützliche und kostengünstige Techniken wie das Beschneiden von Null-Zügen, die Reduzierung von späten Zügen und Killerbewegungen usw. Sie sind günstig in der Ausführung und in Bezug auf den in AlphaGo verwendeten Ansatz sehr effizient.
- Die statische Auswertung im Schach ist schnell und nützlich
- Maschinelles Lernen ist nützlich, um Parameter zu optimieren, aber wir haben auch SPSA und CLOP für Schach.
- Es gibt viele nützliche Metriken für die Baumreduzierung im Schach. Viel weniger für Go.
Es gab Forschungen, dass Monte Carlo Tree Search nicht gut für Schach skaliert. Go ist ein anderes Spiel als Schach. Die Schachalgorithmen funktionieren bei Go nicht, weil das Schach auf brutalen Taktiken beruht. Taktik ist wohl wichtiger im Schach.
Jetzt haben wir festgestellt, dass MCTS für AlphaGo gut funktioniert, aber weniger für Schach. Deep Learning wäre nützlicher, wenn:
- Die abgestimmte NN-Auswertung ist besser als die herkömmlichen Algorithmen. Doch tiefes Lernen ist keine Zauberei, Sie als Programmierer müssten immer noch programmieren. Wie bereits erwähnt, haben wir so etwas wie SPSA zum Selbstspielen für die Parametereinstellung im Schach.
- Investition, Geld! Es gibt nicht viel Geld für maschinelles Lernen im Schach. Stockfish ist kostenlos und Open Source, aber stark genug, um alle menschlichen Spieler zu besiegen. Warum sollte Google Millionen ausgeben, wenn jeder Stockfish kostenlos herunterladen kann? Warum werden die CPU-Cluster bezahlt? Wer bezahlt für Talente? Niemand will es tun, denn Schach gilt als "gelöstes" Spiel.
Wenn Deep Learning Folgendes erreichen kann, schlägt es den traditionellen Algorithmus:
- Wenn Sie eine Schachposition haben, "fühlen" Sie sich wie ein menschlicher Großmeister. Zum Beispiel würde ein menschlicher Großmeister nicht in Zeilen verfallen, die erfahrungsgemäß schlecht sind. Weder der traditionelle Algorithmus noch Deep Learning können dies erreichen. Ihr NN-Modell gibt Ihnen möglicherweise eine Wahrscheinlichkeit [0..1] für Ihre Position, aber das ist nicht gut genug.
Lassen Sie mich darauf hinweisen:
Giraffe (der von @Tim gepostete Link) verwendet keine Monte-Carlo-Baumsuche. Es wird der reguläre Nega-Max-Algorithmus verwendet. Es ersetzt lediglich die reguläre Auswertungsfunktion durch NN und ist sehr langsam.
einer noch:
Obwohl Kasparov 1997 von Deep Blue geschlagen wurde. "Humanity" ging zwischen 2003 und 2005 wirklich verloren, als Kramnik ein Match gegen Deep Fritz verlor und Michael Adams in einem einseitigen Match gegen einen Clustercomputer verlor. In dieser Zeit erwies sich Rybka selbst für die besten Spieler der Welt als zu stark.
Referenz:
http://www.talkchess.com/forum/viewtopic.php?t=64096&postdays=0&postorder=asc&highlight=alphago+chess&topic_view=flat&start=0
Ich zitiere:
Im Schach haben wir das Konzept der Materialität, das bereits eine vernünftige Einschätzung darüber gibt, wie gut eine Maschine läuft und wie schnell sie berechnet werden kann. Darüber hinaus gibt es viele andere Aspekte des Spiels, die in einer statischen Auswertungsfunktion kodiert werden können, die in Go nicht möglich ist. Aufgrund der vielen Heuristiken und der guten Bewertung ist der EBF (Effective Branching Factor) recht klein. Die Verwendung eines neuronalen Netzwerks als Ersatz für die statische Auswertungsfunktion würde den Motor definitiv erheblich verlangsamen.