Aprendizaje Reforzado y Deep Learning en videojuegos clásicos: todo lo que hemos aprendido en un año

Thursday, August 23, 2018

Aprendizaje Reforzado y Deep Learning en videojuegos clásicos: todo lo que hemos aprendido en un año

Escrito por Enrique Blanco (Investigador en CDO) y Fran Ramírez (Investigador de seguridad  informática en Eleven Paths)

Hace aproximadamente un año en este blog se comenzó una serie de artículos en la que se exploraba cómo conseguir que una Inteligencia Artificial aprendiera a desenvolverse con juegos sencillos haciendo uso de algoritmos de Aprendizaje Reforzado.  En este post ofrecemos una recopilación de todos los artículos y recursos mostrados sobre Aprendizaje Reforzado y Deep Learning durante los últimos meses. Comenzamos con algoritmos sencillos en entornos muy básicos con pocas variables para posteriormente migrar a juegos más complicados que requerían de arquitecturas profundas para poder entrenar a la IA de manera eficiente y adecuada. 

Imagen pasos en la arena

Nos encontramos con un campo muy atractivo en el que se exploraba un campo del Machine Learning no tan popular como el Aprendizaje Reforzado, más allá de los típicos algoritmos de aprendizaje supervisado y no supervisado a los que estamos acostumbrados, pues además necesitaba de la aplicación de modelos de redes neuronales profundas dirigidas a la identificación de píxeles en la pantalla. De esta manera se aunaban en un mismo ejercicio algoritmos de Machine Learning, Deep Learning y técnicas de visión artificial apoyándonos en un lenguaje de programación sencillo como Python y en librerías como Universe y OpenAI Gym.

A continuación, se resumen las tres series de artículos que se han ido completando en torno a esta temática.

1: Serie "Cómo entrenar a tu AI jugando a videojuegos”


En este conjunto de posts se facilita una introducción a las librerías de OpenAI Gym y Universe, a las características de los entornos de juegos clásicos soportados por estas librerías y algunos algoritmos sencillos que permitían hacer aprender a una Inteligencia Artificial desenvolverse en este tipo de entornos.  

En el primer artículo Cómo entrenar a tu Inteligencia Artificial jugando a videojuegos. Parte 1, preparando la "rejilla de juegos", se ofrecen las instrucciones a seguir para la correcta instalación de todo el entorno que nos permita desplegar todos los entornos de juego y comenzar a investigar con el aprendizaje reforzado. 

Figura 2: Funcionamiento básico OpenAI

En el segundo artículo Cómo entrenar a tu Inteligencia Artificial jugando a videojuegos. Parte 2, observando el entorno introdujimos algunos conceptos básicos asociados tanto a los entornos como al Aprendizaje Reforzado e hicimos nuestro primer intento de entrenar a una IA a  ganar a Cartpole con unas pocas líneas de código en Python.

En Cómo entrenar a tu Inteligencia Artificial jugando a videojuegos. Parte 3, resolviendo CartPole con Random Search, el tercer post de esta serie, explorábamos nuevos algoritmos de Aprendizaje Reforzado para Cartpole, y se allanaba el camino para introducir el Q-Learning al que, como vimos en los siguientes dos artículos  Cómo entrenar a tu Inteligencia Artificial jugando a videojuegos. Parte 4. Aprende Q-Learning con el juego "Taxi", parte 1 de 2 y Cómo entrenar a tu Inteligencia Artificial jugando videojuegos, Parte 5. Aprende Q-Learning con el juego "Taxi", parte 2 de 2, era necesario recurrir en el caso de que tanto el número de acciones como la complejidad del juego aumentase.

2: Serie “Deep Learning vs Atari: entrena tu IA para dominar videojuegos clásicos”


Tras la serie "Cómo entrenar a tu AI jugando a videojuegos" y con la intención de mostrar todo lo presentado de una maner más cercana, hicimos el primer capítulo de un webinar de una serie de dos episodios, el cual podéis consultar en el siguiente enlace.

En esta segunda serie decidimos migrar a entornos más difíciles en los que intentar enseñar a una IA a desenvolverse con soltura como Breakout y Space Invaders. Todos recordamos estos míticos juegos que, a pesar de su simplicidad, presentan el grado de complejidad suficiente para tener que mezclar algoritmos de Aprendizaje Reforzado y Redes Neuronales Profundas (Deep Q-Learning).

Figura 3: diagrama del proceso de aprendizaje de un agente durante el entrenamiento
Podéis encontrar todos los detalles asociados al pre-procesado de las imágenes de los juegos, entrenamiento, elección de arquitectura profunda, resultados y lecciones aprendidas en los siguientes artículos:

Además, en el siguiente link se facilita el segundo episodio del webinar donde se presenta y resume todo el trabajo realizado con OpenAI Gym en estos dos entornos más complejos.

3: Serie “Deep Learning con Python: Introducción a TensorFlow”


Como habéis podido comprobar, para poder seguir todos los posts anteriores es necesario un nivel básico de Python, en especial cuando toca definir las arquitecturas del modelo que queramos entrenar. Os recomendamos encarecidamente leer la serie de artículos "Python para todos":

donde podréis refrescar o aprender los conceptos y las técnicas necesarias para abordar un proyecto de Machine Learning con Python

Dado que en el caso que nos ocupa necesitamos manejar recursos de Deep Learning, decidimos hacer uso de la librería TensorFlow, que se encuentra entre las más extendidas dentro de esta disciplina, soportada Python y C++, además de Java y Go entre otros. Además permite distribuir los cálculos en CPU, GPU de forma simultánea.

Figura 4: logo de TensorFlow. Fuente.

En esta serie de artículos abordamos desde los fundamentos más básicos para familiarizarnos con el uso de la librería, hasta ejemplos de regresión y clasificación de datasets conocidos. También se incluye un ejemplo de clasificación con Keras, una API de alto nivel para Deep Learning haciendo uso de su back-end en TensorFlow. Los tres artículos que sirven como tutorial introductorio los tenéis disponibles a continuación:

Esperamos que, tanto si todavía disfrutáis de unos merecidos días de vacaciones como si ya os habéis incorporado a la rutina laboral, disfrutéis de este recopilatorio sobre Aprendizaje Reforzado y Deep Learning. Por nuestra parte, continuaremos “jugando” con las librerías y entornos presentados en estas series en busca de nuevas aplicaciones.

También puedes seguirnos en TwitterYouTube y LinkedIn

No comments:

Post a Comment