Cómo entrenar a tu IA

https://cyberhades.ams3.cdn.digitaloceanspaces.com/imagenes/31406720546_7496797da3_o_opt.png Fotos: Web OpenAI

¿Tienes una IA pero no sabes cómo probarla? 

Pues ya no tienes que preocuparte, OpenAI te ofrece su nueva plataforma llamada Universe la cual te permite comprobar y entrenar una IA utilizando juegos, páginas web ó incluso aplicaciones como medio de pruebas.

La base de su funcionamiento es sencillo: hacer que un agente (la IA) utilice un ordenador igual como lo haría un ser humano, es decir, mirando la pantalla (en su caso identificando pixeles) y utilizando el ratón y el teclado. Por lo tanto sólo tenemos que elegir en qué entorno queremos probar nuestra IA y dejamos que vaya adquiriendo experiencia poco a poco. Como hemos comentado antes, los agentes utilizan las interfaces comunes, por lo tanto el agente de la IA funcionará controlando un escritorio remoto observando los pixeles proyectados en la pantalla y generando respuestas tanto en el teclado como en el ratón. El sistema está basado en servidores VNC y la librería propia de Universe permite al agente conectar con ellos.

https://cyberhades.ams3.cdn.digitaloceanspaces.com/imagenes/30635483973_5750445183_o_opt.png

 

Estos son los entornos que podemos elegir para realizar nuestras pruebas:

  • Juegos Atari
  • Juegos Flash
  • Juegos con recompensas (juegos con puntuación por ejemplo)
  • Tareas con navegadores (navegar, leer, hacer click, etc).
  • Mini World of Bits (tareas sencillas muy específicas como leer un texto, identificar formas, etc)
  • Tareas con navegadores más reales (reservar un hotel por ejemplo

Esta infraestructura permite que cualquier aplicación, juegos, página web, etc que pueda integrarse en un contenedor Docker (este es el entorno ideal) ó en una máquina virtual (este no funciona tan bien como Docker) sea susceptible de ser integrada dentro de Universe. Esto abre otro mundo de posibilidades, como el subir tu propia aplicación, juego, página web, etc y que lo prueben los agentes de OpenAI, un verdadero centro de pruebas realmente útil para tareas de testing.

La instalación es bastante sencilla, sólo necesitas Docker y Universe

$ git clone https://github.com/openai/universe && pip install -e universe

Luego instalamos el port de VNC para poder controlar el teclado y el ratón, además incluimos el tipo de entorno, en el ejemplo son juegos flash:

$ docker run --privileged --cap-add=SYS_ADMIN --ipc=host \ -p 5900:5900 -p 15900:15900 quay.io/openai/universe.flashgames

Finalmente sólo tenemos que conectarnos con nuestro visor VNC al puerto 5900.

Pero claro, para poder hacer las pruebas tenemos que crear nuestro propio agente de IA. Tenemos varias opciones utilizando Frameworks como por ejemplo TensorFlow ó Theano (OpenAI te ofrece la opción de comenzar con un agente inicial creado con Theano). Este agente de pruebas utiliza la librería NumPy para el control de los pixels (o en otras palabras, ver la pantalla), y además genera los eventos necesarios para controlar el ratón y el teclado a través de VNC.

Este es un ejemplo de un agente que activará el juego flash “Dusk Drive” (es un juego de coches) y pulsará la tecla “hacia adelante” (que se realiza con la flecha arriba del teclado) constantemente:

 

import gym
import universe # register Universe environments into Gym

env = gym.make('flashgames.DuskDrive-v0') # any Universe environment ID here
# If using docker-machine, replace "localhost" with your Docker IP
env.configure(remotes="vnc://localhost:5900+15900")
observation_n = env.reset()

while True:
  # agent which presses the Up arrow 60 times per second
  action_n = [[('KeyEvent', 'ArrowUp', True)] for _ in observation_n]
  observation_n, reward_n, done_n, info = env.step(action_n)
  env.render()

 

Puedes simplemente estar como observador viendo como juega la AI o puedes unirte también para jugar en modo cooperativo.

Para que veáis que la cosa va en serio, estos son sólo algunas de las aplicaciones y juegos que dan soporte a OpeanAI para este proyecto:

Portal, Fable Anniversary, World of Goo, RimWorld, Slime Rancher, Shovel Knight, SpaceChem, Wing Commander III, Command & Conquer: Red Alert 2, Syndicate, Magic Carpet, Mirror's Edge, Sid Meier's Alpha Centauri, y Wolfram Mathematica.

Un proyecto realmente espectacular sobre el cual tendremos que hacer un seguimiento exhaustivo. Además, seguro que más de uno ya está pensando en cómo sacar partido a esta plataforma para montar un entorno de pentesting para temas de seguridad ¿verdad? ;)