IFT3395/6390

Fondements de l'apprentissage machine

Hiver 2008

Instructions pour le projet

(retour à la page du cours)

Objectifs du projet

L'objectif principal du projet est que vous acquerriez l'expérience d'une application de l'apprentissage machine à un problème de votre choix. Ceci inclue la réalisation de toutes les étapes typiques que ce genre de projet comporte. Comme il s'agit d'un projet davantage personnel et de plus grande envergure que les petits problèmes pratiques des devoirs, et qu'il faut prévoir suffisamment de temps pour le mener à bien, le projet a été divisé en plusieurs étapes. Vous devrez remettre un document pour chacune.

Quelques éléments généraux concernant le projet:

  • Les étudiants de troisième année de bac peuvent choisir de réaliser leur projet en équipe de 2.
  • Les étudiants gradués réaliseront leur projet seul, et devront de plus effectuer une présentation orale du projet pendant la dernière semaine de cours.
  • A moins d'un accord contraire avec le professeur, les projets devront être réalisés avec la librairie d'apprentissage PLearn (et pourront ainsi contribuer à son développement).

Exemples de sujets de projet possible:

  • Implémenter et reproduire les résultats d'un algorithme publié à la conférence NIPS (voir www.nips.cc)
  • Implémenter un algorithme classique qui n'est pas déjà dans la librairie PLearn et effectuer des comparaisons de performances avec d'autres algorithmes de la librairie.
  • Ajouter dans PLearn un accès aisé à un ou plusieurs ensembles de données réelles utiles (par ex. référencés dans un article de NIPS), ainsi que leur pré-traitement approprié. Entraîner/tester plusieurs algorithmes sur les données en question, et comparer leur performance à ce qui a été obtenu dans la littérature existante faisant référence à cette base de donnée.
  • Tout autre sujet proposé par le professeur (venez me voir!).
  • Tout autre sujet que vous proposez et pour lequel le professeur a donné son accord.

1Première étape: proposition de projet

Pour la proposition de projet, vous devez produire un rapport de 2 pages, dans lequel vous identifierez clairement les éléments suivants:

  • Le problème que vous voulez résoudre avec une approche d'apprentissage machine.
  • Une manière d'obtenir facilement un ensemble de données suffisamment grand à partir duquel on va pouvoir apprendre. Le plus simple est qu'il s'agisse d'un ensemble préexistant (téléchargeable via le Web par ex.), mais il y a parfois d'autres possibilités...
  • La nature exacte des exemples de cet ensemble de données “brut”. Indiquez le nombre d'exemples qu'il contient (et sa taille en bytes). Puis décrivez aussi précisément que possible de quoi un exemple est constitué: dimensionalité, type de donnée (nombre réel, entier, chaîne de caractère), valeurs possibles et signification (si connue) pour chaque variable constituante, etc...
  • Comment vous envisagez de résoudre le problème d'un point de vue d'apprentissage: en le posant comme une tâche de classification (quelles sont les classes?), de régression (que veut-on prédire?), d'estimation de densité, ou autre.
  • Souvent l'ensemble de données brut n'est pas utilisable directement tel quel pour entraîner un algorithme d'apprentissage. Dans ce cas, indiquez comment vous pensez pouvoir obtenir, à partir de l'ensemble de données brut, un ensemble de données utilisable pour l'entraînement (et le test) avec un algorithme d'apprentissage. Ex: comment extraire un vecteur de traits caractéristiques et établir des valeurs cibles (s'il y a lieu) correspondant au problème que vous voulez résoudre...
  • Quels algorithmes d'apprentissage vous pensez essayer sur ce problème. Il est demandé de comparer la performance d'au moins deux algorithmes sur le problème considéré, dont un algorithme simple de référence. 
  • Si vous allez implémenter un nouvel algorithme. Résumez brièvement son principe, et fournissez au moins une référence bibliographique.

En fonction du projet que vous envisagez, la difficulté peut se situer à plusieurs niveaux, en particulier au niveau de l'accès, de la nature et du pré-traitement des données, ou bien au niveau du ou des algorithmes que vous prévoyez implémenter, voire un peu des deux. Le niveau de difficulté sera bien entendu pris en compte au moment de la correction. Je m'attends dans chaque projet à ce qu'au moins un aspect du projet soit non trivial. Il est vivement recommandé d'aller discuter avec le professeur ou les démonstrateurs de vos idées de projet pour voir si ils sont réalisables et comment, et ceci avant d'écrire la proposition.

Remettez votre proposition sous la forme d'un fichier proposition.pdf avec la commande remise (après vous être connecté avec un ssh remise):

  • Si vous êtes en IFT3395:
    remise ift3395 projet proposition.pdf
  • Si vous êtes en IFT6390:
    remise ift6390 projet proposition.pdf

2Deuxième étape: rapport d'étapes

Pour le rapport d'étape, vous devez produire un document d'environ 2 pages où vous expliquez ce que vous avez fait jusqu'à ce stade ci pour votre projet. 

Indiquez:

  • Ce que vous avez réalisé jusque là 
  • Expliquez en détails comment vous avez procédé pour chaque étape
  • Indiquez s'il y a lieu les difficultés rencontrées et les choses dont vous n'êtes pas certain.
  • Donnez un plan de ce qu'il vous reste à faire pour finaliser le projet.

Au moment de la remise du rapport d'étape je m'attend à ce qui suit:

  • Pour les projet dont une part importante de l'effort consiste à former un ensemble de données propre à être utilisé pour entraîner un algorithme d'apprentissage, je m'attends à ce que vous ayez constitué une première version d'un ensemble complet dans un format utilisable depuis l'environnement que vos prévoyez utiliser. Je m'attends également à ce que vous ayez commencé à essayer d'appliquer un algorithme simple à ces données. 
  • Pour les projets comportant l'implantation d'un algorithme, je m'attends à ce qu'une première version de l'implantation soit complétée et qu'elle s'exécute sans erreurs (même si elle ne fonctionne pas encore tout à fait comme il faut). Je m'attends aussi à ce que vous ayez commencé à tester votre algorithme sur un ensemble 2D. 
Vous devez remettre avec la commande remise un fichier rapport_etape.pdf ainsi que tous les fichiers source de tout le code que vous avez produit jusque là, que ce soit du code d'implémentation d'un algorithme d'apprentissage, ou du code servant à la génération des ensembles de données.

Ex:
remise ift3395 projet rapport_etape.pdf
Ou
remise ift6390 projet rapport_etape.pdf

Ne remettez pas vos fichiers de données, ni vos fichiers binaires! Seulement le code source.

3Troisième étape: rapport final et présentation

Présentation orale

Les étudiants inscrits en IFT6390 devront effectuer une présentation orale de leur projet pendant la dernière semaine de cours.
Il s'agit d'une présentation de 15mn suivie de 5mn de questions.
Même si votre projet n'est pas encore complètement terminé, je m'attends tout de même à voir quelques résultats un peu plus que préliminaires!

Vous pouvez me faire parvenir quelques heures à l'avance les transparents de votre présentation avec la commande
remise ift6390 projet votre_fichier_de_présentation

ou bien si vous venez avec votre présentation sur une clé USB, on pourra la transférer sur mon ordinateur avant de commencer. Les formats de fichier possibles pour la présentation sont, au choix: pdf, ps, PowerPoint, KeyNote

Rapport final

Le rapport final du projet est dû pour le dernier jour de la session et devra comporter au maximum 8 pages, dans le style des articles de la conférence NIPS.

Habituellement votre rapport devrait contenir les éléments suivants:

  • Un paragraphe "résumé", résumant votre projet: son but, ses résultats, vos conclusions...
  • Une explication assez brève, dans vos propres mots, du fonctionnement du ou des algorithmes d'apprentissage que vous avez implémenté ou utilisé, avec s'il y a lieu les références bibiliographiques qui s'y rapportent. 
  • Une description du ou des jeux de données que vous avez utilisé et de leur format brut.
  • S'il y a lieu, expliquez en détail comment vous avez procédé pour obtenir, à partir des données brutes, des ensembles d'apprentissage et de test dans une forme appropriée pour entraîner/tester un algorihme d'apprentissage pour la tâche qui vous intéressait.
  • Si votre projet comportait l'implémentation d'un algorithme d'apprentissage, vous devriez avoir effectué des essais avec votre algo sur de petits problèmes 2D comme dans les démos, afin d'illustrer que votre algo fonctionne bien comme on s'y attendrait. Incluez des graphiques illustrant les surfaces de décision obtenues (s'il s'agit de classification), ou tout autre graphique illustrant le résultat de l'apprentissage de votre algo. Expliquez comment vous avez obtenu ces graphiques et commentez les.
  • Pour les données en haute dimension, produisez un tableau comparatif de la performance des algorithmes que vous avez essayé (erreurs d'entraînement, de validation (s'il y a lieu), de test, temps d'exécution).  En général vous devriez avoir comparé au moins 2 algorithmes différents sur vos jeux de donnée, et chacun avec plusieurs valeurs différentes de ses hyperparamètres. 
  • Indiquez tout autre point spécifique à votre projet qui mérite d'être mentionné (ex: difficultées rencontrées, ce qui a bien fonctionné, ce qui n'a pas bien fonctionné, utilisation par la suite du modèle entraîné pour une application particulière, etc...)
  • Ecrivez une section de conclusion, expliquant entre autres ce que ce projet vous a appris.
Vous devez remettre avec la commande remise un fichier rapport_final.pdf ainsi que tous les fichiers source de tout le code que vous avez produit, que ce soit du code d'implémentation d'un algorithme d'apprentissage, ou du code servant à la génération des ensembles de données, ou à l'analyse des résultats.

Ex:
remise ift3395 projet rapport_final.pdf
Ou
remise ift6390 projet rapport_final.pdf

Ne remettez pas vos fichiers de données, ni vos fichiers binaires! Seulement le code source.