Comprendre les CNN et le surajustement
Comprendre les CNN et le surajustement
convolutionnels (CNN)
1
Apprentissage des réseaux de
neurones
2
Objectif du Deep Learning
3
Capacité du modèle
4
Capacité du modèle Défi majeur pour les réseaux neuronaux
en raison de leur grand nombre de
paramètres
5
Capacité du modèle : Sur-ajustement
6
Capacité du modèle : Sur-ajustement
7
Capacité du modèle : Comment éviter le surajustement ?
9
Capacité du modèle : Sous-ajustement
• Pour détecter le sous-ajustement, analysez l'erreur/la
perte des modèles testés sur les données d'entraînement
(et éventuellement sur les données de test)
10
Capacité du modèle : Comment éviter le sous-ajustement ?
11
Capacité du modèle
12
Sélection des hyperparamètres du modèle
Notre objec f est de concevoir des modèles qui généralisent bien à de nouveaux exemples,
préalablement non observés (données de test).
Défi majeur : comment sélectionner un modèle sans observer à plusieurs reprises les données de test (ce qui entraîne un
sur-ajustement) ?
13
Sélection des hyperparamètres du modèle : Décisions de conception du modèle
• Nombre de couches
Paramètres du modèle (trainer)
• Nombre d'unités dans chaque couche
•...
Défi clé : comment sélectionner un modèle sans observer de manière répétée les données de test (ce qui entraîne un
surajustement) ?
14
Sélection des hyperparamètres du modèle : Décisions de conception du modèle
15
Sélection des hyperparamètres du modèle : Validation croisée
‣ À la i-ème itération, utilisez Fold_i comme ensemble de test et les autres comme
ensemble d'entraînement.
16
Sélection des hyperparamètres du modèle : Validation croisée (Limitez l'influence de la répartition des
ensembles de données)
Généralement,
sélectionnez les
hyperparamètres
qui conduisent aux
meilleurs résultats
globaux à travers
toutes les
partitions.
17
Sélection des hyperparamètres du modèle : Décisions de conception du modèle
18
Sélection des hyperparamètres du modèle : Répartition de la validation
‣ Sélection des hyperparamètres : tester les modèles entraînés avec différentes valeurs
d'hyperparamètres sur l'ensemble de validation pour trouver le meilleur
‣ Modèle final : réentraîner en utilisant les hyperparamètres du modèle sélectionnés à partir des tests
sur l'ensemble de validation en utilisant les données des divisions d'entraînement ET de validation
19
Perceptron multi-couches pour la
classification
20
Classification : Images
21
Classification : Images
22
Classification : Images
23
Transformation des images en tenseurs
24
Transformation des images en tenseurs
25
Perceptron multicouche - réseaux neuronaux profonds
• Chaque couche est entièrement connectée à la suivante. Les données ne circulent
que dans le sens forward :
26
Encodage one-hot : De la régression à la classification
0 == [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
4 = = [0, 0, 0, 0, 1, 0, 0, 0, 0, 0] 1 == [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]
2 == [0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
3 == [0, 0, 0, 1, 0, 0, 0, 0, 0, 0]
4 == [0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
5 == [0, 0, 0, 0, 0, 1, 0, 0, 0, 0]
6 == [0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
7 == [0, 0, 0, 0, 0, 0, 0, 1, 0, 0]
8 == [0, 0, 0, 0, 0, 0, 0, 0, 1, 0]
9 == [0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
27
Encodage one-hot
28
Activation Softmax
29
Categorical Cross-Entropy
30
Mesures de performance pour la classification
• Confusion Matrix
• Classification Accuracy
• Precision
• Recall
• F1 Score
31
Mesures de performance pour la classification : Confusion Matrix
‣ Pour simplifier, nous aborderons principalement le sujet sous la forme d’un problème
de classification binaire. Par exemple, il s'agira de déterminer si une image représente
un chat ou un chien, ou de diagnostiquer si un patient a un cancer (positif) ou est en
bonne santé (négatif).
32
Mesures de performance pour la classification : Confusion Matrix
33
Mesures de performance pour la classification : Confusion Matrix (Classification Accuracy)
‣ La métrique la plus couramment utilisée pour juger un modèle et n'est en fait pas un indicateur clair de la performance. Le pire se produit lorsque les classes sont
déséquilibrées.
TP + TN NumberOfCorrectPredictions
Accuracy =
TP + FP + TN + FN TotalNumberOfPredictionsMade
‣ Prenons l'exemple d'un modèle de détection du cancer : les probabilités d’avoir un cancer sont très faibles.
• Par exemple, sur un groupe de 100 personnes :
➡ 90 d'entre elles n'ont pas de cancer,
➡ tandis que 10 en sont effectivement atteintes.
• L’objectif est de ne surtout pas manquer un patient atteint de cancer qui ne serait pas détecté (faux négatif). Si le modèle prédit que personne n’a de cancer,
il atteindra une précision de 90 %, car il aura correctement identifié les 90 personnes non atteintes. Cependant, il n'aura pas réellement accompli de
détection utile : il aura simplement ignoré les cas de cancer pour toutes les prédictions.
34
Mesures de performance pour la classification : Confusion Matrix (Precision)
‣ Prenez-le comme pour savoir «à quel point le modèle est juste quand il dit qu’il
est juste».
TP
TP + FP
35
Mesures de performance pour la classification : Confusion Matrix (Recall/Sensitivity/True Positive
Rate)
‣ Pourcentage d'instances positives par rapport au nombre total d'instances
positives réelles. Par conséquent, le dénominateur (TP + FN) est ici le nombre réel
d'instances positives présentes dans l'ensemble de données.
TP
TP + FN
36
Mesures de performance pour la classification : Confusion Matrix (F1 score)
‣ C'est la moyenne harmonique de précision et de rappel. Cela prend la contribution des deux, donc
plus le score F1 est élevé, mieux c'est.
2 2 * precision * recall
=
1
+
1 precision + recall
precision recall
• Notez que, du fait de la multiplication dans le numérateur, une faible valeur entraîne une
diminution marquée du score F1 final.
• Ainsi, un modèle obtient un bon score F1 si les éléments prédits comme positifs sont réellement
positifs (précision) et s'il ne manque pas de positifs en les classant comme négatifs (rappel).
37
Réseaux de Neurones convolutionnels
(CNN)
38
Réseaux de Neurones convolutionnels (CNN)
39
Pourquoi les Réseaux de Neurones Convolutionnels (CNN) ?
o Les bases de données d'analyse comparative de l'apprentissage automatique tels que la base de données
MNIST de chiffres manuscrits conviennent à la plupart des formes d'ANN, en raison de sa dimensionnalité
d'image relativement petite de seulement 28 × 28.
o Avec cet base de données, un seul neurone dans la première couche cachée contiendra 784 poids ( 28 × 28
× 1 où 1 sachez que MNIST est normalisé à des valeurs en noir et blanc uniquement), ce qui est gérable pour
la plupart des formes d'ANN.
40
Comment classifier des images?
[Link]
41
Comment classifier des images?
Pixel 1
Pixel 2
Pixel 3
Pixel 4
Pixel 5
linéarisation
Pixel 6
Pixel 7
Pixel 8
Pixel 9
Pixel 10
Pixel 11
Pixel 12
Pixel 13
Pixel 14
Pixel 784
10 neurones [Link]
42
Beaucoup de paramètres (7850 paramètres dans la
couche 1)
Pixel 1
Pixel 2
Pixel 3
Pixel 4
Pixel 5
Pixel 6
Pixel 7
Pixel 8
Pixel 9
Pixel 10
Pixel 11
Pixel 12
Pixel 13
Pixel 14
Pixel 784
10 neurones [Link]
43
Beaucoup trop de paramètres (655,370 paramètres dans la
couche 1)
Pixel 1
Pixel 2
Pixel 3
Pixel 4
Pixel 5
Pixel 6
Pixel 7
Pixel 8
Pixel 9
Pixel 10
Pixel 11
Pixel 12
256x256
Pixel 13
Pixel 14
Pixel 65536
44
Beaucoup TROP de paramètres (160M de paramètres dans la couche 1)
Pixel 1
Pixel 2
Pixel 3
Pixel 4
Pixel 5
Pixel 6
Pixel 7
Pixel 8
Pixel 9
Pixel 10
Pixel 11
Pixel 12
256x256x256 Pixel 13
Pixel 14
Pixel 160M
45
Problème:
Les couches pleinement connectées (fully-connected layers)
sont problématiques lorsque le nombre de neurones est élevé.
S Fθ1 (x )∈ [0,1]
S Fθ2 (x )∈ [0,1]
(...) (...)
S Fθ4 (x )∈ [0,1]
150-D en entrée avec 150 neurones dans la 1ère couche => 22,500 parametres dans la
couche cachée !!
46
Comment réduire le nombre de connections?
47
Solution : connexions partielles
150-D en entrée avec 148 neurones dans la 1ère couche => 444 paramètres dans la
première couche!!
48
Paramètres partagés : les neurones de la couche 1 partagent les
mêmes poids
w01
w11
w12
w02
w12
(...) w22 S
(...) Convolution
w 1
w02
S
w11
0 (...)
w12
w12
w22 S
(...)
w02
(...)
w12 S
w10
w11 w22
1
w 2
150-D en entrée avec 148 neurones dans la 1ère couche => 3 paramètres dans la couche
d’entrée!!
Faible nombre de paramètres = on peut augmenter la profondeur!
49
Filtage 2D ( x ∗ W )(i, j ) = ∑∑ f (i + u , j + v)W (u , v)
(sans flip de filtre) u v
x(i, j ) W (u, v)
w1 w2 w3
i − 1, i − 1 i, j − 1 i + 1, j − 1 w4 w5 w6
i − 1, j (i, j ) i + 1, j w7 w8 w9
x − 1, y + 1 x , y + 1 i + 1, j + 1
50
Couche de convolution : Exemple du produit de convolution
Convolution
Simple convolution d’une matrice (5x5) avec un noyau (3x3)
51
Couche de convolution : Exemple du produit de convolution dans RGB
52
Couche de convolution : Fonction d’activation
53
Convolution 2D : Stride Filtre = 3x3
7
Stride = 1
54
Convolution 2D : Stride Filtre = 3x3
7
Stride = 1
55
Convolution 2D : Stride Filtre = 3x3
7
Stride = 1
56
Convolution 2D : Stride Filtre = 3x3
7
Stride = 1
57
Convolution 2D Filtre = 3x3
7
Stride = 1
58
Convolution 2D Filtre = 3x3
7
Stride = 2
59
Convolution 2D Filtre = 3x3
7
Stride = 2
60
Convolution 2D Filtre = 3x3
7
Stride = 2
61
Convolution 2D Filtre = 3x3
7
Stride = 3
62
Convolution 2D Filtre = 3x3
7
Stride = 3
63
Convolution 2D Filtre = 3x3
7 Stride = 3
? ?
? ?
? ?
7
64
Convolution 2D
D1
Doit être un entier
F2
F1 D2
65
Parfois on souhaite que le nombre de neurones dans la carte
d’activation soit le même que la couche précédente ? 10 20-30 40 -50
× × ×
Comment gérer les bords? .1 .2 .3
66
Chaque filtre a un travail; certains d'entre eux détectent les bords certains d'entre eux ne détectent que
les lignes horizontales. La tâche du filtre devient plus complexe dans les couches profondes du réseau
convolutionnel.
67
Différents filtres =
différentes cartes d’activation
(
h x ∗ W0 ) ⎛ −1 − 1 − 1⎞
⎜ ⎟
⎜ − 1 8 − 1⎟
⎜ − 1 − 1 − 1⎟ ⎛ 0 −1 0 ⎞
⎝ ⎠ ⎜ ⎟
(
h x ∗W1 ) ⎜ − 1 5 − 1⎟
⎜ 0 −1 0 ⎟
⎝ ⎠
⎛1 1 1 1 1⎞
⎜ ⎟
⎜1 1 1 1 1⎟
(
h x ∗W2 ) ⎜1
⎜
⎜1
⎜
1 1 1 1 ⎟ / 25
1 1 1 1⎟
⎟
⎟
⎝1 1 1 1 1⎠
(
h x ∗W3 )
68
4 filtres = Couche convolutionnelle avec 4 cartes d’activation
69
K filtres = Couche convolutive avec K cartes d’activation
70
Ex.: taille de filtre : 5x5, 5 cartes d’activation, convolution « same »
100 lignes
(hauteur)
100 colonnes
(largeur)
71
Représentation schématique
(1 filtre et 1 carte d’activation, convolution « same »)
Image: 100x100x1
Filtre : 5x5x1
Stride : 1
100 100
5
5
1
0
0
10
1 1 10
72
Représentation schématique
(2 filtres et 2 cartes d’activation, convolution « same »)
Image: 100x100x1
Filtre : 5x5x1
Stride : 1
100 100
5
5
1
0
0
10
10
1 1 1
73
Représentation schématique
(6 filtres et 6 cartes d’activation, convolution « same »)
6 cartes d’activation
Image: 100x100x1
Filtre : 5x5x1
Stride : 1
100 100
Couche
convolutive
Combien de neurones
et de paramètres
0
0
10
10
au total?
1 6
74
Représentation schématique
(6 filtres et 6 cartes d’activation, convolution « same »)
6 cartes d’activation
Image: 100x100x1
Filtre : 5x5x1
Stride : 1
100 100
Couche
convolutive 100x100x6=60,000 neurones
6x5x5x1=150 paramètres
0
0
10
10
1 6
75
Représentation schématique simplifiée
(6 filtres et 6 carte d’activation, convolution « same »)
6 cartes d’activation
(bloc convolutif)
Image: 100x100x1
Filtre : 5x5x1
Stride : 1
100 100
Couche
convolutive 100x100x6=60,000 neurones
6x5x5x1=150 paramètres
0
0
10
10
1 6
76
Représentation schématique simplifiée
(6 filtres et 6 carte d’activation, convolution « valid »)
6 cartes d’activation
(bloc convolutif)
Image: 100x100x1
Filtre : 5x5x1
Stride : 1
100 96
96
10
6
1
77
Représentation schématique simplifiée
(6 filtres et 6 carte d’activation, convolution « valid »)
6 cartes d’activation
(bloc convolutif)
Image: 100x100x1
Filtre : 5x5x1
Stride : 1
100 96
Couche
convolutive 96x96x6=55,296 neurones
6x5x5x1=150 paramètres
0
96
10
6
1
78
Image noir/blanc vs. couleur
[Link]
[Link]
79
Représentation schématique images couleurs
(ex.: images RGB de CIFAR10
convolution « same »)
6 cartes d’activation
Image: 32x32x3 (bloc convolutif)
Filtre : 5x5x3
Stride : 1 Exemples cifar10
32 32
3 6 32
80
Représentation schématique images couleurs
(ex.: images RGB de CIFAR10
convolution « same »)
6 cartes d’activation
Image: 32x32x3 (bloc convolutif)
Filtre : 5x5x3
Stride : 1 Exemples cifar10
32 32
Couche
convolutive
32x32x6=6,144 neurones
6x5x5x3=450 paramètres
32
3 6 32 "channel out"
"channel in"
81
Représentation schématique images couleurs
(ex.: images RGB de CIFAR10
convolution « same »)
6 cartes d’activation
Image: 32x32x3
(bloc convolutif)
Filtre : 5x5x3
Stride : 1 Exemples cifar10
32 32
Couche
convolutive Qu’arrivera-t-il si on
utilise une stride de 3?
32
3 6 32
82
Représentation schématique images couleurs
(ex.: images RGB de CIFAR10
convolution « same »)
6 cartes d’activation
Image: 32x32x3
(bloc convolutif)
Filtre : 5x5x3
Stride : 3 Exemples cifar10
32
? (D-F)/S+1
Couche
convolutive
=
(32-5)/3+1=10
?
?
32
83
Représentation schématique images couleurs
(ex.: images RGB de CIFAR10
convolution « same »)
6 cartes d’activation
Image: 32x32x3 (bloc convolutif)
Filtre : 5x5x3
Stride : 3 Exemples cifar10
32
10
Couche
convolutive 10x10x6=600 neurones
10
6
6x5x5x3=450 paramètres
32
84
Tout comme un Perceptron multi-couches, un
réseau à convolution contient plusieurs couches
consécutives
85
Exemple : 3 filtres couche 1 : taille 7 Convolution « same »
5 filtres couche 2 : taille 5 Stride 1
4 filtres couche 3 : taille 5
Couche 1 Couche 2 Couche 3
100 neurones
86
Exemple : 3 filtres couche 1 : taille 7
Convolution « same »
5 filtres couche 2 : taille 5
Stride 1
4 filtres couche 3 : taille 5
Couche 1 Couche 2 Couche 3
100 neurones
90 neurones
86 neurones
94 neurones
88
Exemple : 3 filtres couche 1 : taille 7 Convolution « valid »
5 filtres couche 2 : taille 5 Stride 1
4 filtres couche 3 : taille 5
Couche 1 Couche 2 Couche 3
100 neurones
32 32 32 32
32
32
32
32
3 3 5 4
90
Image RGB : couche 1 : 3 filtres de taille 7x7
couche 2 : 5 filtres de taille 9x9
couche 3 : 4 filtres de taille 11x11
Image: 32x32x3 convolution « same »
Stride : 1
32 32 32 32
32
32
32
32
3 3 5 4
12,288 neurones au total
4,076 paramètres au total
91
Image RGB : couche 1 : 3 filtres de taille 7x7
couche 2 : 5 filtres de taille 9x9
couche 3 : 4 filtres de taille 11x11
Image: 32x32x3 convolution « valid »
Stride : 1
32
26 18
8
8
4
18
26
5
32
3
3
92
Image RGB : couche 1 : 3 filtres de taille 7x7
couche 2 : 5 filtres de taille 9x9
couche 3 : 4 filtres de taille 11x11
Image: 32x32x3 convolution « valid »
Stride : 1
32
26 18
8
8
4
18
26
5
32
3
3
3,904 neurones au total
4,076 paramètres au total
93
Tout comme un Perceptron multi-couches, un
réseau à convolution se termine par une couche de
sortie avec 1 neurone par variable prédite
94
Flattening
95
Full Connection
• C'est là que les réseaux de neurones artificiels et les réseaux de neurones convolutifs se heurtent lorsque nous ajoutons
les premiers à nos seconds.
• C'est ici que le processus de création d'un réseau neuronal convolutif commence à prendre un tour plus complexe et
sophistiqué.
96
Full Connection
97
La couche softmax
▪zi sont les éléments du vecteur d'entrée et peuvent prendre n'importe quelle valeur réelle
▪K est le nombre de classes dans le classifieur multi-classes.
98
Image RGB : couche 1 : 3 filtres de taille 7x7
couche 2 : 5 filtres de taille 9x9
couche 3 : 4 filtres de taille 11x11 Hinge loss
convolution « valid »
Image: 32x32x3 4 classes de sortie
Stride : 1
32 256
26 18
8
(…)
8
4
18
26
5
3
32
3 Conv Couche
Conv Conv
Linéa- 1 pleinement
ReLU ReLU ReLU
risation connectée
(fully-connected layer)
99
Image RGB : couche 1 : 3 filtres de taille 7x7
couche 2 : 5 filtres de taille 9x9
couche 3 : 4 filtres de taille 11x11 Hinge loss
convolution « valid »
4 classes de sortie
Image: 32x32x3
Stride : 1
W [ 4]
W [1] W [ 2] W [ 3]
yW , 0 ( x)
32 256
26 18
8 yW ,1 ( x )
(…)
yW , 2 ( x)
8
4
18
26
5 yW ,3 ( x)
3
32
3
1
( (
yW ( x) = W [ 4 ] W [3] ∗ h W [ 2 ] ∗ h W [1] ∗ x ( )))
100
( ( (
yW ( x) = W [ 4 ] W [ 3] ∗ h W [ 2 ] ∗ h W [1] ∗ x )))
Filtres convolutifs
Matrice 4x256
101
Image RGB : couche 1 : 3 filtres de taille 7x7
couche 2 : 5 filtres de taille 9x9
Cross-entropy
couche 3 : 4 filtres de taille 11x11
loss
convolution « valid »
Image: 32x32x3 4 classes de sortie
Stride : 1
S yW , 0 ( x)
32 256 O
26 18
8 F yW ,1 ( x)
T
(…)
M yW , 2 ( x)
8
4 A
18
26
5 X yW ,3 ( x )
3
32
3
Nombre total de neurones? 1
102
Image RGB : couche 1 : 3 filtres de taille 7x7
couche 2 : 5 filtres de taille 9x9 Cross-entropy
couche 3 : 4 filtres de taille 11x11 loss
convolution « valid »
Image: 32x32x3 4 classes de sortie
Stride : 1
S yW , 0 ( x)
32 256 O
26 18
8 F yW ,1 ( x)
T
(…)
M yW , 2 ( x)
8
4 A
18
26
5 X yW ,3 ( x )
3
32
3
1
26x26x3 + 18x18x5 + 8x8x4 + 4
103
Image RGB : couche 1 : 3 filtres de taille 7x7
couche 2 : 5 filtres de taille 9x9
Cross-entropy
couche 3 : 4 filtres de taille 11x11
loss
convolution « valid »
Image: 32x32x3 4 classes de sortie
Stride : 1
S yW , 0 ( x)
32 256 O
26 18
8 F yW ,1 ( x)
T
(…)
M yW , 2 ( x)
8
4 A
18
26
5 X yW ,3 ( x )
3
32
3
1
3,908 neurones
104
Image RGB : couche 1 : 3 filtres de taille 7x7
couche 2 : 5 filtres de taille 9x9
couche 3 : 4 filtres de taille 11x11 Cross-entropy
convolution « valid » loss
Image: 32x32x3
4 classes de sortie
Stride : 1
S yW , 0 ( x)
32 256 O
26 18
8 F yW ,1 ( x)
T
(…)
M yW , 2 ( x)
8
4 A
18
26
5 X yW ,3 ( x )
3
32
3
Nombre total de paramètres? 1
105
Image RGB : couche 1 : 3 filtres de taille 7x7
couche 2 : 5 filtres de taille 9x9
Cross-entropy
couche 3 : 4 filtres de taille 11x11
loss
convolution « valid »
Image: 32x32x3 4 classes de sortie
Stride : 1
S yW , 0 ( x)
32 256 O
26 18
8 F yW ,1 ( x)
T
(…)
M yW , 2 ( x)
8
4 A
18
26
5 X yW ,3 ( x )
3
32
3
1
106
Image RGB : couche 1 : 3 filtres de taille 7x7
couche 2 : 5 filtres de taille 9x9
Cross-entropy
couche 3 : 4 filtres de taille 11x11
loss
convolution « valid »
Image: 32x32x3 4 classes de sortie
Stride : 1
S yW , 0 ( x)
32 256 O
26 18
8 F yW ,1 ( x)
T
(…)
M yW , 2 ( x)
8
4 A
18
26
5 X yW ,3 ( x )
3
32
3
1
5,100 paramètres
107
Pooling
108
Réduction de la taille des cartes d’activation
24
24
128
64
pooling
64
8
12
128
64 (Illustration pour une
pooling carte d’activation)
64
128
109
Max pooling
1 2 4 4 9 3 1 2
6 7 8 4 -3 -3 6 3
9 -9 8 -4 5 5 3 0 7 8 9 6
8 -8 9 -9 5 5 0 1 9 9 5 3
0 0 1 2 7 9 7 8 0 6 9 8
Max pool par filtre
-1 -3 3 6 8 8 7 6 2x2 avec stride =2 9 8 7 4
9 9 8 2 1 5 -1 -1
1 1 -2 8 3 7 4 -2
110
Mean pooling
1 2 4 4 9 3 1 2
6 7 8 4 -3 -3 6 3
9 -9 8 -4 5 5 3 0 4 5 3 4
8 -8 9 -9 5 5 0 1 0 1 5 1
0 0 1 2 7 9 7 8 -1 8 8 7
Moyenne par filtre
-1 -3 3 6 8 8 7 6 2x2 avec stride =2 5 4 4 1
9 9 8 2 1 5 -1 -1
1 1 -2 8 3 7 4 -2
111
Global pooling
Max ou Mean pooling « valid » avec un filtre de la taille des canaux
100
1
1
Global pooling 8
(max ou mean)
0
10
8
112
Illustration d’un CNN complet
113