Dans AlphaZero, devons-nous stocker les données des états terminaux?
J'ai une question sur les données d'entraînement utilisées lors de l'étape de mise à jour / rétropropagation du réseau de neurones dans AlphaZero.
D'après le papier:
Les données pour chaque pas de temps $t$ est stocké sous la forme ($s_t, \pi_t, z_t$) où $z_t = \pm r_T$ est le gagnant du jeu du point de vue du joueur actuel à l'étape $t$. En parallèle (figure 1b), de nouveaux paramètres réseau$\Theta_i$ sont formés à partir de données ($s,\pi, z$) échantillonné uniformément parmi tous les pas de temps de la ou des dernières itérations de l'auto-lecture
Concernant la politique à l'époque $t$ ($\pi_t$), J'ai compris cela comme la distribution de probabilité de prendre une action proportionnelle au nombre de visites à chaque nœud enfant, c'est-à-dire pendant les SCTM, étant donné un nœud parent (état) à la fois $t$, si un nœud enfant (état suivant) $a$ est visité $N_a$ fois et tous les nœuds enfants sont visités $\sum_b N_b$ fois, alors la probabilité de $a$ (et son mouvement correspondant) échantillonné est $\frac{N_a}{\sum_b N_b}$, et cela paramètre la distribution $\pi_t$. Est-ce correct? Si tel est le cas, alors pour certains états terminaux$T$, nous ne pouvons pas paramétrer une distribution car nous n'avons pas de nœuds enfants (états) à visiter. Cela signifie-t-il que nous n'ajoutons pas ($s_T, \pi_T, z_T$) aux données d'entraînement?
En outre, une question de suivi concernant la fonction de perte:
$l = (z-v)^2 - \pi^T log\textbf{p} + c||\Theta||^2$
Je suis confus à ce sujet $\pi^T$notation. Ma meilleure hypothèse est qu'il s'agit d'un vecteur d'actions échantillonnées à partir de toutes les politiques du$N$ X $(s_t, \pi_t, z_t)$minibatch, mais je ne suis pas sûr. (PS le$T$ utilisé dans $\pi^T$ est différent du $T$utilisé pour désigner un état terminal si vous regardez le papier. Désolé pour la confusion, je ne sais pas comment écrire deux T différents)
Réponses
Je ne suis pas sûr à 100% s'ils ont ajouté ou non des données pour les états du jeu terminal, mais il est très raisonnable de faire le choix de ne pas inclure de données pour les états du jeu terminal. Comme vous l'avez souligné à juste titre, nous n'avons pas d'objectifs significatifs vers lesquels mettre à jour la politique dans ces cas, et ce n'est pas vraiment un problème car nous n'utiliserions jamais réellement la sortie de la politique dans un état de jeu terminal. Pour la tête de valeur, nous pourrions fournir des objectifs significatifs à mettre à jour, mais encore une fois, nous n'aurions jamais à utiliser de telles sorties; si nous rencontrons un état de jeu terminal dans une recherche arborescente, nous sauvegardons simplement la vraie valeur de cet état de jeu terminal au lieu de faire un appel au réseau pour obtenir une approximation de la fonction de valeur.
En théorie, je pourrais imaginer des cas où la formation de la tête de valeur sur les états terminaux du jeu pourrait être légèrement bénéfique bien qu'elle ne soit pas strictement nécessaire; il pourrait permettre la généralisation à des états de jeu similaires qui ne sont pas terminaux (mais proches de l'être), et accélérer l'apprentissage pour ceux-ci. Par exemple, si vous avez un jeu où le but est de compléter une ligne de$5$ pièces, la formation de la tête de valeur sur les états terminaux où vous avez réellement une ligne de $5$ pièces et avoir entièrement gagné le jeu pourrait généraliser et accélérer l'apprentissage pour des états de jeu similaires où vous n'avez peut-être pas encore $5$pièces dans une ligne, mais sont très proches de cet objectif. Cela dit, intuitivement, je ne pense vraiment pas que cela fournirait un grand avantage (le cas échéant), et nous pourrions probablement également proposer des cas où cela serait nocif.
Dans le $\pi^{\text{T}}$ notation, $\pi$ est un vecteur (pour tout pas de temps arbitraire, le pas de temps n'est pas spécifié ici) contenant une distribution de probabilité discrète sur les actions (nombre de visites des SCTM, normalisé en une distribution de probabilité), et le $\text{T}$indique simplement que nous prenons la transposition de ce vecteur. Personnellement, je n'aime pas la notation, je préfère quelque chose comme$\pi^{\top}$ qui se distingue plus clairement d'une lettre $T$ ou alors $\text{T}$.
Quoi qu'il en soit, une fois que vous comprenez que pour désigner la transposition, vous verrez que $\pi^{\top}\log(\mathbf{p})$ est un produit scalaire entre deux vecteurs, qui finit par être un seul scalaire.