Artículos
¿Cómo juega AlphaZero al ajedrez?
AlphaZero, el sistema de inteligencia artificial que ha dejado al mundo del ajedrez de piedra.

¿Cómo juega AlphaZero al ajedrez?

Mel_OCinneide
| 181 | Jugadores de ajedrez

A estas alturas ya habrás oído hablar de la nueva sensación del ajedrez, AlphaZero, y de su tremenda victoria de match contra Stockfish, el módulo de código abierto más fuerte. Las reacciones de la comunidad ajedrecística a este match oscilaban entre la admiración y el más absoluto escepticismo.

Pero ¿Cómo funciona realmente AlphaZero?

¿En qué se distingue de otros módulos y por qué es tantísimo mejor? En este artículo de dos partes trataré de explicar un poco de lo que sucede en el proceso de AlphaZero.

Primero, reflexionemos sobre lo que pasó. AlphaZero lo desarrolló DeepMind (una compañía propiedad de Google) para especializarse en aprender a jugar juegos de dos jugadores y movimientos alternos. Se preparó con las reglas del ajedrez y nada más.

Entonces empezó a aprender ajedrez jugando partidas contra sí mismo. Supuestamente la primera partida se habría compuesto de movimientos totalmente aleatorios. Al final de esta partida, DeepZero había aprendido que el lado perdedor había hecho cosas que no eran tan inteligentes y que el lado vencedor había jugado mejor. DeepZero se había enseñado a sí mismo la primera lección de ajedrez. La calidad del ajedrez en la segunda partida solo fue un poquito mejor que en la primera.

Tras nueve horas y 44 millones de partidas contra sí mismo, AlphaZero se había (muy posiblemente) enseñado a sí mismo lo suficiente para convertirse en el mejor jugador de ajedrez, ya sea de silicio o de carbono, de todos los tiempos.

Pero ¿Cómo lo hizo?

null

La sede de Google en Londres desde dentro, con la sección de DeepMind en la octava planta. | Foto: Maria Emelianova/Chess.com.

No calculaba más variantes que Stockfish.

De hecho, más bien lo contrario: Stockfish examinaba 70 millones de posiciones por segundo mientras que AlphaZero se contentaba con 99,89% menos: 80.000 posiciones por segundo. Esto me trae a la mente un comentario de Jonathan Rowson después de que Michael Adams lo destrozara en un match en 1998: "Me alucinó lo poco que veía".

Los ajedrecistas más fuertes tienden a calcular menos variantes que los más débiles. En lugar de eso, su aguda intuición los lleva a concentrar sus cálculos en las líneas más relevantes. Esto es exactamente lo que hizo AlphaZero. Se enseñó a sí mismo el ajedrez en una forma bastante humana, desarrollando una "intuición" como no ha hecho ninguna otra máquina de ajedrez antes, y lo combinó con cierta cantidad de cálculos en frío.

Veamos cómo lo hizo.

El Árbol del Análisis

Los módulos de ajedrez usan una estructura de árbol para calcular variantes y usan una función de evaluación para asignar a la posición al final de una variante un valor como +1,5 (la ventaja de las blancas equivale a un peón y medio) o -9,0 (la ventaja de las negras equivale a una dama). El enfoque de AlphaZero con respecto del cálculo de variantes y de la evaluación de posiciones es radicalmente distinto a lo que hacen otros módulos.

computer tree

Todos los módulos de ajedrez populares se basan en el algoritmo minimax, que es un nombre sofisticado que simplemente significa que escoges el movimiento que te da la mayor ventaja independientemente de lo que juegue tu oponente. El minimax se mejora invariablemente con una poda alfa-beta, que se usa para reducir el tamaño del árbol de variantes a examinar. Aquí tienes un ejemplo exagerado de cómo funciona esta poda: Digamos que un módulo está considerando un movimiento y ve que su oponente tiene veinte respuestas factibles. Una de esas respuestas lleva a un jaque mate forzado. Entonces el módulo puede abandonar (o "amputar") el movimiento que estaba considerando, independientemente de lo bien que funcionaría contra cualquiera del resto de 19 respuestas.

Otro aspecto es que si un módulo poda movimientos que solo parecen malos, por ejemplo aquellos que pierden material, no logrará tener en cuenta ningún tipo de sacrificio, que es en parte el motivo de que los primeros módulos fueran tan materialistas. En módulos actuales como Stockfish, la poda alfa-beta está combinada con una serie de otras mejoras específicas del ajedrez como el tanteo de movimientos mortales (un movimiento fuerte en otra variante similar es probable que sea fuerte aquí), el tanteo de contramovimientos (algunos movimientos tienen respuestas naturales independientemente de la posición: seguro que a menudo has respondido a axb5 con axb5, ¿no?) y muchos otros.

AlphaZero, en cambio, usa el Árbol de Búsqueda Monte Carlo (MCTS, por sus siglas en inglés). Monte Carlo es famoso por sus casinos, así que, cuando veas este término en un contexto informático, significa que sucede algo arbitrario. Un módulo que use la MCTS pura evaluaría una posición generando una serie de secuencias de movimientos (o "desarrollos") a partir de esa posición de manera arbitraria y haciendo una media de los resultados finales (victoria/tablas/derrota) que genera. Este enfoque puede parecer demasiado simple, pero si lo piensas te darás cuenta de que es una forma bastante plausible de evaluar una posición. 

null

El Casino Monte Carlo. 

AlphaZero crea 800 desarrollos en cada movimiento. También aumenta la MCTS pura prefiriendo movimientos que no ha probado (mucho) aún, que parecen probables y que parecen llevar a "buenas" posiciones, es decir, donde la función de evaluación (hablaremos más de ella en el siguiente artículo) les da un valor alto. Realmente crea desarrollos semi arbitrarios, líneas que parecen apropiadas a su función de evaluación en mejora constante. ¿No es bastante parecido a cómo calculas tú? ¿Centrándote en líneas de juego plausibles?

Observa que hasta ahora no hay absolutamente nada específico del ajedrez en lo que hace AlphaZero. En mi próximo artículo, cuando veamos cómo aprende AlphaZero a evaluar posiciones de ajedrez, veremos que tampoco tiene nada específico de ajedrez.

AlphaZero, igual que un bebé recién nacido, vino al mundo con poco conocimiento, pero está tremendamente equipado para aprender. Una debilidad de la MCTS es que, dado que se basa en crear desarrollos semi arbitrarios, puede equivocarse totalmente en posiciones tensas en las que hay una línea precisa de juego óptimo. Si no selecciona esta línea de forma arbitraria, es muy probable que cometa un error grave. Esta ceguera seguramente es la que hizo que el predecesor de AlphaZero que jugaba a Go, AlphaGo, perdiera una partida contra el 18 veces campeón mundial de Go, Lee Sedol. Sin embargo, no parece que esto fuera un problema en el match con Stockfish.

La MCTS se ha utilizado previamente para juegos de dos jugadores, pero había dado un rendimiento mucho peor que el ya establecido enfoque de minimax con alfa-beta. En AlphaZero, la MCTS combina muy bien con la función de evaluación basada en una red neural. Explicaré más sobre esta red neural y sobre el fascinante modo en el que aprende, de forma autónoma, a evaluar posiciones de ajedrez. También describiré el hardware en el que opera AlphaZero y haré algunas predicciones sobre el impacto que tendrá todo esto en el ajedrez tal y como lo conocemos. 

¿Qué opinas del modo en que AlphaZero juega al ajedrez? Cuéntanoslo en los comentarios.

Más de Mel_OCinneide
¿Qué hay en el cerebro de AlphaZero?

¿Qué hay en el cerebro de AlphaZero?