Objectifs du cours
L’apprentissage automatique ou l’apprentissage par machine (Machine Learning) s'intéresse à la conception, l'analyse, l'implémentation et l’application de programmes capables de s’améliorer, au fil du temps, soit sur la base de leur propre expérience, soit à partir des données d'apprentissage. De nos jours, l’apprentissage automatique joue un rôle essentiel dans de nombreux domaines d’applications, tels que la vision par ordinateur, le traitement automatique du langage, la reconnaissance vocale, les systèmes tutoriels intelligents, la modélisation de l’usager, la robotique, la bio-informatique, les finances, le marketing, les jeux vidéos, la télédétection, etc. En fait, la plupart des programmes de l’intelligence artificielle contiennent un module d’apprentissage. Presque tous les systèmes de reconnaissances de formes sont basés sur des techniques d’apprentissage.
Manuel
Il est possible de réussir le cours sans acheter le manuel de référence. Cependant, il est recommandé d'en faire l'achat car le cours en est tiré. Bien que ce livre date de quelques années déjà, c'est une excellente référence pour comprendre les bases des techniques d'apprentissage.
Le livre de référence est Pattern
Recognition and Machine Learning de Christopher M. Bishop. Il est possible de le commander sur Amazon. Une copie est également à
la bibliothèque
des sciences et de génie.
Pour ceux et celles qui ne rechignent pas à l'idée de lire un livre sur un écran d'ordinateur, le manuel de Bishop est disponible en format pdf .
Un autre très bon manuel de référence est Mathematics for Machine Learning par Deisenroth, Faisal et Ong. Je recommande tout particulièrements les chapitres 2 à 6 pour ceux et celles qui souhaitent revoir les notions de base requisent pour ce cours en algèbre linéaire, probabilités et calcul différentiel et intégral. Ce manuel est également disponible gratuitement en ligne.
Méthode pédagogique
La méthode pédagogique employée pour ce cours diffère de celles de la plus part des cours magistraux universitaires. En effet, à chaque semaine, vous serez invité à visionner de 60 à 90 minutes de vidéos en ligne. Il est important de visionner ces vidéos car elles couvrent environ 70% de la matière totale du cours. L'horaire des vidéo est donnée dans le tableau ci-bas.
Lors des séances magistrales en classe, je reverrai avec vous certains concepts mathématiques de base parfois oubliés (vous vous souvenez des probabilités conditionnelles?
des vecteurs propres? de la dérivée en chaîne?) ainsi que certaines preuves mathématiques en lien avec la matière vue dans les vidéos ainsi que des mise en contexte et des exercices pratiques et théoriques. Cette méthode pédagogique fait suite à de nombreux commentaires émis par les étudiants.es au fil des années. Cette approche pédagogique a donc pour objectif de vous aider!
Les séances magistrales devraient prendre une à deux heures par semaine. Vous serez également invités à poser des questions quant à la matière vue dans les vidéos. L'heure restante sera passée au laboratoire pour vous aider avec les travaux pratiques (autre requête formulées par les élèves des années antérieures).
Notes de cours et vidéos à visualiser à la maison
Semaine |
Contenu |
Sections du livre |
Semaine 0 (à faire par soi-même au besoin) |
Mise à niveau
• Tutoriel Python avec interface en ligne
• Tutoriel Python approfondi
• Tutoriel Python - Stanford
• Dérivées
• Dérivées partielles
• Algèbre linéaire (sections 2.1,2.2,2.3.1,2.3.4,4.2)
• Stats et prob de base (sections 6.1 à 6.5)
|
1.2.4, 2.1, 2.3, Apprendix C
|
Semaine 1 6 janvier |
0- Presentation [pdf]
[pdf]
1- Concepts fondamentaux [pdf]
[pdf]
Présentation 0 (2:19)
Présentation 1 (20:27)
Concepts fondamentaux 0 (11:12)
Concepts fondamentaux 1 (18:33)
Concepts fondamentaux 2 (9:52)
Concepts fondamentaux 3 (8:19)
Concepts fondamentaux 4 (8:07)
|
1.0, 1.1, 1.3
|
Semaine 2 13 janvier |
2- Formulation probabiliste [pdf]
[pdf]
Formulations probabilistes 0 (19:57)
Formulations probabilistes 1 (23:49)
Formulations probabilistes 2 (20:16)
Formulations probabilistes 3 (11:38)
|
1.2, 1.2.1, 1.2.2, 1.2.4, 1.2.5, 1.6, 1.6.1
|
Semaine 3 20 janvier |
3- Régression linéaire [pdf]
[pdf]
Régression linéaire 0 (10:29)
Régression linéaire 1 (16:04)
Régression linéaire 2 (11:04)
Régression linéaire 3 (7:11)
Régression linéaire 4 (5:03)
Régression linéaire 5 (5:32)
|
3.1, 3.1.1, 3.1.4, 3.1.5, 3.2
|
Semaine 4 27 janvier |
4- Classification linéaire [pdf]
[pdf]
Classification linéaire 0 (7:03)
Classification linéaire 1 (7:40)
Classification linéaire 2 (12:05)
Classification linéaire 3 (13:05)
Classification linéaire 4 (37:17)
|
4.1, 4.1.2, 4.1.3, 4.1.4, 4.2, 4.3,
|
Semaine 5 3 février |
4- Classification linéaire [pdf]
[pdf]
Classification linéaire 5 (39:01)
Classification linéaire 6 (6:01)
Classification linéaire 7 (12:01)
NOTE: le tp2 comporte une question en lien avec la notion de "Lagrangien". Bien que nous verrons cette notion en classe, vous pouvez visionner ces deux vidéos qui introduisent très bien cette notion et donnent quelques exemples d'application:
Lagrangien 1(9:56)
Lagrangien 2(31:55)
|
4.1, 4.1.2, 4.1.3, 4.1.4, 4.2, 4.3,
|
Semaine 6 10 février |
5- Méthodes à noyau [pdf]
[pdf]
Méthodes à noyau 0 (28:53)
Méthodes à noyau 1 (9:49)
Méthodes à noyau 2 (10:11)
|
6.1, 6.2
|
Semaine 7 17 février |
6- Machines à vecteurs de support [pdf]
[pdf]
Machines à vecteurs de support 0 (20:02)
Machines à vecteurs de support 1 (15:31)
Machines à vecteurs de support 2 (11:32)
|
7.0, 7.1, 7.1.1, 7.1.2
|
Semaine 8 24 février |
Examen périodique
|
|
Semaine 9 3 mars |
Semaine de lecture
|
|
Semaine 10 10 mars |
7- Réseaux de neurones multi-couches [pdf]
[pdf]
Réseaux de neurones multicouches 0 (8:02)
Réseaux de neurones multicouches 1 (17:08)
Réseaux de neurones multicouches 2 (12:40)
Réseaux de neurones multicouches 3 (3:35)
Réseaux de neurones multicouches 4 (13:46)
Réseaux de neurones multicouches 5 (11:50)
|
5.1, 5.2, 5.2.1, 5.2.4, 5.3, 5.3.1, 5.3.2, 5.5
|
Semaine 11 17 mars |
7- Réseaux de neurones multi-couches [pdf]
[pdf]
Réseaux de neurones multicouches 6 (44:03)
Réseaux de neurones multicouches 7 (12:53)
Réseaux de neurones multicouches 8 (28:47)
|
5.1, 5.2, 5.2.1, 5.2.4, 5.3, 5.3.1, 5.3.2, 5.5
|
Semaine 12 24 mars |
8- Combinaison de modèles [pdf]
[pdf]
Combinaison de modèles 0 (13:08)
Combinaison de modèles 1 (21:50)
Combinaison de modèles 2 (11:47)
Combinaison de modèles 3 (2:30)
Combinaison de modèles 4 (21:12)
|
14.0, 14.2, 14.3, 14.3.1
|
Semaine 13 31 mars |
9- Théorie de la décision [pdf]
[pdf]
Théorie de la décision 0 (25:49)
Théorie de la décision 1 (16:29)
|
1.5.5, 3.2
|
Semaine 14 7 avril |
10- Mélange de gaussiennes [pdf]
[pdf]
Mélange de gaussiennes 0 (11:04)
Mélange de gaussiennes 1 (8:27)
Mélange de gaussiennes 2 (12:25)
Mélange de gaussiennes 3 (14:19)
|
9.2,9.4
|
Semaine 15 7 avril (si le temps le permet) |
10- Mélange de gaussiennes [pdf]
[pdf]
Mélange de gaussiennes 4 (11:13)
Mélange de gaussiennes 5 (13:53)
Mélange de gaussiennes 6 (14:13)
|
9.2,9.4
|
Jupyter Notebooks
Voici quelques exemples de code sous forme de notebooks python dont le but est de vous aider à comprendre certains éléments de la matière vue en classe
Fomulations probabiliste (gaussienne univariée et multivariée, covariance, dépendances statistiques, distributions jointe, conditionnelle et évidence, marginalisation, illustration du problème "math vs info" vu en classe).
Concepts fondamentaux (régression linéaire et non linéaire, distribution conditionnelle dans le cadre d'une régression, sur- et sous-apprentissage, régularisation, classification linéaire, apprentissage non supervisé)
Théorie de l'information (information, entropie, entropie croisée, distance de Kullback-Leibler, encodage de Huffman, information mutuelle).
Régression logistique (petit code illustrant une régression logistique 2 classes)
Méthodes à noyaux (petit code illustrant comment une régression logistique linéaire combinée à une méthode à noyau peut segmenter des données de façon non linéaire)
Combinaison de modèles (petit code illustrant comment la combinaison de modèles peut réduire la variance d'un modèle)
Travaux Pratiques
Veuillez utiliser turninweb pour soumettre vos travaux. Tout retard ou erreur de remise entraînera une pénalité de 10% par jour et une note de 0 après 5 jours. Veuillez également utiliser la plateforme de développement "gitlab" de l'Université. Pour ce faire, connectez-vous une première fois à depot.dinf.usherbrooke.ca et 12 heures plus tard vous pourrez commencer à travailler.
Pour connaître vos partenaires d'équipes, veuillez consulter le document que voici.
NOTE IMPORTANTE 1 : En plus de votre code, veuillez soumettre un fichier "gitlab.txt" dans lequel vous donnez le lien vers votre dépôt gitlab.
NOTE IMPORTANTE 2 : En plus de vos documents de travail, vous devez remplir, signer et joindre à votre travail le formulaire d'intégrité que voici : formulaire d'intégrité.
NOTE IMPORTANTE 3 : En plus de vos documents de travail, vous devez remplir et joindre à votre travail l'agenda d'équipe que voici : agenda d'équipe
NOTE IMPORTANTE 4 : veuillez bien utiliser git car une mauvaise utilisation pourra entraîner une perte de points pouvant aller jusqu'à zéro.
NOTE IMPORTANTE 5 : Avant de commencer à travailler sur vos TP, veuillez svp prendre connaissance du document que voici : recommandatonsTP.pdf
Examens (exemples)(NOTE : l'examen final est récapitulatif)
| Sommaire
Session
Hiver 2025
Professeur
Pierre-Marc Jodoin
Correcteur
Thierry Judge
Périodes de cours
Mercredi de 13h30 à 14h20
Vendredi de 13h30 à 15h20
Local
Mercredi : D4-0023 (ou D4-2023)
Vendredi : D4-2023
Périodes de disponibilités
Du lundi au vendredi de 9h30 à 17h30
Horaire et plan de cours
(plan ift603-712)
|