Un paso más de la inteligencia artificial en los videojuegos: AlphaGo (II)

Retomando lo que comentamos en la anterior entrada, nos quedamos discutiendo sobre que uno de los elementos que hacían de Go un juego más complejo que el ajedrez era un mayor branching factor (250 vs 35) además de un mayor número de turnos en la partida (200 vs 40). La mayor profundidad del árbol no es el problema esencial, ya que para el caso del ajedrez ya se usan funciones heurísticas para estimar en qué estado se encuentra una partida. Y es que el segundo elemento que hace de Go un juego más complejo es precisamente dificultad en definir una función heurística para este juego. Así como en el ajedrez tenemos una idea más o menos aproximada sobre como va una partida viendo qué piezas tiene aún en posesión cada jugador, en el Go la cosa no está tan clara. Es por este motivo que el equipo de AlphaGo decidió atacar este problema con una mezcla de técnicas de deep learning y el uso de árboles, tal y como se explicará a continuación.

En una primera fase, se recopilaron más de 30 millones de movimientos procedentes de jugadores profesionales para entrenar una red neuronal que permitiera predecir el próximo movimiento a realizar. A partir de partidas reales, se trata de para cada estado de cualquier partida, almacenar el estado de la partida en cuestión y el movimiento que se decidió hacer en esa jugada, dando lugar al siguiente estado de la partida. De esta forma, se tiene una red neuronal cuya entrada de datos es un estado de la partida y cuya salida son los movimientos más probables. Pero el resultado de esta fase era un programa que había conseguido imitar jugadores profesionales, no siendo suficiente para batir al mejor jugador de Go del mundo.

En una segunda fase, se diseñó una estrategia basada en el reinforcement learning para mejorar el programa informático. Lo que se hizo fue poner a jugar al programa informático contra él mismo, de forma que ambos jugadores estuvieran controlados por AlphaGo. La no necesidad de la intervención humana permitió generar “infinidad” de nuevas partidas, obteniendo nuevas situaciones y aprendiendo por él mismo qué movimientos son los mejores a realizar en cada estado de la partida. Cuanto más tiempo se le permite al programa autoentrenarse al jugar contra sí mismo, mejor es la intelegencia artificial con la que se acaba dotando a AlphaGo. Esta técnica de autoentrenar un programar para mejorarse a sí mismo es la que se conoce en el mundo de la inteligencia artificial como bootstrapping. Este tipo de inteligencia artificial también es referida como Seed Artificial Intelligence.

Ilustración de Seed Artificial Intelligence por Erica Glasier [1]

Ilustración de Seed Artificial Intelligence por Erica Glasier [1]. Usado bajo condiciones de fair use.

Habiendo ya superado el mejor jugador profesional de Go en el mundo, uno se pregunta si el proyecto AlphaGo sigue en marcha, si continúan aún mejorando el programa informática incluyendo también las partidas en las que AlphaGo compitió contra Lee Sedol y también generando nuevas partidas vía bootstrapping. Por lo que comentan en el blog de Google, parece ser que el mundo de los videojuegos les dota de un escenario perfecto donde desarrollar técnicas de inteligencia artificial y que a partir de la experiencia adquirida quieren centrarse en problemas importantes del mundo real teniendo un mayor impacto en la sociedad. ¡Veremos qué nos depara el futuro! Por último, os dejo un enlace a un vídeo muy interesante sobre AlphaGo:

Referencias

[1] http://ericaglasier.com/tagged/seed-AI

CC BY-NC-SA 4.0 Un paso más de la inteligencia artificial en los videojuegos: AlphaGo (II) por carles está licenciado bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional.

Comentar

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Leer entrada anterior
Un paso más de la inteligencia artificial en los videojuegos: AlphaGo (I)

Cada vez más la inteligencia artificial se está abriendo paso en el mundo de los videojuegos, convertíendose en un elemento...

Cerrar