Please enable JavaScript.
Coggle requires JavaScript to display documents.
Devoxx 2019 : deep learning (Main ideas (How it works: optimizing a…
-
Plan
Presentation cas pratique: (2-3 min)
- Intégration dans un outil de statistique (show)
- Beaucoup d'équipe ne tag pas leur commits
- En lisant les commits on peut souvent deviner
- Mais on a 120,000 commits depuis 2011
- On a 6,500 commits taggés (can we learn?)
Demonstration du résultat: (1 min)
- Donner à l'IA du text pour refactoring, fix, feature
- Parler du fait que c'est statistiquement significant pour le context seulement (DL comme super stat)
- Montrer le "introduce crash on purpose"
Décrire la tâche de classification à accomplir (1 min):
- Trouver une function à qui on donne la description d'un commit et qui donne la catégorie
- Expliquer chacune des catégories
- Expliquer pourquoi la description seulement: le plus simple c'est le mieux (réduire le scope de donnée d'entrée, on verra pour la généralisation)
Mettre en place la machine: (2 min)
- Récupérer les données (automatiser!)
- Coder un modèle manuel (baseline)
- Mesure la performance (important)
- Parler d'un set de test ici?
Premier modèle & principes (15-20 min):
- Déduire les points du "if" plutôt que de hard-coder
- Modèle, cibles, déductions, function de coût (attention à distinguer avec la performance)
- Validation? Généralisation? (ou bien dans "mettre en place la machine?")
- Modéliser les entrées: présence ou non d'un mot
- Linear modèle mono-sortie MAIS on veut des probabilités plutôt qu'un oui/non et une fonction de coût pour optimiser (logistic regression)
- Propagation des dérivées
- Multi-classe: stacking perceptron => linear layer (matrix) et utiliser un SOFTMAX
- Multi-layer: several perceptrons => back-propagation
- Demonstration en terme de code: limite d'apprentissage du aux capacités limités (underfitting)
Etendre le modèle à un vocabulaire (5-10 min):
- On parse les phrases (tokenization)
- On prend tous les mots (attention "refactor" et "refactoring" deviennent différents!)
- Lemmatization (on trouvera une autre façon ensuite)
- On transforme les entrées (one-hot) avec le "vocabulaire" (vectorization)
- On envoie ces entrées dans un modèle linéaire plus large
- Demonstration: 1, 2, 3 niveau de profondeur
- Overfitting en perspective: la régularization
Aller plus loin: modèles séquentiels & embeddings (5-10 min)
- Tenir compte des séquences: pattern via CNN, machine à état via RNN (GRU)
- Problème de la modélisation des mots (on pourrait prendre les index mais ça pu d'un point de vu numérique)
- Regarder avant: on apprenait une représentation de mot! Notion d'embedding (montrer un schéma)
- Point important. On peut pre-train les embeddings par unsupervised learning. Montrer le principe.
- Démonstration: ça overfit grave, il faut plus de données (tant pis...)
Conclure (2-3 min):
- Trade-off entre prémodeliser et laisser le modèle apprendre (parser, lemmer, ou s'arrêter)
- Viser les choses les plus simples & valider
- Tout automatiser comme des fous
- Toujours faire très attention à ne pas corrompre ses données (data augmentation notamment)
- Elargir: gérer les fautes (s'intéresser aux charactères ou corriger les fautes?)
- Elargir: chercher les hyperparamètres avec un algorithme de recherche random
Thèmes et prérequis
-
-
-
-
Supervised learning model:
- target, model, predictions, loss function
- optimize to reduce loss function