Wie lernt AlphaZero, eine Position zu bewerten, die es noch nie gesehen hat?


11

Follow-up von Antworten auf:

AlphaZero verstehen

Meine Frage wäre, wie das neuronale Netz "lernt", was in einer Position zu tun ist, der es nicht begegnet ist. Wenn Sie sagen, dass das tatsächliche AZ ein MCTS unter Verwendung der Bias + Gewichte aus dem trainierten neuronalen Netz ausführt, wird es nur einen Schritt zurückgeschoben, wie das neuronale Netz diese Werte berechnet. Wenn es durch zufälliges Selbstspiel ohne menschliches Wissen geschehen ist, wie entscheidet es dann, wie eine Position gewichtet werden soll, die es noch nie gesehen hat?

Antworten:


5

Die Bewertungsfunktion einer Schachengine, unabhängig davon, ob sie als neuronales Netz oder als expliziter Code instanziiert ist, kann jeder Brettposition immer einen Wert zuweisen. Wenn Sie ihm eine Brettposition geben, selbst absurde, die in einem Spiel niemals vorkommen würden, kann es eine Zahl ausspucken, die angibt, wie günstig es für den einen oder anderen Spieler ist. Da die Anzahl der Brettpositionen im Schach unüberschaubar ist, kann das Training nur an einer infinitesimalen Stichprobe des Spielbaums stattfinden. Der Motor ruft nicht einfach zuvor berechnete Werte der Platinenpositionen ab, sondern führt Berechnungen basierend auf der Anordnung der Teile durch. Für ein Beispiel ohne neuronales Netz könnte ein Teil der Bewertung einer Schachmaschine darin bestehen, den Wert jeder Figur auf ihrer Seite zu addieren und den Gesamtwert der Figuren des Gegners zu subtrahieren. Dann,

Wenn der Motor nicht trainiert ist, können die einer Position zugewiesenen Werte genauso gut zufällig sein, da die Parameter der Bewertungsfunktion mit (normalerweise) zufälligen Werten beginnen. Das Ziel einer Trainingsphase ist es, die Parameter der Engine so anzupassen, dass sie den Board-Positionen, bei denen es sich wahrscheinlich um Gewinnzustände für den Spieler handelt, hohe Punktzahlen zuweist.

Aus dem Artikel über AlphaZero (Seite 3):

Die Parameter des tiefen neuronalen Netzwerks in AlphaZero werden durch selbstspielendes Verstärkungslernen ausgehend von zufällig initialisierten Parametern trainiert. Spiele werden gespielt, indem MCTS für beide Spieler Züge auswählt. Am Ende des Spiels wird die Endposition gemäß den Spielregeln bewertet, um das Spielergebnis zu berechnen: -1 für einen Verlust, 0 für ein Unentschieden und +1 für einen Sieg. Die neuronalen Netzwerkparameter werden aktualisiert, um den Fehler zwischen dem vorhergesagten Ergebnis und dem Spielergebnis zu minimieren und die Ähnlichkeit des Richtlinienvektors mit den Suchwahrscheinlichkeiten zu maximieren.

[mathematische Symbole aus dem Zitat entfernt]

Zusammenfassend spielte AlphaZero während des Trainings ein Spiel gegen sich selbst. Wenn das Spiel vorbei ist, wurden das Ergebnis des Spiels und die Genauigkeit seiner Vorhersagen in Bezug auf den Spielverlauf verwendet, um das neuronale Netz so anzupassen, dass es im nächsten Spiel genauer wird. AlphaZero zeichnet nicht jede Position auf, die es gesehen hat, sondern passt sich selbst an, damit es jedes Board, das es in Zukunft sieht, genauer bewerten kann.


Ich verstehe Ihre Erklärung auf algorithmischer Ebene vollständig, bin aber immer noch erstaunt, dass sie funktioniert. Ich hätte gedacht, dass die frühen Spiele so zufällig sind, dass sie keinen Lernwert haben würden. Es scheint unmöglich zu sein, das Ergebnis eines Zuges in dieser Phase zu bewerten, außer indem man ihn Schachmatt ausspielt, denn das ist das einzige, worüber man Ihnen erzählt hat. Aber dieser Schachmatt wird erst passieren, wenn eine große Anzahl anderer im Wesentlichen zufälliger Dinge passiert ist. Mein Bauchgefühl ist, dass es einfach nicht genügend aussagekräftige Daten gibt, um Schlussfolgerungen zu ziehen. Warum irre ich mich?
Philip Roe

@PhilipRoe Du hast Recht, jedes Spiel liefert nur ein paar Informationen. Ich habe tatsächlich meine eigene Schach-Engine geschrieben, die durch einen evolutionären Algorithmus lernt. Zufällig modifizierte Kopien der Engine spielen sich gegenseitig ab. Die Verlierer werden gelöscht und die Gewinner produzieren mehr modifizierte Kopien. Normalerweise dauert es zwischen 10.000 und 20.000 Spiele, um die richtige Reihenfolge der Stückwerte (Königin, Turm, Bischof / Ritter, Bauer) herauszufinden. AlphaZero benötigte 44 Millionen Spiele, um seine Fähigkeiten zu erlangen (Tabelle auf Seite 15 des verlinkten Dokuments).
Mark H

Danke für die Antwort! Aber ich bin immer noch erstaunt. Es gibt den riesigen Raum möglicher Positionen, die bewertet werden müssen. Es gibt aber auch einen riesigen Raum für mögliche Fragen. Anthropomorph stelle ich mir vor, ich habe keine Vorkenntnisse außer den Regeln und eine riesige Datenbank von Spielen, die auf einem fast unvorstellbaren Grad an Inkompetenz gespielt werden (obwohl ich nicht annehme, dass alle in Erinnerung bleiben). Ab wann fällt mir ein "Hey, vielleicht ich sollte die Stücke zählen "Wie lange dauert es dann eine gute Idee, die Stücke zu zählen?
Philip Roe

1
Ich kann es mir nur schwer vorstellen, auch wenn einige starke Hinweise zu "Was ist eine gute Frage?" Aber auch ohne das bin ich beeindruckt, dass in 20.000 Spielen eine Erbschaft von Stücken aufgebaut werden kann. Daher fällt es mir sehr schwer zu akzeptieren, dass die Tabula wirklich Rasa ist. Einige minimale Anweisungen zum Generieren und Überarbeiten Ihrer Regeln (wie viele, wie oft?) Scheinen immer noch wichtig.
Philip Roe

1
@PhilipRoe In meinem Programm fordere ich den Motor auf, die Teile zu zählen, aber nicht, wie viel jedes Teil wert ist. Also sage ich dem Motor, was er sehen soll, aber nicht, wie er das, was er sieht, beschweren soll. AlphaZero ist viel mehr tabula rasa. Wenn Sie neugierig sind: github.com/MarkZH/Genetic_Chess
Mark H
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.