IA con Python: aprendizaje por refuerzo

En este capítulo, aprenderá en detalle sobre los conceptos de aprendizaje por refuerzo en IA con Python.

Conceptos básicos del aprendizaje por refuerzo

Este tipo de aprendizaje se utiliza para reforzar o fortalecer la red en base a información crítica. Es decir, una red que está siendo entrenada bajo aprendizaje reforzado, recibe alguna retroalimentación del entorno. Sin embargo, la retroalimentación es evaluativa y no instructiva como en el caso del aprendizaje supervisado. Con base en esta retroalimentación, la red realiza los ajustes de los pesos para obtener una mejor información crítica en el futuro.

Este proceso de aprendizaje es similar al aprendizaje supervisado, pero es posible que tengamos muy menos información. La siguiente figura muestra el diagrama de bloques del aprendizaje por refuerzo:

Bloques de construcción: entorno y agente

El entorno y el agente son los principales componentes del aprendizaje por refuerzo en la IA. Esta sección los analiza en detalle:

Agente

Un agente es cualquier cosa que pueda percibir su entorno a través de sensores y actúa sobre ese entorno a través de efectores.

  • UN human agent tiene órganos sensoriales como ojos, oídos, nariz, lengua y piel paralelos a los sensores, y otros órganos como manos, piernas, boca, para efectores.

  • UN robotic agent reemplaza cámaras y telémetros infrarrojos para los sensores, y varios motores y actuadores para efectores.

  • UN software agent tiene cadenas de bits codificadas como sus programas y acciones.

Terminología del agente

Los siguientes términos se utilizan con más frecuencia en el aprendizaje por refuerzo en IA:

  • Performance Measure of Agent - Es el criterio, que determina el éxito de un agente.

  • Behavior of Agent - Es la acción que realiza el agente después de una determinada secuencia de percepciones.

  • Percept - Son las entradas perceptivas del agente en una instancia determinada.

  • Percept Sequence - Es el historial de todo lo que un agente ha percibido hasta la fecha.

  • Agent Function - Es un mapa de la secuencia de precepto a una acción.

Medio ambiente

Algunos programas operan en un artificial environment confinado a la entrada de teclado, base de datos, sistemas de archivos de computadora y salida de caracteres en una pantalla.

En contraste, algunos agentes de software, como robots de software o softbots, existen en dominios de softbot ricos e ilimitados. El simulador tiene unvery detailedy complex environment. El agente de software debe elegir entre una amplia gama de acciones en tiempo real.

Por ejemplo, un softbot diseñado para escanear las preferencias en línea del cliente y mostrarle elementos interesantes al cliente funciona en el real así como un artificial medio ambiente.

Propiedades del medio ambiente

El medio ambiente tiene múltiples propiedades, como se explica a continuación:

  • Discrete/Continuous- Si hay un número limitado de estados del ambiente distintos y claramente definidos, el ambiente es discreto, de lo contrario es continuo. Por ejemplo, el ajedrez es un entorno discreto y la conducción es un entorno continuo.

  • Observable/Partially Observable- Si es posible determinar el estado completo del medio ambiente en cada momento a partir de las percepciones, es observable; de lo contrario, es sólo parcialmente observable.

  • Static/Dynamic- Si el entorno no cambia mientras un agente está actuando, entonces es estático; de lo contrario, es dinámico.

  • Single agent/Multiple agents - El medio ambiente puede contener otros agentes que pueden ser del mismo o diferente tipo que el del agente.

  • Accessible/Inaccessible- Si el aparato sensorial del agente puede tener acceso al estado completo del ambiente, entonces el ambiente es accesible para ese agente; de lo contrario, es inaccesible.

  • Deterministic/Non-deterministic- Si el siguiente estado del entorno está completamente determinado por el estado actual y las acciones del agente, entonces el entorno es determinista; de lo contrario, no es determinista.

  • Episodic/Non-episodic- En un entorno episódico, cada episodio consiste en que el agente percibe y luego actúa. La calidad de su acción depende solo del episodio en sí. Los episodios posteriores no dependen de las acciones de los episodios anteriores. Los entornos episódicos son mucho más simples porque el agente no necesita pensar en el futuro.

Construyendo un entorno con Python

Para construir un agente de aprendizaje por refuerzo, usaremos el OpenAI Gym paquete que se puede instalar con la ayuda del siguiente comando:

pip install gym

Hay varios entornos en el gimnasio OpenAI que se pueden utilizar para diversos fines. Pocos de ellos sonCartpole-v0, Hopper-v1y MsPacman-v0. Requieren diferentes motores. La documentación detallada deOpenAI Gym se puede encontrar en https://gym.openai.com/docs/#environments.

El siguiente código muestra un ejemplo de código Python para el entorno cartpole-v0:

import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
   env.render()
   env.step(env.action_space.sample())

Puede construir otros entornos de forma similar.

Construyendo un agente de aprendizaje con Python

Para construir un agente de aprendizaje por refuerzo, usaremos el OpenAI Gym paquete como se muestra -

import gym
env = gym.make('CartPole-v0')
for _ in range(20):
   observation = env.reset()
   for i in range(100):
      env.render()
      print(observation)
      action = env.action_space.sample()
      observation, reward, done, info = env.step(action)
      if done:
         print("Episode finished after {} timesteps".format(i+1))
         break

Observe que el mástil puede equilibrarse.