Curso de Aprendizaje por Refuerzo Profundo
Explore la combinación de redes neuronales y aprendizaje por refuerzo. Algoritmos y ejemplos en Python y PyTorch
¿Has oído hablar de los sorprendentes resultados obtenidos por Deepmind con AlphaGo Zero y OpenAI en Dota 2? Se trata de redes neuronales profundas y aprendizaje por refuerzo. ¿Quieres saber más al respecto?
Esta es la oportunidad adecuada para que finalmente aprenda Deep RL y lo utilice en proyectos y aplicaciones nuevos e interesantes.
Aquí encontrará una introducción detallada a estos algoritmos. Entre los cuales aprenderá aprendizaje q, aprendizaje q profundo, PPO, crítico de actores y los implementará usando Python y PyTorch.
El objetivo final es utilizar estas tecnologías de propósito general y aplicarlas a todo tipo de problemas importantes del mundo real. Demis Hassabis
Este repositorio contiene:
Conferencias (y otro contenido) principalmente del canal de Youtube de DeepMind y Berkley.
Algoritmos (como DQN, A2C y PPO) implementados en PyTorch y probados en OpenAI Gym: RoboSchool y Atari.
Estén atentos y síganme en #60DaysRLChallenge
Ahora también tenemos un canal Slack . Para recibir una invitación, envíeme un correo electrónico a [email protected]. Además, envíame un correo electrónico si tienes alguna idea, sugerencia o mejora.
Para aprender aprendizaje profundo, visión por computadora o procesamiento del lenguaje natural, consulte mi viaje de aprendizaje automático de 1 año
Antes de comenzar... Requisitos previos
- Nivel básico de Python y PyTorch
- Aprendizaje automático
- Conocimientos básicos en Deep Learning (MLP, CNN y RNN)
Nota rápida: ¡mi NUEVO LIBRO ya salió!
Para aprender más en profundidad sobre el aprendizaje por refuerzo y la RL profunda, consulte mi libro Algoritmos de aprendizaje por refuerzo con Python .
Tabla de contenido
- El panorama del aprendizaje por refuerzo
- Implementación de RL Cycle y OpenAI Gym
- Resolver problemas con programación dinámica
- Aplicaciones Q learning y SARSA
- Red Q profunda
- Aprendizaje de optimización estocástica y DDPG
- Implementación de TRPO y PPO
- Aplicaciones DDPG y TD3
- RL basado en modelos
- Aprendizaje por imitación con el algoritmo DAgger
- Comprensión de los algoritmos de optimización de caja negra
- Desarrollo del algoritmo ESBAS
- Implementación práctica para resolver desafíos de RL
Índice - Aprendizaje por refuerzo
- Semana 1 - Introducción
- Semana 2: conceptos básicos de RL
- Semana 3 - Algoritmos basados en valores - DQN
- Semana 4 - Algoritmos de gradiente de políticas - REINFORCE y A2C
- Semana 5 - Gradientes de políticas avanzadas - PPO
- Semana 6 - Estrategias de Evolución y Algoritmos Genéticos - ES
- Semana 7 - Aprendizaje por refuerzo basado en modelos - MB-MF
- Semana 8: Conceptos avanzados y proyecto de su elección
- Últimos 4 días - Revisar + Compartir
- Mejores recursos
- Recursos adicionales
Semana 1 - Introducción
- ¿Por qué el aprendizaje por refuerzo es un método de aprendizaje tan importante? Una explicación sencilla
- Introducción y descripción general del curso: CS294 de Levine, Berkley
- Aprendizaje por refuerzo profundo: Pong de Pixels de Karpathy
Otros recursos
- La "Biblia" del aprendizaje por refuerzo: Capítulo 1 - Sutton y Barto
- Excelente artículo introductorio: Aprendizaje por refuerzo profundo: descripción general
- Empiece a codificar: Desde cero: Ley de equilibrio de la IA en 50 líneas de Python
Semana 2: Conceptos básicos de RL: MDP, programación dinámica y control sin modelos
Quienes no pueden recordar el pasado están condenados a repetirlo - George Santayana
Esta semana aprenderemos sobre los bloques básicos del aprendizaje por refuerzo, desde la definición del problema hasta la estimación y optimización de las funciones que se utilizan para expresar la calidad de una política o estado.
Conferencias - Teoría
- Proceso de decisión de Markov - David Silver (DeepMind)
- Procesos de Markov
- Procesos de decisión de Markov
- Planificación mediante programación dinámica - David Silver (DeepMind)
- Iteración de políticas
- iteración de valor
- Predicción sin modelos: David Silver (DeepMind)
- Aprendizaje de Montecarlo
- Aprendizaje de diferencias temporales
- DT(λ)
- Control sin modelos - David Silver (DeepMind)
- Iteración de política codiciosa
- GLIE Montecarlo Buscar
- sarsa
- Muestreo de importancia
Proyecto de la semana - Q-learning
Q-learning aplicado a FrozenLake : para hacer ejercicio, puedes resolver el juego usando SARSA o implementar Q-learning tú mismo. En el primer caso, sólo se necesitan algunos cambios.
Otros recursos
- La "Biblia" del aprendizaje por refuerzo: Capítulos 3 y 4 - Sutton & Barto
- Introducción a las funciones de valor: DRL UC Berkley por Sergey Levine
Semana 3 - Algoritmos basados en valores - DQN
Esta semana aprenderemos conceptos más avanzados y aplicaremos redes neuronales profundas a algoritmos de Q-learning.
Conferencias - Teoría
- Aproximación de funciones de valor - David Silver (DeepMind)
- Aproximadores de funciones diferenciables
- Métodos incrementales
- Métodos por lotes (DQN)
- Algoritmos avanzados de Q-learning - Sergey Levine (UC Berkley)
- Búfer de reproducción
- Doble Q-aprendizaje
- Acciones continuas (NAF,DDPG)
- Consejos prácticos
Proyecto de la semana: DQN y variantes
DQN y algunas variantes aplicadas a Pong - Esta semana el objetivo es desarrollar un algoritmo DQN para jugar un juego de Atari. Para hacerlo más interesante, desarrollé tres extensiones de DQN: Double Q-learning , aprendizaje de varios pasos , redes de duelo y redes ruidosas . Juega con ellos y, si te sientes seguro, puedes implementar repetición priorizada, redes de duelo o RL distributiva. Para saber más sobre estas mejoras, lea los artículos.
Papeles
Debe leer
- Jugando a Atari con aprendizaje por refuerzo profundo - 2013
- Control a nivel humano mediante aprendizaje por refuerzo profundo - 2015
- Rainbow: Combinando mejoras en el aprendizaje por refuerzo profundo - 2017
Extensiones de DQN
- Aprendizaje por refuerzo profundo con Double Q-learning - 2015
- Repetición de experiencia priorizada - 2015
- Duelo de arquitecturas de red para el aprendizaje por refuerzo profundo - 2016
- Redes ruidosas para exploración - 2017
- Aprendizaje por refuerzo distributivo con regresión cuantil - 2017
Otros recursos
- La "Biblia" del aprendizaje por refuerzo: Capítulos 5 y 6 - Sutton & Barto
- Aprendizaje por refuerzo profundo en la empresa: cerrar la brecha entre los juegos y la industria
Semana 4 - Algoritmos de gradiente de políticas - REINFORCE y A2C
La semana 4 presenta los métodos de gradiente de políticas, una clase de algoritmos que optimizan directamente la política. Además, aprenderá sobre los algoritmos Actor-Crítico. Estos algoritmos combinan tanto el gradiente de políticas (el actor) como la función de valor (el crítico).
Conferencias - Teoría
- Métodos de gradiente de políticas - David Silver (DeepMind)
- Gradiente de política de diferencias finitas
- Gradiente de la política de Montecarlo
- Gradiente de política actor-crítico
- Introducción al gradiente de políticas: Sergey Levine (RECAP, opcional)
- Gradiente de políticas (REINFORCE y Vanilla PG)
- Reducción de varianza
- Actor-Crítico - Sergey Levine (Más en profundidad)
- Actor-crítico
- factor de descuento
- Diseño de algoritmo Actor-Crítico (modo por lotes o en línea)
- línea de base dependiente del estado
Proyecto de la semana: Vanilla PG y A2C
Vanilla PG y A2C aplicados a CartPole : el ejercicio de esta semana es implementar un método de gradiente de políticas o un método de actor-crítico más sofisticado. En el repositorio puedes encontrar una versión implementada de PG y A2C. ¡Alerta de error! Presta atención que el A2C me da un resultado extraño. Si le resulta fácil la implementación de PG y A2C, puede probar con la versión asincrónica de A2C (A3C).
Papeles
- Métodos de gradiente de políticas para el aprendizaje por refuerzo con aproximación de funciones
- Métodos asincrónicos para el aprendizaje por refuerzo profundo
Otros recursos
- La "Biblia" del aprendizaje por refuerzo: Capítulos 9 y 10 - Sutton & Barto
- RL intuitiva: Introducción a Ventaja-Actor-Crítico (A2C)
- Agentes Actor-Críticos Asincrónicos (A3C)
Semana 5 - Gradientes de políticas avanzadas - PPO
Esta semana se trata de métodos avanzados de gradiente de políticas que mejoran la estabilidad y la convergencia de los métodos de gradiente de políticas "vainilla". Aprenderá e implementará PPO, un algoritmo RL desarrollado por OpenAI y adoptado en OpenAI Five.
Conferencias - Teoría
- Gradientes de políticas avanzadas - Sergey Levine (UC Berkley)
- Problemas con los métodos de gradiente de políticas "vainilla"
- Límites de desempeño de las políticas
- Teoría de la mejora monótona
- Algoritmos: NPO, TRPO, PPO
- Gradientes de políticas naturales, TRPO, PPO - John Schulman (Berkey DRL Bootcamp) - (RESUMEN, opcional)
- Limitaciones de los métodos de gradiente de políticas "vainilla"
- gradiente de política natural
- Optimización de políticas de región de confianza, TRPO
- Optimización de políticas próximas, PPO
Proyecto de la semana - PPO
PPO aplicado a BipedalWalker : esta semana, debe implementar PPO o TRPO. Sugiero PPO dada su simplicidad (en comparación con TRPO). En la carpeta del proyecto Semana 5 encontrarás una implementación de PPO que aprende a jugar BipedalWalker . Además, en la carpeta podrás encontrar otros recursos que te ayudarán en el desarrollo del proyecto. ¡Divertirse!
Para obtener más información sobre PPO, lea el artículo y mire el vídeo de Arxiv Insights.
Papeles
- Optimización de la política de región de confianza - 2015
- Algoritmos de optimización de políticas próximas - 2017
Otros recursos
- Para comprender mejor PPO y TRPO: la búsqueda de la felicidad (robótica)
- Tuercas y tornillos de Deep RL
- Mejores prácticas de PPO: capacitación con optimización de políticas próximas
- Explicación del algoritmo PPO por Arxiv Insights
Semana 6 - Estrategias de Evolución y Algoritmos Genéticos - ES
En el último año, se ha demostrado que las estrategias de evolución (ES) y los algoritmos genéticos (GA) logran resultados comparables a los métodos RL. Son algoritmos de caja negra sin derivados que requieren más datos que RL para aprender, pero que pueden ampliarse a miles de CPU. Esta semana veremos estos algoritmos de caja negra.
Conferencias y artículos - Teoría
- Estrategias de evolución
- Introducción a ES: una guía visual para las estrategias de evolución
- ES para RL: estrategias estables en evolución
- Métodos sin derivados - Conferencia
- Estrategias de evolución (discusión en artículo)
- Algoritmos genéticos
- Introducción a los algoritmos genéticos: incluido el código de ejemplo
Proyecto de la semana - ES
Estrategias de evolución aplicadas a LunarLander - Esta semana el proyecto es implementar un ES o GA. En la carpeta Semana 6 puede encontrar una implementación básica del artículo Estrategias de evolución como alternativa escalable al aprendizaje por refuerzo para resolver LunarLanderContinuous. Puedes modificarlo para jugar en entornos más difíciles o agregar tus ideas.
Papeles
- Neuroevolución profunda: los algoritmos genéticos son una alternativa competitiva para entrenar redes neuronales profundas para el aprendizaje por refuerzo
- Estrategias de evolución como alternativa escalable al aprendizaje por refuerzo
Otros recursos
- Algoritmos de optimización evolutiva - Dan Simon
Semana 7 - Aprendizaje por refuerzo basado en modelos - MB-MF
Los algoritmos estudiados hasta ahora no tienen modelo, lo que significa que sólo eligen la mejor acción dado un estado. Estos algoritmos logran un rendimiento muy bueno pero requieren muchos datos de entrenamiento. En cambio, los algoritmos basados en modelos aprenden el entorno y planifican las siguientes acciones de acuerdo con el modelo aprendido. Estos métodos son más eficientes con las muestras que sin modelos, pero en general logran el peor rendimiento. En esta semana aprenderá la teoría detrás de estos métodos e implementará uno de los últimos algoritmos.
Conferencias - Teoría
- RL basada en modelos, David Silver (DeepMind) (versión concisa)
- Integrando el aprendizaje y la planificación
- Descripción general de RL basada en modelos
- Arquitecturas integradas
- Búsqueda basada en simulación
- RL basada en modelos, Sergey Levine (UC Berkley) (versión detallada)
- Aprender sistemas dinámicos a partir de datos.
- Descripción general de RL basada en modelos
- Modelos globales y locales
- Aprender con modelos locales y regiones de confianza
- Políticas de aprendizaje imitando controladores óptimos.
- Propagación hacia atrás en una política con modelos aprendidos
- Algoritmo de búsqueda de políticas guiadas
- Imitando un control óptimo con DAgger
- Aprendizaje avanzado de modelos e imágenes.
- Modelos en espacio latente
- Modelos directamente en el espacio de la imagen.
- Modelos inversos
Proyecto de la semana - MB-MF
MB-MF aplicado a RoboschoolAnt : esta semana elegí implementar el algoritmo basado en modelos descrito en este artículo. Puedes encontrar mi implementación aquí. NB: En lugar de implementarlo en Mujoco como en el artículo, utilicé RoboSchool, un simulador de robot de código abierto, integrado con OpenAI Gym.
Papeles
- Agentes potenciados por la imaginación para el aprendizaje por refuerzo profundo - 2017
- Aprendizaje por refuerzo con tareas auxiliares no supervisadas - 2016
- Dinámica de redes neuronales para el aprendizaje por refuerzo profundo basado en modelos con ajuste fino sin modelos - 2018
Otros recursos
- La "Biblia" del aprendizaje por refuerzo: Capítulo 8 - Sutton y Barto
- Modelos mundiales: ¿pueden los agentes aprender dentro de sus propios sueños?
Semana 8: Conceptos avanzados y proyecto de su elección
Esta última semana trata sobre conceptos avanzados de RL y un proyecto de su elección.
Conferencias - Teoría
- Sergey Levine (Berkley)
- Conexión entre inferencia y control.
- Aprendizaje por refuerzo inverso
- Exploración (parte 1)
- Exploración (parte 2) y transferencia de aprendizaje
- Aprendizaje y transferencia multitarea
- Metaaprendizaje y paralelismo
- Aprendizaje avanzado por imitación y problemas abiertos.
- David Silver (mente profunda)
El proyecto final
Aquí puede encontrar algunas ideas de proyectos.
- Pommerman (multijugador)
- Desafío IA para prótesis (Desafío)
- Modelos de Word (implementación en papel)
- Solicitud de investigación OpenAI (Investigación)
- Concurso Retro (Transferir aprendizaje)
Otros recursos
- AlfaGo cero
- Papel
- Publicación del blog de DeepMind: AlphaGo Zero: aprender desde cero
- Vídeo de Arxiv Insights: Cómo funciona AlphaGo Zero - Google DeepMind
- Abierto AI cinco
- Publicación del blog de OpenAI: OpenAI Cinco
- Vídeo de Arxiv Insights: OpenAI Five: frente a los profesionales humanos en Dota II
Últimos 4 días - Revisar + Compartir
¡Felicitaciones por completar el Desafío RL de 60 días! ¡Cuéntame si te gustó y compártelo!
¡Nos vemos!
Mejores recursos
Aprendizaje por refuerzo: una introducción - por Sutton y Barto. La "Biblia" del aprendizaje por refuerzo. Aquí puede encontrar el borrador en PDF de la segunda versión.
Práctica de aprendizaje por refuerzo profundo - por Maxim Lapan
Aprendizaje profundo - Ian Goodfellow
Aprendizaje por refuerzo profundo: clase de UC Berkeley de Levine, consulte aquí su sitio.
Curso de aprendizaje por refuerzo - por David Silver, DeepMind. Excelentes conferencias introductorias a cargo de Silver, investigador principal de AlphaGo. Siguen el libro Aprendizaje por refuerzo de Sutton & Barto.
Recursos adicionales
Impresionante aprendizaje por refuerzo. Una lista seleccionada de recursos dedicados al aprendizaje por refuerzo
GroundAI en RL. Artículos sobre aprendizaje por refuerzo.
Una taza de café ☕
¡Cualquier contribución es muy apreciada! ¡Salud!