0% ont trouvé ce document utile (0 vote)
27 vues113 pages

Comprendre les CNN et le surajustement

Le document traite des réseaux de neurones convolutionnels (CNN) dans le cadre du deep learning, en se concentrant sur la capacité des modèles à éviter le surajustement et le sous-ajustement. Il aborde également la sélection des hyperparamètres, les techniques de validation croisée et les mesures de performance pour la classification. Enfin, il explique l'importance de la complexité du modèle pour généraliser efficacement sur des données non observées.

Transféré par

Zakaria Douih
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
27 vues113 pages

Comprendre les CNN et le surajustement

Le document traite des réseaux de neurones convolutionnels (CNN) dans le cadre du deep learning, en se concentrant sur la capacité des modèles à éviter le surajustement et le sous-ajustement. Il aborde également la sélection des hyperparamètres, les techniques de validation croisée et les mesures de performance pour la classification. Enfin, il explique l'importance de la complexité du modèle pour généraliser efficacement sur des données non observées.

Transféré par

Zakaria Douih
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Deep Learning : Les Réseaux de Neurones

convolutionnels (CNN)

A.U. 2024 - 2025

1
Apprentissage des réseaux de
neurones

2
Objectif du Deep Learning

Puisque les réseaux neuronaux peuvent théoriquement représenter N'IMPORTE


quelle fonction, comment apprenons-nous à créer des modèles performants
pour les données générées dans des problèmes du monde réel...

3
Capacité du modèle

Quel modèle choisiriez-vous pour séparer x de o ?

(a) (b) (c)

4
Capacité du modèle Défi majeur pour les réseaux neuronaux
en raison de leur grand nombre de
paramètres

Sous-ajustement : trop simple Sur-ajustement : trop complexe pour


pour expliquer les données généraliser à un ensemble de test

(a) (b) (c)

5
Capacité du modèle : Sur-ajustement

• Qu'apprennent les modèles qui surajustent ?

• Comment modéliser le bruit !

• Quelles pourraient être les causes du bruit dans un


ensemble de données ?

6
Capacité du modèle : Sur-ajustement

‣ Pour détecter le sur-ajustement, analysez l'erreur/la perte des modèles


testés sur les données d'entraînement et les données de test.

• Qu'arrive-t-il à l'erreur des données d'entraînement lorsque le nombre


d'étapes d'entraînement augmente ?
➡ L'erreur diminue.
• Qu'arrive-t-il à l'erreur des données de test lorsque le nombre d'étapes
d'entraînement augmente ?
➡ L'erreur diminue puis augmente.
• Pourquoi l'erreur d'entraînement diminue-t-elle et l'erreur de test
augmente-t-elle ?
➡ La modélisation du bruit dans les données d'entraînement (c'est-à-dire le « sur-
ajustement") réduit l'erreur d'entraînement au détriment de la perte de
connaissances qui généraliseraient aux données de test non observées.

7
Capacité du modèle : Comment éviter le surajustement ?

Ajouter des données


d'entraînement
Arrêt précoce
Une solution : Utiliser ce modèle

Beaucoup plus de techniques seront discutées dans ce cours...


8
Capacité du modèle

Sous-ajustement : trop simple Sur-ajustement : trop complexe pour


pour expliquer les données généraliser à un ensemble de test

(a) (b) (c)

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)

• Que se passe-t-il à l'erreur des données d'entraînement


à mesure que le nombre d'étapes d'entraînement
augmente ?

➡L'erreur reste élevée

• Que se passe-t-il à l'erreur des données de test à


mesure que le nombre d'étapes d'entraînement
augmente ?

➡L'erreur reste élevée

10
Capacité du modèle : Comment éviter le sous-ajustement ?

Augmenter la complexité de la représentation, par exemple en


ajoutant le nombre de couches et/ou d'unités dans un réseau
neuronal.

11
Capacité du modèle

Objectif : apprendre un modèle avec une capacité ni trop petite ni trop


grande afin qu'il puisse bien généraliser lors de la prédiction sur des
données de test précédemment non observées.

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

Hyperparamètres du modèle (sélectionnés) ; par exemple,

• Nombre de couches
Paramètres du modèle (trainer)
• Nombre d'unités dans chaque couche

• Fonction d'activation Poids


Biais
• Taille du lot (batch size)

• Taux d'apprentissage (learning rate)

•...

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

Pour des résultats statistiquement solides :

Petit ensemble de données


Sinon : division entraînement/validation
d'entraînement : validation croisée

15
Sélection des hyperparamètres du modèle : Validation croisée

‣ Validation croisée (k-fold, où k = 10 est le plus populaire)

‣ Partitionnez les données de manière aléatoire en k sous-ensembles mutuellement


exclusifs, chacun ayant une taille approximativement égale.

‣ À 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

Pour des résultats statistiquement solides :

Petit ensemble de données


Sinon : division entraînement/validation
d'entraînement : validation croisée

18
Sélection des hyperparamètres du modèle : Répartition de la validation

‣ Diviser les données d'entraînement en ensembles "entraînement" et « 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

• Élargir ce que vous connaissez

21
Classification : Images

• Élargir ce que vous connaissez

22
Classification : Images

• Élargir ce que vous connaissez

23
Transformation des images en tenseurs

• Pour une utilisation dans un perceptron multicouche

24
Transformation des images en tenseurs

• Pour une utilisation dans un perceptron multicouche

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

• En introduisant les encodages "1-hot" (encodage one-hot).

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

• En introduisant les encodages "1-hot" (encodage one-hot).

28
Activation Softmax

•Les sorties qui se totalisent à 1.

•[0,04, 0,01, 0, 0,03, 0,89, 0, 0,01, 0, 0, 0,02]

•Ces chiffres s'additionnent pour atteindre un total de 1.

29
Categorical Cross-Entropy

• Une autre fonction de coût sophistiquée

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).

‣ Certains termes courants pour être clairs sont:


✓ True positives (TP): Predicted positive and are actually positive.
✓ False positives (FP): Predicted positive and are actually negative.
✓ True negatives (TN): Predicted negative and are actually negative.
✓ False negatives (FN): Predicted negative and are actually positive.

32
Mesures de performance pour la classification : Confusion Matrix

‣ Il s’agit simplement d’une représentation des paramètres en haut dans un format


matriciel. Une meilleure visualisation est toujours bonne :)

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.

‣ Il est donc clair que nous avons besoin de meilleures alternatives.

34
Mesures de performance pour la classification : Confusion Matrix (Precision)

‣ Pourcentage d'instances positives parmi toutes celles que le modèle a prédites


comme positives dans l'ensemble de données fourni. Ici, le dénominateur
correspond aux prédictions positives du modèle.

‣ 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.

‣ Prenez-le comme pour découvrir «combien de bons supplémentaires, le modèle


a manqué quand il a montré les bons».

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

Image médicale (IRM de cerveau) [Link]

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

Image médicale 3D (IRM de cerveau) [Link]

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θ3 (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

( x ∗W )(i, j ) = w1 x(i − 1, j − 1) + w2 x(i, j − 1) + w3 x(i + 1, j − 1)


+ w4 x(i − 1, j ) + w5 x(i, j ) + w6 x(i + 1, j )
+ w7 x(i − 1, j + 1) + w8 x(i, j + 1) + w9 x(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

Taille de la carte d’activation


(pour stride 1) = 5x5

58
Convolution 2D Filtre = 3x3
7
Stride = 2

59
Convolution 2D Filtre = 3x3
7
Stride = 2

60
Convolution 2D Filtre = 3x3
7
Stride = 2

Taille de la carte d’activation


(pour stride 2) = 3x3

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

Combinaison D-F-S invalide!

64
Convolution 2D
D1
Doit être un entier

F2

F1 D2

Taille de la carte d’activation :


((D1-F1)/S ) +1 x
((D2-F2)/S ) +1

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

Option 1 : Ajout de zéros (« zero padding » remplacer ? par 0)


f(u) (f*W)(u)
0 10 20-30 40 -50 0 8 -4 8 -10 -6

Option 2 : Réflexion (« reflexion padding »)


f(u) (f*W)(u)
20 10 20-30 40 -50 40 10 -4 8 -10 2

Option 3 : Étirement (« stretching padding »)


f(u) (f*W)(u)
10 10 20-30 40 -50-50 9 -4 8 -10 -21

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.

Par exemple, la première couche du


réseau peut détecter uniquement les
lignes horizontales

Tandis que ce filtre supprime tous


sauf les lignes vérticales

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)

• 10,000 neurones par carte d’activation


• 50,000 neurones au total
• 5x5x5 = 125 paramètres au total

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

Couche Combien de neurones


convolutive et de paramètres
au total?
0

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]

1 "canal" (channel) 3"canaux" (channels)

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

Couche Combien de neurones


convolutive et de paramètres
au total?
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

x Conv Conv Conv (…)


ReLU ReLU ReLU

3x100=300 neurones 5x100=500 neurones 4x100=400 neurones


7x3 = 21 paramètres 5x5x3=75 paramètres 4x5x5=100 paramètres

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

x Conv Conv Conv (…)


ReLU ReLU ReLU

Pour ces 3 couches convolutionnelles


• 1200 neurones au total
• 196 paramètres au total
87
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

90 neurones

86 neurones
94 neurones

x Conv Conv Conv (…)


ReLU ReLU ReLU

3x(100-7+1)=282 neurones 5x(94-5+1)=450 neurones 4x(90-5+1)=344 neurones


7x3 = 21 paramètres 5x5x3 = 75 paramètres 4x5x5 = 100 paramètres

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

x Conv Conv Conv (…)


ReLU ReLU ReLU

Pour ces 3 couches convolutionnelles


• 1076 neurones au total
• 196 paramètres au total
89
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

3x(32x32)=3,072 neurones 5x(32x32)=5,120 neurones 4x(32x32)=4,096 neurones


3x7x7x3 = 441 paramètres 5x9x9x3 = 1,215 paramètres 4x11x11x5 = 2,420 paramètres

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

3x(26x26)=2,028 neurones 5x(18x18)=1,620 neurones 4x(8x8)=256 neurones


3x7x7x3 = 441 paramètres 5x9x9x3 = 1,215 paramètres 4x11x11x5 = 2,420 paramètres

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

Cette étape est simple.


Après avoir terminé les deux étapes précédentes, nous sommes censés
avoir une carte des fonctionnalités regroupées maintenant. Aplatir notre
carte d'entités regroupées dans une colonne comme dans l'image.

La raison pour laquelle nous faisons cela est


que nous allons devoir insérer ces données
dans un réseau neuronal artificiel plus tard.

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.

Dans ce cas K=2

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

3x7x7x3 + 5x9x9x3 + 4x11x11x5 + 256x4

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

Résultat : un vecteur de la taille du nombre de canaux

100
1

1
Global pooling 8
(max ou mean)
0
10

8
112
Illustration d’un CNN complet

Crédit : cs231 Stanford

113

Vous aimerez peut-être aussi