Leela Chess Zero - Leela Chess Zero

Leela Chess Zero
Leela Chess Zero logo.svg
Autor (es) original (is) Gian-Carlo Pascutto , Gary Linscott
Desenvolvedor (s) Gary Linscott, Alexander Lyashuk, Folkert Huizinga, outros
lançamento inicial 9 de janeiro de 2018 ; 3 anos atrás ( 09/01/2018 )
Versão estável
v0.28 / 25 de agosto de 2021 ; 53 dias atrás ( 2021-08-25 )
Repositório
Escrito em C ++
Sistema operacional Windows, Mac, Linux, Ubuntu, Android
Modelo Motor de xadrez
Licença GPL-3.0 ou posterior
Local na rede Internet lczero .org

Leela chess Zero (abreviado como LcZero , Lc0 ) é um mecanismo de xadrez gratuito, de código aberto e baseado em rede neural e projeto de computação distribuída . O desenvolvimento foi liderado pelo programador Gary Linscott , que também é desenvolvedor do mecanismo de xadrez Stockfish . Leela xadrez Zero foi adaptado do Leela Zero Go motor, que por sua vez foi baseado no Google 's AlphaGo Zero projeto. Um dos objetivos do Leela Chess Zero era verificar os métodos do artigo AlphaZero aplicados ao jogo de xadrez.

Como Leela Zero e AlphaGo Zero, Leela chess Zero começa sem nenhum conhecimento intrínseco específico do xadrez além das regras básicas do jogo. Leela chess Zero aprende então como jogar xadrez por reforço de aprendizagem de auto-jogo repetido, usando uma rede de computação distribuída coordenada no site Leela Chess Zero.

Em 2020, Leela chess Zero jogou mais de 300 milhões de jogos contra si mesmo, e é capaz de jogar em um nível comparável ao Stockfish , o programa de xadrez convencional líder.

História

O projeto Leela chess Zero foi anunciado pela primeira vez em TalkChess.com em 9 de janeiro de 2018. Isso revelou Leela Chess Zero como o mecanismo de xadrez de autoaprendizagem de código aberto que viria a ser conhecido como, com o objetivo de criar um xadrez forte motor. Nos primeiros meses de treinamento, Leela Chess Zero já havia alcançado o nível de Grande Mestre , ultrapassando a força dos primeiros lançamentos de Rybka , Stockfish e Komodo , apesar de avaliar ordens de magnitude menos posições ao usar MCTS .

Em dezembro de 2018, a equipe do AlphaZero publicou um novo artigo na revista Science revelando detalhes não divulgados anteriormente da arquitetura e dos parâmetros de treinamento usados ​​para o AlphaZero. Essas mudanças logo foram incorporadas ao Leela Chess Zero e aumentaram sua força e eficiência de treinamento.

O trabalho no xadrez Leela Zero informou o projeto AobaZero semelhante para o shogi .

O mecanismo foi reescrito e cuidadosamente iterado desde o seu início, e agora funciona em vários back-ends , permitindo a utilização eficaz de diferentes tipos de hardware, tanto CPU quanto GPU.

O motor suporta a variante Fischer Random Chess , e uma rede está sendo treinada para testar a viabilidade de tal rede em maio de 2020.

Programar e usar

O método usado por seus designers para fazer Leela Chess Zero se autoaprender e jogar xadrez acima do nível humano é o aprendizado por reforço . Este é um algoritmo de aprendizado de máquina, espelhado do AlphaZero usado pelo binário de treinamento Zero do xadrez Leela para maximizar a recompensa por meio do jogo automático. Como um projeto de computação distribuída de código aberto, usuários voluntários executam Leela Chess Zero para jogar centenas de milhões de jogos que são alimentados pelo algoritmo de reforço. A fim de contribuir para o avanço do mecanismo Leela Chess Zero, a versão mais recente não-release candidate (não rc) do mecanismo, bem como do cliente, deve ser baixada. O cliente é necessário para se conectar ao servidor atual do Leela Chess Zero, onde todas as informações dos jogos de xadrez de auto-jogo são armazenadas, para obter a rede mais recente, gerar jogos de auto-jogo e enviar os dados de treinamento de volta para o servidor.

Para jogar contra o motor Leela Chess Zero em uma máquina, são necessários 2 componentes: o binário do motor e uma rede (o binário do motor é diferente do cliente, pois o cliente é usado como plataforma de treinamento para o motor) . A rede contém a função de avaliação do Leela Chess Zero, necessária para avaliar as posições. Redes mais antigas também podem ser baixadas e usadas colocando-as na pasta com o binário Lc0.

Elo para jogar sozinho

O Self-play Elo é usado para medir a força relativa da rede para procurar anomalias e mudanças gerais na força da rede e pode ser usado como uma ferramenta de diagnóstico quando Lc0 passa por mudanças significativas. Por meio de jogos de teste que são jogados com variação mínima baseada na temperatura, os clientes do motor Lc0 testam a versão mais recente em comparação com outras versões recentes da mesma rede executada, que é enviada ao servidor de treinamento para criar uma avaliação Elo geral.

Fórmulas Elo padrão são usadas para calcular a força Elo relativa entre os dois jogadores. Cálculos Self-Play Elo mais recentes usam resultados de jogos de correspondência em várias versões de rede para calcular um valor Elo mais preciso.

A abordagem Self-Play tem várias consequências na medição de Lc0 Elo:

  • A inflação cumulativa inicial de Elo em corridas de treinamento difere drasticamente devido a ganhos periódicos em autoaperfeiçoamento e jogo adversário.
  • Medir Elo em relação às redes anteriores falha em medir a força geral, uma vez que as redes são treinadas para antecipar e vencer as previsões feitas por redes Lc0 anteriores, em vez de oponentes fora do domínio de treinamento. Este é um tipo de overfitting medido de forma mais drástica ao testar redes menores.
  • Não há correlação direta de 1 para 1 entre o auto-jogo Elo e a força contra motores Alfa-Beta, e nenhuma correlação conhecida para força contra humanos.
  • Os dados de treinamento de entrada têm um efeito significativo sobre o desempenho de uma rede de maneira mais inteligente na próxima iteração.
  • O Elo de Auto-Jogo Cumulativo não tem uma conversão universal para o Elo Humano convencional devido a questões de inflação apresentadas pelo jogo adversário e a confiança da medida no controle do tempo. Isso é verdadeiro mesmo quando o motor funciona em um conjunto padrão de condições iniciais.

A inflação Cumulative Self-Play Elo pode ser comparada com outras execuções para avaliar a falta de generalidade na medição da força com o puro elo self-play cumulativo. O Fischer Random Chess executa o Teste 71.4 (denominado redes 714xxx), classifica-se em quase 4000 redes Elo 76 de auto-jogo cumulativas em sua corrida (714076). O T60 (6xxxx) run 63000 net tem um Elo de auto-jogo cumulativo de cerca de 2900. Pitting 714076 contra net 63000 revela que 63000 bate claramente 714076 em confrontos diretos no máximo, se não todos os controles de tempo "justos". 4000 Elo >> 2900 elo, mas a rede com 2900 Elo está claramente batendo a rede 4000 Elo. Isso por si só é suficiente para creditar a alegação de que Elo de auto-jogo cumulativo não é uma medida objetiva de força, nem é uma medida que permite comparar linearmente a força da rede Lc0 com a força humana.

Configurar o motor para jogar um único nó com `` --minibatch-size = 1`` e `` go nodes 1`` para cada movimento jogado cria um jogo determinístico, e Self-Play Elo em tais configurações sempre produzirá o mesmo resultado entre 2 das mesmas redes na mesma posição inicial - sempre ganhar, sempre perder ou sempre empatar. O self-play Elo não é confiável para determinar a força nessas circunstâncias determinísticas.

Spinoffs

Na temporada 15 do Top Chess Engine Championship , o motor AllieStein competiu ao lado de Leela. AllieStein é uma combinação de dois derivados diferentes de Leela: Allie, que usa a mesma rede de avaliação que Leela, mas tem um algoritmo de pesquisa exclusivo para explorar diferentes linhas de jogo, e Stein, uma rede de avaliação que foi treinada usando aprendizagem supervisionada com base em dados de jogo existentes com outros motores (em oposição ao aprendizado não supervisionado que Leela usa). Embora nenhum desses projetos fosse admitido no TCEC separadamente devido à sua semelhança com o Leela, a combinação do algoritmo de busca de Allie com a rede Stein, chamada AllieStein, é única o suficiente para garantir que compete ao lado do Lc0 mainstream. (As regras TCEC exigem que um mecanismo baseado em rede neural tenha pelo menos 2 componentes exclusivos de 3 recursos essenciais: O código que avalia uma rede, a própria rede e o algoritmo de pesquisa. Enquanto AllieStein usa o mesmo código para avaliar sua rede como Lc0, uma vez que os outros dois componentes são novos, AllieStein é considerado um mecanismo distinto.)

No início de 2021, o blog LcZero anunciou o Ceres, um novo mecanismo de xadrez que usa redes LcZero. Ele implementa a pesquisa de árvore de Monte Carlo , bem como muitas novas idéias de aprimoramento algorítmico. O teste Elo inicial mostrou que Ceres é mais forte do que Lc0 com a mesma rede.

Resultados da competição

Em abril de 2018, Leela xadrez Zero se tornou o primeiro motor de rede neural a entrar no Top Chess Engine Championship (TCEC), durante a temporada 12 na divisão mais baixa, divisão 4. Leela não teve um bom desempenho: em 28 jogos, venceu um, empatou dois, e perdeu o restante; sua única vitória veio de uma posição em que seu oponente, o Escorpião 2.82, caiu em três lances. No entanto, melhorou rapidamente. Em julho de 2018, Leela ficou em sétimo lugar entre oito competidores no Campeonato Mundial de Xadrez de Computador de 2018 . Em agosto de 2018, venceu a divisão 4 da temporada 13 do TCEC, com um recorde de 14 vitórias, 12 empates e 2 derrotas. Na Divisão 3, Leela marcou 16/28 pontos, terminando em terceiro atrás do Ethereal, que marcou 22,5 / 28 pontos, e Arasan no tiebreak.

Em setembro de 2018, o Leela se tornou competitivo com os motores mais potentes do mundo. No Chess.com Computer Chess Championship (CCCC) 2018, Leela ficou em quinto lugar entre 24 participantes. Os oito primeiros motores avançaram para a segunda rodada, onde Leela ficou em quarto lugar. Leela então venceu a partida de 30 jogos contra o Komodo, garantindo o terceiro lugar no torneio. Paralelamente, o Leela participou da taça TCEC, um novo evento em que motores de diferentes divisões do TCEC podem disputar partidas entre si. Leela derrotou os motores de divisão superior Laser, Ethereal e Fire antes de ser finalmente eliminado por Stockfish nas semifinais.

Em outubro e novembro de 2018, Leela participou do Chess.com Computer Chess Championship Blitz Battle. Leela terminou em terceiro atrás de Stockfish e Komodo.

Em dezembro de 2018, Leela participou da temporada 14 do Top Chess Engine Championship . Leela dominou as divisões 3, 2 e 1, terminando facilmente em primeiro em todas elas. Na primeira divisão, Stockfish dominou enquanto Houdini , Komodo e Leela disputavam o segundo lugar. O jogo chegou à rodada final, em que Leela precisou segurar Stockfish em um empate com as pretas para terminar em segundo à frente de Komodo. Ele conseguiu isso com sucesso e, portanto, contestou a superfinal contra Stockfish. Enquanto muitos esperavam que Stockfish vencesse confortavelmente, Leela superou todas as expectativas e obteve várias vitórias impressionantes, acabando por perder a superfinal pela margem mais estreita, com uma pontuação final de 49,5-50,5.

Em fevereiro de 2019, o Leela conquistou sua primeira vitória em um grande torneio ao derrotar Houdini na final da segunda taça TCEC. Leela não perdeu um jogo durante todo o torneio. Em abril de 2019, Leela venceu o Chess.com Computer Chess Championship 7: Blitz Bonanza, tornando-se o primeiro projeto de rede neural a conquistar o título.

Em maio de 2019, Leela defendeu seu título de copa TCEC, desta vez derrotando Stockfish na final 5.5-4.5 (+2 = 7 -1) após Stockfish errar em um empate de 7-man tablebase . Leela também venceu a Superfinal da temporada 15 do Top Chess Engine Championship 53.5-46.5 (+14 -7 = 79) contra Stockfish, incluindo a vitória como branca e preta na mesma abertura predeterminada nos jogos 61 e 62.

A 16ª temporada do TCEC viu Leela terminar em 3º lugar na divisão principal, perdendo a qualificação para a superfinal para Stockfish e o novo motor de rede neural AllieStein. O Leela não sofreu derrotas na divisão Premier, único motor a fazê-lo, e derrotou Stockfish em uma das seis partidas que disputou. No entanto, Leela só conseguiu marcar 9 vitórias, enquanto AllieStein e Stockfish marcaram 14 vitórias. Esta incapacidade de derrotar motores mais fracos levou Leela a terminar em terceiro, meio ponto atrás de AllieStein e um ponto atrás de Stockfish. Na quarta taça TCEC, Leela foi semeado primeiro como o campeão, que o colocou na metade oposta das chaves como AllieStein e Stockfish. Leela conseguiu se classificar para a final, onde enfrentou o Stockfish. Após sete empates, Stockfish venceu o oitavo game para vencer a partida.

Na temporada 17 do TCEC , realizada em janeiro-abril de 2020, Leela recuperou o campeonato ao derrotar Stockfish 52,5-47,5, marcando notáveis ​​6 vitórias nos 10 jogos finais, incluindo vitórias como brancos e negros na mesma abertura predeterminada nos jogos 95 e 96. Ele se classificou para a superfinal novamente na temporada 18 , mas desta vez foi derrotado pelo Stockfish 53,5-46,5. Na final da TCEC Cup 6, Leela perdeu para AllieStein, terminando em 2º.

A temporada 19 do TCEC viu Leela se qualificar para a superfinal novamente. Desta vez, ele jogou contra uma nova versão do Stockfish com suporte para NNUE , uma função de avaliação baseada em rede neural usada principalmente para os nós folha da árvore de pesquisa. Ele derrotou Leela de forma convincente com uma pontuação final de 54,5-45,5 (+18 -9 = 73).

Resumo de resultados

Campeonato de motores de xadrez (TCEC)
Temporada Divisão 4 Divisão 3 Divisão 2 Divisão 1 Divisão P Superfinal
12 (2018) - - - - -
13 (2018) - - - -
14 (2018) -
15 (2019) - - - -
16 (2019) - - - - -
17 (2020) - - - -
18 (2020) - - - -
19 (2020) - - - -
20 (2020) - - - -
21 (2021) - - - -


Copa do campeonato de motores de xadrez (TCEC Cup)
Evento Resultado Oponente Pontuação
Copa 1 (2018) - -
Copa 2 (2019) Houdini 4,5-3,5
Copa 3 (2019) Stockfish 5,5-4,5
Copa 4 (2019) Stockfish 3,5-4,5
Copa 5 (2020) Stockfish 1,5-2,5
Copa 6 (2020) AllieStein 1,5-2,5
Copa 7 (2020) Stockfish 1,5-2,5
Copa 8 (2021) Stockfish 3,5-4,5


Chess.com Computer Chess Championship (CCC)
Evento Ano Controles de tempo Resultado Ref
CCC 1: Rapid Rumble 2018 15 + 5
CCC 2: Batalha Blitz 2018 5 + 2
CCC 3: Redux rápido 2019 30 + 5
CCC 4: Bullet Brawl 2019 1 + 2
CCC 5: Escalonamento 2019 10 + 5
CCC 6: Clássico de Inverno 2019 10 + 10
CCC 7: Blitz Bonanza 2019 5 + 2
CCC 8: Mergulho Profundo 2019 15 + 5
CCC 9: The Gauntlet 2019 5 + 2, 10 + 5
CCC 10: Dois dígitos 2019 10 + 3
CCC 11 2019 30 + 5
CCC 12: Bullet Madness! 2020 1 + 1
CCC 13: Formas 2020 3 + 2, 5 + 5, 10 + 5, 15 + 5
CCC 14 2020 15 + 5

Jogos notáveis

Referências

links externos