Cypha / Xadrez

Demonstração do produto

Jogue xadrez contra Cypha

O Cypha nunca viu uma partida de xadrez. Ele aprendeu vendo um programa de xadrez comum pensar — 26.568 posições, cada uma rotulada com o veredito do próprio programa sobre quem estava ganhando — até o Cypha conseguir produzir o veredito sozinho.

O que você joga abaixo é isso, rodando no seu navegador dentro de uma busca rasa. Dá para vencê-lo, e ele ainda perde para o programa com que aprendeu. Todo número desta página saiu da rodada de treino que produziu os pesos que a página carrega.

Medido, não alegado

A Raiz do Erro Quadrático Médio (RMSE), abaixo, é a medida usual de quão longe um conjunto de palpites ficou; quanto menor, mais perto o modelo está do seu professor.

R² fora do treino
—
RMSE
—
Posições
—
vs. professor
—

O R² é contra posições fora do treino que o modelo nunca viu durante o ajuste. A linha do confronto é o Cypha na profundidade de busca 2 contra o motor professor na mesma profundidade, com aberturas sorteadas e cores alternadas. Os quatro números descrevem o modelo como destilado — são fixos, e não são medições da sua cópia.

A sua cópia continua aprendendo. O Cypha aprende online, então a cabeça não para de se ajustar quando o download termina. Cada lance que ele joga contra você é mais um par de treino, e o painel abaixo do tabuleiro mostra o quanto a sua cópia já se afastou da que foi entregue.
E isso ainda não faz com que ele jogue melhor. Medido, não presumido. Ao longo de 12 partidas contra si mesmo, a correção reduz o erro da cabeça contra a sua própria busca de 0.76 para 0.67 peões — e, onde a cabeça congelada deriva 4.6% para pior ao longo de uma sessão, a que aprende fica 5.2% melhor. Então o ajuste é real. Mas uma cópia treinada em 1.119 posições, posta depois para jogar contra a cópia entregue, 24 partidas na profundidade 2 com cores alternadas, termina em 6V–7D–11E: um empate técnico.

Esse é o resultado esperado e vale dizê-lo em vez de escondê-lo. O sinal é a própria busca de profundidade 2 do modelo, que é pouco mais profunda que a própria visão da cabeça estática — aprender a concordar consigo mesmo não é o mesmo que ficar mais forte. Mil posições contra as 26.568 em que ele foi destilado também não é nada. A afirmação honesta é que o aprendiz online funciona e faz o que diz; a afirmação de que ele vai vencer o modelo entregue ainda não foi conquistada.
Em português claro

O que isto é, em um minuto

O problema

Todo desenho novo de Inteligência Artificial (IA) chega com uma explicação de por que deveria funcionar. Ler a explicação não diz nada sobre se funciona. O xadrez resolve isso, porque a resposta não é questão de opinião: ou ele joga xadrez legal e sensato, ou não joga, e você pode sentar e descobrir.

A solução

Um programa de xadrez comum julga uma posição buscando à frente nos lances. Ao Cypha foram mostrados 26.568 desses julgamentos, e ele ajustou uma única fórmula para reproduzi-los — uma linha de matemática sobre 388 números que descrevem o tabuleiro. Nada foi acrescentado à arquitetura por causa do xadrez. Só mudaram os números que entraram nela.

Para quem é

Quem está avaliando o Cypha e prefere conferir a ouvir. Quem trabalha com aprendizado de máquina e quer ver um modelo continuar aprendendo enquanto está em uso. E quem simplesmente quer jogar uma partida — tudo roda no seu navegador, e nada do que você joga é enviado a lugar nenhum.

Copiar o julgamento de um motor de xadrez não é aprender xadrez. Nada nesta página afirma que é. O resto da página é como isso foi feito, o que cada número significa, e as quatro coisas que este desenho não consegue fazer.

cypha::Cypha — cabeça de xadrez aprendendo

Clique numa peça e depois clique onde ela vai. Os destinos legais estão marcados.

Posição

Carregando o modelo…
Buscando os pesos destilados.
Avaliação do Cypha
—
Nós
—

O que o Cypha considerou

Lances

Aprendendo com você

Rating nesta profundidade
—
Modelo em uso
profundidade 2
Posições aprendidas
0
Partidas terminadas
0
Deriva em relação ao entregue
0.00%
Última correção
—

Deriva é o tamanho da mudança no vetor de pesos, em relação ao destilado. Última correção é o quanto a cabeça estática errou sobre a posição de onde acabou de sair, em peões, medido contra a sua própria busca mais profunda.

Rating está em uma escada interna, não na escala da Fédération Internationale des Échecs (FIDE) — não há jeito honesto de pôr um número FIDE em algo que nunca jogou contra um humano com rating. O motor de referência na profundidade 1 é ancorado em 1000 e tudo é ajustado a partir de 210 partidas por máxima verossimilhança de Bradley-Terry, então não depende da ordem em que foram jogadas. A escada medida: referência 1000 / 1171 / 1245 nas profundidades 1–3, Cypha 798 / 1010 / 1161. O Cypha fica cerca de uma profundidade de busca atrás do motor de que foi destilado, e as barras de erro são de cerca de ±50, que é o que 210 partidas compram.

Cada nível de força mantém o seu próprio modelo. Uma cabeça jogando na profundidade 1 é corrigida na direção de uma busca de profundidade 1; na profundidade 3 o alvo é outro, melhor. Treinar os dois em um único vetor de pesos só faria os dois brigarem. Troque a força e os contadores mudam junto.

A avaliação é uma linear função de 388 features. Ela não tem profundidade de busca própria, nem livro de aberturas, nem conhecimento de finais. Vencê-la é o esperado; o interessante é que uma única cabeça linear branqueada consiga reproduzir a avaliação de busca de um motor — e depois siga se corrigindo enquanto você joga.
Motor, features, pesos destilados e jogador rodam todos localmente. Nada é enviado a lugar nenhum, e nenhum modelo é baixado além de alguns kilobytes de coeficientes. O que a sua cópia aprende fica no seu navegador, é seu, e nunca é enviado — então as partidas de mais ninguém podem mexer no seu modelo, e o seu não mexe no de ninguém.
Método

Como um motor vira um modelo Cypha

Isto é destilação de conhecimento, feita com os mesmos componentes de qualquer outra aplicação do Cypha. Nada específico de xadrez foi acrescentado à arquitetura — só as features.

A cadeia de destilação: um motor de referência verificado por perft rotula 26.568 posições, que viram 388 features, ajustadas em uma cabeça Cypha de 9,4 kilobytes que alcança R quadrado de 0,866 fora do treino
role para ver o diagrama inteiro →
Destilação, não descoberta. Cada número da última caixa foi medido pela execução de treino que produziu os pesos que esta página carrega.
Passo 1

O professor

Um motor 0x88 com geração completa de lances legais, avaliação de material e de peça-casa, ordenação Vítima Mais Valiosa – Atacante Menos Valioso (MVV-LVA) e busca de quiescência. Verificado contra cinco posições perft padrão, incluindo kiwipete, de modo que as regras estão provadamente certas antes de qualquer coisa ser aprendida dele.

Passo 2

Os dados

Posições tiradas de partidas do motor contra si mesmo, com aberturas sorteadas e ruído deliberado, para que o conjunto cubra partidas de verdade em vez de uma única linha estreita. Cada uma é rotulada com a pontuação de busca do próprio professor, limitada a ±12 peões para que as pontuações de mate não dominem.

Passo 3

As features

388 dimensões: uma diferença de ocupação peça-casa com 384 posições (6 tipos × 64 casas) mais par de bispos, peões dobrados, mobilidade e fase da partida. Sempre da perspectiva de quem tem a vez, então um único vetor de pesos serve para as duas cores.

Passo 4

O ajuste

WorldPrior θ₀ ajustado online por Welford, branqueamento como métrica do gradiente natural, atualizações de peso por Mínimos Quadrados Médios (LMS) normalizados, decaimento de Comprimento Mínimo de Descrição (MDL) puxando os pesos de volta para o prior, e um buffer de replay ponderado por surpresa na proporção de referência do Cypha, 0,30.

Por que esta demonstração é justa

Quem fez o trabalho foi a arquitetura, não o domínio

Cada componente do passo 4 é um componente real do Cypha fazendo o seu trabalho real. O WorldPrior é a mesma gaussiana online que dá ao classificador 2-D da página do Cypha a sua superfície de decisão. O branqueamento é a afirmação da geometria da informação tornada concreta: as atualizações seguem o gradiente natural, e não o bruto. O decaimento MDL é o prior de Solomonoff expresso como um termo de encolhimento.

O que mudou para o xadrez foi o mapa de features e a cabeça — regressão em vez de classificação. Esse é o argumento que o README do Cypha faz sobre ser um único tipo que faz vários trabalhos, testado em um domínio onde a resposta é inequívoca: ou ele joga um xadrez legal e razoável, ou não joga.

O que isto não mostra

Os limites honestos

  • É linear. Uma função linear de features de peça-casa não consegue representar segurança do rei, interações de estrutura de peões, nem nada que exija o produto de duas features. Tem o mesmo teto que o README do Cypha descreve para o OU exclusivo (XOR).
  • O professor é modesto. O motor de referência é um buscador clássico competente, não o Stockfish. Destilá-lo bem significa acompanhar bem um avaliador modesto.
  • Sem profundidade de busca própria. A força aqui vem principalmente do wrapper alfa-beta, exatamente como acontece com o professor.
  • Destilação não é descoberta. O Cypha reproduziu uma função de avaliação que lhe foi mostrada. Ele não aprendeu xadrez do zero, e nada nesta página afirma que aprendeu.
Reproduza: node tools/chess/perft.js verifica o motor contra as posições de teste padrão, e node tools/chess/train.js regenera o modelo do zero com uma semente fixa. Os números no topo desta página são lidos direto do arquivo que essa execução produz.