Como treinar uma rede neural para um jogo de tabuleiro redondo?

11

Estou pensando em como treinar uma rede neural para um jogo de tabuleiro baseado em rounds, como jogo da velha, xadrez, risco ou qualquer outro jogo baseado em rounds. Conseguir a próxima jogada por inferência parece bastante simples, alimentando o estado do jogo como entrada e usando a saída como a jogada para o jogador atual. No entanto, o treinamento de uma IA para esse fim não parece ser tão simples, porque:

  1. Pode não haver uma classificação se um único movimento é bom ou não, então o treinamento de movimentos únicos não parece ser a escolha certa
  2. Usar todos os estados do jogo (entradas) e movimentos (saídas) de todo o jogo para treinar a rede neural não parece ser a escolha certa, pois nem todos os movimentos dentro de um jogo perdido podem ser ruins

Então, eu estou querendo saber como treinar uma rede neural para um jogo de tabuleiro redondo? Eu gostaria de criar uma rede neural para o jogo da velha usando o fluxo tensor.

soriak
fonte

Respostas:

10

Ótima pergunta! NN é muito promissor para este tipo de problema: xadrez de girafa . A conquista de Lai foi considerada um grande negócio , mas infelizmente ocorreu apenas alguns meses antes de AlphaGo ser o centro das atenções. (Tudo acabou bem, pois Lai foi posteriormente contratado pela DeepMind, embora não tão bem para o mecanismo Giraffe ;)

Eu achei a abordagem de Lai bastante útil e é apoiada por resultados sólidos.


Você pode usar " sequencial " em vez de "redondo", pois sequencial é o termo preferido em Teoria dos Jogos e Teoria Combinatória dos Jogos , e esses são os campos que aplicam a análise matemática aos jogos.

Os jogos que você lista são também denominados " abstratos " para diferenciá-los dos modernos jogos de estratégia, ou jogos em geral, que utilizam um tema forte e geralmente são menos compactos que os jogos abstratos em termos de mecânica e elementos. Isso leva a ressalva de que jogos abstratos não se restringem a jogos sequenciais ou jogos de tabuleiro, ou mesmo a jogos específicos, como no caso de quebra-cabeças como o Sudoku.

O nome formal para esse grupo de jogos é geralmente "informações partidárias , seqüenciais, determinísticas e perfeitas ", com a categorização adicional do Tic-Tac-Toe como "trivial" (resolvido e facilmente solucionável) e não trivial (intratável e não resolvido) para jogos como Xadrez e Go.

DukeZhou
fonte
7

Sou jogador de xadrez e minha resposta será apenas no xadrez.

Treinar uma rede neutra com aprendizado por reforço não é novidade, já foi feito muitas vezes na literatura.

Vou explicar brevemente as estratégias comuns.

  • O objetivo de uma rede é aprender a avaliação de posição. Todos sabemos que uma rainha é mais forte que um bispo, mas podemos fazer com que a rede saiba disso sem programar explicitamente? E a estrutura dos peões? A rede entende como avaliar se uma posição está ganhando ou não?

  • Agora, sabemos por que precisamos da rede, precisamos projetá-la. O design difere radicalmente entre os estudos. Antes que o aprendizado profundo fosse popular, as pessoas usavam redes rasas. Atualmente, destaca-se uma rede com muitas camadas.

  • Quando tivermos a rede, você precisará criar um mecanismo de xadrez. A rede neural não pode magicamente jogar xadrez sozinha, ela precisa se conectar a um mecanismo de xadrez. Felizmente, não precisamos escrever um código de avaliação de posição, porque a rede pode fazer isso por nós.

  • Agora, temos que jogar jogos. Poderíamos começar com alguns bancos de dados de xadrez de alta qualidade ou fazer com que nosso agente de IA jogasse com outro jogador (por exemplo, ele próprio, outro agente de IA ou um humano). Isso é conhecido como aprendizado por reforço .

  • Enquanto jogamos, atualizamos o parâmetro de rede. Isso pode ser feito por descida estocástica do gradiente (ou outras técnicas semelhantes). Repetimos nosso treinamento pelo tempo que quisermos, geralmente em milhões de iterações.

  • Finalmente, temos um modelo de rede neutro treinado para o xadrez!

Veja os seguintes recursos para obter detalhes:

https://chessprogramming.wikispaces.com/Learning

Olá Mundo
fonte
Apenas smallchess tem aqui
quintumnia
Este é um exemplo de como fornecer um link externo, sem resumir, pode ser prejudicial no futuro. Como o link fornecido agora está morto
Greg Hilston
4

Eu acho que você deve se familiarizar com o aprendizado por reforço. Nesse campo de aprendizado de máquina, o agente interage com seu ambiente e, depois disso, recebe alguma recompensa. Agora, o agente é a rede neural, o ambiente é o jogo e o agente pode receber uma recompensa +1 se vencer ou -1 se perder. Você pode usar essa tupla de experiência, estado, ação e experiência de recompensa para treinar o agente. Posso recomendar as palestras de David Silver no youtube e o livro de Sutton também.

Molnár István
fonte