Cómo entrenar a tu Inteligencia Artificial jugando a videojuegos. Parte 2, observando el entorno

- Estado (state): describe la situación actual del entorno. Por ejemplo, en el juego Breakout de Atari, un posible estado sería la situación de la raqueta, la posición de la bola, su trayectoria, etc.
- Política (policy): reglas que utiliza un agente en base a las entradas de un estado para llegar a obtener una recompensa. Dicho de otra forma, las reglas que utiliza para ejecutar una acción y se suele representar por un mapa de estados.
- Acción (action): son los pasos que realiza el agente basándose en las entradas definidas por el estado y las políticas. En el caso de Breakout una acción podría ser moverse a izquierda o derecha después de analizar la posición y trayectoria de la bola en la pantalla.
- Recompensa (reward): se obtiene una vez se ha ejecutado una acción. Esta recompensa puede ser positiva (recompensa) o negativa (castigo).
- observation (tipo “objeto”): es un elemento representado en el entorno que estamos analizando. Por ejemplo, puede ser el tablero de un juego de mesa o la velocidad y ángulo de la bola del juego BreakOut.
- reward (tipo “float”): indicará el valor (la escala de este valor depende del entorno) de la recompensa obtenida en la acción previa que hemos realizado.
- done (tipo “boolean”): cuando una tarea del proceso de aprendizaje a terminado (también llamados “episodios”) esta variable toma el valor “True”. Una vez llegado a este punto el entorno se reinicializará.
- info (tipo “info”): información para depuración.
import gym
env = gym.make('CartPole-v0')
for i_episode in range(20):
observation = env.reset()
recompensa=0
for t in range(200):
env.render()
print(observation)
action = env.action_space.sample()
observation, reward, done, info = env.step(action)
recompensa=recompensa+reward
if done:
print ("Paso final que provoca el fin del episodio:")
print(observation)
print("Episodio ",i_episode,"terminado en {} intentos".format(t+1))
recompensa=recompensa+reward
print ("Recompensa obtenida: ",recompensa)
break
input ("Fin del episodio, pulsa Enter para continuar")
import gym
env = gym.make('CartPole-v0')
for i_episode in range(20):
observation = env.reset()
recompensa = 0
for t in range(200):
env.render()
print(observation)
action = env.action_space.sample()
observation, reward, done, info = env.step(action)
recompensa = recompensa + reward
Acumulamos en la variable recompensa el valor devuelto por la variable reward
if done: print ("Paso final que provoca el fin del episodio:") print(observation) print("Episodio ",i_episode,"terminado en {} intentos".format(t+1)) recompensa=recompensa+reward print ("Recompensa obtenida: ",recompensa) break
input ("Fin del episodio, pulsa Enter para continuar")
import gym
env = gym.make('CartPole-v0')
for i_episode in range(20):
observation = env.reset()
recompensa=0
for t in range(200):
env.render()
print(observation)
action = env.action_space.sample()
if action==0:
print ("Valor ",action," empuja izquierda (mueve derecha)")
else:
print ("Valor ",action," empuja derecha (mueve izquierda)")
observation, reward, done, info = env.step(action)
recompensa=recompensa+reward
input ("Fin del intento, pulsa Enter para continuar")
if done:
print ("Paso final que provoca el fin del episodio:")
print(observation)
print("Episodio ",i_episode,"terminado en {} intentos".format(t+1))
recompensa=recompensa+reward
print ("Recompensa obtenida: ",recompensa)
break
input ("Fin del episodio, pulsa Enter para continuar")
Por si acaso te perdiste la primera parte de esta serie, aquí tienes el enlace: Cómo entrenar a tu Inteligencia Artificial jugando a videojuegos , Parte 1, preparando la "rejilla de juegos".
Para cualquier duda, idea o comentario puedes acceder también a la comunidad de ElevenPaths donde tenemos un apartado para LUCA.