Hackeando o Xadrez com Decision Making Deep Reinforcement Learning


A imagem abaixo é um checkmate aplicado por um algoritmo de Inteligência Artificial em uma Engine do site Chess.com que simula um Grande Mestre de rating 2650 (que é bem alto) — Daniel Naroditsky “Danya”.

Neste artigo eu irei introduzir o conceito desenvolvido para este algoritmo de Deep Reinforcement Learning e como ele ganhou esta acirrada Briga de máquinas!

CharlesChessAI x Danya — Checkmate

“Oooof.. well, you have defeated Danya. I hope you feel good about yourself :)” — Danya engine

O Xadrez é um jogo de tabuleiro estratégico bem antigo e sua tradição já o transformou em um esporte, uma arte e por fim uma ciência.

Devido a sua complexidade o ser humano tenta por muitos anos criar modelos para hackear o xadrez e desvendar de uma vez por todas uma maneira de se tornar invencível. Hoje com o grande avanço computacional temos modelos que podem calcular vários lances a frente e atingir excelentes resultados como o modelo alpha-zero do Google.

Gostando bastante de xadrez e mesmo sem ter os recursos do Google, agora é a minha vez de mostrar que sabendo pouco de xadrez mas conhecendo bem de algoritmos eu consigo criar um campeão, e tentar desafiar os algoritmos mais fortes da área.

Decision Making Deep Reinforcement Learning

Decision Making Deep Reinforcement Learning é um conceito que utiliza o Deep Reinforcement Learning para otimizar uma tomada de decisão através de estratégias definidas previamente. A ideia principal é que a partir de um conjunto diversificado de boas estratégias o algoritmo possa escolha a melhor estratégia para cada situação.

Um modelo de Deep Reinforcement Learning observa cada estado dentro de um ambiente e utiliza uma rede neural para escolher uma determinada ação. Esta ação então é tomada no ambiente, que é alterado, e então o agente realiza uma nova observação do novo estado e prepara a próxima ação. Cada ação gera uma recompensa para o agente e o objetivo do agente é sempre escolher uma ação que maximize este recompensa em cada estado.

CharlesChessAI Architecture

E com esta mistura de partidas de xadrez, Deep Q Learning, LSTM e engine nasce o CharlesChessAI!

Simulação — Biblioteca Python Chess e Gym-AI

O primeiro passo é criar um ambiente de simulação para que o modelo possa observar os estados e tomar as ações, basicamente um playground para jogar xadrez. Para isto fiz uso de várias bibliotecas combinadas no Python: chess, gym e gym chess. Estas bibliotecas me possibilitaram reproduzir e observar todos os movimentos no board de xadrez simulando uma partida além de obter scores analíticos e boas definições dos estados e movimentos, com check, checkmate, movimentos possíveis e mais.

CharlesChessAI — A inteligência

A inteligência do CharlesChessAI é baseada em 3 estratégias pré definidas:

  • id:0 — Memória com Plano Longo: Utiliza uma sequência de jogadas dentro de uma base de 20 mil partidas jogadas por humanos e filtrada somente com as partidas finalizadas em checkmate.
  • id:1 — Memória com Plano Curto: Next Word Predictor com LSTM treinado previamente em uma grande base de jogos considerando uma sequência de 10 lances. O modelo utiliza os movimentos do xadrez como string e interpretando os movimentos dentro de uma partida como palavras em uma frase. O xadrez se comportando como uma conversa entre os jogadores.
  • id:2 — Engine: O uso da Engine Stockfish. Stockfish é uma engine de xadrez gratuita e de código aberto que analisa a partida e calcula alguns lances à frente para escolher o melhor movimento.

CharlesChessAI x Danya

Segue abaixo um video completo mostrando todos os movimentos da partida do CharlesChessAI contra Danya que durou cerca de 60 lances e 10 minutos.

CharlesChessAI x Danya

Durante a partida com Danny o modelo armazena todas as suas decisões e podemos analisá-las no gráfico abaixo e entender qual foi o comportamento e a tomada de decisão durante a partida.

No início do jogo, até o lance 25, vemos o modelo fazer uma alternância bem equilibrada entre as estratégias mas usando bastante a memória de curto prazo com o LSTM. No meio jogo, até o lance 45, vemos o modelo utilizando mais a engine do que no começo e alternando mais com a memória humana de longo prazo, o que garante bons lances para levar o jogo para um final com vantagem. No fim da partida vemos então o modelo utilizar bastante da opção de memória humana para chegar ao checkmate.

O código, ainda em desenvolvimento, está no meu repositório do GitHub abaixo:octavio-santiago/CharlesChess_Reinforcement_LearningContribute to octavio-santiago/CharlesChess_Reinforcement_Learning development by creating an account on GitHub.github.com

Conclusão

O modelo de decision making faz com que o algoritmo escolha a melhor estratégia para cada situação de jogo e o portfólio de estratégias diversificadas traz uma criatividade extra advinda de grandes players para uma engine, uma excelente combinação entre homem e máquina. Este algoritmo também é extremamente dinâmico e adaptativo, visto que de acordo com que o modelo joga mais partidas e enfrenta novas situações ele aprende como otimizar a decisão para cada situação. Da mesma forma que este tipo de modelo foi aplicado ao Xadrez, ele pode ser aplicado em outros diversos ambientes para tomada de decisão.

Deixo para vocês esta uma outra partida de xadrez jogada entre o CharlesChessAI (de brancas) e uma engine do aplicativo do Windows chamado Xadrez Lv100 na sua dificuldade máxima.

Por enquanto o modelo está invicto tanto com partidas contra engines e humanos e irei fazer mais partidas com eles e disponibilizar no mesmo canal. Um bom nome para a partida abaixo “A dança das torres” e vocês podem acompanhar melhor pelo vídeo.

Vitória do CharlesChess !

CharlesChessAI x XadrezLv.100

Espero que tenha sido uma boa leitura! Estarei disponibilizando mais informações e partidas do CharlesChess e fico disponível para contato no

LinkedIn: https://www.linkedin.com/in/octavio-b-santiago/

Post original: https://medium.com/data-hackers/hackeando-o-xadrez-com-decision-making-deep-reinforcement-learning-438167468410