Apprentissage par renforcement appliqué
J'étudie l'apprentissage par renforcement et la prise de décision depuis quelques années maintenant. L'une des choses les plus difficiles que j'ai rencontrées n'est pas nécessairement liée aux concepts mais à la manière dont ces concepts ont été expliqués. Pour moi, l'apprentissage se produit lorsqu'on est capable d'établir un lien avec les concepts enseignés. Pour cela, une explication intuitive est souvent nécessaire, et il est probable qu’une approche pratique contribue à développer ce type de compréhension.
Mon objectif pour ce référentiel est de créer, avec la communauté, une ressource qui aiderait les nouveaux arrivants à comprendre l'apprentissage par renforcement de manière intuitive. Considérez ce que vous voyez ici, ma première tentative d’enseigner certains de ces concepts aussi clairement et simplement que possible.
Si vous souhaitez collaborer, qu'il s'agisse d'une faute de frappe ou d'un ajout complet au texte, peut-être d'une correction à un bloc-notes ou d'un tout nouveau bloc-notes, n'hésitez pas à envoyer votre problème et/ou une pull request pour améliorer les choses. Tant que votre pull request correspond à l'objectif du référentiel, il est très probable que nous fusionnerons. Je ne suis pas le meilleur enseignant ni le meilleur chercheur en apprentissage par renforcement, mais je crois que nous pouvons rendre l'apprentissage par renforcement et la prise de décision faciles à comprendre pour tous. Eh bien, au moins plus facile.
Table des matières
- Installation d'ordinateurs portables
- Installer Git
- Installer Docker
- Exécuter des blocs-notes
- Version TL;DR
- Version un peu plus détaillée :
- Ouvrez les blocs-notes dans votre navigateur :
- Ouvrez TensorBoard à l'adresse suivante :
- Conseils Docker
- Partie I : Introduction
- 1. Introduction à la prise de décision
- 1.1 Prise de décision
- 1.2 Lectures complémentaires
- Partie II : Apprentissage par renforcement et prise de décision
- 2. Décisions séquentielles
- 2.1 Modélisation des problèmes de prise de décision
- 2.2 Représentation des solutions
- 2.3 Problème séquentiel simple
- 2.4 Problèmes un peu plus complexes
- 2.5 Évaluation des solutions
- 2.6 Améliorer les solutions
- 2.7 Trouver des solutions optimales
- 2.8 Amélioration de l'itération des politiques
- 2.9 Exercices
- 2.10 Lectures complémentaires
- 3. Actions déterministes et stochastiques
- 3.1 Nous ne pouvons pas contrôler parfaitement le monde
- 3.2 Gérer la stochasticité
- 3.3 Exercices
- 3.4 Lectures complémentaires
- 4. Environnements connus et inconnus
- 4.1 Et si nous n'avons pas de modèle de l'environnement ?
- 4.2 La nécessité d'explorer
- 4.3 Que faut-il apprendre ?
- 4.4 Que faire de ce que nous apprenons ?
- 4.5 Ajouter un peu de hasard à vos actions
- 4.6 Exercices
- 4.7 Lectures complémentaires
- Partie III : Prise de décision dans des problèmes difficiles
- 5. États discrets et continus
- 5.1 Trop volumineux pour être conservé en mémoire
- 5.2 Discrétisation de l'espace d'état
- 5.3 Utilisation de l'approximation de fonction
- 5.4 Exercices
- 5.5 Lectures complémentaires
- 6. Actions discrètes et continues
- 6.1 Espace d'action continue
- 6.2 Discrétisation de l'espace d'action
- 6.3 Utilisation de l'approximation de fonction
- 6.4 Recherche de la politique
- 6.5 Exercices
- 6.6 Lectures complémentaires
- 7. États observables et partiellement observables
- 7.1 Ce que nous voyons est-il ce que c'est ?
- 7.2 Estimation de l'état
- 7.3 Contrôle dans des environnements partiellement observables
- 7.4 Lectures complémentaires
- Partie IV : Agents décisionnels multiples
- 8. Agents uniques et multiples
- 8.1 Agents avec les mêmes objectifs
- 8.2 Que se passe-t-il lorsque d'autres agents sont en jeu ?
- 8.3 Lectures complémentaires
- 9. Agents coopératifs et contradictoires
- 9.1 Agents aux objectifs contradictoires
- 9.2 Équipes d'agents aux objectifs contradictoires
- 9.3 Lectures complémentaires
- Partie V : Prise de décision humaine et au-delà
- 10. Prise de décision et humains
- 10.1 Similitudes entre les méthodes discutées et les humains
- 10.2 Différences entre les méthodes discutées et les humains
- 10.3 Lectures complémentaires
- 11. Conclusion
- 12. Livres recommandés
- 12. Cours recommandés
Installation d'ordinateurs portables
Ce référentiel contient des notebooks Jupyter à suivre avec les conférences. Cependant, plusieurs packages et applications doivent être installés. Pour vous faciliter la tâche, j'ai pris un peu plus de temps pour configurer un environnement reproductible que vous pouvez utiliser pour suivre.
Installer Git
Suivez les instructions sur (https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
Installer Docker
Suivez les instructions sur (https://docs.docker.com/engine/getstarted/step_one/#step-2-install-docker)
Exécuter des blocs-notes
Version 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
Version un peu plus détaillée :
- Clonez le référentiel à l'emplacement souhaité (par exemple,
git clone [email protected]:mimoralea/applied-reinforcement-learning.git ~/Projects/applied-reinforcement-learning
) - Entrez dans le répertoire du référentiel (par exemple
cd ~/Projects/applied-reinforcement-learning
) - Soit Construisez vous-même, soit Extrayez le conteneur Docker déjà construit :
3.1. Pour le construire, utilisez la commande suivante : docker build -t mimoralea/openai-gym:v1 .
3.2. Pour l'extraire du hub Docker, utilisez : docker pull mimoralea/openai-gym:v1
- Exécutez le conteneur :
docker run -it --rm -p 8888:8888 -p 6006:6006 -v $PWD/notebooks/:/mnt/notebooks/ mimoralea/openai-gym:v1
Ouvrez les blocs-notes dans votre navigateur :
-
http://localhost:8888
(ou suivez le lien issu de la commande d'exécution qui inclura le jeton)
Ouvrez TensorBoard à l'adresse suivante :
Cela vous aidera à visualiser le réseau neuronal dans les leçons avec approximation des fonctions.
Conseils Docker
- Si vous souhaitez accéder à une session bash d'un conteneur en cours d'exécution, procédez :
** docker ps
# vous montrera les conteneurs en cours d'exécution - notez l'identifiant du conteneur auquel vous essayez d'accéder
** docker exec --user root -it c3fbc82f1b49 /bin/bash
# dans ce cas, c3fbc82f1b49 est l'identifiant - Si vous souhaitez démarrer une nouvelle instance de conteneur directement dans bash (sans exécuter Jupyter ou TensorBoard)
** docker run -it --rm mimoralea/openai-gym:v1 /bin/bash
# cela exécutera la session bash en tant qu'utilisateur du bloc-notes
** docker run --user root -e GRANT_SUDO=yes -it --rm mimoralea/openai-gym:v1 /bin/bash
# cela exécutera la session bash en tant que root