Dans ce problème, on s'intéresse à la résolution de toutes les instances de labyrinthe de taille fixé (ici 7x7). Pour cela, nous introduisons l'apprentissage par renforcement profond.
- Explication de l'intérêt de la représentation de Q par un réseau de neurones
- nombre d'états trop grands (potentiellement infini)
- nécessitée de généraliser à des instances inconnues
- Lire et compléter le fichier DQN (agent/dqn_agent.py)
- Rq: ce fichier utilise la bibliothèque logiciel Pytorch
- Lancer l'apprentissage DQN avec une architecture de réseau de neurones MLP (voir
main.pyetnetworks.py) - Questions :
- Obtient-on les résultats optimaux ?
- Selon vous, quels peuvent être les raisons de cette sous-optimalité ?
- Modifier des hyperparamètres d'apprentissage pour obtenir la quasi-optimalité (i.e. success_ratio > 0.95)
- Changer la taille du labyrinthe à 7x7 et relancer votre méthode. Que se passe-t-il ?
Dans cette partie, on propose d'améliorer l'architecture de réseau de neurones qui n'est pas la plus adaptée au problème. Pour cela on introduit les réseaux de neurones convolutifs (CNN) qui sont adaptés aux traitement de données ayant une représentation en grille.
- Lancer l'apprentissage DQN avec une architecture de réseau de neurones CNN (voir
main.pyetnetworks.py) - Relancer les expérimentations sur 5x5
- Obtient-on les résultats optimaux ?
- Quelle différence par rapport à la partie précédente ?
- Changer la taille du labyrinthe en 7x7 et relancer l'algorithme.
- Que se passe-t-il ?
- Mettez en place un processus d'amélioration des hyperparamètres
-> Hint: On pourra tenter de combiner une ou plusieurs modifications suivantes
- Augmenter le nombre d'épisodes d'apprentissage
- Explorer plus longtemps
- Augmenter la taille du buffer
- Augmenter la taille de batch
- Changer la largeur du 1er filtre de convolution (passer de 3 à 4)
- Changer le nombre de sorties de l'avant dernière couche
- Ajouter une couche de convolution