Introduction à l'apprentissage automatique

Tronc commun scientifique Mines Nancy FICM2A



Notes importante aux étudiants: consultez préférentiellement la page Arche du cours
(en particulier pour les 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.
    - G. Thomas, Mathematics for machine learning, University of California at Berkeley, 2018. Link


Pour utiliser vos machines personnelles (facultatif)

    Installez Python, Numpy, Scikit-learn, Jupyter par l'intermédiaire de la distribution Anaconda. Si Anaconda est déjà installé sur votre machine, réinstallez la dernière version svp.
    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.
   

Révision programmation Python (fortement recommandé).

    Faites le tutoriel mentionné plus haut pour vous rafraîchir les idées en programmation Python. Si vous ne savez pas lancer Jupyter notebook, vous pouvez utiliser la version interactive de ce tutoriel (comptez quelques dizaines de secondes de démarrage; cliquez sur exécuter après avoir sélectionné une cellule de code).
    Un tutoriel Python 3.10 complet est disponible sur  python.org.


TP et Jupyter notebook (à lire avant les TP)

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

    Créez un répertoire par TP dans lequel vous sauvegarderez vos documents.

    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.


Binder

    A titre expérimental, vous trouverez sur le Gitlab du cours un lien web permettant de faire tourner les TP sur mybinder.org. Cela devrait vous permettre d'utiliser votre machine personnelle sans aucune installation. Attention: n'oubliez pas de sauvegarder votre travail régulièrement et surtout avant de quitter mybinder (onglet download).


Quelques bases de données

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




    Calendrier et matériel


    Les sujets des travaux pratiques sont téléchargeables à chaque séance sur Arche ou sur le Gitlab de l'Université de Lorraine


   Séance 1: 15 novembre 2022.  Introduction, vocabulaire, malédiction de la dimension.
Lire le chapitre 1 et la section 2.1 (chapitre 2) des notes de cours.
Transparents.

   Séance 2: 22 novembre 2022.  Apprentissage non-supervisé (partitionnement), dilemme biais-fluctuation et sélection de modèle .
Lire la section 2.2 (chapitre 2) et le chapitre 3 des notes de cours.
Transparents.

   Séance 3: 6 décembre 2022.  Théorie statistique de la décision et applications.
Lire les chapitres 4 et 6 des notes de cours.
Transparents.

   Séance 4: 13 décembre 2022.  Machines à vecteurs supports et astuce du noyau.
Lire le chapitre 8 des notes de cours.
Transparents.

   Séance 5: 3 janvier 2023.  Réseaux de neurones artificiels.
Lire le chapitre 9 des notes de cours.
Transparents.

   Séance 6: 10 janvier 2023.  Introduction aux réseaux de neurones convolutifs et à l'apprentissage profond.
Lire le chapitre 10 des notes de cours.
Transparents.

   Séance 7: 24janvier 2023Examen.

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