Introduction à l'apprentissage automatique

Tronc commun scientifique Mines Nancy



Notes importante aux étudiants:
consultez préférentiellement la page Arche du cours
(en particulier pour les vidéos et corrections)


    Support de cours: poly_apprauto_FSur.pdf

    Références bibliographiques (disponibles à la médiathèque du campus):
    - C. Bishop, Pattern recognition and machine learning, Springer, 2006.
    - B. Efron and T. Hastie, Computer age statistical inference, Cambridge University Press, 2016.
    - T. Hastie, R. Tibshirani, J. Friedman, The elements of statistical learning, 2nd edition, Springer 2008.
    - I. Goodfellow, Y. Bengio, A. Courville, Deep learning, MIT Press, 2016.


Pour démarrer

    Installez Python, Numpy, Scikit-learn, Jupyter par l'intermédiaire de la distribution Anaconda
    Suivez les instructions de la documentation pour l'installation selon votre OS. Attention, sous Windows: il ne doit pas y avoir d'espace ou de caractère exotique dans le chemin d'installation. Le plus simple est d'installer dans c:\anaconda (en mode administrateur)

    Pour vérifier que votre installation est correcte, exécutez ce tutoriel simple Python / Numpy / Scipy / Matplotlib sous forme de carnet Jupyter: python-tutorial.ipynb (adapté de ce tutoriel). Voyez ci-dessous pour ouvrir un carnet Jupyter.
   
    Remarque: si vous avez des difficultés avec la distribution Anaconda et que vous travaillez sous Windows, vous pouvez installer la distribution WinPython. "Python 3.9 64bit only" devrait vous convenir: Téléchargez et exécutez Winpython64-3.9.0.2.exe sur github/sourceforge, puis dans le répertoire d'installation,  ouvrez le Winpython Command Prompt et suivez les mêmes instructions que pour Anaconda PowerShell pour ouvrir un carnet Jupyter.

    En cas de besoin, deux tutoriels en Français: tutoriel Python et tutoriel Scikit-learn.
    Pour approfondir, un tutoriel Python 3.9 complet est disponible sur  python.org.


TP et Jupyter notebook   

    Les TP prendront la forme de carnets (notebooks) Jupyter. Attention, je vous déconseille d'utiliser JupyterLab.

    Documentation officielle de Jupyter notebook.   
    Attention, le comportement par défaut de Jupyter lorsqu'il est ouvert en cliquant sur son icône est de copier les fichiers chargés par "upload" dans un répertoire unique. Il s'agit généralement de la racine du répertoire utilisateur. Les sauvegardes de ces fichiers seront alors faites dans ce dernier répertoire, et pas dans le répertoire initial.
    Pour ouvrir Jupyter dans un répertoire donné (par exemple celui que vous créez pour chaque TP), et sauvegarder dans ce même répertoire:
       - si jupyter notebook est dans votre path système (a priori, c'est le cas sur MacOS et Linux): ouvrez un terminal / console / Windows powershell (selon votre système), puis saisissez les commandes "cd chemin_répertoire", puis "jupyter notebook".
       - si vous avez installé la distribution Anaconda sous Windows sans cocher la case demandant d'ajouter les exécutables au path lors de l'installation, ouvrez "Anaconda Powershell Prompt", changez de répertoire "cd chemin_répertoire", puis "jupyter notebook". C'est le cas sur les machines de l'école.


    Pour prendre des notes sur votre travail: vous pouvez créer une nouvelle cellule et sélectionner "markdown": les flèches haut/bas permettent de placer cette cellule dans la page.
    Un aide-mémoire pour markdown est disponible ici (vous pouvez aussi faire un double-click sur les carnets de cette page pour accéder au code source).


Google Colab

Si vous ne pouvez pas utiliser votre machine personnelle, et si vous avez un compte Google, vous pouvez utiliser Google colab.

Sous Colab: créer un nouveau notebook, puis copier/coller le contenu des cellules des carnets Jupyter.


Quelques bases de données

pour s'entraîner en autonomie: OpenML, UCI machine learning repository, challenge data à l'ENS, liste sur wikipedia...




    Calendrier et matériel:


   Séance 1: 17 novembre 2020.  Introduction, vocabulaire, et limites fondamentales de l'apprentissage.
Lire les chapitres 1 et 2 des notes de cours.
Transparents.
Exercices: TP1_ex1_sujet.ipynb, TP1_ex2_sujet.ipynb
Visualisation comme page html: TP1_ex1_sujet.html, TP1_ex2_sujet.html
Données: freinage.txt

   Séance 2: 24 novembre 2020.  Apprentissage non-supervisé: partitionnement et estimation de densités de probabilité.
Lire le chapitre 3 et la section 4.2 du chapitre 4 des notes de cours.
Transparents.
Exercices: TP2_ex1_sujet.ipynb, TP2_ex2_sujet.ipynb, TP2_ex3_sujet.ipynb
Visualisation comme page html: TP2_ex1_sujet.html, TP2_ex2_sujet.html, TP2_ex3_sujet.html
Données: old_faithful.txt


   Séance 3: 8 décembre 2020.  Théorie statistique de la décision et applications.
Lire la section 4.1 du chapitre 4 et le chapitre 5 des notes de cours.
Transparents.
Exercices: TP3_ex1_sujet.ipynb, TP3_ex2_sujet.ipynb
Visualisation comme page html: TP3_ex1_sujet.html, TP3_ex2_sujet.html


   Séance 4: 15 décembre 2020.  Machines à vecteurs supports et astuce du noyau.
Lire le chapitre 6 des notes de cours.
Attention: QCM et ordre des exercices sur la page ARCHE!
Transparents.
Exercices: TP4_ex1_sujet.ipynb, TP4_ex2_sujet.ipynb, TP4_ex3_sujet.ipynb
Visualisation comme page html: TP4_ex1_sujet.html, TP4_ex2_sujet.html, TP4_ex3_sujet.html

   Séance 5: 12 janvier 2021.  Réseaux de neurones artificiels.
Lire le chapitre 7 des notes de cours.
Transparents.
Exercices: playground_tensorflow.pdf, TP5_ex2_sujet.ipynb, TP5_ex3_sujet.ipynb
Visualisation comme page html: TP5_ex2_sujet.html, TP5_ex3_sujet.html

   Séance 6: 19 janvier 2021.  Introduction aux réseaux de neurones convolutifs et à l'apprentissage profond.
Lire le chapitre 6 des notes de cours.
Transparents.
Exercices: TP6_ex1_sujet.ipynb, TP6_ex2_sujet.ipynb, TP6_ex3_sujet.ipynb
Visualisation comme page html: TP6_ex1_sujet.html, TP6_ex2_correc.html, TP6_ex2_correc_avec_sorties.html, TP6_ex3_sujet.html

   Séance 7: 26 janvier 2021Examen.

Séance bonus: Un exemple d'application: la classification d'images par représentation sac de mots visuels.
Présentation du problème: ici (jusqu'au slide 50), ici (jusqu'au slide 41) ou .
Exercices: feuille de TP.
Script: TPbonus_code.py
Données: Caltech_small.zip, sous ensemble de Caltech101.
Éléments de correction: TPbonus_exercice1_eleves.py, TPbonus_exercice2_eleves.py