Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / Schachprogrammierung / Go Programmierung
- By Lothar Jung Date 2022-04-10 13:25 Edited 2022-04-10 13:41 Upvotes 1
Der Wikipedia Artikel über Go:

https://de.wikipedia.org/wiki/Go_(Spiel)?wprov=sfti1

GNU-Go-Engine:

https://www.gnu.org/software/gnugo/

Die KI-Engine AlphaGo:

https://de.wikipedia.org/wiki/AlphaGo?wprov=sfti1

Das KI-MiniGo Projekt auf GitHub mit Sourcecode:

https://github.com/tensorflow/minigo

Die KataGo KI-Engine:

https://github.com/lightvector/KataGo/releases/tag/v1.11.0

https://katagotraining.org/

Weitere kostenlose Go Programme:

https://www.gnu.org/software/gnugo/free_go_software.html
- - By Lothar Jung Date 2022-04-10 14:37 Upvotes 1
Hier das Movie „AlphaGo the Movie“ auf YouTube:

https://youtu.be/WXuK6gekU1Y
Parent - By Lothar Jung Date 2022-09-23 17:18
Ein kurzes Alpha Zero Go Tutorial:

https://web.stanford.edu/~surag/posts/alphazero.html
- By Lothar Jung Date 2022-10-01 10:29 Upvotes 1
Veröffentlichung über „Playing Good-Quality Games with Weak Players by Combining Programs with Different Roles“:

https://ieee-cog.org/2022/assets/papers/paper_214.pdf
- By Lothar Jung Date 2022-10-30 09:11 Upvotes 1
Hier ein Blog zur Netzentwicklung von KataGo:

https://blog.janestreet.com/deep-learning-the-hardest-go-problem-in-the-world/
- By Lothar Jung Date 2022-10-30 17:38 Upvotes 1
Hier der Github Link zu der Engine:

https://github.com/lightvector/KataGo
- By Lothar Jung Date 2022-11-02 13:48 Upvotes 1
Hier die Veröffentlichung von „
ADVERSARIAL POLICIES BEAT PROFESSIONAL- LEVEL GO AIS“:

https://arxiv.org/pdf/2211.00241.pdf
- By Lothar Jung Date 2022-11-07 16:53 Upvotes 1
Github Veröffentlichung über KataGo auf dem Apple M1:

https://chinchangyang.github.io/github/katago/coreml/apple/m1/arm64/2022/08/20/run-katago-with-opencl-coreml.html
- By Lothar Jung Date 2022-11-09 11:38 Upvotes 1
Veröffentlichung zu GO-KI:

„Are AlphaZero-like Agents Robust to Adversarial Perturbations?“.

https://arxiv.org/pdf/2211.03769.pdf
- By Lothar Jung Date 2022-12-03 16:03 Upvotes 1
https://www.vice.com/en/article/dy7evy/scientists-found-a-way-to-defeat-a-near-superhuman-go-playing-ai

https://arxiv.org/pdf/2211.00241.pdf
- By Lothar Jung Date 2023-02-20 22:00 Upvotes 1
Hier ein Link auf einen Heiseartikel über Schwächen von AlphaGo:

https://www.heise.de/news/Sechs-Jahre-nach-AlphaGo-Mensch-besiegt-erneut-zuverlaessig-staerkste-Go-KIs-7520941.html
- By Lothar Jung Date 2023-02-21 08:08 Upvotes 1
Hier ein Blog über die Strategie eines Gewinns gegen AlphaGo:

https://www.lesswrong.com/posts/Es6cinTyuTq3YAcoK/there-are-probably-no-superhuman-go-ais-strong-human-players
- - By Lothar Jung Date 2023-03-07 18:05 Edited 2023-03-07 18:43 Upvotes 1
KataGo ist eine leistungsstarke KI Go Engine.

https://github.com/lightvector/KataGo

Hier der Link zum Training:

https://katagotraining.org/

Hier die Mobilversion:

https://apps.apple.com/de/app/ai-katago-go/id1560986333

http://katago.navibarda.com/
Parent - By Lothar Jung Date 2023-05-31 15:50 Upvotes 1
Hier eine wichtige Veröffentlichung zu KataGo:

https://github.com/lightvector/KataGo/blob/master/docs/KataGoMethods.md
- By Lothar Jung Date 2023-03-14 15:58 Upvotes 1
https://psyarxiv.com/rn3vx
- By Lothar Jung Date 2023-07-22 13:21 Edited 2023-07-22 13:24
Die Programmierung einer Go-Engine: Einführung in die Entwicklung eines Go-Spielprogramms

Go ist ein faszinierendes strategisches Brettspiel, das seinen Ursprung in China hat und seit Tausenden von Jahren gespielt wird. In den letzten Jahren hat es auch außerhalb Asiens immer mehr an Popularität gewonnen. Die Entwicklung einer Go-Engine, also eines Programms, das gegen menschliche Spieler oder andere Engines spielen kann, ist eine anspruchsvolle Aufgabe, die jedoch unglaublich lohnend sein kann. In diesem Artikel werfen wir einen umfassenden Blick auf die Grundlagen der Programmierung einer Go-Engine.

1. Das Go-Spiel verstehen

Go wird auf einem quadratischen Brett mit 19x19 Linien gespielt. Die Spieler setzen abwechselnd schwarze und weiße Steine auf die Schnittpunkte der Linien. Das Ziel ist es, Gebiete zu umschließen und dabei möglichst viele Steine des Gegners zu erobern. Das Spiel endet, wenn beide Spieler zustimmen, dass keine weiteren Züge von Vorteil sind.

2. Die Darstellung des Go-Bretts

In der Go-Engine-Programmierung ist eine der grundlegenden Aufgaben die effiziente Darstellung des Go-Bretts und seiner Zustände. Dafür gibt es verschiedene Ansätze, darunter zweidimensionale Arrays, sogenannte Bitboards oder effizientere Datenstrukturen wie "Sparse Sets". Jede dieser Methoden hat ihre eigenen Vor- und Nachteile, und die Wahl hängt oft von den individuellen Anforderungen und der Leistungsfähigkeit der Engine ab.

3. Suchalgorithmus und Bewertungsfunktion

Der Suchalgorithmus und die Bewertungsfunktion sind zwei entscheidende Komponenten einer Go-Engine, die gemeinsam den besten Zug für die Engine ermitteln. Der Suchalgorithmus durchsucht den möglichen Spielverlauf und die zukünftigen Züge, um den besten Pfad zu finden, der zu einer vorteilhaften Position führen könnte. Die Bewertungsfunktion bewertet den aktuellen Spielzustand und gibt eine Bewertung oder einen Punktwert zurück, um zu bestimmen, wie vorteilhaft der Zustand für den aktuellen Spieler ist.

Suchalgorithmen:

In der Go-Programmierung ist die Suche nach dem besten Zug eine anspruchsvolle Aufgabe, da der Suchraum exponentiell mit der Anzahl der möglichen Züge wächst. Traditionell wurde der Minimax-Algorithmus verwendet, um alle möglichen Züge bis zu einer bestimmten Suchtiefe im Spielbaum zu analysieren. Dieser Ansatz wurde jedoch aufgrund des hohen Verzweigungsfaktors im Go-Spiel durch andere effizientere Algorithmen erweitert.

Ein leistungsstarker Algorithmus, der in vielen modernen Go-Engines Verwendung findet, ist die Monte-Carlo-Tree-Search (MCTS). MCTS ist ein probabilistischer Suchalgorithmus, der nicht den gesamten Suchbaum durchsucht, sondern durch zufällige Simulationen und gezielte Auswahlschritte den besten Zug ermittelt. MCTS hat sich als effektive Methode erwiesen, um den hohen Verzweigungsfaktor im Go-Spiel zu bewältigen und gute Ergebnisse zu erzielen.

Bewertungsfunktion:

Die Bewertungsfunktion einer Go-Engine analysiert den aktuellen Spielzustand und bewertet ihn auf der Grundlage verschiedener Faktoren. Diese Faktoren können beispielsweise die Anzahl der Steine auf dem Brett, die Kontrolle über bestimmte Gebiete, die Stabilität von Gruppen von Steinen und die Positionierung der Steine sein.

Eine herausfordernde Aufgabe besteht darin, eine geeignete Bewertungsfunktion zu entwerfen, da Go ein Spiel mit globaler Bedeutung ist. Das bedeutet, dass Aktionen an einem Ende des Bretts weitreichende Auswirkungen auf das gesamte Spiel haben können. Daher müssen Bewertungsfunktionen in der Lage sein, diese globalen Zusammenhänge zu berücksichtigen und nicht nur lokale Eigenschaften des Spielzustands zu bewerten.

Moderne Go-Engines nutzen oft maschinelles Lernen und neuronale Netze, um die Bewertungsfunktion zu verbessern. Dabei werden große Datensätze vergangener Spiele verwendet, um Muster und Strategien zu erkennen, die eine genauere Bewertung des aktuellen Spielzustands ermöglichen. Durch diese Kombination aus Suchalgorithmen und maschinellem Lernen können Go-Engines hohe Spielstärken erreichen und sogar menschliche Profispieler herausfordern.

4. Die derzeitigen Go-Programme

Zu den derzeit bekanntesten Go-Programmen und -Engines gehören:

- AlphaGo (von DeepMind):
AlphaGo war ein bahnbrechendes Go-Programm, das maschinelles Lernen und neuronale Netze nutzte, um professionelle Go-Spieler zu besiegen. Es erlangte internationale Bekanntheit, als es 2016 den südkoreanischen Profispieler Lee Sedol besiegte. AlphaGo wurde später durch AlphaGo Zero und AlphaZero weiterentwickelt, die sich ausschließlich durch selbst gespielte Partien ohne menschliche Daten trainierten und noch stärker waren.

- Leela Chess Zero (Lc0):
Ursprünglich als Schach-Engine entwickelt, wurde Lc0 auch für Go angepasst. Es verwendet eine ähnliche Technologie wie AlphaZero und hat hohe Spielstärke erreicht, indem es auf großen Clustern von Grafikkarten trainiert wurde.

- KataGo:
KataGo ist eine andere starke Go-Engine, die auf einer Kombination von fortschrittlichen Algorithmen und maschinellem Lernen basiert. Es wurde auf einer umfangreichen Sammlung von Partien professioneller Go-Spieler trainiert.

- Zen:
Zen war eine der stärksten Go-Engines vor dem Aufkommen von AlphaGo. Es verwendete eine Kombination aus heuristischen Bewertungsfunktionen und einem ausgeklügelten Suchalgorithmus, um seine Spielstärke zu erreichen.

- **Pyaq: Pyaq war ein Open-Source-Go-Programm, das auf Alphabeta-Suche mit Monte-Carlo-Simulationen basierte. Es erreichte eine solide Spielstärke und diente als Basis für die Entwicklung einiger stärkerer Varianten.

- Fuego:
Fuego ist eine andere bekannte Open-Source-Go-Engine, die auf den Alpha-Beta-Algorithmus und Monte-Carlo-Baum-Suche setzte.

- ELF OpenGo:
ELF OpenGo ist eine leistungsstarke Go-Engine, die von Facebook entwickelt wurde. Sie nutzt MCTS und wird mithilfe von Deep Learning trainiert.

- CrazyStone:
CrazyStone ist eine kommerzielle Go-Engine, die eine Kombination aus Suchalgorithmen und maschinellem Lernen einsetzt, um ihre Spielstärke zu erreichen.

Diese Engines haben in den letzten Jahren enorme Fortschritte gemacht und erreichten hohe Spielstärken, indem sie fortschrittliche Algorithmen wie MCTS und maschinelles Lernen, einschließlich neuronaler Netze, einsetzten.

5. Unterschiede zur Schachprogrammierung

Die Programmierung einer Go-Engine unterscheidet sich erheblich von der Schachprogrammierung aufgrund der inhärenten Unterschiede zwischen den Spielen. Dazu gehören der deutlich höhere Verzweigungsfaktor im Go-Spiel, die globale Bedeutung der Züge und die langfristige strategische Ausrichtung, die das Spiel komplexer machen. Diese Unterschiede erfordern spezielle Algorithmen wie MCTS und machen die Verwendung von maschinellem Lernen häufiger in Go-Engines als in Schach-Engines.

Die Entwicklung einer Go-Engine erfordert daher nicht nur tiefes Verständnis des Spiels und seiner Regeln, sondern auch Fähigkeiten in den Bereichen künstliche Intelligenz, Algorithmik und maschinelles Lernen, um effiziente Suchalgorithmen und aussagekräftige Bewertungsfunktionen zu entwickeln, die in der Lage sind, komplexe Go-Situationen zu meistern und starke Spielzüge zu erzeugen. Fortschritte in der Go-Programmierung haben nicht nur die Spielstärke der Engines gesteigert, sondern auch zu einer faszinierenden Verbindung von künstlicher Intelligenz und einem der ältesten strategischen Brettspiele der Welt geführt.
- By Lothar Jung Date 2023-08-22 10:03
KataGo-Veröffentlichung über „Adversarial Policies Beat Superhuman Go AIs“:

https://arxiv.org/pdf/2211.00241.pdf
- By Lothar Jung Date 2023-09-28 09:58
Veröffentlichung über „Vision Transformers for Computer Go“:

https://arxiv.org/pdf/2309.12675.pdf
Up Topic Hauptforen / Schachprogrammierung / Go Programmierung

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill