Sobre el ajedrez. Y no solo

Hoy no habrá pensamientos difíciles sobre el presente y el futuro de la industria informática. Hoy quiero hablarte de uno de mis hobbies. Juego muchos juegos diferentes: fútbol, ​​hockey, tenis (grandes y pequeños), póquer, preferencia, bolsa, etc. Pero mi deporte de “perfil” es el ajedrez. Mi carrera en este campo no avanzó más allá de un candidato a maestro, pero he mantenido mi amor por el juego antiguo durante 4 décadas. Curiosamente, se "llevó" bastante bien con otro pasatiempo: la programación, lo que generó un interés en la inteligencia artificial y la teoría de juegos. Y, por supuesto, los últimos avances en esta área asociados con el fenomenal éxito del proyecto AlphaZero no pudieron pasar por alto .



imagen


Luego me senté y admiré AlphaZero versus Stockfish . Y ahora volví al tema en relación con la tarea de optimizar las redes neuronales, que a veces se tiene que hacer en el trabajo (por desgracia, menos de lo que nos gustaría). Como me parece, estas tareas pueden estar estrechamente relacionadas, por lo que quería sistematizar de alguna manera mis ideas.



El ajedrez es un juego con información completa, basado en una enumeración de opciones (además de damas, go, etc.).



imagen


El problema, sin embargo, es que el árbol de variaciones en el ajedrez crece bastante rápido (aunque significativamente más lento que en Go). Por ejemplo, con un tablero completo de piezas en una posición tranquila, cada lado tiene aproximadamente 10 continuaciones razonables. Así, en solo 3 jugadas de blanco y negro (6 medias jugadas) podemos obtener un millón de posiciones de esta. Además, tengamos en cuenta que el juego promedio entre personas dura 40-50 movimientos (entre computadoras - 80-100). Así, llegaremos a la conclusión de que un cálculo completo del árbol de variantes es imposible para la mayoría de posiciones, lo que significa que debemos centrarnos en el corte parcial del árbol de búsqueda, tanto en ancho como en profundidad. Ahora veamos cómo los humanos y las máquinas se han enfrentado a este problema. Comenzaré con una pequeña descripción histórica.



"Ajedrez proteico".



El ajedrez se conoce desde hace unos 1400 años, pero los primeros grandes torneos comenzaron a celebrarse a mediados del siglo XIX. Fue una época de batallas abiertas y románticas. Los oponentes intentaron introducir rápidamente piezas en la batalla, abrir la posición y comenzar un ataque contra el rey. Nadie consideró especialmente concesiones materiales y posicionales. Pero sorprendentemente, el antagonista del ajedrez romántico, Wilhelm Steinitz, se convirtió en el primer campeón mundial oficial .



imagen


Él sentó las bases para el juego posicional . En gran parte gracias a Steinitz, comenzamos a operar con conceptos como “estructura de peones”, “casillas fuertes y débiles”, “piezas buenas y malas”. Esto es lo que introdujo en el ajedrez el elemento de estrategia basada en ventajas a largo plazo. Steinitz desarrolló un enfoque posicional y castigó implacablemente a sus oponentes por sacrificios materiales y defectos posicionales. Emmanuel Lasker , que lo reemplazó en el trono del ajedrez, habló muy bien del primer campeón : " El talento de Steinitz como jugador práctico era menor que el talento de Blackburn o Zukertort, al que sin embargo derrotó, porque era un gran pensador, y ellos no ". Steinitz formuló los principios básicos de la evaluación de puestos y los planes de juego resultantes en un lenguaje de alto nivel (en este caso, alemán).

En consecuencia, los puso a disposición de otras personas para que los estudiaran
. Esto ha dado forma a lo que llamamos el enfoque humano del ajedrez. Nos tomamos muy en serio la poda del árbol de variaciones en el ajedrez basándonos en principios posicionales. Algunos movimientos se descartan porque llevan a una mala posición en el horizonte calculado. Algunas porque conducen a concesiones a largo plazo, otras porque no tienen objetivo. Como resultado, calculamos una parte muy pequeña de las posibles opciones.



Una mayor comprensión del ajedrez fue esencialmente un desarrollo de las ideas establecidas por el primer campeón. Aparecieron conceptos como bloqueo, prevención, dominación. Los ajedrecistas comenzaron a estudiar los principios de jugar posiciones típicas que surgen de varias aperturas (cadenas cerradas, un peón aislado, etc.). De una forma u otra, se estudiaron posiciones cercanas al balance de materiales. Pero también hubo excepciones, por ejemplo, el joven Mikhail Tal jugó con un estilo diferente. Creó posiciones bruscas y desequilibradas con una violación de la proporción de material (más tarde Garry Kasparov también demostró un juego similar ). No acostumbrados a un juego así, los oponentes se fueron pasando uno tras otro. Tal se convirtió en campeón mundial en 1960, pero perdió la revancha un año después. En la segunda mitad del siglo XX, el enfoque de la investigación se desplazó hacia el comienzo del juego: la apertura. Con la mano ligera de Mikhail Botvinnik(6º campeón mundial) y Garry Kasparov (13º) los ajedrecistas empezaron a dedicar la mayor parte de su tiempo a desarrollar opciones de apertura específicas. Cada vez se utilizan más las computadoras en este proceso. Como resultado, se desarrollan muchas variaciones en las aperturas populares hasta posiciones en las que el resultado del juego está predeterminado. Esto conduce a una cierta castración del ajedrez, así como a la necesidad de memorizar una gran cantidad de variaciones para no ser derrotado ya en la apertura. No es de sorprender que el péndulo haya oscilado últimamente en la dirección opuesta. El actual campeón mundial Magnus Carlsenmás bien, se esfuerza por obtener, de acuerdo con los resultados de la apertura, no una ventaja, sino una posición de juego que no sea "trillada" por los motores de las computadoras. La severidad de la lucha se traslada a las últimas etapas del juego (medio juego, final).



"Ajedrez de silicona".



Según la acertada expresión de Alexander Kronrod , el ajedrez es la “mosca de la fruta” de la inteligencia artificial. Su estudio comenzó con la llegada de las primeras computadoras y atrajo a pioneros como Alan Turing y Claude Shannon.... Fue Shannon quien presentó la primera estimación del valor de las piezas de ajedrez "Rey = 200, Reina = 9, Torre = 5, Alfil = 3, Caballo = 3, Peón = 1". Curiosamente, fue esta simple evaluación la que determinó el desarrollo de la programación del ajedrez durante los próximos 70 años. Shannon también previó la división de los programas de ajedrez en "rápido" (fuerza bruta) e "inteligente" (inteligente). Los programas "rápidos" recorren completamente todas las opciones posibles hasta una cierta profundidad, evalúan la posición utilizando una función de evaluación simple (como la relación de material) y seleccionan el mejor movimiento utilizando el principio minimax... Los programas "inteligentes" utilizan algoritmos más complejos y varían la profundidad de búsqueda de la misma manera que lo hace un humano. El sexto campeón mundial Mikhail Botvinnik participó en la creación de dicho algoritmo en los últimos años de su vida. Sin embargo, sin mucho éxito, como muchos otros creadores de programas "inteligentes". En su tercera predicción, Shannon estaba equivocado: los programas "inteligentes" fallaban constantemente en la lucha contra los "rápidos". La razón es que la fuerza bruta está muy bien paralelizada y optimizada. Y la simple estimación de Shannon resultó ser bastante estable y sólida. Porque, como saben los jugadores de ajedrez, cualquier ventaja posicional tarde o temprano se transformará en una material. Mientras que los principios de evaluación de puestos se prestan a una formalización mucho peor.



Requieren cálculos secuenciales engorrosos y están mal optimizados. Como resultado, a medida que aumentaba el rendimiento de la computadora, los programas "rápidos" comenzaron a dominar. Así es como se formó la corriente principal del ajedrez por computadora, que es sorprendentemente diferente del ajedrez humano: reventando hasta cierta profundidad utilizando el recorte alfa-beta (y algunas otras heurísticas) y la estimación de posición según Shannon. Además, los programas comenzaron a desarrollar y utilizar activamente bases de apertura (cuando el juego aún no se ha alejado de la posición inicial) y de final (cuando el número de piezas es pequeño y el árbol de variaciones se puede calcular por completo). Y el rendimiento de las computadoras creció todo el tiempo, y los programadores tampoco se quedaron inactivos, optimizando constantemente los motores. El 11 de mayo de 1997, ocurrió un evento que hizo épocaLa computadora Deep Blue derrotó al campeón mundial Garry Kasparov en una partida de 6 juegos.



imagen


Inmediatamente después de eso, IBM cerró este proyecto nunca barato. ¡Las fichas que aceleran los cálculos de ajedrez se crearon especialmente para Deep Blue ! Sin embargo, incluso sin ellos, la superioridad de una computadora sobre una persona ya era obvia. Deep Fritz , Deep Junior , Rybka , Komodo , Stockfish comenzaron a aplastar sin piedad a los principales grandes maestros, incluso dándoles material por delante ... Entre ellos, sin embargo, jugaron con éxito variable: los resultados de los campeonatos mundiales entre programas se pueden encontrar aquí .



Todo eso cambió cuando los creadores de AlphaZero derrotaron al campeón mundial de Go Lee Sedol, finalmente se dedicó al ajedrez. El resultado fue fenomenal: después de 4 horas de jugar consigo mismo, AlphaZero derrotó a StockFish , ganó 28 juegos y empató 72. Después de un año, DeepMind realizó un experimento más limpio , lo que permitió a Stockfish usar los libros de apertura y final. Aún así, el resultado +155 -6 = 839 no deja dudas sobre quién es el jugador más fuerte del mundo en este momento.



Entendamos cómo se dispuso este nuevo milagro. (Para aquellos que deseen profundizar en los scripts de Python, ya existe un libro completo ). El algoritmo principal es la búsqueda de árboles de Monte Carlo.... Esto es, por supuesto, excesivo, lo que hace que AlphaZero sea similar a otros programas de ajedrez. Pero la palabra Monte Carlo no debería ser engañosa: la búsqueda está controlada por una red neuronal (para Go era de 80 capas, no sé cuál aquí) y tiene un enfoque limitado. AlphaZero recorta el árbol de fuerza bruta por consideraciones de posición, ¡al igual que lo hace un humano! En comparación con Stockfish, Alphazero pasa por casi 1000 veces menos opciones... Palea mucho menos "basura", pero calcula las opciones más fuertes con mayor profundidad y precisión. Por lo tanto, gana incluso con menos tiempo o con hardware más débil. Y lo más importante es que AlphaZero "estudió" ajedrez exclusivamente en "su propia experiencia". No tenía información a priori. Su "comprensión" no está contaminada por la "evaluación de Shannon". Ella tiene su propia comprensión única de la visión del ajedrez y el estilo de juego, a menudo ignorando el equilibrio material (¡como el joven Tal!).



¿Qué conclusiones podemos sacar de este maravilloso experimento?



  1. . , , .
  2. . 4 (« ») ! – ( -) . . . AlphaZero () .
  3. – ? – , , .. , . AlphaZero – – –. ? , , . , . . . . SkyNet se volverá un poco menos distante y un poco más siniestro ... Mientras tanto, agradecería los enlaces, artículos e ideas sobre cómo abordar este problema.


PD. Pero verás los juegos . Obtuve un placer incomparable.



All Articles