Apprentissage profond

Ref: 3MD4040

Description

L'apprentissage profond est une technologie en plein essor ces dernières années, notamment grâce à l'utilisation des GPUs (Graphical Processing Units), la disponibilité de grandes masses de données mais aussi la compréhension d'éléments théoriques permettant de mieux définir des architectures de réseaux de neurones plus facilement entrainables. Dans ce cours, les étudiants seront introduits aux bases des réseaux de neurones et également aux différents éléments architecturaux qui permettent de concevoir un réseau de neurones en fonction du problème de prédiction considéré. Le cours est décomposé en modules dans lesquels on aborde les questions des algorithmes d'optimisation, leur initialisation, les techniques de régularisation, les architectures complètement connectées, les réseaux convolutifs, les réseaux récurrents, les techniques d'introspection. Des travaux pratiques sur GPUs sont associés aux cours.

Numéro de trimestre

SM10

Prérequis

On supposera que les étudiants auront des connaissance en algèbre linéaire, en optimisation, en vision par ordinateur et en programmation python. Les étudiants doivent disposer d'une certaine aisance dans un environnement Linux.

Syllabus

Les sujets abordés seront les suivants:

- Introduction historiques aux réseaux de neurones, classifieur/régresseur linéaire (1.5 HPE)
- Graphe de calcul et descente de gradient, Réseaux complètement connectés, RBFs, Auto-encodeurs, Méthodes d'optimisations, initialisation, régularisation (3 HPE)
- Réseaux convolutifs: architectures (1.5 HPE)
- Réseaux convolutifs : classification, détection d'objet, ségmentation sémantique (1.5 HPE)
- Réseaux récurrents: architectures et entrainement (1.5 HPE)
- Réseaux récurrents: applications (1.5 HPE)
- Introduction aux réseaux génératifs et probabilistes (RBM, Deep Belied Networks) (1.5 HPE)

Les TP porteront sur :

- Introduction à pytorch par la classification avec des réseaux linéaires, complètements connectés et convolutifs (3 HPE)
- Réseaux convolutifs pour la ségmentation sémantique (3 HPE)
- Réseaux récurrents pour la conversion séquence à séquence (3 HPE)
- Réseaux génératifs adversiaux (3 HPE)

Composition du cours

Le cours est construit autour d'un cours magistral pendant lequel les notions théoriques et expérimentales sont introduites et illustrées au travers d'exemple. Des TPs sont régulièrement répartis le long du cours pour pouvoir mettre en œuvre les notions vues en cours.

Notation

L'évaluation du module passe par la participation, en équipe, à un challenge créé pour l'occasion. Les élèves devront également réaliser une présentation filmée décrivant leur approche et leurs résultats.

Ressources

- Jérémy Fix, Enseignant, Encadrant de TP
- Joël Legrand, Encadrant de TP

Nous utiliserons le framework python Pytorch. Les étudiants pourront travailler en binôme et disposeront des GPUs du Data Center d'Enseignement du campus de Metz pour faire les TPs.

Une page dédidée sera créée sur eduano. Des forums de discussion seront ouvert pour permettre aux étudiants de poser leurs questions sur le cours et d'interagir entre eux et avec l'équipe enseignante.

Résultats de l'apprentissage couverts par le cours

- Être capable d'implémenter et de déployer un algorithme de deep learning (prise en main des frameworks de deep learning et déploiement du calcul du GPU)
- Être capable de choisir l'architecture de réseau de neurones adaptée au problème de prédiction considéré
- Savoir diagnostiquer l'apprentissage d'un réseau de neurones (qu'apprends le réseau de neurone ? comment l'apprend t'il ? apprends t'il ? est-il capable de généraliser ?)

Description des compétences acquises à la fin du cours

- C1.4, Milestone 2
- C3.6, Milestone 1
- C3.7, Milestone 2

Support de cours, bibliographie

- Deep learning book, Ian Goodfellow, Aaron Courville, and Yoshua Bengio, MIT Press : http://www.deeplearningbook.org/
- CS231n, Stanford, http://cs231n.stanford.edu/
- Practical deep learning for coders : https://course.fast.ai/