No AlphaZero, precisamos armazenar os dados dos estados dos terminais?

Dec 16 2020

Tenho uma pergunta sobre os dados de treinamento usados ​​durante a etapa de atualização / retropropagação da rede neural no AlphaZero.

Do jornal:

Os dados para cada intervalo de tempo $t$ é armazenado como ($s_t, \pi_t, z_t$) Onde $z_t = \pm r_T$ é o vencedor do jogo da perspectiva do jogador atual na etapa $t$. Em paralelo (Figura 1b), novos parâmetros de rede$\Theta_i$ são treinados a partir de dados ($s,\pi, z$) amostrados uniformemente entre todas as etapas de tempo da (s) última (s) iteração (ões) de jogo automático

Em relação à política no momento $t$ ($\pi_t$), Entendi isso como a distribuição de probabilidade de realizar alguma ação que é proporcional à contagem de visitas a cada nó filho, ou seja, durante o MCTS, dado algum nó pai (estado) no momento $t$, se algum nó filho (estado subsequente) $a$ é visitado $N_a$ horários e todos os nós filhos são visitados $\sum_b N_b$ vezes, então a probabilidade de $a$ (e seu movimento correspondente) sendo amostrado é $\frac{N_a}{\sum_b N_b}$, e isso parametriza a distribuição $\pi_t$. Isso está correto? Se for este o caso, para algum estado terminal$T$, não podemos parametrizar uma distribuição porque não temos nós filhos (estados) para visitar. Isso significa que não adicionamos ($s_T, \pi_T, z_T$) aos dados de treinamento?

Além disso, uma pergunta de acompanhamento sobre a função de perda:

$l = (z-v)^2 - \pi^T log\textbf{p} + c||\Theta||^2$

Estou confuso com isso $\pi^T$notação. Meu melhor palpite é que este é um vetor de ações amostradas de todas as políticas no$N$ X $(s_t, \pi_t, z_t)$minibatch, mas não tenho certeza. (PS o$T$ usado em $\pi^T$ é diferente do $T$usado para denotar um estado terminal se você olhar para o papel. Desculpem a confusão, não sei escrever dois T de aparência diferente)

Respostas

DennisSoemers Dec 16 2020 at 23:21

Não tenho 100% de certeza se eles adicionaram ou não dados para os estados do terminal do jogo, mas é muito razoável fazer a escolha de não incluir dados para os estados do terminal do jogo. Como você corretamente apontou, não temos nenhuma meta significativa para atualizar a orientação da política nesses casos, e isso não é realmente um problema, porque também nunca faríamos uso da saída da política em um estado de jogo terminal. Para a cabeça de valor, poderíamos fornecer alvos significativos para atualização, mas, novamente, nunca teríamos realmente de fazer uso de tais saídas; se encontrarmos um estado de jogo terminal em uma busca em árvore, apenas faremos backup do valor verdadeiro desse estado de jogo terminal em vez de fazer uma chamada para a rede para obter uma aproximação de função de valor.

Em teoria, eu poderia imaginar alguns casos em que treinar a cabeça de valor nos estados terminais do jogo pode ser ligeiramente benéfico, apesar de não ser estritamente necessário; poderia permitir a generalização para estados de jogo semelhantes que não são terminais (mas perto de serem terminais) e acelerar o aprendizado para eles. Por exemplo, se você tem um jogo em que o objetivo é completar uma linha de$5$ peças, treinando a cabeça de valor em estados terminais onde você realmente tem uma linha de $5$ peças e ter ganhado totalmente o jogo pode generalizar e acelerar o aprendizado para estados de jogo semelhantes onde você ainda não $5$peças em linha, mas estão muito perto desse objetivo. Dito isso, intuitivamente não acho que isso traria um grande benefício (se houver), e provavelmente também poderíamos encontrar casos em que isso seria prejudicial.


No $\pi^{\text{T}}$ notação, $\pi$ é um vetor (para qualquer intervalo de tempo arbitrário, o intervalo de tempo não é especificado aqui) contendo uma distribuição de probabilidade discreta sobre ações (contagens de visitas de MCTS, normalizadas em uma distribuição de probabilidade), e o $\text{T}$simplesmente denota que tomamos a transposição desse vetor. Pessoalmente, não gosto da notação, prefiro algo como$\pi^{\top}$ que é mais claramente distinto de uma carta $T$ ou $\text{T}$.

De qualquer forma, uma vez que você entender que para denotar a transposição, você verá que $\pi^{\top}\log(\mathbf{p})$ é um produto escalar entre dois vetores, que então acaba sendo um único escalar.