Study Group in French

Bonjour,

Avec plaisir pour échanger avec celles et ceux qui suivent le cours fastai. Voici une timeline de la vidéo de la lesson 1 d’hier (avec les liens vers les parties correspondantes dans la video).

Accueil

Jeremy Howard

Notebook 1
(https://github.com/fastai/course-v3/blob/master/nbs/dl1/lesson1-pets.ipynb)

  • Etape 2 : créer le modèle (https://www.youtube.com/watch?v=7hX8yKCX6xM&t=5274)
    – création du modèle learn qui contient l’architecture du réseau neuronal et le dataset databunch (on peut y ajouter la métrique d’évaluation de l’erreur sur le val set)
    – Transfert Learning : on utilise les paramètres d’un modèle déjà entraîné à reconnaître des objets dans des images (resnet34)
    – Overfitting : pour vérifier que pendant son entraînement notre modèle ne se spécialise pas sur le train set mais apprend bien à reconnaître les caractéristiques générales des objets à détecter, on utilise un val set sur lequel on calcule l’erreur (cf. métrique ci_dessus dans le modèle learn)
  • Etape 3 : entraîner le modèle avec la méthode fit_one_cycle() et non plus fit() comme dans la version précédente du cours (explication du papier de Leslie Smith dans l’article de @sgugger : The 1cycle policy)

Reprise après la pause : https://www.youtube.com/watch?v=7hX8yKCX6xM&t=6536

  • Etape 4 : analyser les prévisions faites par le modèle pour comprendre son fonctionnement et éventuellement l’améliorer (https://www.youtube.com/watch?v=7hX8yKCX6xM&t=7922)
    – utilisation de l’objet interp instancié par la méthode ClassificationInterpretation.from_learner(learn)
    – 3 méthodes à utiliser sur l’objet interp :
    plot_top_losse() pour visualiser les images sur lesquelles le modèle génère une grosse erreur (loss),
    plot_confusion_matrix() qui affiche la Confusion Matrix,
    most_confused() qui publie la liste des labels (classes) prédits avec le plus grand nombre d’erreurs

  • Etape 5 : améliorer le modèle (https://www.youtube.com/watch?v=7hX8yKCX6xM&t=8310)
    – rechercher le meilleur Learning Rate avec la méthode lr_find() puis recorder.plot() (pour afficher la courbe loss-vs-lr)
    – utiliser alors la méthode unfreeze() sur le modèle learn afin de pouvoir entraîner toutes les couches du réseau resnet34 et pas seulement celles ajoutées à la fin du modèle afin d’avoir une architecture capable de donner une probabilité pour chacune des 37 classes… MAIS en utilisant des Learning Rate différents selon les couches via learn.fit_one_cycle(2, max_lr=slice(1e-6,1e-4)) : l’idée est que les premières couches n’ont pas besoin d’être beaucoup modifiées car elles ont été entraînées à détecter des formes géométriques simples qui se retrouvent dans toutes images.

  • Etape 6 : on peut obtenir encore un meilleur résultat (une erreur plus faible) en changeant de modèle et en utilisant un modèle plus compliqué (plus profond) comme resnet50 (https://www.youtube.com/watch?v=7hX8yKCX6xM&t=9018)

12 Likes