Dar pequeños pasos en el aprendizaje por refuerzo

Contenidos

Introducción

Resolvamos los entornos Cartpole, Lunar Lander y Pong de OpenAI con el algoritmo REFORZAR.

El aprendizaje por refuerzo es posiblemente la rama más genial de la inteligencia artificial. Ya ha demostrado su destreza: asombrar al mundo, vencer a los campeones mundiales en partidas de Ajedrez, Go e incluso DotA 2.

En este artículo, analizaría un algoritmo bastante rudimentario y mostraría cómo incluso esto puede lograr un nivel sobrehumano de rendimiento en ciertos juegos.

Ofertas de aprendizaje por refuerzo with diseñando «Agentes» que interactúa con un «Medio ambiente» y aprende por sí mismo cómo «resolver» el medio ambiente por ensayo y error sistemáticos. Un entorno podría ser un juego como el ajedrez o las carreras, o incluso podría ser una tarea como resolver un laberinto o lograr un objetivo. El agente es el bot que realiza la actividad.

1jrwddpm1lz8eatlkukkt-g-1197737

Un agente recibe «recompensas» al interactuar con el medio ambiente. El agente aprende a realizar las «acciones» necesarias para maximizar la recompensa que recibe del entorno. Un entorno se considera resuelto si el agente acumula algún umbral de recompensa predefinido. Esta charla nerd es cómo enseñamos a los bots a jugar ajedrez sobrehumano o a los androides bípedos a caminar.

REFORZAR Algoritmo

REINFORCE pertenece a una clase especial de algoritmos de aprendizaje por refuerzo llamados algoritmos de gradiente de políticas. Una implementación simple de este algoritmo implicaría la creación de un Política: un modelo que toma un estado como entrada y genera la probabilidad de realizar una acción como salida. Una política es esencialmente una guía o una hoja de trucos para el agente que le dice qué acción tomar en cada estado. Luego, la política se repite y se modifica ligeramente en cada paso hasta que obtenemos una política que resuelve el entorno.

La política suele ser una red neuronal que toma el estado como entrada y genera una distribución de probabilidad en el espacio de acción como salida.

Política: Ejemplo

El objetivo de la política es maximizar la “Recompensa esperada”.

Cada política genera la probabilidad de realizar una acción en cada estación del entorno.

Política 1 vs Política 2 – Diferentes trayectorias

El agente toma muestras de estas probabilidades y selecciona una acción para realizar en el entorno. Al final de un episodio, sabemos las recompensas totales que el agente puede obtener si sigue esa política. Repropagamos la recompensa a través de la ruta que tomó el agente para estimar la «recompensa esperada» en cada estado para una política determinada.

10pe4hhootwki5lljxzv47w-5225362

Aquí la recompensa con descuento es la suma de todas las recompensas que recibe el agente en ese futuro descontadas por un factor Gamma.

1piymd_6px1euk21zadxzka-5954891

La recompensa con descuento en cualquier etapa es la recompensa que recibe en el siguiente paso + una suma con descuento de todas las recompensas que el agente reciba en el futuro.

El factor de descuento se calcula para cada estado mediante la retropropagación de las recompensas.

Para la ecuación anterior, así es como calculamos la recompensa esperada:

1r086if2zz_hx89wowmkfoa-1118659

Según la implementación original del algoritmo REFORZAR, la recompensa esperada es la suma de los productos de un registro de probabilidades y recompensas descontadas.

Pasos del algoritmo

Los pasos involucrados en la implementación de REFORZAR serían los siguientes:

  1. Inicializar una política aleatoria (una NN que toma el estado como entrada y devuelve la probabilidad de acciones)
  2. Utilice la política para jugar N pasos del juego: registrar las probabilidades de acción, de la política, la recompensa del entorno, la acción, muestreada por el agente
  3. Calcule la recompensa con descuento para cada paso mediante retropropagación
  4. Calcule la recompensa esperada G
  5. Ajuste los pesos de la política (error de propagación inversa en NN) para aumentar G
  6. Repetir desde 2

Consulte la implementación usando Pytorch en mi Github.

Población

He probado el algoritmo en Pong, CartPole y Lunar Lander. Se tarda una eternidad en entrenar en Pong y Lunar Lander: más de 96 horas de entrenamiento cada uno en una GPU en la nube. Hay varias actualizaciones en este algoritmo que pueden hacer que converja más rápido, que no he discutido ni implementado aquí. Consulte los modelos de actor crítico y la optimización de políticas próximas si está interesado en obtener más información.

Carrito

1wlhepk4me-s334ngw8mhqg-5416157

Estado:

Posición horizontal, velocidad horizontal, ángulo del polo, velocidad angular

Comportamiento:

Empuje el carro hacia la izquierda, Empuje el carro hacia la derecha

Juego de política aleatorio:

1ty7qktykcnzoo1b8j-ie8a-6249674

Juego aleatorio: recompensa total 18

Política de agentes capacitados con REFORZAR:

1i2fwnr2iyevctybt6vm5uq-9680510

Agente capacitado – Recompensa total 434

Lander lunar

1muxe2ynxy8ierbjt4uxuzw-9306370

Agente de juego aleatorio

Estado:

El estado es una matriz de 8 vectores. No estoy seguro de lo que representan.

Comportamiento:

0: no hacer nada

1: motor izquierdo de fuego

2: Motor de incendio

3: motor derecho de fuego

Política de agentes capacitados con REFORZAR:

1pbsjgwjyxcy5tz-8zwhjka-3069322

Lunar Lander entrenado con REFORZAR

Apestar

Esto fue mucho más difícil de entrenar. Capacitado en un servidor en la nube de GPU durante días.

Estado: Imagen

Comportamiento: Mover paleta a la izquierda, mover paleta a la derecha

1rtvh57xmxnv3pkkzih1q1w-1060950

Agente capacitado

El aprendizaje por refuerzo ha progresado a pasos agigantados más allá de REFORZAR. Mi objetivo en este artículo era 1. aprender los conceptos básicos del aprendizaje por refuerzo y 2. mostrar cuán poderosos pueden ser incluso métodos tan simples para resolver problemas complejos. Me encantaría probarlos en algunos «juegos» para hacer dinero como el comercio de acciones … supongo que ese es el santo grial entre los científicos de datos.

Repositorio de Github: https://github.com/kvsnoufal/reinforce

Hombros de gigantes:

  1. Algoritmos de gradiente de políticas (https://lilianweng.github.io/lil-log/2018/04/08/policy-gradient-algorithms.html)
  2. Derivando REFORZAR (https://medium.com/@thechrisyoon/deriving-policy-gradients-and-implementing-reinforce-f887949bd63)
  3. Curso de aprendizaje por refuerzo de Udacity (https://github.com/udacity/deep-reinforcement-learning)

Sobre el Autor

photo_noufal-4824971

Noufal kvs

Trabajo en Dubai Holding, EAU como científico de datos. Puedes comunicarte conmigo en [email protected] o https://www.linkedin.com/in/kvsnoufal/

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.