Cypha / Ajedrez

Demostración del producto

Juega al ajedrez contra Cypha

Cypha nunca vio una partida de ajedrez. Aprendió mirando pensar a un programa de ajedrez corriente — 26.568 posiciones, cada una etiquetada con el veredicto del propio programa sobre quién iba ganando — hasta que Cypha pudo producir el veredicto por sí mismo.

Lo que juegas abajo es eso, funcionando en tu navegador dentro de una búsqueda poco profunda. Se le puede ganar, y sigue perdiendo contra el programa del que aprendió. Cada cifra de esta página salió de la ejecución de entrenamiento que produjo los pesos que carga la página.

Medido, no afirmado

La raíz del error cuadrático medio (RMSE), abajo, es la medida habitual de cuánto se desvió un conjunto de estimaciones; cuanto menor es, más cerca está el modelo de su maestro.

R² en datos reservados
—
RMSE
—
Posiciones
—
frente al maestro
—

El R² es contra posiciones reservadas que el modelo nunca vio durante el ajuste. La línea del enfrentamiento es Cypha a profundidad de búsqueda 2 contra el motor maestro a la misma profundidad, con aperturas aleatorizadas y colores alternados. Los cuatro números describen el modelo tal como se destiló — son fijos, y no son mediciones de tu copia.

Tu copia sigue aprendiendo. Cypha aprende en línea, así que la cabeza no deja de ajustarse cuando termina la descarga. Cada jugada que hace contra ti es un par de entrenamiento más, y el panel debajo del tablero muestra cuánto se ha alejado tu copia de la que se distribuyó.
Y todavía no hace que juegue mejor. Medido, no supuesto. A lo largo de 12 partidas de autojuego la corrección reduce el error de la cabeza frente a su propia búsqueda de 0.76 a 0.67 peones — y donde la cabeza congelada se desvía un 4.6% a peor a lo largo de una sesión, la que aprende se mueve un 5.2% a mejor. Así que el ajuste es real. Pero una copia entrenada con 1.119 posiciones, jugada después contra la copia distribuida, 24 partidas a profundidad 2 con los colores alternados, termina 6 victorias–7 derrotas–11 tablas: un empate técnico.

Ese es el resultado esperado y merece la pena decirlo en vez de esconderlo. La señal es la propia búsqueda a profundidad 2 del modelo, que apenas es más profunda que la vista de la cabeza estática — aprender a estar de acuerdo contigo mismo no es lo mismo que hacerse más fuerte. Mil posiciones frente a las 26.568 con las que se destiló tampoco son nada. La afirmación honesta es que el aprendiz en línea funciona y hace lo que dice; la afirmación de que va a ganar al modelo distribuido no está ganada.
En lenguaje llano

Qué es esto, en un minuto

El problema

Todo diseño nuevo de inteligencia artificial (IA) llega con una explicación de por qué debería funcionar. Leer la explicación no te dice nada sobre si funciona. El ajedrez lo zanja, porque la respuesta no es cuestión de opinión: o juega un ajedrez legal y sensato o no, y puedes sentarte a comprobarlo.

La solución

Un programa de ajedrez corriente juzga una posición buscando hacia delante entre las jugadas. A Cypha se le enseñaron 26.568 de esos juicios y ajustó una sola fórmula para reproducirlos — una línea de matemáticas sobre 388 números que describen el tablero. No se añadió nada a la arquitectura para el ajedrez. Solo cambiaron los números que se le daban.

Para quién es

Cualquiera que esté valorando Cypha y prefiera comprobar antes que creer. Quienes trabajan con aprendizaje automático y quieren ver a un modelo seguir aprendiendo mientras se usa. Y cualquiera al que simplemente le apetezca una partida — todo funciona en tu navegador, y nada de lo que juegas se envía a ninguna parte.

Copiar el juicio de un motor de ajedrez no es aprender ajedrez. Nada en esta página afirma que lo sea. El resto de la página es cómo se hizo, qué significa cada cifra y las cuatro cosas que este diseño no puede hacer.

cypha::Cypha — cabeza de ajedrez aprendiendo

Haz clic en una pieza y luego en la casilla a la que va. Los destinos legales están marcados.

Posición

Cargando el modelo…
Descargando los pesos destilados.
Evaluación de Cypha
—
Nodos
—

Lo que Cypha consideró

Jugadas

Aprendiendo de ti

Puntuación a esta profundidad
—
Modelo en uso
profundidad 2
Posiciones aprendidas
0
Partidas terminadas
0
Deriva respecto a la distribuida
0.00%
Última corrección
—

Deriva es el tamaño del cambio en el vector de pesos, respecto al destilado. Última corrección es cuánto se equivocó la cabeza estática sobre la posición desde la que acaba de mover, en peones, medido contra su propia búsqueda más profunda.

Puntuación está en una escalera interna, no en la escala de la Fédération Internationale des Échecs (FIDE) — no hay forma honesta de poner un número FIDE a algo que nunca ha jugado contra un humano con clasificación. El motor de referencia a profundidad 1 se ancla en 1000 y todo se ajusta a partir de 210 partidas por máxima verosimilitud de Bradley-Terry, así que no depende del orden en que se jugaron. La escalera medida: referencia 1000 / 1171 / 1245 a profundidades 1–3, Cypha 798 / 1010 / 1161. Cypha va como una profundidad de búsqueda por detrás del motor del que se destiló, y los márgenes de error son de aproximadamente ±50, que es lo que dan 210 partidas.

Cada ajuste de fuerza mantiene su propio modelo. Una cabeza que juega a profundidad 1 se corrige hacia una búsqueda de profundidad 1; a profundidad 3 el objetivo es otro, mejor. Entrenar los dos en un solo vector de pesos solo haría que discutieran entre sí. Cambia la fuerza y los contadores cambian con ella.

La evaluación es una función lineal de 388 características. No tiene profundidad de búsqueda propia, ni libro de aperturas, ni conocimiento de finales. Ganarle es lo esperable; lo interesante es que una sola cabeza lineal blanqueada llegue siquiera a reproducir la evaluación de búsqueda de un motor — y que luego siga corrigiéndose mientras juegas.
El motor, las características, los pesos destilados y el jugador funcionan todos en local. No se envía nada a ninguna parte, y no se descarga ningún modelo más allá de unos pocos kilobytes de coeficientes. Lo que aprende tu copia se guarda en tu navegador, es tuyo y nunca se sube — así que las partidas de otros no pueden mover tu modelo, ni el tuyo el de ellos.
Método

Cómo un motor se convierte en un modelo de Cypha

Esto es destilación de conocimiento, hecha con los mismos componentes que cualquier otra aplicación de Cypha. No se añadió nada específico del ajedrez a la arquitectura — solo las características.

La cadena de destilación: un motor de referencia verificado con perft etiqueta 26.568 posiciones, que se convierten en 388 características, ajustadas en una cabeza de Cypha de 9,4 kilobytes que alcanza un R cuadrado de 0,866 en datos reservados
desplaza para ver el diagrama completo →
Destilación, no descubrimiento. Cada número del último recuadro lo midió la ejecución de entrenamiento que produjo los pesos que carga esta página.
Paso 1

El maestro

Un motor 0x88 con generación completa de jugadas legales, evaluación material y pieza-casilla, ordenación por víctima más valiosa – atacante menos valioso (MVV-LVA) y búsqueda de quiescencia. Verificado contra cinco posiciones perft estándar, kiwipete incluida, así que las reglas son demostrablemente correctas antes de aprender nada de él.

Paso 2

Los datos

Posiciones sacadas de autojuego con aperturas aleatorizadas y ruido deliberado, para que el conjunto abarque partidas reales y no una sola línea estrecha. Cada una va etiquetada con la puntuación de búsqueda del propio maestro, recortada a ±12 peones para que las puntuaciones de mate no dominen.

Paso 3

Las características

388 dimensiones: una diferencia de ocupación pieza-casilla de 384 de ancho (6 tipos × 64 casillas) más pareja de alfiles, peones doblados, movilidad y fase de la partida. Siempre desde la perspectiva del bando que mueve, así que un solo vector de pesos sirve para los dos colores.

Paso 4

El ajuste

WorldPrior θ₀ ajustado en línea con Welford, blanqueo como métrica del gradiente natural, actualizaciones de pesos por mínimos cuadrados medios (LMS) normalizadas, decaimiento por longitud mínima de descripción (MDL) que devuelve los pesos hacia el prior, y un búfer de repetición ponderado por sorpresa en la proporción de referencia 0,30 de Cypha.

Por qué esta es una demostración justa

El trabajo lo hizo la arquitectura, no el dominio

Cada componente del paso 4 es un componente real de Cypha haciendo su trabajo real. El WorldPrior es la misma gaussiana en línea que le da al clasificador 2-D de la página de Cypha su superficie de decisión. El blanqueo es la afirmación de la geometría de la información hecha concreta: las actualizaciones siguen el gradiente natural y no el crudo. El decaimiento MDL es el prior de Solomonoff expresado como término de contracción.

Lo que cambió para el ajedrez es el mapa de características y la cabeza — regresión en lugar de clasificación. Ese es el argumento que hace el README de Cypha sobre ser un solo tipo que hace varios trabajos, puesto a prueba en un dominio donde la respuesta no es ambigua: o juega un ajedrez legal y razonable o no lo hace.

Lo que esto no demuestra

Los límites honestos

  • Es lineal. Una función lineal de características pieza-casilla no puede representar la seguridad del rey, las interacciones de la estructura de peones ni nada que requiera el producto de dos características. Tiene el mismo techo que el README de Cypha describe para el O exclusivo (XOR).
  • El maestro es modesto. El motor de referencia es un buscador clásico competente, no Stockfish. Destilarlo bien significa igualar bien a un evaluador modesto.
  • Sin profundidad de búsqueda propia. Aquí la fuerza viene sobre todo del envoltorio alfa-beta, exactamente igual que en el maestro.
  • Destilar no es descubrir. Cypha reprodujo una función de evaluación que se le mostró. No aprendió ajedrez desde cero, y nada en esta página afirma que lo hiciera.
Reprodúcelo: node tools/chess/perft.js verifica el motor contra las posiciones de prueba estándar, y node tools/chess/train.js regenera el modelo desde cero con una semilla fija. Los números de la parte superior de esta página se leen directamente del archivo que produce esa ejecución.