Wie ein neuronales Netz entsteht

von Albert Silver
22.02.2021 – Fat Fritz 2 schlägt hohe Wellen und in diesem Artikel schildert Albert Silver, wie er das Programm entwickelt hat, und was Fat Fritz von anderen Programmen unterscheidet. Tatsächlich kann Fat Fritz 2 mehr als Lc0 und Stockfish, Programme, die frei verfügbar sind und mit denen Fat Fritz verknüpft ist. Denn das einzigartige neuronale Netz von Fat Fritz liefert neue Ideen und Sichtweisen, die jede Analyse bereichern.

ChessBase 16 - Megapaket Edition 2021 ChessBase 16 - Megapaket Edition 2021

Dein Schlüssel zu frischen Ideen, präzisen Analysen und zielgenauem Training!
ChessBase ist die persönliche Schach-Datenbank, die weltweit zum Standard geworden ist. Und zwar für alle, die Spaß am Schach haben und auch in Zukunft erfolgreich mitspielen wollen. Das gilt für den Weltmeister ebenso wie für den Vereinsspieler oder den Schachfreund von nebenan.

Mehr...

Falls Sie immer schon einmal wissen wollten, worin der Unterschied zwischen der Suche und dem neuronalen Netz genau besteht, oder welche Herausforderungen ein so umfangreiches Projekt, wie die Entwicklung eines neuronalen Netzes mit sich bringt, dann sollte Ihnen der folgende Artikel Aufschluss geben.

Was ist in der Formel 1 wichtiger? Das Auto oder der Fahrer? 

In der Welt der Schachengines mit neuronalen Netzen ist die Suche der Rennwagen und Motor und das neuronale Netz der Fahrer. Eine superschnelle Engine kommt allein vielleicht auf Rekordgeschwindigkeiten, aber man braucht einen ausgezeichneten Fahrer, der das phantastische Auto mit seinem Wissen und seiner Erfahrung zum Sieg steuert. Denn auch der beste Fahrer der Welt kann die Nachteile eines langsamen Autos nur bis zu einem gewissen Grad kompensieren.

Die Suche ist ein wichtiger Teil jeder Schachengine und darauf ausgelegt, so schnell und effizient wie möglich die besten Ergebnisse zu liefern. Aber auch die beste Suche nützt wenig, wenn es keine starke Bewertungsfunktion gibt, die weiß, nach welchen Zügen man suchen sollte, bei welchen Zügen man man die Suche vertiefen und welche Züge man verwerfen oder nicht weiter analysieren sollte. In der Welt traditioneller Engines ist die Suche von Stockfish die beste ihrer Art.

McLarens MP4/6 war damals das schnellste Auto der Formel 1, aber die vielen Siege kamen durch das Zusammenspiel mit dem großen Ayrton Senna. | Foto: wileynorwichphoto - Flickr: Senna @ USGP 1991, CC By 2.0

Aber, und um das klar zu sagen, wenn man für die gleiche Suche zwei unterschiedliche neuronale Netze verwendet, dann erhält man unterschiedliche Ergebnisse und es werden andere Züge an anderer Stelle analysiert. Die Hauptvarianten sind vielleicht manchmal ähnlich oder sogar identisch, da der beste Zug eben der beste Zug ist, aber auch perfektes Spiel bietet noch Raum für Stil und Vorlieben.

Sowohl Fat Fritz 1.0 und das neue Fat Fritz 2.0 nutzen die Suche der Open Source Programme Lc0 und Stockfish, und wenn Sie Fat Fritz kaufen, dann zahlen Sie definitiv nicht für Lc0 und Stockfish, die frei verfügbar und mit Fat Fritz verknüpft sind. Sie kaufen das einzigartige neuronale Netz von Fat Fritz, und das liefert neue Ideen, die jede Analyse bereichern. Natürlich ist die Elo-Zahl wichtig, um die generelle Leistung zu messen, aber sie ist eben nur ein Aspekt, und deshalb sind unterschiedliche Sichtweisen immer nützlich und wichtig. Hätte ich meinen eigenen Karpov, der für mich analysiert, wäre ich mehr als zufrieden, aber ich hätte dennoch nichts dagegen, auch noch meinen eigenen Kasparov zum Analysieren zu haben, oder?

Was folgt ist eine detaillierte Beschreibung, wie das neuronale Netz von Fat Fritz 2 entstanden ist, einschließlich der Ideen und der Arbeit, die in diese Entwicklung geflossen sind. Ein befreundeter Großmeister, der den Text vorab gelesen hat, meinte: "Das ist eine Menge Arbeit." Und ja, tatsächlich war es eine Menge Arbeit.

Fat Fritz 2 - das Lc0 Netz

Nach der erfolgreichen Veröffentlichung des neuronalen Netzes Fat Fritz 1.0 im November 2019, das auf Lc0 (dem Leela Chess Binär) gelaufen ist, fing ich mit der Arbeit an seinem Nachfolger an, einem größeren neuronalen Netz, das ebenfalls auf LcO laufen sollte.

Das neue "Fat Fritz 2" sollte größer sein und ein paar neue Ideen berücksichtigen. Im Laufe von ein paar Wochen testete und probierte ich eine Reihe von Möglichkeiten, bis ich schließlich auf die Variante stieß, die die beste Leistung brachte.

Im Februar hatte das Training bereits begonnen und ich setzte Dezember als vorläufigen Termin für das Projektende fest. Dennoch hatte ich Bedenken, denn Daten für ein größeres Netz zu erzeugen, ist unglaublich zeitintensiv, selbst mit den vierzehn 2080ti GPUs, die ich dafür eingesetzt habe. Das finanzielle Risiko hatte ich dabei ganz allein zu tragen, aber Leidenschaft für meine Arbeit war für mich immer ein wichtiger Antrieb. Das geplante größere Netz bedeutete eine mehr als zweifache Verlangsamung, und mit den geplanten 80-90 Wiederholungen konnte ich froh sein, ein Netz alle drei Tage zu trainieren.

NNUE oder nicht?

Zu Beginn machte ich schnell Fortschritte, aber im Juli 2020 sorgte NNUE in der Schachwelt für Aufsehen. Ein Programmierer namens Tanuki, der Teil einer Gruppe von Shogi-Programmierern war, hatte daran gearbeitet, Stockfish mit NNUE-Technologie auszustatten. Obwohl er bereits Monate daran gearbeitet hatte, zeigte sich erst im Juli 2020, wie vielversprechend dieser neue Ansatz war. Ich beschloss, diesen Ansatz ebenfalls auszuprobieren. Dafür nutzte ich Tools, die einem zur Verfügung gestellt wurden, um sein eigenes Netz zu trainieren. Ein frühe Version von Stockfish mit einem NNUE-Netz stand zur Verfügung und die Ergebnisse waren spektakulär. Ich wusste, dass ich noch am Anfang stand, aber sah auch, dass mein Projekt im Dezember bereits "obsolet" sein könnte. Ich war hin- und hergerissen. Ich hatte Tausende von Dollar investiert, um das aktuelle Lc0-basierte neuronale Netz zu trainieren, und wenn ich der NNUE-Welle folgen würde, dann wäre all diese Arbeit umsonst gewesen.

Sollte ich das, was ich angefangen hatte, trotzdem zu Ende bringen? Oder sollte ich entschlossen auf den NNUE-Zug aufspringen? Und ein Wechsel würde ein weiteres Problem mit sich bringen: Natürlich könnte ich ein neues neuronales Netz auf NNUE-Basis entwickeln, aber ohne neue Ideen in Sachen neuronale Netze war das sinnlos.

Ein Vorteil war jedoch, dass Stockfish diese Möglichkeit bot, da Stockfish "Freie Software" ist, GPL, "General Public License", und der Zweck von GPL gerade in ihrer Verbreitung und Kommerzialisierung innerhalb eines gegebenen Rahmens besteht. Man findet sie in zahlreichen Projekten, von freien Derivaten wie Cfish bis hin zu professionellen Apps wie PlayMagnus. Dennoch, diesen Weg einzuschlagen, wäre nur dann sinnvoll, wenn ich am Ende mit einem starken, interessanten und attraktiven neuronalen Netz echten Wert anbieten könnte.

Ein schönes Logo, das von Ali Ahmed entwickelt wurde (ein Klick auf das Bild führt zur Detailansicht)

Als Erstes fiel mir auf, dass fast jeder im Stockfish-Kosmos dem gleichen Bauplan zu folgen schien: ein Netz mit 256 Neuronen, das mit Stockfish-Bewertungen trainiert wurde, die erst 8 Plys (vier Züge) und dann 12 Plys (sechs Züge) tief waren. Als der talentierte NN-Trainer Sergio Vieri sich daran machte, das Netz zu trainieren, das die Community nutzte, wurden schnelle Fortschritte erzielt. Er hatte große Ressourcen zur Verfügung und arbeitete fast zwei Monate an dem Stockfish-Netz, bis er dann im September aufgehört hat, weil er es nicht mehr verbessern konnte. Alle anderen Versuche, die mir bekannt wurden, haben entweder probiert, seinen Erfolg zu wiederholen (was nie gelang), oder versucht, das Netz mit weiterem Training zu verbessern (was ebenfalls niemandem gelang). Abgesehen von einer gewissen Abstimmung beim Output ist das Netz seitdem weder verändert noch verbessert worden.

Es gab ein paar Versuche, größere und kleinere Netze zu bauen, aber alle lieferten unbefriedigende Ergebnisse. Die Ergebnisse waren so unbefriedigend, dass Fragen nach größeren Netzen bei Stockfish Discord, einem Chat der Community, von Entwicklern mit "Das wurde versucht, aber ist eine Sackgasse", beantwortet wurden. Ich war damit einverstanden, dass man es versucht hatte, aber von "Sackgasse" zu reden, schien mir verfrüht zu sein.

All-in

Ich kam zu dem Schluss, dass zwei Dinge wirklich interessante Ergebnisse liefern könnten, falls sie funktionieren würden. Erstens könnte man die Bewertungen von Fat Fritz 1.0 nutzen und nicht die einer Engine wie Stockfish. Schließlich stand außer Frage, dass die von Deep Mind eingesetzten verbliebenen Netze immer noch deutlich leistungsstärker waren. Wenn ich also die Bewertungen von Fat Fritz 1.0 nutzen könnte, dann könnte ich damit wirklich zu außergewöhnlichen Ergebnissen erzielen. Das war eine wichtige Idee, aber um sie umzusetzen, brauchte ich technische Expertise, die mir fehlte.

Hier kommt mein guter Freund Daniel Uranga ins Spiel, der entscheidend dazu beigetragen hat, dass ich so viele Ideen ausprobieren konnte. Ich war war nach wie vor derjenige, der die Netzwerke trainierte und Schlussfolgerungen zog, aber er war der Techniker, der diese Experimente möglich machte. Ich mietete mir sofort eine ganze Flotte leistungsstarker GPUs, um Daten für das Projekt zu erzeugen, da ich wusste, dass diese Daten notwendig waren, ganz egal, wofür wir uns am Ende entscheiden würden.

Nachdem die Implementierung der Züge und Bewertungen von Fat Fritz geklärt war, tauchte die Frage nach der Größe des neuronalen Netzes auf. Die Stockfish-Variante von 256 Neuronen war fast überall zu finden und wurde sogar in der Shogi-Welt angewandt, und die wenigen Versuche mit größeren oder kleineren Netzen hatten zu enttäuschenden Ergebnissen geführt, bei denen die Netze mindestens 50 Elo-Punkte schwächer waren.

Größer ist schließlich doch besser

Das war die mit Abstand erschöpfendste Untersuchung und sie hat etliche Wochen in Anspruch genommen. Ich habe Netze mit allen möglichen Variationen trainiert: größere Netze, kleinere Netze, tiefere Netze, weniger tiefe Netze, usw. Sie alle mussten mit einer gewissen Tiefe trainiert werden, um sicher zu gehen, dass die Ergebnisse auch solide waren, und sie alle mussten auf jeder Stufe mit zehntausenden von Partien getestet werden, um sicher zu stellen, dass die Messungen zuverlässig waren. Ein Test mit nur 1000 Partien hätte ohne Weiteres zu einer Abweichung von 30 Elo-Punkten führen können, und ich hätte nicht gewusst, ob ich die richtige Wahl treffen würde.

Schließlich verfiel ich auf die jetzt benutzte Größe des Netzes, 512 Neuronen, doppelt so viele, wie im Inneren von Stockfish und anderen Projekten benutzt werden. Natürlich war das eine wirkliche Entdeckung, die zweifellos zu ähnlichen Versuchen von Entwicklern und Enthusiasten führen wird. Die Details findet man in der Github, und auch wenn man glauben könnte, das sei keine große Sache, so sollte man doch daran denken, dass dieser Ansatz vorher als Sackgasse angesehen wurde.

Trotzdem, das alles bot noch keine Garantie für ein wirklich gutes Endergebnis, sondern war erst einmal nur vielversprechend. Am Ende könnte ich trotz allem mit leeren Händen dastehen, mit einem hübschen Netz, aber auch einem finanziellen Verlust von $16.000. Ich hatte keine finanzielle Absicherung des Projekts durch Investoren und im Falle eines Scheiterns würde ich sämtliche Kosten aus eigener Tasche bezahlen müssen.

Fat Fritz 2 trainieren und verbessern

Das ursprüngliche Training, um das Netz zu bauen, dauerte neun Tage und lief 24 Stunden am Tag. Und das mit einem schnellen 32-Thread Rechner. Doch am Ende dieser Phase waren die Ergebnisse weit besser als ich gehofft hatte, Auf einem Binär, der mit dem identisch war, den Stockfish verwandte, lag ich bei den direkten Wettkämpfen vorne. Natürlich ging es nicht darum, Stockfish zu schlagen, sondern vielmehr das Netz, das Stockfish nutzte. Schließlich verwendeten beide das gleiche Binär. Und egal, was danach passieren würde, das Projekt war ein klarer Erfolg.

Die nächste Phase war die mit Abstand härteste und frustrierendste. Wenn ich geglaubt hatte, ich könnte Sergio Vieris rasante Fortschritte beim Training des Netzes durch eine Form des verstärkenden Lernens nachahmen, so wurde ich schnell eines Besseren belehrt, obwohl ich über 700 schnelle Computerthreads nutzte, um spezielle Daten aus diesem neuen NNUE-Netz zu erzeugen.

Im Laufe von zwei Monaten wurden rund um die Uhr weit über Tausend Netze geschaffen und gestestet, aber nur zwei der Netze zeigten tatsächlich messbare Fortschritte. Man kann sich vorstellen, wie kraftraubend das war. Immer wieder stand ich mitten in der Nacht auf, um neue Tests zu starten und ja keine Computerzeit zu verschwenden. Spezielle Skripts, die mir Dietrich Kappe zur Verfügung gestellt hatte, machten dies möglich. Dietrich ist ein unermüdlicher Programmierer, der diese Skripts geschrieben hatte, um Daten für seine eigene Arbeit zu erzeugen.

Zugleich fürchtete ich, dass jemand Sergios Herausforderung annehmen und das Stockfish-Netz zu neuen Höhen unglaublichen Fortschritts führen würde. Aber schon bald zeigte sich, dass ich nicht der einzige war, der Mühe hatte, mit seiner Arbeit Schritt zu halten. Niemand hatte es geschafft, auch nur auf gleicher Höhe mit ihm zu sein, ganz zu schweigen davon, ihn zu übertreffen, und manch einer verfügte dabei über Ressourcen, die sogar die fürstlichen Gebühren, die ich für Computerzeit zahlen musste, klein erscheinen lassen.

Die Testergebnisse

Alle meine Tests wurden bei jeder Wiederholung gegen Stockfish unternommen. Warum Stockfish? Weil das Programm der Standard ist, an dem sich alle messen müssen. Ich musste wissen, ob ich den Anwendern ein suboptimales Produkt anbieten würde. Ich wusste, es würde in vielen Situationen anders spielen, aber wäre es auch schwächer? Das war meine Sorge. Ob die Anwender der Meinung waren, es wäre nützlich genug, um den Kauf zu lohnen, ist natürlich immer eine individuelle Frage. Wenn Elo-Zahlen die einzige Richtlinie sind, dann gibt es keinen zwingenden Grund, Fat Fritz 2 zu kaufen, aber wenn man eine andere Perspektive einer starken Engine sucht, dann ist man hier an der richtigen Stelle. Erwähnenswert ist allerdings, dass ich weder Zeit noch Lust hatte, Fat Fritz 2 gegen ein Feld von Engines zu testen, die 100 oder mehr Elo-Punkte schwächer spielen. Es ist absolut möglich, dass das Programm den König schlagen kann, aber beim Kampf gegen die restlichen Programme weniger dominant ist. Aber damit könnte ich leben.

Das Netz wurde in einem umfangreichen Match über zehntausend Partien gegen die Stockfish Version vom 11. Februar 2021 getestet, die danach zum neuen Stockfish 13 wurde. Dieser Wettkampf wurde von einem unabhängigen Tester durchgeführt, der ein festes, acht Züge tiefes Buch verwandt hat, das auf 2,1 Millionen Partien basiert, die 2020 auf LiChess gespielt wurden, und in denen beide Gegner eine Elo-Zahl von 2400+ hatten.

Es könnte der Eindruck entstehen, dass der Vergleich mit Stockfish ein Versuch ist, Stockfish abzuwerten, aber das Gegenteil ist der Fall. Dadurch erkennt man an, dass Stockfish der Standard ist, an dem sich alle messen müssen. Hinweis: das Ergebnis der GUI könnte verwirrend wirken. Es zeigt einen Elo-Unterschied von 16 und nicht 32 Elo-Punkten.

Dieses und ähnliche Ergebnisse haben zu der Behauptung geführt, dass das Programm die Nummer 1 seiner Art ist. Zweifellos beruht es auf der starken Suche, die von dem Open Source Projekt Stockfish zur Verfügung gestellt wird, aber wenn die Suche alles wäre, dann hätte NNUE nichts geändert und Stockfish 12 wäre lediglich ein bisschen besser gewesen als Stockfish 11 – und nicht deutlich besser durch das leistungsstarke Gehirn. Es ist die Verbindung mit einem starken neuronalen Netz, durch die das Programm das wird, was es ist.

Fat Fritz 2 ist ein Netz, das mit den Partien und Bewertungen von Fat Fritz in einer einzigartigen großen Architektur trainiert wurde, und das in Kombination mit dem großartigen Stockfish zu etwas führt, von dem ich glaube, dass es allen Spielern wertvolle Analysen und Ideen liefert. Ich bin uneingeschränkt stolz darauf.

Ein Beispiel für das Spiel von Fat Fritz 2

Hier ist eine Partie, die ein Anwender geschickt hat, der 36 Threads in 15m + 15s Partien genutzt hat. Stockfish (Version vom 11. Februar 2021) und Fat Fritz 2 spielen einen klassischen Königsinder. Die ersten neun Züge wurden ihnen vorgegeben, danach waren sie auf sich allein gestellt. Das kompromisslos dynamische Spiel des Schwarzen ist verblüffend und spektakulär.

 

 


Albert Silver ist Redakteur und Autor. Er lebt in Rio de Janeiro in Brasilien.
Discussion and Feedback Join the public discussion or submit your feedback to the editors