Como o AlphaZero aprende a avaliar uma posição que nunca viu?

12

Acompanhamento das respostas para:

Entendendo o AlphaZero

Minha pergunta seria como a rede neural "aprende" o que fazer em uma posição que não encontrou. Dizer que o AZ real executa um MCTS usando os pesos de viés + da rede neural treinada apenas o retrocede um passo em como a rede neural calcula esses valores. Se foi por meio de brincadeiras aleatórias, sem conhecimento humano, como ele decide como pesar uma posição que nunca viu?

Roy Koczela
fonte

Respostas:

6

A função de avaliação de um mecanismo de xadrez, instanciada como uma rede neural ou código explícito, sempre pode atribuir um valor a qualquer posição do tabuleiro. Se você der uma posição no tabuleiro, mesmo absurdas que nunca ocorreriam em um jogo, ele será capaz de cuspir um número representando o quão favorável é para um jogador ou outro. Como o número de posições no tabuleiro no xadrez é gigantesca de maneira incontrolável, o treinamento só pode ocorrer em uma amostra infinitesimal da árvore do jogo. O motor não está apenas recuperando valores calculados anteriormente das posições da placa, mas está realizando cálculos com base no arranjo das peças. Para um exemplo de rede não-neural, parte da avaliação de um mecanismo de xadrez pode ser somar o valor de cada peça de lado e subtrair o valor total das peças do oponente. Então,

Quando o mecanismo não é treinado, os valores atribuídos a uma posição também podem ser aleatórios, pois os parâmetros da função de avaliação começam com (geralmente) valores aleatórios. O objetivo de uma fase de treinamento é ajustar os parâmetros do mecanismo para que ele atribua altas pontuações às posições do board que são prováveis ​​estados vencedores para o jogador.

Do artigo sobre AlphaZero (página 3):

Os parâmetros da rede neural profunda no AlphaZero são treinados pelo aprendizado de reforço por auto-reprodução, a partir de parâmetros inicializados aleatoriamente. Os jogos são jogados selecionando movimentos para ambos os jogadores pelo MCTS. No final do jogo, a posição do terminal é pontuada de acordo com as regras do jogo para calcular o resultado do jogo: -1 para uma perda, 0 para um empate e +1 para uma vitória. Os parâmetros da rede neural são atualizados para minimizar o erro entre o resultado previsto e o resultado do jogo e maximizar a semelhança do vetor de política com as probabilidades de pesquisa.

[símbolos matemáticos removidos da citação]

Em resumo, durante o treinamento, o AlphaZero jogou um jogo contra si mesmo. Quando o jogo termina, o resultado do jogo e a precisão de suas previsões sobre o andamento do jogo foram usados ​​para ajustar a rede neural para que ela fosse mais precisa durante o próximo jogo. O AlphaZero não mantém um registro de todas as posições que viu, mas está se ajustando para que possa avaliar com mais precisão qualquer quadro que vê no futuro.

Mark H
fonte
Entendo completamente sua explicação no nível algorítmico, mas ainda estou surpreso que ela funcione. Eu pensaria que os primeiros jogos seriam tão aleatórios que não teriam valor de aprendizado. Parece impossível avaliar o resultado de uma jogada nessa fase, exceto jogando para xeque-mate, porque essa é a única coisa sobre a qual você foi informado. Mas esse xeque-mate só acontecerá após um grande número de outras coisas essencialmente aleatórias. Meu pressentimento é que simplesmente não há dados significativos suficientes para tirar conclusões. Por que eu estou errado?
Philip Roe
@PhilipRoe Você está certo, cada jogo fornece apenas um pouco de informação. Na verdade, escrevi meu próprio mecanismo de xadrez que aprende por um algoritmo evolutivo. Cópias modificadas aleatoriamente do mecanismo são reproduzidas; os perdedores são excluídos e os vencedores produzem mais cópias modificadas. Geralmente, são necessários entre 10.000 e 20.000 jogos para descobrir a ordem correta dos valores das peças (rainha, torre, bispo / cavaleiro, peão). O AlphaZero precisou de 44 milhões de jogos para atingir sua habilidade (tabela na página 15 do documento vinculado).
Mark H
Obrigado por responder! Mas eu ainda estou surpreso. Há um enorme espaço de posições possíveis para avaliar. Mas há também o enorme espaço de possíveis perguntas a serem feitas. Antropomorficamente, imagino-me com zero conhecimento prévio, exceto as regras, e um enorme banco de dados de jogos que são jogados com um nível quase inconcebível de incompetência (embora eu não deva supor que todos sejam lembrados). Em que ponto me ocorre "Ei, talvez eu deve contar as peças "Então, quanto tempo antes de contar as peças parece uma boa idéia?
Philip Roe
11
Acho muito difícil imaginar, mesmo que algumas dicas fortes tenham sido fornecidas sobre "O que constitui uma boa pergunta?" Mas, mesmo sem isso, estou impressionado com a possibilidade de estabelecer uma hierarquia de peças em 20.000 jogos. Por isso, acho muito difícil aceitar que a tabula seja realmente rasa. Algumas instruções mínimas sobre o processo de geração e revisão de suas regras (quantas, quantas vezes?) Ainda parecem essenciais.
Philip Roe
11
@ PhilipRoe No meu programa, eu digo ao mecanismo para contar as peças, mas não quanto vale cada peça. Então, eu digo ao mecanismo o que olhar, mas não como ponderar o que ele vê. AlphaZero é muito mais tabula rasa. Se você estiver curioso: github.com/MarkZH/Genetic_Chess
Marque H