Introducción al Aprendizaje por Refuerzo.

1. Introducción

El artículo base del artículo es [Human-level control through deep reinforcement learning] [1]

2. Descripción de la temática.

Todos los seres vivos exhiben algún tipo de comportamiento, en el sentido que realizan alguna acción como respuesta a las señales que reciben del entorno en el que viven. Algunos de ellos, además, modifican su comportamiento a lo largo del tiempo, de forma que ante señales equivalentes se comportan de forma distinta con el paso del tiempo.

El aprendizaje por refuerzo es un área del machine learning inspirada en este concepto, cuya ocupación es determinar qué acciones debe escoger un agente de software en un entorno dado con el fin de maximizar alguna noción de "recompensa".

3. Novedades que presenta el artículo.

Los algoritmos de aprendizaje por refuerzo han intentado simular la psicología conductista con excelentes resultados para entornos muy controlados y de baja dimensionalidad . Sin embargo, hasta la fecha de la publicación del articulo nunca se habían obtenido unos resultados tan exitosos en entornos con tanta alta dimensionalidad y tan cambiantes como los juegos clásicos de Atari 2600.

En el texto utilizan los avances recientes en el entrenamiento de redes neuronales profundas para desarrollar un agente artificial, denominado red Q profunda, que puede aprender políticas exitosas directamente de entradas sensoriales de alta dimensión utilizando aprendizaje de refuerzo de extremo a extremo.

4. Resumen de la parte experimental

Para analizar la parte experimental, necesitamos empezar definiendo los siguientes conceptos:
  • Política (policy): termino utilizado para referirse a las acciones qué decidirá el agente. La política ε\varepsilon -voraz consiste en que el agente casi siempre tomará la mejor acción posible dada la información que posee.
  • Exploración vs explotación: De vez en cuando, con una probabilidad de ε\varepsilon , el agente tomará una acción completamente al azar. De esta forma, si tras la primera acción el agente ha obtenido una recompensa positiva, no se quedará atascado escogiendo esa misma acción todo el rato. Con probabilidad ε\varepsilon el agente explorará otras opciones. Este valor es parametrizable y será el encargado de equilibrar la exploración y explotación
En un problema completo de aprendizaje por refuerzo, el estado cambia cada vez que ejecutamos una acción. El agente recibe el estado (state) en el que se encuentra el entorno (environment), el cual representaremos con la letra s (state). El agente ejecuta entonces la acción que elija, representada con la letra a (action). Al ejecutar esa acción, el entorno responde proporcionando una recompensa, representada con la letra r (reward), y el entorno se traslada a un nuevo estado, representado con s' (next state). Este ciclo se puede observar en la imagen: [1] .

1 Ciclo completo del aprendizaje por refuerzo.

El algoritmo Q-Learning, utilizado en el articulo, intenta aprender cuantas recompensas obtendrá a largo plazo para cada pareja de estados y acciones (s,a). A esa función la llamamos la función de acción-valor (action-value function) y este algoritmo la representa como la función Q(s,a), la cual devuelve la recompensa que el agente recibirá al ejecutar la acción a desde el estado s, y asumiendo que seguirá la misma política dictada por la función Q hasta el final del episodio. Por ejemplo, si Q(s,a1)=1 y Q(s,a2)=4, el agente sabe que la acción a2 es mejor y le traerá mayor recompensa, por lo que será la acción que ejecutará.

La definición formal de este algoritmo se realiza de la siguiente forma: Q(s,a;θ)=r+γmaxaQ(s,a;θ) Q(s, a; \theta) = r + \gamma \max_{a'}{Q(s', a'; \theta')} Se define el valor-Q del estado s y la acción a (Q(s, a)) como la recompensa r obtenida al ejecutar esa acción, más el valor-Q de ejecutar la mejor acción posible a’ desde el próximo estado s’, multiplicado por un factor de descuento γ\gamma (discount factor), que es un valor con rango γ\gamma\in (0, 1].

Ahora bien, cuando hay miles de millones de estados diferentes y cientos de acciones distintas Q-Learning no es capaz de utilizarse de forma óptima. Por ello, en la obra [1] definen una nueva técnica llamada Deep Q-Network. Este algoritmo combina el Q-learning con redes neuronales profundas para aproximar la función Q, evitando así utilizar una tabla para representar la misma. En realidad, utiliza dos redes neuronales para estabilizar el proceso de aprendizaje. La primera, la red neuronal principal (main Neural Network), representada por los parámetros θ\theta , se utiliza para estimar los valores-Q del estado s y acción a actuales: Q(s, a; θ\theta ). La segunda, la red neuronal objetivo (target Neural Network), parametrizada por θ\theta ', tendrá la misma arquitectura que la red principal, pero se usará para aproximar los valores-Q del siguiente estado s' y la siguiente acción a'. El aprendizaje ocurre en la red principal y no en el objetivo. La red objetivo se congela (sus parámetros no se cambian) durante varias iteraciones (normalmente alrededor de 10000), y después los parámetros de la red principal se copian a la red objetivo, transmitiendo así el aprendizaje de una a otra, haciendo que las estimaciones calculadas por la red objetivo sean más precisas.

Para poder entrenar una red neuronal, necesitamos una función de pérdida (loss function), la cual definimos como el cuadrado de la diferencia entre ambos lados de la ecuación [1] , es decir, el siguiente cálculo: L(θ)=E[(r+γmaxaQ(s,a;θ)Q(s,a;θ))2] L(\theta) = E [(r + \gamma \max_{a'}{Q(s', a'; \theta')}-Q(s, a; \theta) )^{2}]

5. Conclusiones y resumen crítico del artículo

En el articulo escogido se demuestra como, a partir de los píxeles y la puntuación del juego, el agente de la red Q profunda pudo superar el rendimiento de todos los algoritmos anteriores y alcanzar un nivel comparable al de un probador profesional de juegos humanos en un conjunto de 49 juegos, utilizando el mismo algoritmo, arquitectura de red e hiperparámetros. Este trabajo cierra la brecha entre las entradas y acciones sensoriales de alta dimensión, lo que resulta en el primer agente artificial que es capaz de aprender a sobresalir en una amplia gama de tareas desafiantes.

En conjunto, este trabajo ilustra el poder de aprovechar las técnicas de aprendizaje automático de última generación con mecanismos biológicamente inspirados para crear agentes que soncapaz de aprender a dominar una gran variedad de tareas desafiantes.

6. Ejemplo de código

En el repositorio https://github.com/al118345/OpenAi_Examples he dejado disponible varios ejemplos de código que intentan resolver los juego de la Atari2600. Además, he subido el video https://www.youtube.com/watch?v=Z2DbDXeNJOc que espero que os sirva de ayuda para entender la temática del video.

Bibliografía

  • 1.Titulo
    Human-level control through deep reinforcement learning
    Autor
    Mnih, Volodymyr and Kavukcuoglu, Koray and Silver, David and Rusu, Andrei A and Veness, Joel and Bellemare, Marc G and Graves, Alex and Riedmiller, Martin and Fidjeland, Andreas K and Ostrovski, Georg and others
    Publicacion
    nature
    Url
  • 2.Titulo
    Aprendizaje por refuerzo
    Autor
    Publicacion
    Wikipedia
  • 3.Titulo
    Reinforcement learning for robot soccer
    Autor
    Riedmiller, Martin and Gabel, Thomas and Hafner, Roland and Lange, Sascha
    Publicacion
    Autonomous Robots
    Url