Cypha / Xadrez
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.
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.
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.
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.
O que isto é, em um minuto
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.
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.
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.
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
O que o Cypha considerou
Lances
Aprendendo com você
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.
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.
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.
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.
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.
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.
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.
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.
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.