Comment AlphaZero apprend-il à évaluer une position qu'il n'a jamais vue?


12

Suivi des réponses à:

Comprendre AlphaZero

Ma question serait de savoir comment le réseau neuronal "apprend" ce qu'il doit faire dans une position qu'il n'a pas rencontrée. Dire que l'AZ réel exécute un SCTM en utilisant les biais + poids du réseau neuronal entraîné repousse simplement une étape vers la façon dont le réseau neuronal calcule ces valeurs. Si c'était par un jeu personnel aléatoire, sans aucune connaissance humaine, alors comment décide-t-il de la pondération d'une position qu'il n'a jamais vue?

Réponses:


6

La fonction d'évaluation d'un moteur d'échecs, qu'elle soit instanciée sous forme de réseau neuronal ou de code explicite, est toujours en mesure d'attribuer une valeur à n'importe quelle position de carte. Si vous lui donnez une position sur le plateau, même absurde qui ne se produirait jamais dans un jeu, il pourra cracher un nombre représentant son avantage pour un joueur ou un autre. Étant donné que le nombre de positions de plateau dans les échecs est incroyablement gigantesque, la formation ne peut se produire que sur un échantillon infinitésimal de l'arbre de jeu. Le moteur ne rappelle pas simplement les valeurs précédemment calculées des positions de la planche, mais effectue des calculs basés sur la disposition des pièces. Pour un exemple de réseau non neuronal, une partie de l'évaluation d'un moteur d'échecs pourrait consister à additionner la valeur de chaque pièce de son côté et à soustraire la valeur totale des pièces de l'adversaire. Alors,

Lorsque le moteur n'est pas formé, les valeurs attribuées à une position peuvent tout aussi bien être aléatoires car les paramètres de la fonction d'évaluation commencent par (généralement) des valeurs aléatoires. Le but d'une phase d'entraînement est d'ajuster les paramètres du moteur afin qu'il attribue des scores élevés aux positions du plateau qui sont des états gagnants probables pour le joueur.

Extrait du document sur AlphaZero (page 3):

Les paramètres du réseau neuronal profond d'AlphaZero sont entraînés par un apprentissage par renforcement en auto-jeu, à partir de paramètres initialisés au hasard. Les parties se jouent en sélectionnant les mouvements des deux joueurs par les SCTM. À la fin du jeu, la position terminale est notée selon les règles du jeu pour calculer le résultat du jeu: -1 pour une défaite, 0 pour un match nul et +1 pour une victoire. Les paramètres du réseau neuronal sont mis à jour de manière à minimiser l'erreur entre le résultat prédit et le résultat du jeu, et à maximiser la similitude du vecteur de politique avec les probabilités de recherche.

[symboles mathématiques supprimés de la citation]

En résumé, lors de l'entraînement, AlphaZero a joué un match contre lui-même. Lorsque le jeu est terminé, le résultat du jeu et la précision de ses prédictions sur la façon dont le jeu se déroulerait ont été utilisés pour ajuster le réseau neuronal afin qu'il soit plus précis lors du prochain jeu. AlphaZero ne tient pas de registre de chaque position qu'il a vue, mais s'ajuste lui-même pour pouvoir évaluer plus précisément n'importe quelle planche qu'il voit à l'avenir.


Je comprends parfaitement votre explication au niveau algorithmique, mais je suis toujours étonné que cela fonctionne. J'aurais pensé que les premiers jeux seraient si aléatoires qu'ils n'auraient aucune valeur d'apprentissage. Il semble impossible d'évaluer le résultat d'un déménagement à ce stade, sauf en le jouant à l'échec et mat, car c'est la seule chose dont on vous a parlé. Mais ce mat d'échec ne se produira qu'après qu'un grand nombre d'autres choses essentiellement aléatoires se soient déroulées. Mon intuition est qu'il n'y a tout simplement pas suffisamment de données significatives pour tirer des conclusions. Pourquoi ai-je tort?
Philip Roe

@PhilipRoe Vous avez raison, chaque jeu ne fournit que peu d'informations. J'ai en fait écrit mon propre moteur d'échecs qui apprend par un algorithme évolutif. Des copies du moteur modifiées aléatoirement se jouent mutuellement; les perdants sont supprimés et les gagnants produisent des copies plus modifiées. Il faut généralement entre 10 000 et 20 000 parties pour déterminer le bon ordre des valeurs des pièces (reine, tour, évêque / chevalier, pion). Il a fallu à AlphaZero 44 millions de jeux pour atteindre ses compétences (tableau de la page 15 du document lié).
Mark H

Merci d'avoir répondu! Mais je suis toujours étonné. Il y a un immense espace de positions possibles à évaluer. Mais il y a aussi l'immense espace de questions possibles à poser. Anthropomorphiquement, je m'imagine sans aucune connaissance préalable, sauf les règles, et une énorme base de données de jeux qui sont joués à un niveau d'incompétence presque inconcevable (bien que je ne pense pas que tous se souviennent) À quel moment cela me vient-il à l'esprit devrait compter les pièces "Alors combien de temps avant de compter les pièces semble une bonne idée?
Philip Roe

1
Je trouve cela très difficile à imaginer, même si quelques indices forts ont été fournis sur "Qu'est-ce qui constitue une bonne question?" Mais sans cela, je suis impressionné qu'une hiérarchie de pièces puisse être établie en 20 000 matchs. J'ai donc du mal à accepter que la tabula soit vraiment rasa. Quelques instructions minimales sur le processus de génération et de révision de vos règles (combien, combien de fois?) Semblent toujours essentielles.
Philip Roe

1
@PhilipRoe Dans mon programme, je dis au moteur de compter les pièces, mais pas combien chaque pièce vaut. Donc, je dis au moteur ce qu'il faut regarder, mais pas comment pondérer ce qu'il voit. AlphaZero est beaucoup plus tabula rasa. Si vous êtes curieux: github.com/MarkZH/Genetic_Chess
Mark H
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.