.. _l-ml: Machine Learning ================ .. contents:: :local: Le site `CS 188: Artificial Intelligence (Berkeley) `_ propose des projets informatiques qui ont la particularité de partir d'un squelette existant. Ce sont des problèmes de machines learning très guidés où l'essentiel de l'effort est tourné vers les algorithmes. .. _l-ml-renf: Apprentissage par renforcement ------------------------------ Un problème souvent évoqué lorsqu'on parle d'apprentissage par renforcement est celui du `tic tac toe `_. L'objectif de ce projet est de résoudre ce problème en utilisant l'apprentissage par renforcement. Quelques liens : * `Rémi Munos, part 1 `_ * `Rémi Munos, part 2 `_ * `Rémi Munos, part 3, parlant spécifiquement du bandit manchot `_ * `Reinforcement Learning: An Introduction `_, Richard S. Sutton and Andrew G. Barto * `Apprentissage par renforcement `_ * `Agents adaptatifs Prise de décision séquentielle `_ * `UCL Course on RL `_ * `Machine Learning for Humans, Part 5: Reinforcement Learning `_ **Remarque :** .. index:: morpion, tic-tac-toe L'apprentissage par renforcement repose sur la connaissance de l'ensemble des états possibles du problèmes et ce nombre est souvent très grand. Trop grand. Le jeu du morpion ou `tic-tac-toe `_ peut être résolu sans optimisation de l'algorithme initiale. C'est le jeu utilisé par le surdoué dans `WarGame `_ pour démontrer à une intelligence artificielle que, bien joués, certains finissent toujours par une partie nulle. Pour d'autres jeux, le plus simple est souvent de chercher à réduire l'espace des états et des stratégies. Quelques applications envisageables dans le cadre de ce projets : * `tic-tac-toe `_ * `Tétris `_ (voir aussi `Tetris, Colin Fahey `_) * `bandit manchot `_ * `jeux de stratégie `_ * `Reinforcement Learning Assignment: Easy21 `_ * `Un chariot qui maintient un poteau en équilibre `_, avec `tensorflow `_ On peut envisager des contextes différents tels que le jeu de Pacman ou de Pong : * `Reinforcement Learning (Berkeley) `_ * `pg-pong.py `_ Autres pistes :ref:`l-td2a-reinforcement-learning`, :ref:`l-td2a-reinforcement-learning-marl`. .. _l-ml-chow: Algorithme de Chow-Liu ---------------------- Cet algorithme `Chow Liu `_. Il sert à construire des relations entre des variables aléatoires. On pourra procéder en deux étapes : * implémentation de l'algorithme et vérification sur un jeux de données synthétiques * application sur un jeu de données plus conséquent **Ressources** * `MOOC: Learning Tree Structured Networks `_, Daphne Koller (pour aller plus loin `Probabilistic Graphical Models `_) * `http://pgm.stanford.edu/ `_, Daphne Koller, Nir Friedman * `Learning with Mixtures of Trees `_, Marina Meila, Michael I. Jordan .. _l-ml-visage: Reconnaissance des visages de ses amis -------------------------------------- .. index:: image processing La librairie `OpenCV `_ permet d'effectuer des traitements d'images assez complexes comme localiser le visage d'une personne prise en photo. L'image suivante est extraite de `Face Detection in Static Images With Python `_. .. image:: http://s3.amazonaws.com/static.creatingwithcode.com/wp-content/uploads/2009/02/output.jpg La tâche qu'on veut pouvoir accomplir à l'aide d'un programme python est la suivante : * On suppose qu'on dispose d'une vingtaine de photos de personnes, chacun distincte et identifiée. On suppose que les photos ont été prises avec le même appareil, un téléphone portable par exemple. * On prend une nouvelle photo avec ce même appareil. On veut automatiquement ranger cette photo dans un répertoire associé à la personne reconnue. On pourra lire les articles suivant : * `Simple Face Detection using OpenCV `_ * `Facial Detection with OpenCV and Python (1) `_ * `Facial Detection with openCV and Python (2) `_ * `Face Recognition with OpenCV `_ * `Face Detection using Haar Cascades `_ La version `OpenCV pour Python 3 `_ est très récente et la version finale devrait être prête pour fin 2014 / début 2015. Deux outils pour annoter des images si vous n'en avez pas : * `sloth `_ * `labelImg `_ .. _l-ml-deepext: Deep et Extreme Machine Learning -------------------------------- .. index:: deep learning, extreme machine learning C'est assez ambitieux comme premier projet. `MNIST `_ est le premier problème mentionnant le *Deep Learning*. Ce site recense les différentes performances obtenues jusqu'à présent sur ce modèle. Sujet à préciser en fonction des attentes des élèves. * `Visualizing MNIST: An Exploration of Dimensionality Reduction `_ * `Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis `_, Patrice Y. Simard, Dave Steinkraus, John C. Platt * `Extreme Learning Machines `_, Erik Cambria, Guang-Bin Huang * `Fast, simple and accurate handwritten digit classification using extreme learning machines with shaped input-weights `_, Mark D. McDonnell, Migel D. Tissera, André van Schaik, Jonathan Tapson * `Extreme Learning Machine: Theory and Applications `_, Guang-Bin Huang, Qin-Yu Zu, Chee-Kheong Siew * `Neural Networks and Deep Learning `_ (Chapitre 1 `Using neural nets to recognize handwritten digits `_) * `Why does Deep Learning work? - A perspective from Group Theory `_, Arnab Paul, Suresh Venkatasubramanian Librairies, modules : * `The Infinite MNIST `_ * `VowPal Wabbit and MNIST `_ * `pytorch `_ .. _l-ml-align: Alignement de mots dans l'optique de constuire un traducteur automatique ------------------------------------------------------------------------ L'algorithme est présentée dans l'article : `Word Alignment via Quadratic Assignment `_ de Simon Lacoste-Julien, Ben Taskar, Dan Klein, Michael I. Jordan. On pourra commencer sur un jeu de données petit et fabriqué manuellement. On pourra ensuite s'attaquer à des sites web qui proposent des traductions anglais/français de leur contenu. Autres liens intéressants proposés par les élèves qui ont travaillé sur ce sujet : * `Traduction automatique statistique et adaptation à un domaine sp ecialis e `_ * `Identification des cognats et alignement bi-textuel : une étude empirique `_ * `Improved Word Alignments for Statistical Machine Translation `_ .. _l-fast-k-NN: Fast k-NN (2016) ---------------- L'algorithme des `k plus proches voisins `_ est un des plus simples algorithmes d'apprentissage mais très coûteux. L'article suivent propose une façon d'optimiser le calcul dans des espaces de grande dimension. `Fast k-NN search `_ .. _l-ml-gradient-geom: Accélération de la descente de gradient dans le cadre d'une optimisation convexe (2016) --------------------------------------------------------------------------------------- .. index:: gradient descente, descente de gradient, convexe La `descente de gradient `_ est une technique d'optimisation très connue utilisée lorsqu'on ne sait pas exprimer de façon explicite la solution d'un problème d'optimisation : on cherche le minimum ou le maximum de la fonction. Si l'algorithme converge lorsque la fonction à optimiser est convexe, il existe des cas particuliers où on peut accélérer la convergence comme dans le cas de cet article qui propose une façon intuitive de le faire : `A geometric alternative to Nesterov's accelerated gradient descent `_. L'objectif est d'implémenter cet algorithme puis de le comparer avec d'autres méthodes. On pourra également regarder : `Linear Coupling: An Ultimate Unification of Gradient and Mirror Descent `_ et `Revisiting Nesterov’s Acceleration `_. .. _l-ml-reg-geod: Régression à base de plus proches voisins (2017) ------------------------------------------------ .. index:: régression, plus proche voisins Il faut implémenter la méthode de l'article qui suit : * `Minimax-optimal semi-supervised regression on unknown manifolds `_ .. _l-ml-ethique: Construction d'un estimateur du caractère éthique d'un moteur de recherche (2017) --------------------------------------------------------------------------------- On se pose de plus en plus la question du caractère éthique des algorithmes : `Tous algorithmés, tous concernés `_, `Google, democracy and the truth about internet search `_. On se place dans le cas ici d'un site qui proposent des contenus à partir d'une requête (moteur de recherche, vente en ligne, publicité). Comment exprimer le fait que les résultats produits par le site ne sont pas biaisés éthiquement, comment mesurer le caractère éthique des résultats ? Le sujet est assez libre mais implique certainement la manipulation de texte. Côté scientidique, on pourra s'inspirer de l'article `FairTest: Discovering Unwarranted Associations in Data-Driven Applications `_. .. _l-ml-fire-detection: Détection de fumée dans les images (2017) ----------------------------------------- C'est une idée extraite de l'article : `Early Fire Detection Using HEP and Space-time Analysis `_. Elle ne requiert pas nécessaire de machine learning mais s'appuie plus simplement sur des indicateurs construits à partir des images. Le projet devra commencer par récupérer des images sur Internet (via un moteur de recherche par exemple). .. _l-ml-snn: Implémenter un SNN : Spiking Neural Network (2018) -------------------------------------------------- * `Python Tutorial: How to Write a Spiking Neural Network Simulation From Scratch `_ Voir aussi :ref:`l-ml2a-snn`. .. _l-ml-tree-graph: Ecrire une librairie pour représenter des modèles de machine learning (2018) ---------------------------------------------------------------------------- Supposons qu'une forêt aléatoire a été appris pour classifier un jeu de données, est-il possible de la représenter de façon à faciliter son interprétation. On pourra s'inspirer du module `animl `_. On choisira de limiter le nombre de dépendance au minimum. .. _l-ml-knn-pca: Implémenter un algorithme des plus proches voisins amélioré (2018) ------------------------------------------------------------------ Le sujet s'appuie sur l'article `Neighbourhood Components Analysis `_ qui propose d'apprendre un modèle des plus proches voisins tout en apprenant également une distance dite de `Malahanobis `_ qui permet de pondérer différemment chaque dimension. Il faudra comparar cet algorithme à d'autres approche de machine learning voire apporter sa propre contribution. .. _l-ml-code-plagiat: Détecter le plagiat dans le code (2020) --------------------------------------- Comment détecter des emprunts de code ? Ils ne sont pas tous interdits, tout dépend de la licence choisie par l'auteur. `Celle de ce site `_ vous donne le droit de tout faire excepté celui de le faire sans le dire. Quelques sources d'inspiration ci-dessous. * `Winnowing: Local Algorithms for Document Fingerprinting `_ * `pycode_similar `_