Inicio Aprender ajedrez Ajedrez informático Desvelamos los secretos del juego de AlphaZero: así aprendió a ganar a...

Desvelamos los secretos del juego de AlphaZero: así aprendió a ganar a Stockfish

7
4.6/5 - (5 votos)

 

Un cordial saludo estimado lector, antes de dar inicio a la lectura de este artículo, le recomiendo que se preparé un café con un buen par de croissants para que disfrute lo que leerá a continuación

Gary Kasparov primer campeón mundial de ajedrez en ser derrotado por una computadora
Fotografía: Stan Honda / AFP / Getty Images

En 1997 el mundo del ajedrez se estremeció con la derrota sufrida por uno de los campeones de ajedrez más grandes de todos los tiempos: “Gary Kasparov”, quien perdía ante Deep Blue: una supercomputadora que calculaba 200 millones de jugadas por segundo.

Hoy el mundo del ajedrez ha sido sacudido nuevamente por la reciente noticia sobre Alpha Zero, un programa de IA que ha aplastado al reinante campeón del mundo de módulos del Ajedrez.

Pero esta sacudida tendrá más eco que la primera ya que esta vez el programa que llama la atención es un programa de inteligencia artificial que aprendió a jugar sólo sin intervención humana.

Pero comencemos desde el principio. Estos programas comienzan aa volverse noticia hace un par de años con el juego del GO.

El Go es un juego inventado en china hace más de 2500 años cuyo nivel de complejidad dicen muchos que es mayor que la del ajedrez

AlphaGo fue un programa informático desarrollado por DeepMind empresa dedicada a la investigación y desarrollo de la IA la cuál fue adquirida por Google en 2014, este Programa Alpha Go derrotó a dos campeones mundiales de Go

Partida 3 de AlphaGo vs Lee Sedol en marzo de 2016. Fotografía: Erikbenson- the guardian

Ahora, AlphaZero ha vencido a StockFish el reinante campeón del mundo de las computadoras que juegan al ajedrez

AlphaZero adoptó un «enfoque más parecido a la forma en que jugamos los humanos», en cuanto a la búsqueda de movimientos, procesando alrededor de 80.000 posiciones por segundo en ajedrez en comparación con los 70 millones de Stockfish 8.

AlphaZero también aprendió shogi en dos horas antes de vencer al programa líder Elmo en un juego de 100 emparejar. AlphaZero ganó 90 partidas, perdió ocho y empató 2.

Ok, ok, pero detengámonos un momento ¿de dónde viene todo esto de los programas de ajedrez que aprenden solos y juegan mejor que el campeón del mundo?

 icon-chevron-right No te pierdas nuestro curso sobre Alphazero en nuestra academia de ajedrez online

Historia de la inteligencia artificial en los juegos de aprendizaje autónomo

Para dar respuesta a esta pregunta debemos de remontarnos un poco en la historia de la inteligencia artificial en los juegos de aprendizaje autónomo.

Nuestra aventura comienza con ingeniero llamado Arthur Samuel,  quien sería pionero en el desarrollo de la inteligencia artificial y especialmente en la creación de la “Machine Learning” o aprendizaje automático.

Al final de 1948 Samuel leyó el famoso artículo de Shannon sobre cómo escribir un programa para jugar al ajedrez. Él decidió entonces escribir uno que jugara a las damas inglesas, que consideró sería más fácil de programar; nada más alejado de la verdad. Samuel dijo: “Pensé que sería un trabajo trivial programar una computadora para jugar a las damas inglesas”.

Arthur L. Samuel (1901 – 1990): pionero en la inteligencia artificial desarrollo el primer juego de damas que se enseñaba a sí mismo en 1959. Imagen tomada de: https://www.unocero.com/noticias/ciencia/inteligencia-artificial-y-uno-de-sus-pioneros-a-l-samuel/

Pero lo cierto es que tuvo que hacer todo desde cero ya que el artículo escrito por Shannon sólo prototipaba la idea, pero no daba escribió código alguno. Para fortuna de las generaciones que vendrían luego (nosotros entre ellos 😊) Samuel se obsesiono con la idea y después de varios años de trabajo y ardua investigación pudo desarrollar el juego que tanto anhelaba

En 1959 publica su primer artículo sobre aprendizaje de las computadoras bajo el título: “Some Studies of Machine Learning Using the Game of Checkers”, en donde presentó su programa usando la poda alpha-beta, la cual utilizan aún hoy varios programas para jugar Ajedrez.

Por ese entonces Samuel tuvo la dicha de trabajar en IBM en la computadora 701 en la que pudo probar su programa. Colocaba 4 computadoras a jugar miles de partidas de damas entre sí, cuyos datos de los resultados de las partidas se iban acumulando, permitiéndole a las máquinas “Aprender de la experiencia” y en consecuencia mejorar su desempeño, con lo cual nació la “Machine Learning” o aprendizaje automático.

Samuel estaba tan orgulloso de la evolución de la “inteligencia” de su juego que retó al campeón estatal de Connecticut, quien era el cuarto jugador más fuerte de los estados Unidos. El programa de Samuel por supuesto venció fácilmente al ser humano.

Posteriormente vendrían otros programas de Inteligencia Artificial a Intentarlo en el Ajedrez, como Neuro Chess  Sebastian Trun, Morph de Robert Arlen Levinson y SAL de Michael Gherrity entre otros.

NeuroChess

Sebastian Trun, Autor de NeuroChess. Es profesor emérito de la Universidad de Stanford e investigador de IA. [Imagen Wikipedia]

NeuroChess es un programa de ajedrez que aprende de una combinación de autoaprendizaje y observación del juego experto. Su algoritmo de búsqueda está tomado de gnuchess, pero su evaluador es una red neuronal. De hecho, utiliza dos redes Neuronales una llamada V que es la función de evaluación y otra llamada M que es una red neuronal del buen juego del ajedrez, es decir está entrenada con una gran muestra de partidas de grandes maestros, lo que le ayuda a predecir las mejores jugadas. Como puede observar el lector Neurochess no es 100% autosuficiente ya que utiliza la combinación del aprendizaje con el refuerzo de datos de grandes maestros, lo cual tuvo que hacerse porque cuando se intentó que el juego aprendiera sólo era muy débil en las aperturas y exponía tempranamente la dama.

Morph

Morph es un sistema de ajedrez adaptativo orientado a patrones que aprende a jugar ajedrez solo desde su experiencia.

Morph representa el conocimiento del ajedrez como patrones ponderados, que denominados «pws» para «pares de patrones y pesos». Los patrones son gráficos de las relaciones de ataque y defensa entre las piezas en el tablero y los vectores de la diferencia material relativa entre los jugadores.

Cuando Morph analiza una posición de Ajedrez calcula qué patrones coinciden con la posición y utiliza una fórmula global para combinar los pesos de los patrones coincidentes en una evaluación. Morph juega el movimiento con la mejor evaluación.

Morph usa una amplia variedad de métodos de aprendizaje para aprender los patrones y sus pesos.

SAL

Imagen tomada de: http://www.tech4globe.com/

SAL es un sistema general de aprendizaje de juegos escrito por Michael Gherrity Científico informático e investigador IA de la Universidad de California, San Diego quien lo realizo para su tesis doctoral en 1993

A diferencia de Morph, SAL no sólo juega ajedrez, sino que además puede aprender y jugar cualquier juego de mesa entre dos oponentes siempre que el juego se pueda jugar en un tablero rectangular y use tipos de piezas fijas.

La función de evaluación de SAL es una red neuronal de retropropagación (en realidad, utiliza evaluadores separados para los dos lados del juego). Las entradas a la red son características que representan la posición de la placa, el número de piezas de cada tipo en la placa, el tipo de pieza que se acaba de mover, el tipo de pieza que acaba de capturar, y un montón de características ad hoc que tienen que ver con piezas y cuadrados bajo ataque y amenazas para ganar el juego.

SAL fue probado en los juegos de tic-tac-toe en el que domino el juego tras 2000 partidas, el  connect-four  con 100.000 partidas y ajedrez con 4200 aunque fue suspendido pero se sabe que iba mejorando con la experiencia adquirida en las miles de partidas.

Lo importante de SAL es que al igual que ALphaZero aprende por si mismo con la experiencia y puede jugar otros juegos de mesa a parte del Ajedrez.

Bien suficiente recuento histórico por ahora, centrémonos ahora en AlphaZero

¿Cómo funciona AlphaZero?

Para procurar una respuesta que nos acerque al máximo vamos a bordarla desde dos fuentes

Una será la información compartida sobre AlphaZero por parte del equipo DeepMind y la otra será desde la información compartida por el mismo equipo, pero sobre Giraffe cuyo código está disponible al público, lo cual nos permitirá una aproximación más acertada sobre el funcionamiento de AlphaZero

Aunque el código fuente de este último no ha sido liberado aún; no obstante, el equipó que lo desarrollo ha dado a conocer los aspectos más relevantes del programa y recordemos además que AlphaZero es la versión Mejorada de AlphaGo cuyo código si está disponible y cuyo funcionamiento se conoce en mayor detalle.

La siguiente imagen muestra la arquitectura de AlphaGoZero (por favor, debido a su tamaño te sugerimos que la descargues y hagas zoom sobre las diferentes partes de la misma para entenderla mejor)

Como se aprecia en la imagen AlphagoZero esta conformado por tres etapas que corren en paralelo:

Self Play (Juego contra sí mismo):  en esta eatpa se crea un set de entrenamiento, en el caso de AlphaZero se sabe que jugo 4 de partidas contra sí mismo en 3 días.

En cada movimiento, se almacena información conocida como “estado del juego”, lo que le permite al programa analizar las probabilidades de búsqueda a través de su MCTS (Búsqueda Montecarlo)

 

Red de readiestramiento:

Esta red utiliza como datos de entrada los estados de juego mencionados anteriormente y realiza un bucle reentreno con un lote de las mejores posiciones extraídas de las últimas 500.000 partidas.

Optimización de los pesos de la red

Esta etapa además contiene una Función de pérdida, que compara las predicciones de la red neuronal con las probabilidades de búsqueda para elegir las jugadas que considera ganadoras.

Después de cada 1,000 bucles de entrenamiento, la red se autoevalúa para predecir mejor según el juego de su rival.

Evaluación de la red: tal y como lo muestra claramente la imagen, esta etapa hace partidas internas con sus redes sobre las variantes que se estén presentando en el tablero para deducir las mejores jugadas.

Prueba para ver si la nueva red es más fuerte.

Juega 400 partidas entre la última red neuronal y la mejor red neuronal actual

Ambas redes jugadoras usan MCTS (Búsqueda Montecarlo) para seleccionar sus movimientos, con sus respectivas redes neuronales para evaluar los nodos de las hojas. El último jugador debe ganar el 55% de las partidas para ser declarado el nuevo mejor jugador entre estas dos redes.

Búsqueda Montecarlo, para no aburrir demasiado a los lectores no entraré en detalles técnicos al respecto.   Basta con decir por ahora que es un algoritmo heurístico que analiza los movimientos más prometedores. Busca simular un árbol de juegos como en el algoritmo Min-Max, realizando cálculos e iteraciones y con estos resultados concluye que movimiento es más probable para ganar el juego.

Se sabe entonces que el algoritmo AlphaZero funciona en una única computadora dotada con cuatro Unidades de Procesamiento de Tensor (TPU, en inglés), circuitos integrados desarrollados específicamente para el aprendizaje de máquinas. De hecho Google ha liberado su biblioteca “TensorFlow” la cual ha sido su principal biblioteca para el trabajo de Aprendizaje Automatizado y redes neurales en Inteligencia Artificial, (pronto haré un vídeo donde muestro como aprovechar esta biblioteca mediante un programita que use IA).

El 2 de noviembre de 2017 se lanzó la versión estable 1.4 de TensorFlow pueden enterarse más en tensorflow.org

GIRAFFE

Mathew Lai, creador de Giraffe y miembro del equipo DeepMind

Imagen tomada de https://pbs.twimg.com

Finalmente, deseo hablar un poco sobre Giraffe el para mi precursor de los ahora famoso Alpha,  Giraffe fue desarrollado por Mathew Lai miembro de DeepMind, como su tesis Magistral sobre la inteligencia artificial en el desarrollo de un programa de Ajedrez que aprendiera por sí mismo sin intervención humana, lo cual se logró, pues la joya luego de ser encendida  logró en nivel de un maestro de Ajedrez después de 72 horas horas de juego ininterrumpido contra sí mismo.

Giraffe utiliza Machine Learning, DeepLearning y “Aprendizaje reforzado” tal y como lo hace AlphaZero.

La buena noticia y acá es donde viene el regalo navideño para nuestros lectores es que el código fuente de Giraffe está liberado y puede ser descargado desde internet al igual que el motor UCI para que lo instales libremente en tu Fritz. Personalmente la sensación de jugar contra este módulo es que sientes que juegas contra una persona y no contra una máquina y es maravilloso sentir que estás jugando contra un módulo que no utiliza fuerza bruta sino inteligencia artificial.

Al final del artículo encontrarán los enlaces para descargarlo.

EL GENIO DETRÁS DEL GENIO DE ALPHAZERO

Demis Hassabis el genio que fundó DeepMind

Imagen tomada de https://pbs.twimg.com

No puedo cerrar este artículo sin mencionar al cerebro detrás de todo esto, se trata de Demis Hassabis, CEO de DeepMind Technologies; quien era considerado un niño prodigio del ajedrez, a los 13 años ya contaba con un ELO de más de 2300.

En 1999, a la edad de 23 años, ganó la Olimpiada Mental Deportiva, una competencia internacional multidisciplinar anual para juegos de habilidad mental. Lo ganó un récord cinco veces antes de retirarse del juego competitivo en 2003.

Demis se dedicó de lleno a la investigación de la inteligencia artificial, fundo DeepMind que fue comprada en 2014 en 400 millones de libras por Google.

Conclusiones

Si el lector me lo permite deseo hacer un par de conclusiones sobre Alphazero y la IA en el Ajedrez, las cuáles son dos de mis pasiones.

Algunas personas están desmeritando los logros de Alphazero al mencionar que jugó contra una versión pobre de Stokfisch etc. Comprendo sus observaciones, también le tengo un cariño especial a StockFisch, pero lo cierto es que los módulos como Stokfisch, Ribka, Houdini, etc están fundamentados en la fuerza bruta apoyados por una evolución interesante de algoritmos, pero AlphaGo está fundamentado en Inteligencia Artificial y sus algoritmos son mucho más eficientes, “están vivos”, aprenden solos.

La inteligencia artificial no nació ayer, desde los 60 ha seguido evolucionando y ha tomado su fuerza en el mundo actual gracias a los avances en computación, hardware y masificación de las TIC (Tecnologías de la información y las comunicaciones), por lo que lo digo muy respetuosamente. Los módulos que conocemos no tienen mucho por hacer contra estos monstruos de la IA y en el futuro si se siguen enfrentando veremos como caen irremediablemente ante el paso aplastante de la IA. Pero esto no debe de disgustarnos al contrario debe de motivarnos pues los amantes del ajedrez de alguna forma somos los beneficiados y desde ya somos bendecidos al poder contemplar estas maravillas. Imagínense lo que verán nuestros hijos y las futuras generaciones.

Ahora bien, mencioné que esto nos puede beneficiar y se preguntarán cómo, pues la respuesta tiene que ver precisamente sobre lo que afirman científicos informáticos como Tom Mitchell, de la Universidad Carnegie Mellon

“…se  abre un nuevo libro, que es donde las computadoras enseñan a los humanos a jugar a ir mejor de lo que solían hacerlo[1]

En Asia por ejemplo los estudiosos del Go dicen que lo usaran para mirar las nuevas estrategias que el juego ha descubierto y que apenas estaban investigando algunos de los mejores jugadores.

Similar al reporte que entregaron sobre las aperturas descubiertas por AlphaZero en Ajedrez las cuales coinciden con las que predominan en la competición moderna más otras estrategias que ha mostrado AlphaZero.

A la pregunta de si los seres humanos jugaremos algún día como las máquinas, la respuesta es un “NO” rotundo, porque nuestro sistema de aprendizaje es mucho más lento a pesar de que poseemos muchísimas más conexiones neurales que las que tiene Google, pero a la pregunta de si podemos mejorar nuestro juego gracias a la IA como ALphaGo la repsuesta es “Sí” y acá es donde me detengo, ya que hace un par de años vengo trabajo en un proyecto de investigación que busca aprovechar algunas metodologías de IA que pueden aplicarse en el aprendizaje humano para hacerlo más eficiente, no sólo en ajedrez sino en el aprendizaje de diversas tareas cómo dominar un idioma por ejemplo, pero bueno esa es otra historia.

ENLACES DE INTERÉS:

Código fuente de SAL, escrito en C: http://www.gherrity.org/sal6.tar.gz

Código fuente de Giraffe, escrito en C++: https://github.com/ianfab/Giraffe

Motor UCI Giraffe: https://drive.google.com/file/d/0BwDWupDvQ-QWQjAwMU9sNm0wd0U/view

Paper sobre Giraffe, https://arxiv.org/pdf/1509.01549.pdf

Sitio de DeepMind: https://deepmind.com/

Paper sobre AlphaZero y ajedrez: https://arxiv.org/pdf/1712.01815.pdf

Biblioteca de Google para experimentar con IA: https://www.tensorflow.org/

*P.D., si deseas conoce run poco más sobre este tema te invito a ver mi video sobre la evolución de la inteligencia artificial en el juego de ajedrez: https://youtu.be/bqNZd6BC1WI

Sobre Alexander Narváez

Es ingeniero Informático, especialista en telemática e informática y Magíster en ingeniería.

Lleva más de 20 años enseñando programación, actualmente trabaja en un proyecto de investigación sobre cómo mejorar el aprendizaje en humanos aprovechando la IA.

Correo electrónico: elmaestrotic@gmail.com

Canal de youtube: https://www.youtube.com/alexnarvaez

Twitter: @narvaezberrio

Linkedin: https://www.linkedin.com/in/alexander-narvaez-a8883747/

Más sobre Alexander Narváez: http://bit.ly/164GWY3

 

 

 

 

 

 

[1] https://www.theguardian.com/technology/2017/dec/07/alphazero-google-deepmind-ai-beats-champion-program-teaching-itself-to-play-four-hours

Ingeniero Informático, Especialista en Telemática e Informática. Magíster en Ingeniería. Docente universitario y profesor de programación desde hace más de 20 años. Es fanático del Ajedrez y las Artes Marciales (fue campeón nacional en taekwondo en la modalidad de combate de manera consecutiva por varios años hasta retirarse de la competencia, aunque aún entrena). En el año 2013 fue elegido como uno de los 10 jóvenes más sobresalientes de Antioquia (uno de los 10 era la doble Campeona Olímpica Mariana Pajón) en ese mismo año recibió el Sol Arenadino como “Egresado Ilustre”, máximo reconocimiento que entrega la Universidad del Área Andina de Bogotá”. Trabaja desde hace 11 años como docente de planta en la Universidad Católica del Norte, primera universidad 100% virtual de Colombia. En este año recibió el premio “Arroba de Oro” entregado por dicha universidad en reconocimiento a su Excelencia como Docente”. Fue asesor de seguridad informática para el Ministerio de Defensa y es constantemente invitado a programas de seguridad y TIC , algunos de los cuales pueden verse en Youtube. Es investigador entre más de seguridad informática, desarrollo de Software y de inteligencia Artificial. Actualmente trabaja en un proyecto que busca mejorar la forma como los seres humanos aprendemos utilizando técnicas de Inteligencia artificial que pueden implementarse en el aprendizaje de los humanos. También entrena a estudiantes de secundaria y universitarios para participar en maratones de programación e incluso ha ganado las dos maratones de docentes de programación en las que ha participado. Ha propuesto cambios en las metodologías de enseñanza y educación como su propuesta para el cambio de enfoque en la enseñanza de las matemáticas ya que su gran pasión es las matemáticas discretas y computación.

7 COMENTARIOS

  1. Buenas tardes muchas gracias por el artículo, quisiera saber si se puede conseguir el motor de Giraffe para Android, para incorporarselo al Stockfish del celular, gracias.

  2. Cordial saludos Juan. hasta donde sé sólo existe para la versión PC, pero sería genial desde el código fuente que se compartió tratar de generar el módulo para los dispositivos móviles. Saludo.

  3. Este campo abre a mi modo de ver una posibilidad muy interesante. Podria un programa en teoria aprender la manera de jugar de un determinado humano, haciendo ingenieria de reversa de las valoraciones de posicion que este hizo y auto- adecuarse?
    Podriamos de esa manera en teoria pseudo-clonar a jugadores!. Por ejemplo, que esta inteligencia tome todas las partidas conocidas de Caruana, las procese, y como resultado se obtenga un motor de juego que sea capaz de imitarle?

    • Según lo que creo, podría hacerse pero hasta el momento en que se cargo la ultima partida de dicho jugador, pero de ahí en mas tenemos 2 lineas de tiempo para la maquina y para el humano, la maquina podría seguir aprendiendo en base a las partidas ya ingresadas, pero el humano es susceptible a otras variables que el algoritmo de la maquina no tendría, ej si jugador X se hace amigo de Kasparov y de ahí en adelante abandona su peón dama para jugar peón Rey, porque su nuevo amigo Gari , piensa que es lo mas optimo.
      Y con respecto al programa este podría jugar con otros módulos de fuerza bruta u otros de IA y como el programa aprende también de dichas partidas sus evaluaciones internas seran distintas y tal vez llegue a la conclusión de que que lo mas optimo es peón dama y que los humanos la han jugado mal por eso su mala evaluación.
      saludos

      • Qué locura, si uno se pone a pensar en esto es infinito, continuando con tu ejemplo en un futuro no sería descabellado que, alphazero, pudiera predecir que como vos decís Caruana se haga amigo de Gari, ya que tiene acceso a toda la red de Google y sin ir más lejos hay vídeos que muestran a ambos hablando de paridas, como sucede en tres Gari y Carlsen. Entonces teniendo un patrón de juego de ambos y calculando probabilidades que hambos jugadores jueguen juntos y sean amigos podría clonar o predecir cómo serían Caruana o Carlsen al cabo de un tiempo como jugadores. Porque si Alpha zero está en constante evolución y con el acceso a la información que tiene dentro de un tiempo podría hacer lo que sea.

DEJA UNA RESPUESTA

¡Por favor, escribe tu comentario!
Por favor ingrese su nombre aquí

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.