News
- 2024-09-17 Premier cours du semestre le 18/09/2024
Infos pratiques
- Quoi « Apprentissage artificiel »
- Où Salle 410, BFC
- Quand 8 séances, les mercredi de 9:30 à 12:30, du 18/09 au 13/11
- Voir le planning pour les dates exactes
- Contact Loïc Grobol loic.grobol@parisnanterre.fr
- Évaluation Un TP noté en temps limité (date à déterminer) et un projet
Liens utiles
- Prendre rendez-vous pour des office hours en visio :
mon calendrier
- Lien Binder de secours :
Séances
Tous les supports sont sur github, voir
Utilisation en local pour les utiliser sur votre machine comme des
notebooks. À défaut, ce sont des fichiers Markdown assez standards, qui devraient se visualiser
correctement sur la plupart des plateformes (mais ne seront pas dynamiques).
Les notebooks ci-dessous ont tous des liens Binder pour une utilisation interactive
sans rien installer.
2024-09-18 : Outils de travail
2024-09-25 : Intuitions et vocabulaire
2024-10-02 : Évaluation
TP : full autonomie ! Préparez un notebook (avec du code et du texte) où vous utiliserez le
scikit-learn sur le jeu de données 20
newsgroups
pour étudier les capacités de quelques classifieurs.
- Présenter rapidement le jeu de données (origine, composition, quelques stats descriptives)
- Entraîner des arbres de
décision
en faisant varier la profondeur pour étudier dans quelle mesure ils sous-apprennent quand la
profondeur est trop faible et déterminer à partir de quand ils surapprennent. Penser à la
validation croisée, penser à faire des courbes d’apprentissage, penser à visualiser les arbres,
penser à regarder les matrices de confusion, chercher dans les métriques de
scikit-learn
celles qui pourraient être intéressantes.
- Étudier l’influence de la taille du corpus d’apprentissage (mêmes indices)
- Même jeu avec un
perceptron,
en étudiant l’influence du paramètre
max_iter
(commencer à 1)
Envoyer à lgrobol@parisnanterre.fr
avec en objet [ML2024] TP Overfit
.
2024-10-09 : Régression logistique et descente de gradient
2024-10-23 : Failure modes
2024-11-13 : Cours annulé
2024-11-13 : méta-apprentissage et régularisation
TP
(Il est conseillé de partir de votre travail du 2024-10-02)
Votre objectif est de trouver le meilleur classifieur possible pour 20newgroups.
- À rendre avant le 2024-12-20 : un notebook qui récupère les données, entraîne un (ou plusieurs) modèle et l’évalue.
- Vous serez évalué⋅es sur les performances du modèle, le temps d’exécution du notebook, la qualité
du code et la qualité de vos explications.
- Le notebook doit s’exécuter sur une machine standard, avec Python 3.12 ou 3.13 et sans
configuration non-documentéee.
- Si vous utilisez des packages autres que ceux utilisés dans le cours documentez-le au début
du notebook.
- Si votre notebook ne fonctionne pas sans que j’ai à le modifier, ce sera pénalisé.
- Les résultats doivent être clairement affichés à la fin. Cet affichage doit être généré (pas
écrit à la main).
- Les résultats doivent être exactement les mêmes à chaque exécution du notebook (après un
redémarrage du kernel). Pensez aux random seed.
- Si vous mettez du texte explicatif, des titres, etc., c’est mieux. A minima le notebook doit
contenir vos noms, prénoms et établissement principal.
- Les données doivent être celles venant de scikit-learn.
- Vous devez utiliser le split train/test standard.
- Vous pouvez utiliser une vectorisation et de prétraitements différents de ceux par défaut.
- Les données doivent être chargées avec
remove=("headers", "footers", "quotes")
(voir la
doc
pour savoir pourquoi.)
- Tous les coups sont permis : vous avez droit à tout sauf aux réseaux de neurones (à part
éventuellement un perceptron).
- Les choix d’hyperparamètres différents de ceux par défauts doivent être justifiés (dans des
cellules de textes) de façon aussi convaincante que possible). Si vous utilisez des algorithmes de
recherches (type grid search), ils doivent faire partie du notebook (et donc compter dans le temps
d’exécution).
- Rendus par mail à
lgrobol@parisnanterre.fr
avec en objet [ML2024] TP 20ng
et vos noms, prénoms
et établissement dans le corps du mail.
- Si l’objet est différent, je ne verrai pas votre rendu.
- J’accuserai réception sous 48h dans la mesure du possible, relancez-moi si ce n’est pas le cas.
- Vous pouvez faire plusieurs rendus si vous voulez être plus haut sur le leaderboard :-)
- Tâche à réaliser : tâche 3 de l’édition 2009 du DÉfi Fouille de Texte (DEFT): apprentissage de
classification par parti politique d’interventions au parlement européen.
- Les données sont disponibles sur le site de DEFT, leur
description et celle de la tâche dans les
actes.
- Si besoin les données sont aussi disponibles ici
- À faire : proposer un (des) classifieur(s) pour cette tâche, étudier ses (leurs) performances sur
cette tâche. Comparer aux informations données dans les actes.
- À rendre : rapport sous forme d’un article court dans le style
ACL (4 pages+bibliographie, format pdf, anglais ou
français) décrivant le contexte de la tâche, vos expériences (méthodes et résultats) et vos
conclusions. Compléter par une archive comprenant vos données et votre code.
- Projet à faire de préférence en groupe de maximum trois personnes, ou individuellement, à rendre
au plus tard le 6 janvier 2025.
- L’évaluation sera faite principalement sur la qualité et la pertinence des expériences réalisées
et de vos analyses.
- Rendus par mail à
lgrobol@parisnanterre.fr
avec en objet [ML2024] Projet final
et les noms,
prénoms et établissements de tous les membres du groupe dans le corps du mail.
- Si l’objet est différent, je ne verrai pas votre rendu. Et si un nom manque, vous risquez de
ne pas avoir de note.
- J’accuserai réception sous 48h dans la mesure du possible, relancez-moi si ce n’est pas le cas.
Utilisation en local
Les supports de ce cours sont écrits en Markdown, convertis en notebooks avec
Jupytext. C’est entre autres une façon d’avoir un historique
git propre, malheureusement ça signifie que pour les ouvrir en local, il faut installer les
extensions adéquates. Le plus simple est le suivant
- Récupérez le dossier du cours, soit en téléchargeant et décompressant
l’archive
soit en le clonant avec git :
git clone
https://github.com/LoicGrobol/apprentissage-artificiel.git
et placez-vous dans ce dossier.
-
Créez un environnement virtuel pour le cours (par exemple ici avec virtualenv)
python3 -m virtualenv .venv
source .venv/bin/activate
-
Installez les dépendances
pip install -U -r requirements.txt
-
Lancez Jupyter
JupyterLab est aussi utilisable.
Ressources
Apprentissage artificiel
- Speech and Language Processing de Daniel Jurafsky et
James H. Martin est indispensable. Il parle de bien plus de chose que simplement de
l’apprentissage artificiel, mais sur le plan théorique il contient tout ce dont on parlera
concernant l’apprentissage pour le TAL. Il est disponible gratuitement, donc n’hésitez pas à le
consulter très fréquemment. J’essaierai d’indiquer pour chaque cours les chapitres en rapport.
- Apprentissage artificiel - Concepts et
algorithmes
d’Antoine Cornuéjols et Laurent Miclet. Plus ancien mais en français et une référence très
complète sur l’apprentissage (en particulier non-neuronal). Il est un peu cher alors si vous
voulez l’utiliser, commencez par me demander et je vous prêterai le mien.
Python général
Il y a beaucoup, beaucoup de ressources disponibles pour apprendre Python. Ce qui suit n’est qu’une
sélection.
Livres
Ils commencent à dater un peu, les derniers gadget de Python n’y seront donc pas, mais leur lecture
reste très enrichissante (les algos, ça ne vieillit jamais vraiment).
- How to think like a computer scientist, de Jeffrey Elkner, Allen B. Downey, and Chris Meyers.
Vous pouvez l’acheter. Vous pouvez aussi le lire
ici
- Dive into Python, by Mark Pilgrim. Ici vous pouvez le lire ou
télécharger le pdf.
- Learning Python, by Mark Lutz.
- Beginning Python, by Magnus Lie Hetland.
- Python Algorithms: Mastering Basic Algorithms in the Python Language, par Magnus Lie Hetland.
Peut-être un peu costaud pour des débutants.
- Programmation Efficace. Les 128 Algorithmes Qu’Il Faut Avoir Compris et Codés en Python au Cours
de sa Vie, by Christoph Dürr and Jill-Jênn Vie. Si le cours vous paraît trop facile. Le code
Python est clair, les difficultés sont commentées. Les algos sont très costauds.
Web
Il vous est vivement conseillé d’utiliser un (ou plus) des sites et tutoriels ci-dessous.
Divers
- La chaîne YouTube 3blue1brown pour des vidéos de maths
générales.
- La chaîne YouTube de Freya Holmér plutôt orientée game
design, mais avec d’excellentes vidéos de géométrie computationnelle.
Licences
Copyright © 2021 Loïc Grobol <loic.grobol@gmail.com>
Sauf indication contraire, les fichiers présents dans ce dépôt sont distribués selon les termes de
la licence Creative Commons Attribution 4.0
International. Voir le README
pour plus de détails.
Un résumé simplifié de cette licence est disponible à
https://creativecommons.org/licenses/by/4.0/.
Le texte intégral de cette licence est disponible à
https://creativecommons.org/licenses/by/4.0/legalcode