01 Introduction 2020
01 Introduction 2020
01 Introduction 2020
Introduction
Fonctions d’activation
Hiver 2020
Philippe Giguère
Plan de cours
Bienvenue à bord!
• 3ème édition!
• L’équipe de cette année :
4
Ressources GPU
En cours de mise-en-oeuvre
• Accès à des GPU via Jupyter notebook
– NVIDIA K20 ou K80
• http://jupyterhub.helios.calculquebec.ca,
• Au besoin, lisez le Wiki
– https://wiki.calculquebec.ca/w/JupyterHub
• Cœurs réservés pour les laboratoires :
réservation glo4030
• Gros merci à
– Florent Parent
– Félix-Antoine Fortin 5
Manuel (obligatoire)
• Bonne référence
• Version html gratuite
http://www.deeplearningbook.org/
6
Pré-requis
• Python (laboratoire, TP)
• Certaine connaissance de l’apprentissage
machine
• Probabilité
• Algèbre linéaire
• Dérivée
• Un peu d’optimisation
7
Contenu du cours
• Un peu de théorie, oui…
• … mais aussi de la pratique…
• … et de la collection de timbres
– nombre de techniques, trucs
– 20+ exemples d’architecture
– grand nombre de papiers
• 70+ présentations orales
“All science is either
• Donner un aperçu du domaine, physics or stamp
collecting”
vous aider à démarrer dans la –E. Rutherford
recherche
8
Aperçu 1ère moitié
• Connaissances de base (vertical)
– Introduction, neurone, fonctions d’activation
– Graphes de calculs, fonctions de perte, rétro-
propagation
– Méthodes d’entraînement par optimisation,
batch norm, initialisation des poids, trucs et
astuces
– Techniques de régularisation
– Réseaux à convolution I
– Réseaux à convolution II
– Examen intra
9
Aperçu 2ème moitié
• Concepts avancés (horizontal) :
– Word embeddings
– Autoencodeurs
– Réseaux récurrents (RNN, LSTM et GRU)
– Modèles d’attention, proposition de régions
d’images, réseaux à mémoire
– Apprentissage multitâches, pertes auxiliaires
– Distillation (compression) des réseaux
– Réseaux génératifs type GAN
– Et +
(majorité) Présentations orales des étudiants 2e et 3e cycle 10
Examen
• Mi-Session (25 février 12h30 à 15h20)
– 35% pour GLO-4030
– 33% pour GLO-7030
12
Projets
• Équipe de 1 à 2
• GLO-4030 : 25 %
• Pour GLO-7030 : 35 %
– comme pas d’examen, projet devra être
ambitieux (proche de publiable)
– bonne méthodologie
• Trouvez un jeu de données proche de
votre recherche / laboratoire / programme
• Vous pouvez utiliser langage et libraire de
votre choix (TensorFlow, PyTorch, etc)
• Rapport sous format d’article scientifique
13
Mon projet en 180 s (GLO-7030)
• Présentation chronométrée de 3 minutes
de votre projet de recherche
• 14 avril
• 1 seule acétate, sans animation, format pdf
ratio 16:9
• 1 seul membre de l’équipe
• Jugé sur la clarté et la qualité, et non sur le
mérite technique
• Note attribuée à l’équipe entière (4 %)
14
Présentations orales GLO-7030
• Article plus récent que 1er juin 2018
• Uniquement des conférences suivantes :
NIPS, CVPR, ICLR, RSS, ICCV, ECCV,
EMNLP, ACL, NAACL et COLING
• Présentation 10 minutes, style conférence
• M’envoyer votre choix le plus rapidement
possible (pour éviter les doublons)
• Compte pour 12 %
15
Présentations orales GLO-7030
• 72 inscriptions (horaire chargé!)
• Date de votre présentation idéalement en
lien avec le contenu du cours
• Horaire approximatif : VendrediDate21 février nombre8 prés.
Vendredi 20 mars 10
Vendredi 3 avril 10
Vendredi 10 avril 10
Vendredi 17 avril 10
Mardi 21 avril 14
Vendredi 24 avril 10
17
Librairie utilisée : 1.?
• Recommandation unanime des experts locaux (ils
ont utilisés Theano, TensorFlow, Torch, Keras)
• Python, et non pas LUA
• Facile à débugger
– Vous pouvez extraire les données du GPU en tout
temps
• Dérivation automatique autograd
• Support GPU pour Ndarray
• Package d’optimisation par descente de gradient
inclus (SGD, RMSprop, ADAM, etc.)
• Beaucoup d’utilitaires (data loading,
entraînement, data augmentation, torchvision
etc.)
• Facile d’obtenir des modèles pré-entraînés
18
http://pytorch.org/about/
Introduction
Large Scale Visual Recognition Challenge
• Image Classification Challenge :
– 1,000 classes d’objets
– 1,431,167 images
30 Renaissance
28.2
25 25.8
Erreur top-5
20
15 16.4
10 11.7
20
https://paperswithcode.com/sota/image-classification-on-imagenet
Réseaux profonds
Causes de la renaissance #1
Nouvelles fonctions d’activations
(sigmoïde)
pré-
2006
Vanishing gradient
Venait limiter en pratique la profondeur
21
Crédit : L. Trottier
Causes de la renaissance #1
Nouvelles fonctions d’activations
• ReLU : Rectifier Linear Unit
• Introduite en 2010 par Nair et Hinton
22
Causes de la renaissance #2
• Grands jeux de données
• www.image-net.org
• 14 millions images, 22 000 catégories
23
Causes de la renaissance #3
Puissance de calcul via GPU
25
Continuation de la renaissance
• Progrès très rapide via arXiv.org
• Plus d’une centaine de soumission par jour
Data
geler des augmentation
couches 3,000+ filtres
27
Crédit photo : Griffin’s auto repair Crédit photo : wildsau.ca
Pourquoi le Deep?
• Fonction mathématique extrêmement
flexible et puissante (millions de
paramètres)
• Théorème d’approximation universelle :
– Peut approximer n’importe quelle fonction*
avec un niveau de précision arbitraire
– http://neuralnetworksanddeeplearning.com/chap4.html
28
*continue sur des sous-ensembles compacts de Rn
Généralisation vs. profondeur
• Street View Home Numbers SVHN
approches
traditionnelles Output Output
Mapping
from
features
Mapping Additional
Mapping layers of
Output from from more
features features abstract
features
Hand- Hand-
designed Simple
designed Features features
program features
approches
traditionnelles Output Output
Mapping
from
features Appris
conjointement
Mapping Additional
Mapping layers of
Output from from more
features features abstract
features
Hand- Hand-
designed Simple
designed Features features
program features
This might sound less than dramatic when put in those terms, but it’s a
radical change in how we build software. Instead of writing and
maintaining intricate, layered tangles of logic, the developer has to
become a teacher, a curator of training data and an analyst of results.
This is very, very different than the programming I was taught in
school, but what gets me most excited is that it should be far more
accessible than traditional coding, once the tooling catches up.
https://petewarden.com/2017/11/13/deep-learning-is-eating-software/
37
Transfert d’innovation
38
Szegedy et al., Rethinking the Inception Architecture for Computer Vision, CPVR 2015.
« Bouturage »
• Combiner des réseaux pré-
entraînés sur des tâches
différentes
39
Le gradient = sève
• Pas de gradient = pas d’apprentissage
40
Extrait de https://youtu.be/IHZwWFHWa-w 3Blue1Brown
Processus itératif
Les voies du réseaux sont impénétrables
• Beaucoup de paramètres
et de techniques
• Important de
développer
une intuition
Crédit : Andrew Ng
42
Optimisation vs. gradient
• Théorème d’approximation universelle ne
dit pas comment trouver cette fonction
• Relation incestueuse entre les
architectures développées (dérivable end-
to-end) et les méthodes d’optimisation
• Autres approches (Hebbian), mais on n’en
parlera pas dans le cours
43
Toujours besoin de beaucoup de données?
• Non, si l’on passe par des réseaux pré-
entraînés
• Fantastiques extracteurs de
caractéristiques
• Résultats dépassent souvent l’état de l’art
pré-Deep
44
Paradigme du graphe de calcul
• Plus qu’un à-côté des recherches en Deep
• Nouvelle manière de voir les algorithmes
– Prend algo traditionnel
– Rend pleinement différentiable (soft)
• choix binaire 0-1 sigmoïde (NetVLAD)
– « Dérouler » l’exécution
iter iter iter iter Métrique de
1 2 3 4 performance
Gradient
Paramètres
Differentiable Particle Filters: End-to-End Learning with Algorithmic Priors,
R. Jonschkowski et al., 2018. 45
Deep Learning : appel à la prudence
• Excellente présentation NIPS 2017 d’Ali
Rahimi : Deep Learning is alchemy
• https://youtu.be/Qi1Yry33TQE
46
Deep Learning : appel à la prudence
Troubling Trends in Machine Learning
Scholarship, Lipton et al., 2018
1. Failure to distinguish between explanation and
speculation.
2. Failure to identify the sources of empirical gains, e.g.
emphasizing unnecessary modifications to neural
architectures when gains actually stem from hyper-
parameter tuning.
3. Mathiness: the use of mathematics that obfuscates or
impresses rather than clarifies, e.g. by confusing
technical and non-technical concepts.
4. Misuse of language, e.g. by choosing terms of art with
colloquial connotations or by overloading established
technical terms.
47
Exemples d’applications
Reconnaissance de caractères
28 x 28
;q )
vecteur de 10
f( scores, un par
classe
MNIST
q : paramètres de la fonction
(Labo 1) 49
Reconnaissance d’images
224 x 224 x 3
;q )
vecteur de 1000
f( scores, un par
classe
ImageNet
q : paramètres de la fonction
50
Nature, Février 2017
130,000 images
d’entrainement
Détection d’objets
f( ;q )
;q )
Construction
f( worker in orange
safety vest is
working on road
Karpathy and Fei-Fei, Deep Visual-Semantic Alignments for Generating Image Descriptions,
53
CVPR 2015.
Qui est cet acteur?
54
Génération d’images
f( ;q )
56
Reconnaissance voix
f( ;q ) Ok Google,
where is my
car
57
Génération de voix : Tacotron 2
;q )
She earned a
f( doctorate in
sociology at
Columbia
University
A: B:
Natural TTS Synthesis by Conditioning WaveNet on Mel Spectrogram Predictions
Jonathan Shen, arXiv:1712.05884, dec 2017. 58
Traduction automatique
f( I think,
therefore
I am.
;q ) Je pense
donc je
suis.
59
Apprentissage
visuomoteur
60
Transfert de style
G( ;q )
F( ;q )
Zhu et al., Unpaired Image-to-Image Translation using 61
Cycle-Consistent Adversarial Networks, CVPR 2017.
Transfert
de style
62
Jeu de Go (2017)
63
Jeu Starcraft (2019)
• Programme AlphaStar de Deepmind
• Niveau Grand maître pour Starcraft
– meilleur que 99.8% des joueurs humains
• Basé sur des approches d’apprentissage
génériques
– réseaux pour les stratégies et contre-stratégies
64
Réseaux classiques
peu profonds :
classification d’images
MNIST
• 10 chiffres
• 70,000 images de 28 28 pixels
Source : http://blog.welcomege.com/mnist-database/
66
Classificateur linéaire sur MNIST
• Le plus simple possible : linéaire
• Paramètres W (taille c n) + biais b (taille c 1)
– n : nombre de pixels
– c : nombre de classes
vecteur de 10
f( ;W,b) scores, un
par classe
MNIST
67
Exemple simplifié
.1 .4 « Flatten » f = Wx+b
.3 .7
W b Score
.7 -.3 .2 .3 .1 1 1.22 Chiffre 1
-.5 1.7 1.5 .4 .4 + 1.2 = 2.56 Chiffre 2
.7 1.1 -.4 -.1 .3 -.4 -.08 Chiffre 3
.7 68
adapté de cs231n
Interprétation classificateur linéaire
dimension 2
f = Wx+b w1
w1 .7 -.3 .2 .3 dimension 1
69
Réseau 1 couche linéaire
• Image 28x28 784x1
class SimpleLinear(nn.Module):
def __init__(self):
super(SimpleLinear, self).__init__()
28
Exemple de W trouvé
non-linéarité
non-linéarité
non-linéarité
Opérations
Opérations
Opérations
linéarité
linéaire
linéaire
linéaire
…
Pré-activation : z b w x i
i i bw x T
Activation : h g ( z ) non-linéaire
x1
x2 +
+
…
+
S symbole
combiné
+
xn b 75
Exemple classique : XOR
Non-séparable linéairement
78
Image tirée de (I. Goodfellow) deeplearningbook.org
Activation non-linéaire ReLU
approches
traditionnelles Output Output
Mapping
from
features
Mapping Additional
Mapping layers of
Output from from more
features features abstract
features
Hand- Hand-
designed Simple
designed Features features
program features
approches
traditionnelles Output Output
Mapping
from
features Appris
conjointement
Mapping Additional
Mapping layers of
Output from from more
features features abstract
features
Hand- Hand-
designed Simple
designed Features features
program features
85
Fonction d’activation : sigmoide
• Une des premières utilisées
• Si on désire une sortie entre 0 et 1 (squashing)
1
( x)
1 exp( x)
86
Exemple utilisation sigmoïde
• Prédiction binaire (logistic regression)
P( y 1| x)
sortie wT x b
x1
+
x2 +
…
+
S
+
xn b
87
Exemples utilisation sigmoïde
88
Crédit image : Redmon et al., YOLO9000: Better, Faster, Stronger. CVPR 2017.
Exemple utilisation sigmoïde
• gating dans Long short-term memory
Greff et al. LSTM : A Search Space Odyssey, T. on Neural Networks and Learning Systems, Oct 2017.
Fonction d’activation : tanh
• Autre fonction historique
• Désire une sortie entre -1 et 1 (squashing)
exp(2a ) 1
tanh( x)
exp(2a ) 1
2 (2 x) 1
Greff et al. LSTM : A Search Space Odyssey, T. on Neural Networks and Learning Systems, Oct 2017.
Quasi-linéarité : rend
ReLU l’entrainement plus facile
via descente de gradient
• La plus populaire comme
non-linéarité
• Toujours non-négatif max(0,x)
– moyenne sortie biaisée +
• Pas de limite supérieure
• Facile à calculer (exp est
plus long)
• Accélère l’entraînement des réseaux (facteur 6 pour
AlexNet).
• Résulte en des activations parcimonieuses (certains
neurones sont à 0)
– Parfois des neurones vont mourir, particulièrement si learning rate est
trop grand
• Rarement utilisé en sortie du réseau 92
Leaky ReLU
• Gradient = 0 signifie
impossibilité d’entraîner
• Pente très légère dans la ax si x<0
partie négative : leaky f(x) =
x autrement
ReLU
• Si un paramètre a (entraînable) par
neurone/couche, on obtient la PReLU [1]
• Donne des distributions de sorties plus centrées à
0 que ReLU
softmax
-.5 1.7 1.5 .4 .4 + 1.2 = 2.56
.7 log des
probabilités
non-normalisées
exp( zi )
P(classe | x)
exp( z j )
jgroupe
96
Softmax
• Peut avoir plus
d’un softmax en
sortie
• Combiner des jeux
de données avec
différentes
granularités de
classes
– chien vs labrador
97
Crédit image : Redmon et al., YOLO9000: Better, Faster, Stronger. CVPR 2017.
Softmax avec température T
exp( zi / T )
yˆi
j exp( z j / T )
• Si T est élevé, les sorties seront plus
égalitaires. Si T faible, winner-takes-all
• Utilisé dans :
– LSTM pour varier la confiance/répartition des
sorties
– distillation des réseaux [1]
[1] Hinton et al. Distilling the knowledge in a neural network. arXiv
preprint arXiv:1503.02531 (2015). 98