Reinforcement Learning

 

¿Qué es Reinforcement Learning?

3 cosas que necesita saber

Reinforcement Learning es una técnica de Machine Learning en la que un agente informático aprende a realizar una tarea a través de repetidas interacciones de prueba y error con un entorno dinámico. Este enfoque de aprendizaje permite que el agente tome una serie de decisiones que amplían al máximo una métrica de recompensa por la tarea hecha, sin intervención humana y sin estar programado explícitamente para completar la tarea.

Los programas de inteligencia artificial entrenados con Reinforcement Learning superan a los humanos en juegos de mesa tales como Go y el ajedrez, así como en videojuegos. Aunque Reinforcement Learning no es de ninguna manera un concepto nuevo, los recientes avances en cuanto a Deep Learning y potencia informática han permitido lograr algunos resultados notables en el área de la inteligencia artificial.

Por qué Reinforcement Learning es importante

Comparación entre Reinforcement Learning, Deep Learning y Machine Learning

Reinforcement Learning es una rama de Machine Learning (figura 1). A diferencia de Machine Learning supervisado y no supervisado, Reinforcement Learning no requiere un conjunto de datos estáticos, sino que opera en un entorno dinámico y aprende de las experiencias recopiladas. Los puntos de datos, o experiencias, se recopilan durante el entrenamiento a través de interacciones de prueba y error entre el entorno y un agente de software. Este aspecto de Reinforcement Learning es importante, ya que, a diferencia del aprendizaje supervisado y no supervisado, se elimina la necesidad de recopilar, preprocesar y etiquetar datos antes del entrenamiento. En la práctica, esto significa que, con el incentivo adecuado, un modelo de Reinforcement Learning puede comenzar a aprender un comportamiento por sí solo, sin supervisión (humana).

Deep Learning abarca los tres tipos de Machine Learning; Reinforcement Learning y Deep Learning no se excluyen mutuamente. Los problemas complejos de Reinforcement Learning a menudo requieren el uso de redes neuronales profundas, un campo conocido como deep Reinforcement Learning.

Tres categorías generales de Machine Learning: aprendizaje no supervisado, aprendizaje supervisado y Reinforcement Learning.

Figura 1. Tres categorías generales de Machine Learning: aprendizaje no supervisado, aprendizaje supervisado y Reinforcement Learning.

Navegación de panel

Ejemplos de aplicaciones de Reinforcement Learning

Las redes neuronales profundas entrenadas con Reinforcement Learning pueden codificar comportamientos complejos. Esto representa una alternativa para aplicaciones que, de otro modo, serían imposibles o más difíciles de abordar con métodos más tradicionales. Por ejemplo, en el campo de la conducción autónoma, una red neuronal puede reemplazar al conductor y decidir cómo girar el volante observando simultáneamente varios sensores, tales como fotogramas de cámaras y mediciones de LiDAR. Sin redes neuronales, el problema normalmente se dividiría en partes más pequeñas, tales como extraer características de los fotogramas de cámaras, filtrar las mediciones de LiDAR, fusionar las salidas de los sensores y tomar decisiones sobre “conducción” basadas en las entradas de los sensores.

Aunque el enfoque de Reinforcement Learning todavía está bajo consideración para los sistemas de producción, algunas aplicaciones industriales son buenas candidatas para esta tecnología.

Sistemas de control avanzados: el control de los sistemas no lineales es un problema difícil que a menudo se aborda mediante la linealización del sistema en diferentes puntos operativos. Se puede aplicar Reinforcement Learning directamente al sistema no lineal.

Conducción autónoma: la toma de decisiones de conducción basadas en las entradas de cámaras es un área adecuada para Reinforcement Learning, teniendo en cuenta el éxito de las redes neuronales profundas en aplicaciones relacionadas con imágenes.

Robótica: Reinforcement Learning puede ayudar en aplicaciones tales como el agarre robótico, por ejemplo, para enseñar a un brazo robótico a manipular diversos objetos para la aplicación del sistema pick-and-place. Otras aplicaciones de robótica incluyen colaboración humano-robot y robot-robot.

Planificación: los problemas de planificación aparecen en muchos escenarios, incluidos los sistemas de control de semáforos y la coordinación de recursos en fábricas para completar tareas. Reinforcement Learning es una buena alternativa a los métodos evolutivos para resolver estos problemas de optimización combinatoria.

Calibración: las aplicaciones relacionadas con la calibración manual de parámetros, como, por ejemplo, la calibración de una unidad de control electrónico (ECU), pueden ser buenas candidatas para Reinforcement Learning.

Cómo funciona Reinforcement Learning

El mecanismo de entrenamiento que subyace a Reinforcement Learning refleja muchos escenarios de la vida real. Considere, por ejemplo, el entrenamiento de mascotas con reforzamiento positivo.

Reinforcement Learning en adiestramiento canino, donde el perro y quien lo entrena son el agente y el entorno. Interactúan con acciones, recompensas y observaciones.

Figura 2. Reinforcement Learning en el entrenamiento canino.

Usando terminología de Reinforcement Learning (figura 2), el objetivo del aprendizaje en este caso es entrenar al perro (agente) para que realice una tarea dentro de un entorno, que incluye tanto el entorno del perro como del entrenador. En primer lugar, el entrenador emite un comando o indicación que el perro observa (observación). Luego, el perro responde realizando una acción. Si la acción se asemeja al comportamiento deseado, el entrenador proporcionará una recompensa, como una galleta o un juguete; de lo contrario, no proporcionará ninguna recompensa. Al comienzo del entrenamiento, el perro probablemente realizará más acciones aleatorias como dar una vuelta cuando el comando es “siéntate”, ya que está tratando de asociar observaciones específicas con acciones y recompensas. Esta asociación (o mapeo) entre observaciones y acciones se denomina política. Desde la perspectiva del perro, lo ideal sería responder correctamente a todas las indicaciones para recibir todas las recompensas posibles. Por lo tanto, el único objetivo del entrenamiento con Reinforcement Learning es “ajustar” la política del perro para que aprenda los comportamientos deseados que maximizarán la recompensa. Una vez finalizado el entrenamiento, el perro será capaz de observar a su dueño y realizar las acciones apropiadas, por ejemplo, sentarse cuando se le ordene “siéntate”, utilizando la política interna que ha desarrollado. Para ese entonces, las recompensas serán opcionales, no necesarias.

Teniendo en cuenta el ejemplo de entrenamiento canino, considere la tarea de estacionar un vehículo utilizando un sistema de conducción autónoma (figura 3). El objetivo es enseñar al computador del vehículo (agente) a estacionar correctamente en la plaza de estacionamiento marcado mediante Reinforcement Learning. Al igual que en el caso del entrenamiento canino, se considera el entorno a todo lo que existe fuera del agente, incluyendo la dinámica del vehículo, otros vehículos cercanos, las condiciones meteorológicas, etc. Durante el entrenamiento, el agente utiliza lecturas de sensores tales como cámaras, GPS y LiDAR (observaciones) para generar comandos de dirección, frenado y aceleración (acciones). Para aprender a generar las acciones correctas a partir de las observaciones (ajuste de política), el agente intenta estacionar el vehículo repetidamente mediante un proceso de prueba y error. Se puede proporcionar una señal de recompensa para evaluar la bondad del intento y así guiar el proceso de aprendizaje.

Reinforcement Learning en estacionamiento autónomo, donde el equipo informático del vehículo es el agente.

Figura 3. Reinforcement Learning en el estacionamiento autónomo. 

En el ejemplo de entrenamiento canino, el entrenamiento reside en el cerebro del perro. En el ejemplo de estacionamiento autónomo, el entrenamiento lo gestiona un algoritmo de entrenamiento. El algoritmo de entrenamiento se ocupa de ajustar la política del agente en función de las lecturas de sensores, las acciones y las recompensas recopiladas. Una vez finalizado el entrenamiento, el computador del vehículo será capaz de estacionar utilizando solo la política ajustada y las lecturas de los sensores.

Debe tener en cuenta que Reinforcement Learning no resulta eficiente con muestras. Es decir, requiere un gran número de interacciones entre el agente y el entorno para recopilar datos de entrenamiento. Por ejemplo, AlphaGo, el primer programa informático que derrotó a un campeón del mundo en el juego Go, fue entrenado ininterrumpidamente por varios días con millones de partidas, acumulando miles de años de conocimiento humano del juego. Incluso para aplicaciones relativamente simples, el tiempo de entrenamiento puede oscilar desde minutos hasta horas o días. Además, configurar el problema correctamente puede ser un desafío, ya que se deben tomar muchas decisiones de diseño, lo que puede requerir varias iteraciones hasta obtener el resultado correcto. Estas incluyen, por ejemplo, seleccionar la arquitectura adecuada para las redes neuronales, ajustar los hiperparámetros y dar forma a la señal de recompensa.

Flujo de trabajo de Reinforcement Learning

El flujo de trabajo general para entrenar a un agente con Reinforcement Learning incluye los siguientes pasos (figura 4):

Pasos del flujo de trabajo de Reinforcement Learning: entorno, recompensa, agente, entrenamiento del agente y despliegue.

Figura 4. Flujo de trabajo de Reinforcement Learning.

1. Crear el entorno

En primer lugar, debe definir el entorno en el que opera el agente de Reinforcement Learning, incluida la interfaz entre el agente y el entorno. El entorno puede ser un modelo de simulación o un sistema físico real; los entornos simulados suelen ser un buen primer paso, ya que son más seguros y permiten experimentar.

2. Definir la recompensa

A continuación, especifique la señal de recompensa que el agente utilizará para medir su rendimiento en relación con los objetivos de la tarea y cómo se calcula esta señal desde el entorno. Dar forma a la recompensa puede ser complicado y requerir varias iteraciones hasta obtener el resultado correcto.

3. Crear el agente

A continuación, cree el agente, que consta de la política y el algoritmo de entrenamiento con Reinforcement Learning. Para ello deberá:

a) Elegir una forma de representar la política (tales como redes neuronales o tablas de búsqueda).

b) Seleccionar el algoritmo de entrenamiento adecuado. Las diferentes formas de representación suelen depender de las categorías específicas de los algoritmos de entrenamiento. Pero, en general, la mayoría de los algoritmos modernos de Reinforcement Learning dependen de redes neuronales, ya que son buenas candidatas para grandes espacios de estado/acción y problemas complejos.

4. Entrenar y validar el agente

Configure las opciones de entrenamiento (tales como los criterios de detención) y entrene al agente para ajustar la política. Asegúrese de validar la política entrenada cuando finalice el entrenamiento. Si es necesario, revise las opciones de diseño, tales como la señal de recompensa y la arquitectura de política, y vuelva a realizar el entrenamiento. En general, se sabe que Reinforcement Learning no resulta eficiente con muestras; el tiempo de entrenamiento puede oscilar desde minutos hasta días en función de la aplicación. Para aplicaciones complejas, la paralelización en múltiples CPU, GPU y clusters de ordenadores acelerará el proceso (figura 5).

Acelere el entrenamiento en un ejemplo de Reinforcement Learning ineficiente sirviéndose de cálculo paralelo para hallar la política óptima.

Figura 5. Entrenamiento de un problema de aprendizaje ineficiente con muestras mediante cálculo paralelo.

5. Desplegar la política

Despliegue la representación de la política entrenada utilizando, por ejemplo, código C/C+ o CUDA generado. En este punto, la política ya es un sistema de toma de decisiones independiente.

El entrenamiento de un agente con Reinforcement Learning es un proceso iterativo. Las decisiones y los resultados en etapas posteriores pueden requerir la revisión de una etapa anterior del flujo de trabajo del aprendizaje. Por ejemplo, si el proceso de entrenamiento no converge en una política óptima en un plazo razonable, es posible que tenga que actualizar alguno de estos elementos antes de volver a entrenar al agente:

  • Parámetros del entrenamiento
  • Configuración del algoritmo de Reinforcement Learning
  • Representación de la política
  • Definición de la señal de recompensa
  • Señales de acción y observación
  • Dinámica del entorno

Reinforcement Learning con MATLAB y Simulink

MATLAB® y Reinforcement Learning Toolbox™ simplifican las tareas de Reinforcement Learning. Puede implementar controladores y algoritmos de toma de decisiones para sistemas complejos, tales como robots y sistemas autónomos, a cada paso del flujo de trabajo de Reinforcement Learning. Concretamente, puede hacer lo siguiente:

1. Crear entornos y funciones de recompensa con MATLAB y Simulink®.

2. Utilizar redes neuronales profundas, polinomios y tablas de búsqueda para definir políticas de Reinforcement Learning.

Uso de MATLAB y Reinforcement Learning Toolbox para enseñar a caminar a un robot bípedo.

Figura 6. Robot bípedo aprende a caminar con Reinforcement Learning Toolbox™.

3. Cambiar, evaluar y comparar algoritmos de Reinforcement Learning habituales, tales como DQN, DDPG, PPO y SAC, con tan solo algunos cambios menores de código, o crear su propio algoritmo personalizado.

4. Utilizar Parallel Computing Toolbox™ y MATLAB Parallel Server™ para entrenar políticas de Reinforcement Learning más rápido aprovechando varias GPU, varias CPU, clusters de ordenadores y recursos en la nube.

5. Generar código y desplegar políticas de Reinforcement Learning en dispositivos embebidos con MATLAB Coder™ y GPU Coder™.

6. Iniciarse en Reinforcement Learning mediante el uso de ejemplos de referencia.

Iníciese rápidamente

Reinforcement Learning Onramp

Familiarícese con métodos de Reinforcement Learning para problemas de control.