Cypha / Échecs

Démonstration produit

Jouez aux échecs contre Cypha

Cypha n’a jamais vu une partie d’échecs. Elle a appris en regardant un programme d’échecs ordinaire réfléchir — 26 568 positions, chacune étiquetée par le verdict de ce programme sur qui était en train de gagner — jusqu’à savoir produire le verdict elle-même.

Ce contre quoi vous jouez ci-dessous, c’est cela, qui tourne dans votre navigateur au sein d’une recherche peu profonde. Elle est battable, et elle perd toujours contre le programme dont elle a appris. Chaque chiffre de cette page vient de l’entraînement qui a produit les poids que la page charge.

Mesuré, pas affirmé

La racine de l’erreur quadratique moyenne (RMSE), ci-dessous, est la mesure habituelle de l’écart d’un ensemble d’estimations ; plus elle est petite, plus le modèle est proche de son maître.

R² sur données réservées
—
RMSE
—
Positions
—
face à l’enseignant
—

Le R² porte sur des positions réservées que le modèle n’a jamais vues pendant l’ajustement. La ligne de match, c’est Cypha à profondeur de recherche 2 contre le moteur enseignant à la même profondeur, avec ouvertures aléatoires et couleurs alternées. Les quatre chiffres décrivent le modèle tel qu’il a été distillé — ils sont fixes, et ce ne sont pas des mesures de votre copie.

Votre copie continue d’apprendre. Cypha est un apprenant en ligne, donc la tête ne cesse pas de s’ajuster une fois le téléchargement terminé. Chaque coup qu’elle joue contre vous est une paire d’entraînement de plus, et le panneau sous l’échiquier montre à quel point votre copie s’est éloignée de celle qui a été livrée.
Et cela ne la fait pas encore mieux jouer. Mesuré, pas supposé. Sur 12 parties contre elle-même, la correction réduit l’erreur de la tête face à sa propre recherche de 0.76 à 0.67 pion — et là où la tête figée dérive de 4.6% dans le mauvais sens sur une session, celle qui apprend gagne 5.2% dans le bon. L’ajustement est donc réel. Mais une copie entraînée sur 1 119 positions, puis opposée à la copie livrée, 24 parties à profondeur 2 avec les couleurs alternées, finit 6V–7D–11N, soit un match nul.

C’est le résultat attendu et il vaut mieux le dire que le cacher. Le signal est la propre recherche du modèle à profondeur 2, à peine plus profonde que la vue de la tête statique elle-même — apprendre à être d’accord avec soi-même n’est pas la même chose que devenir plus fort. Mille positions face aux 26 568 sur lesquelles elle a été distillée, ce n’est rien non plus. L’affirmation honnête, c’est que l’apprenant en ligne fonctionne et fait ce qu’il annonce ; l’affirmation qu’il battra le modèle livré n’est pas méritée.
En clair

Ce que c’est, en une minute

Le problème

Chaque nouvelle conception d’intelligence artificielle (IA) arrive avec une explication de pourquoi elle devrait marcher. Lire l’explication ne dit rien sur le fait qu’elle marche. Les échecs tranchent, parce que la réponse n’est pas affaire d’opinion : ou bien elle joue des coups légaux et sensés, ou bien non, et vous pouvez vous asseoir et le constater.

La solution

Un programme d’échecs ordinaire juge une position en explorant les coups à l’avance. On a montré à Cypha 26 568 de ces jugements et ajusté une seule formule pour les reproduire — une ligne de mathématiques sur 388 nombres qui décrivent l’échiquier. Rien n’a été ajouté à l’architecture pour les échecs. Seuls les nombres qu’on lui donne ont changé.

À qui cela s’adresse

Quiconque évalue Cypha et préfère vérifier plutôt qu’être cru sur parole. Les gens qui travaillent en apprentissage automatique et veulent voir un modèle continuer d’apprendre pendant qu’on s’en sert. Et quiconque a simplement envie d’une partie — tout tourne dans votre navigateur, et rien de ce que vous jouez n’est envoyé nulle part.

Copier le jugement d’un moteur d’échecs, ce n’est pas apprendre les échecs. Rien sur cette page ne prétend le contraire. Le reste de la page, c’est comment ça a été fait, ce que signifie chaque chiffre, et les quatre choses que cette conception ne peut pas faire.

cypha::Cypha — tête d’échecs apprentissage

Cliquez une pièce, puis cliquez où elle va. Les destinations légales sont marquées.

Position

Chargement du modèle…
Récupération des poids distillés.
Éval. Cypha
—
Nœuds
—

Ce que Cypha a envisagé

Coups

Ce qu’elle apprend de vous

Classement à cette profondeur
—
Modèle utilisé
profondeur 2
Positions apprises
0
Parties terminées
0
Écart avec la version livrée
0.00%
Dernière correction
—

L’écart est la taille du changement apporté au vecteur de poids, par rapport à celui qui a été distillé. Dernière correction désigne l’erreur de la tête statique sur la position qu’elle vient de quitter, en pions, mesurée face à sa propre recherche plus profonde.

Le classement est sur une échelle interne, pas celle de la Fédération Internationale des Échecs (FIDE) — il n’y a pas de façon honnête de coller un chiffre FIDE à quelque chose qui n’a jamais joué contre un humain classé. Le moteur de référence à la profondeur 1 est ancré à 1000 et tout est ajusté à partir de 210 parties par maximum de vraisemblance de Bradley-Terry, donc cela ne dépend pas de l’ordre dans lequel elles ont été jouées. L’échelle mesurée : référence 1000 / 1171 / 1245 aux profondeurs 1–3, Cypha 798 / 1010 / 1161. Cypha tourne environ une profondeur de recherche derrière le moteur dont elle a été distillée, et les barres d’erreur sont d’environ ±50, ce que 210 parties vous offrent.

Chaque réglage de niveau conserve son propre modèle. Une tête qui joue à profondeur 1 est corrigée vers une recherche à profondeur 1 ; à profondeur 3, la cible est différente et meilleure. Entraîner les deux dans un seul vecteur de poids ne ferait que les opposer. Changez de niveau et les compteurs changent avec lui.

L’évaluation est une fonction linéaire de 388 caractéristiques. Elle n’a pas de profondeur de recherche propre, pas de bibliothèque d’ouvertures et aucune connaissance des finales. La battre est attendu ; ce qui est intéressant, c’est qu’une seule tête linéaire blanchie reproduise tout court l’évaluation de recherche d’un moteur — et qu’elle continue ensuite à se corriger pendant que vous jouez.
Le moteur, les caractéristiques, les poids distillés et le joueur tournent tous en local. Rien n’est envoyé nulle part, et aucun modèle n’est téléchargé au-delà de quelques kilo-octets de coefficients. Ce que votre copie apprend reste dans votre navigateur, vous appartient et n’est jamais téléversé — les parties des autres ne peuvent donc pas déplacer votre modèle, et le vôtre ne peut pas déplacer le leur.
Méthode

Comment un moteur devient un modèle Cypha

C’est de la distillation de connaissances, faite avec les mêmes composants que n’importe quelle autre application de Cypha. Rien de spécifique aux échecs n’a été ajouté à l’architecture — seulement les caractéristiques.

La chaîne de distillation : un moteur de référence vérifié par perft étiquette 26 568 positions, qui deviennent 388 caractéristiques, ajustées dans une tête Cypha de 9,4 kilo-octets atteignant un R carré de 0,866 sur données réservées
faites défiler pour voir tout le schéma →
Distillation, pas découverte. Chaque chiffre de la dernière case a été mesuré par l’entraînement qui a produit les poids que cette page charge.
Étape 1

L’enseignant

Un moteur 0x88 avec génération complète des coups légaux, évaluation matérielle et pièce-case, ordonnancement victime la plus précieuse – attaquant le moins précieux (MVV-LVA) et recherche de quiescence. Vérifié sur cinq positions perft standard dont kiwipete, si bien que les règles sont prouvées justes avant qu’on en apprenne quoi que ce soit.

Étape 2

Les données

Des positions tirées de parties contre soi-même, avec ouvertures aléatoires et bruit délibéré, pour que l’ensemble couvre de vraies parties plutôt qu’une seule ligne étroite. Chacune est étiquetée avec le score de recherche de l’enseignant, borné à ±12 pions pour empêcher les scores de mat de dominer.

Étape 3

Les caractéristiques

388 dimensions : une différence d’occupation pièce-case de largeur 384 (6 types × 64 cases) plus la paire de fous, les pions doublés, la mobilité et la phase de jeu. Toujours du point de vue du camp au trait, ainsi un seul vecteur de poids sert les deux couleurs.

Étape 4

L’ajustement

WorldPrior θ₀ ajusté en ligne par Welford, blanchiment comme métrique du gradient naturel, mises à jour de poids par moindres carrés moyens normalisés (LMS), décroissance par longueur de description minimale (MDL) qui ramène les poids vers le prior, et un tampon de rejeu pondéré par la surprise au ratio de référence 0,30 de Cypha.

Pourquoi c’est une démonstration loyale

C’est l’architecture qui a fait le travail, pas le domaine

Chaque composant de l’étape 4 est un vrai composant Cypha qui fait son vrai travail. Le WorldPrior est la même gaussienne en ligne qui donne au classifieur 2-D de la page Cypha sa surface de décision. Le blanchiment, c’est l’affirmation de géométrie de l’information rendue concrète : les mises à jour suivent le gradient naturel plutôt que le gradient brut. La décroissance MDL est le prior de Solomonoff exprimé comme terme de rétrécissement.

Ce qui a changé pour les échecs, c’est la carte de caractéristiques et la tête — régression au lieu de classification. C’est l’argument que le README de Cypha avance sur le fait d’être un seul type qui fait plusieurs travaux, éprouvé sur un domaine où la réponse est sans ambiguïté : soit elle joue des échecs légaux et raisonnables, soit non.

Ce que cela ne montre pas

Les limites, honnêtement

  • C’est linéaire. Une fonction linéaire de caractéristiques pièce-case ne peut pas représenter la sécurité du roi, les interactions de structure de pions, ni rien qui demande un produit de deux caractéristiques. Elle a le même plafond que celui que le README de Cypha décrit pour le OU exclusif (XOR).
  • L’enseignant est modeste. Le moteur de référence est un moteur de recherche classique compétent, pas Stockfish. Bien le distiller revient à bien reproduire un évaluateur modeste.
  • Pas de profondeur de recherche propre. Ici, la force vient surtout de l’enveloppe alpha-bêta, exactement comme pour l’enseignant.
  • La distillation n’est pas une découverte. Cypha a reproduit une fonction d’évaluation qu’on lui a montrée. Elle n’a pas appris les échecs à partir de rien, et rien sur cette page ne prétend le contraire.
Reproduisez-le : node tools/chess/perft.js vérifie le moteur sur les positions de test standard, et node tools/chess/train.js régénère le modèle à partir de rien avec une graine fixe. Les chiffres en haut de cette page sont lus directement dans le fichier que cette exécution produit.