Leela Chess Zero (abreviado como LCZero , lc0 ) es un motor de ajedrez gratuito, de código abierto y basado en una red neuronal profunda y un proyecto informático voluntario . El desarrollo ha sido encabezado por el programador Gary Linscott, quien también es desarrollador del motor de ajedrez Stockfish . Leela Chess Zero fue una adaptación del motor Leela Zero Go , [1] que a su vez se basó en el proyecto AlphaGo Zero de Google . [2] Uno de los propósitos de Leela Chess Zero era verificar los métodos del artículo AlphaZero aplicados al juego de ajedrez.
Al igual que Leela Zero y AlphaGo Zero, Leela Chess Zero comienza sin ningún conocimiento intrínseco específico del ajedrez aparte de las reglas básicas del juego. [1] Leela Chess Zero luego aprende a jugar ajedrez mediante el aprendizaje reforzado a partir del autojuego repetido , utilizando una red informática distribuida coordinada en el sitio web de Leela Chess Zero.
Hasta enero de 2024 [actualizar], Leela Chess Zero ha jugado más de 2.200 millones de partidas contra sí mismo, jugando alrededor de 1 millón de partidas cada día, [3] y es capaz de jugar a un nivel comparable al de Stockfish , el principal programa de ajedrez convencional. [4] [5]
El proyecto Leela Chess Zero se anunció por primera vez en TalkChess.com el 9 de enero de 2018. [1] [6] Esto reveló a Leela Chess Zero como el motor de ajedrez de código abierto y autoaprendizaje por el que se conocería, con un objetivo de crear un motor de ajedrez potente. [7] En los primeros meses de entrenamiento, Leela Chess Zero ya había alcanzado el nivel de Gran Maestro , superando la fuerza de los primeros lanzamientos de Rybka , Stockfish y Komodo , a pesar de evaluar órdenes de magnitud menos posiciones debido a su profunda red neuronal en su Función de evaluación y su uso de la búsqueda de árboles de Monte Carlo .
En diciembre de 2018, el equipo de AlphaZero publicó un nuevo artículo en la revista Science que revela detalles no revelados anteriormente sobre la arquitectura y los parámetros de entrenamiento utilizados para AlphaZero. [8] Estos cambios pronto se incorporaron a Leela Chess Zero y aumentaron tanto su fuerza como su eficiencia de entrenamiento. [9]
El trabajo en Leela Chess Zero ha servido de base para el proyecto similar AobaZero para shogi . [10]
El motor ha sido reescrito y repetido cuidadosamente desde su inicio, y ahora se ejecuta en múltiples backends , lo que le permite utilizar de manera efectiva diferentes tipos de hardware, tanto CPU como GPU. [11]
El motor admite la variante Fischer Random Chess y se está entrenando una red para probar la viabilidad de dicha red a partir de mayo de 2020. [11]
El método utilizado por sus diseñadores para hacer que Leela Chess Zero autoaprenda y juegue ajedrez por encima del nivel humano es el aprendizaje por refuerzo . Este es un algoritmo de aprendizaje automático, reflejado de AlphaZero utilizado por el código ejecutable / binario de entrenamiento Leela Chess Zero (llamado "binario") para maximizar la recompensa a través del juego autónomo . [1] [8] Como proyecto de computación distribuida de código abierto, los usuarios voluntarios ejecutan Leela Chess Zero para jugar cientos de millones de juegos que se alimentan al algoritmo de refuerzo. [3] Para contribuir al avance del motor Leela Chess Zero, se debe descargar la última versión candidata que no es de lanzamiento (no rc) del motor, así como el Cliente. Se necesita que el Cliente se conecte al servidor actual de Leela Chess Zero, donde se almacena toda la información de las partidas de ajedrez de autojuego, para obtener la red más reciente, generar partidas de autojuego y cargar los datos de entrenamiento nuevamente en el servidor. [12]
Para jugar contra el motor Leela Chess Zero en una máquina, se necesitan dos componentes: el motor binario y una red. (El binario del motor se diferencia del cliente en que el cliente se utiliza como plataforma de formación para el motor). La red contiene la función de evaluación de Leela Chess Zero que es necesaria para evaluar posiciones. [12] Las redes más antiguas también se pueden descargar y utilizar colocándolas en la carpeta con el binario Lc0.
Elo de juego automático se utiliza para medir la fuerza relativa de la red para buscar anomalías y cambios generales en la fuerza de la red, y puede usarse como herramienta de diagnóstico cuando Lc0 sufre cambios significativos. A través de juegos de prueba que se juegan con una variación mínima basada en la temperatura, [13] los clientes del motor Lc0 prueban la versión más reciente contra otras versiones recientes de la misma red, que luego se envía al servidor de entrenamiento para crear una evaluación Elo general.
Se utilizan fórmulas Elo estándar para calcular la fuerza Elo relativa entre los dos jugadores. Los cálculos de Elo de juego automático más recientes utilizan los resultados de los juegos contra múltiples versiones de la red para calcular un valor de Elo más preciso.
El enfoque de juego autónomo tiene varias consecuencias al medir la calificación Elo Lc0:
La inflación acumulativa del Elo de juego propio se puede comparar con otras series para medir la falta de generalidad al medir la fuerza con el Elo de juego propio acumulativo puro. La prueba de ejecución de Fischer Random Chess 71.4 (llamada redes 714xxx), se ubica en casi 4000 redes Elo 76 de autojuego acumuladas en su ejecución (714076). El T60 (6xxxx) con 63000 netos tiene un Elo de autojuego acumulativo de alrededor de 2900. Comparar 714076 con neto 63000 revela que 63000 vence claramente a 714076 en partidos cara a cara como máximo, si no en todos los controles de tiempo "justos". Sin embargo, el Elo de Net 63000 es significativamente más bajo que el de su oponente. Esto respalda la afirmación de que el Elo de autojuego acumulativo no es una medida objetiva de fuerza, ni es una medida que permita comparar linealmente la fuerza de la red Lc0 con la fuerza humana.
Configurar el motor para jugar un solo nodo con --minibatch-size=1
y go nodes 1
para cada movimiento realizado crea un juego determinista, y Self-Play Elo en dichas configuraciones siempre producirá el mismo resultado entre 2 de las mismas redes en la misma posición inicial: siempre se gana, siempre se pierde. , o siempre dibujar. El Elo de juego autónomo no es confiable para determinar la fuerza en estas circunstancias deterministas.
En la temporada 15 del Top Chess Engine Championship , la locomotora AllieStein compitió junto a Leela. AllieStein es una combinación de dos derivados diferentes de Leela: Allie, que utiliza la misma red de evaluación que Leela, pero tiene un algoritmo de búsqueda único para explorar diferentes líneas de juego, y Stein, una red de evaluación que ha sido entrenada utilizando aprendizaje supervisado basado en datos de juegos existentes con otros motores (a diferencia del aprendizaje no supervisado que utiliza Leela). Si bien ninguno de estos proyectos sería admitido en TCEC por separado debido a su similitud con Leela, la combinación del algoritmo de búsqueda de Allie con la red Stein, llamada AllieStein, es lo suficientemente única como para justificar que compita junto con la corriente principal Lc0. (Las reglas TCEC requieren que un motor basado en redes neuronales tenga al menos dos componentes únicos de tres características esenciales: el código que evalúa una red, la red en sí y el algoritmo de búsqueda. Mientras que AllieStein usa el mismo código para evaluar su red como Lc0, dado que los otros dos componentes son nuevos, AllieStein se considera un motor distinto.) [14]
A principios de 2021, el blog LcZero anunció Ceres, un nuevo motor de ajedrez que utiliza redes LcZero. Implementa la búsqueda de árboles de Monte Carlo , así como muchas ideas novedosas de mejora algorítmica. Las pruebas Elo iniciales mostraron que Ceres es más fuerte que Lc0 con la misma red. [15]
En abril de 2018, Leela Chess Zero se convirtió en el primer motor que utiliza una red neuronal profunda en ingresar al Top Chess Engine Championship (TCEC), durante la temporada 12 en la división más baja, división 4. [16] Leela no tuvo un buen desempeño: en 28 juegos , ganó uno, empató dos y perdió el resto; su única victoria provino de una posición en la que su oponente, Scorpio 2.82, se estrelló en tres movimientos. [17] Sin embargo, mejoró rápidamente. En julio de 2018, Leela quedó séptima entre ocho competidores en el Campeonato Mundial de Ajedrez por Computadora de 2018 . [18] En agosto de 2018, ganó la división 4 de la temporada 13 de TCEC con un récord de 14 victorias, 12 empates y 2 derrotas. [17] [19] En la División 3, Leela anotó 16/28 puntos, terminando tercero detrás de Ethereal, que anotó 22,5/28 puntos, y Arasan en el desempate. [20] [17]
En septiembre de 2018, Leela se había vuelto competitivo con los motores más potentes del mundo. En el Campeonato de Ajedrez por Computadora de Chess.com (CCCC) de 2018, [21] Leela quedó en quinto lugar entre 24 participantes. Los ocho mejores motores avanzaron a la ronda 2, donde Leela quedó en cuarto lugar. [22] [23] Leela luego ganó el partido de 30 juegos contra Komodo para asegurar el tercer lugar en el torneo. [24] [25] Leela participó en la "copa TCEC", un evento en el que motores de diferentes divisiones TCEC pueden jugar partidos entre sí. Leela derrotó a los motores de divisiones superiores Laser, Ethereal y Fire antes de ser finalmente eliminada por Stockfish en las semifinales. [17]
En octubre y noviembre de 2018, Leela participó en la batalla relámpago del campeonato de ajedrez por computadora de Chess.com . [26] Leela terminó tercera detrás de Stockfish y Komodo. [27]
En diciembre de 2018, Leela participó en la temporada 14 del Campeonato Top Chess Engine . Leela dominó las divisiones 3, 2 y 1, terminando fácilmente en primer lugar en todas ellas. En la primera división, Stockfish dominó mientras Houdini , Komodo y Leela compitieron por el segundo lugar. Todo se redujo a una partida de la ronda final en la que Leela necesitaba mantener a Stockfish en empate con negras para terminar segundo por delante de Komodo. Leela logró esto y por eso se enfrentó a Stockfish en la superfinal. En un partido de ida y vuelta, primero Stockfish y luego Leela tomaron tres ventajas antes de que Stockfish ganara por el margen más estrecho de 50,5 a 49,5. [17]
En febrero de 2019, Leela logró su primera victoria en un torneo importante cuando derrotó a Houdini en la final de la segunda copa TCEC. Leela no perdió un juego en todo el torneo. [17] [28] En abril de 2019, Leela ganó el Campeonato de Ajedrez por Computadora 7 de Chess.com: Blitz Bonanza, convirtiéndose en el primer proyecto de red neuronal en llevarse el título. [29]
En la temporada 15 del Top Chess Engine Championship (mayo de 2019), Leela defendió su título de copa TCEC, esta vez derrotando a Stockfish en la final 5,5–4,5 (+2 = 7 −1) después de que Stockfish cometiera un error en un empate de siete hombres . [30] Leela también ganó la Superfinal por primera vez, con una puntuación de 53,5 a 46,5 (+14 −7 = 79) contra Stockfish, incluida la victoria con blancas y negras en la misma apertura predeterminada en los juegos 61 y 62. [31] [ 32]
En la temporada 16 de TCEC, Leela terminó en tercer lugar en la división principal, perdiendo la clasificación para la superfinal ante Stockfish y el nuevo motor de red neuronal profunda AllieStein. Leela no sufrió ninguna derrota en la división Premier, el único motor que lo hizo, y derrotó a Stockfish en uno de los seis partidos que disputaron. Sin embargo, Leela solo logró nueve victorias, mientras que AllieStein y Stockfish obtuvieron 14 victorias. Esta incapacidad para derrotar a los motores más débiles llevó a Leela a terminar tercero, medio punto detrás de AllieStein y un punto detrás de Stockfish. [33] En la cuarta copa TCEC, Leela fue sembrada primera como campeona defensora, lo que la colocó en la mitad opuesta de las llaves como AllieStein y Stockfish. Leela pudo clasificarse para la final, donde se enfrentó a Stockfish. Después de siete empates, Stockfish ganó el octavo juego para ganar el partido. [34]
En la temporada 17 de TCEC , celebrada en enero-abril de 2020, Leela recuperó el campeonato al derrotar a Stockfish 52,5–47,5, logrando seis victorias notables en los últimos diez juegos, incluida la victoria con blancas y negras en la misma apertura predeterminada en los juegos 95. y 96. [35] Se clasificó nuevamente para la superfinal en la temporada 18 , pero esta vez fue derrotado por Stockfish 53,5–46,5. [36] En la final de la Copa TCEC 6, Leela perdió ante AllieStein, terminando segunda. [37]
En la temporada 19 de TCEC, Leela volvió a clasificarse para la superfinal. Esta vez jugó contra una nueva versión de Stockfish compatible con NNUE , una función de evaluación basada en redes neuronales superficiales utilizada principalmente para los nodos de hoja del árbol de búsqueda. Stockfish NNUE derrotó a Leela de manera convincente con una puntuación final de 54,5–45,5 (+18 −9 = 73). [38] [39] Desde entonces, Leela se ha clasificado cuatro veces para la superfinal, solo para perder cada vez ante Stockfish: +14 −8 =78 en la temporada 20 , +19 −7 =74 en la temporada 21, +27 −10 =63 en la temporada 23 y +20 −16 =64 en la temporada 24.