Aprendizaje por refuerzo aplicado
Llevo un par de años estudiando el aprendizaje por refuerzo y la toma de decisiones. Una de las cosas más difíciles que he encontrado no está necesariamente relacionada con los conceptos sino con cómo se han explicado. Para mí, el aprendizaje ocurre cuando uno es capaz de establecer una conexión con los conceptos que se enseñan. Para esto, a menudo se requiere una explicación intuitiva y probablemente un enfoque práctico ayude a desarrollar ese tipo de comprensión.
Mi objetivo para este repositorio es crear, con la comunidad, un recurso que ayude a los recién llegados a comprender el aprendizaje por refuerzo de una manera intuitiva. Considere lo que ve aquí, mi intento inicial de enseñar algunos de estos conceptos de la manera más clara y simple posible.
Si desea colaborar, ya sea un error tipográfico o una adición completa al texto, tal vez una corrección de un cuaderno o un cuaderno completamente nuevo, no dude en enviar su problema y/o solicitud de extracción para mejorar las cosas. Siempre que su solicitud de extracción se alinee con el objetivo del repositorio, es muy probable que nos fusionemos. No soy el mejor profesor ni el mejor investigador del aprendizaje por refuerzo, pero sí creo que podemos hacer que el aprendizaje por refuerzo y la toma de decisiones sean fáciles de entender para cualquiera. Bueno, al menos más fácil.
Tabla de contenido
- Instalación de cuadernos
- instalar git
- Instalar ventana acoplable
- Ejecutar cuadernos
- Versión TL;DR
- Una versión un poco más detallada:
- Abra los Cuadernos en su navegador:
- Abra TensorBoard en la siguiente dirección:
- Consejos para la ventana acoplable
- Parte I: Introducción
- 1. Introducción a la toma de decisiones
- 1.1 Toma de decisiones
- 1.2 Lecturas adicionales
- Parte II: Aprendizaje por refuerzo y toma de decisiones
- 2. Decisiones secuenciales
- 2.1 Modelado de problemas de toma de decisiones
- 2.2 Representación de Soluciones
- 2.3 Problema secuencial simple
- 2.4 Problemas un poco más complejos
- 2.5 Evaluación de soluciones
- 2.6 Mejorar las soluciones
- 2.7 Encontrar soluciones óptimas
- 2.8 Mejorar la iteración de políticas
- 2.9 Ejercicios
- 2.10 Lecturas adicionales
- 3. Acciones deterministas y estocásticas
- 3.1 No podemos controlar perfectamente el mundo
- 3.2 Lidiando con la estocasticidad
- 3.3 Ejercicios
- 3.4 Lecturas adicionales
- 4. Entornos conocidos y desconocidos
- 4.1 ¿Qué pasa si no tenemos un modelo del medio ambiente?
- 4.2 La necesidad de explorar
- 4.3 ¿Qué aprender?
- 4.4 ¿Qué hacer con lo que aprendemos?
- 4.5 Agregando un poco de aleatoriedad a tus acciones
- 4.6 Ejercicios
- 4.7 Lecturas adicionales
- Parte III: Toma de decisiones en problemas difíciles
- 5. Estados discretos y continuos
- 5.1 Demasiado grande para guardarlo en la memoria
- 5.2 Discretización del espacio de estados
- 5.3 Uso de la aproximación de funciones
- 5.4 Ejercicios
- 5.5 Lecturas adicionales
- 6. Acciones discretas y continuas
- 6.1 Espacio de acción continua
- 6.2 Discretización del espacio de acción
- 6.3 Uso de la aproximación de funciones
- 6.4 Buscando la póliza
- 6.5 Ejercicios
- 6.6 Lecturas adicionales
- 7. Estados observables y parcialmente observables
- 7.1 ¿Lo que vemos es lo que es?
- 7.2 Estimación del estado
- 7.3 Control en entornos parcialmente observables
- 7.4 Lecturas adicionales
- Parte IV: Múltiples agentes que toman decisiones
- 8. Agentes únicos y múltiples
- 8.1 Agentes con mismos objetivos
- 8.2 ¿Qué ocurre cuando hay otros agentes en juego?
- 8.3 Lecturas adicionales
- 9. Agentes cooperativos y adversarios
- 9.1 Agentes con objetivos contradictorios
- 9.2 Equipos de agentes con objetivos contradictorios
- 9.3 Lecturas adicionales
- Parte V: Toma de decisiones humanas y más allá
- 10. Toma de decisiones y seres humanos
- 10.1 Similitudes entre los métodos discutidos y los humanos
- 10.2 Diferencias entre los métodos discutidos y los humanos
- 10.3 Lecturas adicionales
- 11. Conclusión
- 12. Libros recomendados
- 12. Cursos recomendados
Instalación de cuadernos
Este repositorio contiene Jupyter Notebooks para seguir junto con las conferencias. Sin embargo, hay varios paquetes y aplicaciones que deben instalarse. Para facilitarle las cosas, me tomé un poco más de tiempo para configurar un entorno reproducible que pueda utilizar para seguirlo.
instalar git
Siga las instrucciones en (https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
Instalar ventana acoplable
Siga las instrucciones en (https://docs.docker.com/engine/getstarted/step_one/#step-2-install-docker)
Ejecutar cuadernos
Versión TL;DR
-
git clone [email protected]:mimoralea/applied-reinforcement-learning.git && cd applied-reinforcement-learning
-
docker pull mimoralea/openai-gym:v1
-
docker run -it --rm -p 8888:8888 -p 6006:6006 -v $PWD/notebooks/:/mnt/notebooks/ mimoralea/openai-gym:v1
Una versión un poco más detallada:
- Clonar el repositorio en la ubicación deseada (por ejemplo,
git clone [email protected]:mimoralea/applied-reinforcement-learning.git ~/Projects/applied-reinforcement-learning
) - Ingrese al directorio del repositorio (por ejemplo,
cd ~/Projects/applied-reinforcement-learning
) - Constrúyalo usted mismo o extraiga el contenedor Docker ya creado:
3.1. Para compilarlo use el siguiente comando: docker build -t mimoralea/openai-gym:v1 .
3.2. Para sacarlo de Docker hub use: docker pull mimoralea/openai-gym:v1
- Ejecute el contenedor:
docker run -it --rm -p 8888:8888 -p 6006:6006 -v $PWD/notebooks/:/mnt/notebooks/ mimoralea/openai-gym:v1
Abra los Cuadernos en su navegador:
-
http://localhost:8888
(o siga el enlace que salió del comando de ejecución sobre cuál incluirá el token)
Abra TensorBoard en la siguiente dirección:
Esto le ayudará a visualizar la red neuronal en las lecciones con aproximación de funciones.
Consejos para la ventana acoplable
- Si desea acceder a una sesión bash de un contenedor en ejecución, haga lo siguiente:
** docker ps
# le mostrará los contenedores que se están ejecutando actualmente; tenga en cuenta la identificación del contenedor al que está intentando acceder
** docker exec --user root -it c3fbc82f1b49 /bin/bash
# en este caso c3fbc82f1b49 es el id - Si desea iniciar una nueva instancia de contenedor directamente en bash (sin ejecutar Jupyter o TensorBoard)
** docker run -it --rm mimoralea/openai-gym:v1 /bin/bash
# esto ejecutará la sesión bash como usuario de Notebook
** docker run --user root -e GRANT_SUDO=yes -it --rm mimoralea/openai-gym:v1 /bin/bash
# esto ejecutará la sesión bash como root