Cómo entrenar a tu Inteligencia Artificial jugando a videojuegos. Parte 1, preparando la "rejilla de juegos"
¿Tienes un bot con una IA y no sabes cómo entrenarlo? Pues ya no tienes que preocuparte, utilizando OpenAI y las plataformas Universe y Gym nos permiten probar y entrenar una IA utilizando juegos clásicos, simulaciones de navegación por páginas web o incluso probar programas.
La base de su funcionamiento es sencilla: hacer que un bot agente (la IA) utilice el ordenador igual que lo haría un ser humano, es decir, mirando a la pantalla (identificando y ubicando pixeles en la pantalla) y utilizando el ratón y el teclado. Por lo tanto, sólo tenemos que elegir en qué entorno queremos probar nuestra IA y dejarla trabajar adquiriendo experiencia poco a poco. Como hemos comentado antes, los agentes utilizan las interfaces comunes, por lo tanto el agente de IA funcionará controlando un escritorio remoto observando los pixeles proyectados en la pantalla (actuando exactamente igual que un ser humano mirando a la pantalla) y generando respuestas tanto en el teclado como en el ratón. El sistema está basado en servidor VNC y la librería propia de Universe permite al agente conectar con ellos

Estos son los entornos que podemos elegir para realizar nuestras pruebas:
- Juegos de Atari
- Juegos variados tipo Flash
- Otro tipo de juegos (aquí podríamos englobar los FPS por ejemplo como Doom)
- Tareas con navegadores web (desplazarnos por la página, hacer click, etc)
- Mini World of Bits (tareas sencillas muy específicas como leer un texto, identificar formas, etc.)
- Tareas concretas realizadas con navegadores (reservar un hotel, comprar un artículo, etc).
Esta infraestructura permite que cualquier aplicación, juegos, página web, etc que pueda integrarse en un contenedor Docker (este sería el entorno más idóneo) o en una máquina virtual (un poco más lento que Docker) sea susceptible de añadirse a Universe. Esto abre un mundo de posibilidades, como subir tu propia aplicación para probarla, un juego, etc y que sean probadas por los agentes creados en OpenAI (un entorno de pruebas ideal para nuestra aplicación).
$ sudo apt-get update $ sudo apt-get install golang python3-dev python-dev libcupti-dev libjpeg-turbo8-dev make tmux htop chromium-browser git cmake zlib1g-dev libjpeg-dev xvfb libav-tools xorg-dev python-opengl libboost-all-dev libsdl2-dev swig
$ wget https://repo.continuum.io/archive/Anaconda3-4.2.0-Linux-x86_64.sh
$ bash Anaconda3-4.2.0-Linux-x86_64.sh
Anaconda añadirá automáticamente las rutas al fichero .bashrc (en el fichero de arranque) si escribes "yes" justo en este punto de la instalación:
$ gedit ~/.bashrc
export PATH="/home/$USER/anaconda3/bin:$PATH"
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository
"deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable"
$ sudo apt-get update $ sudo apt-get install docker-ce
Finalmente probamos la instalación:
$ sudo service docker start $ sudo docker run hello-world
IMPORTANTE: en este punto tenemos que reiniciar la máquina virtual (reboot)
Ahora vamos a probar que todo se ha instalado correctamente creando un entorno propio aislado, así podremos crear diferentes universos:
$ conda create --name universe python=3.5 anaconda
$ source activate universe
(universe) $ conda install pip six libgcc swig
(universe) $ conda install opencv
El siguiente paso será instalar Tensorflow. Podemos elegir entre la versión con GPU activada o sin ella (depende de la tarjeta gráfica que tengamos):
(universe) $ pip install --upgrade tensorflow (universe) $ pip install --upgrade tensorflow-gpu
Instalamos Gym:
(universe) $ cd ~
(universe) $ git clone https://github.com/openai/gym.git
(universe) $ cd gym
(universe) $ pip install -e '.[all]'
Instalamos Universe:
(universe) $ cd ~
(universe) $ git clone https://github.com/openai/universe.git
(universe) $ cd universe
(universe) $ pip install -e .
import gym
env = gym.make('Breakout-v0')
env.reset()
for _ in range(1000):
env.render()
env.step(env.action_space.sample()) # take a random action
En nuestro caso hemos creado una carpeta dentro de nuestro perfil de usuario llamada "programasOpenAI":
(universe) $ python ~/programasOpenAI/test1.py
En este vídeo podéis ver la ejecución de los dos entornos: