introduction aux rÉseaux de neurones

59
INTRODUCTION AUX RÉSEAUX DE NEURONES Réseaux de neurones convolutifs («CNN» : Convolutional neural networks ) Pascal Germain*, 2019 * Merci spécial à Philippe Giguère pour m’avoir permis de réutiliser une partie de ces transparents.

Upload: others

Post on 16-Oct-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INTRODUCTION AUX RÉSEAUX DE NEURONES

INTRODUCTION AUXRÉSEAUX DE NEURONES

Réseaux de neurones convolutifs

(«CNN» : Convolutional neural networks)

Pascal Germain*, 2019

* Merci spécial à Philippe Giguère pour m’avoir permis de réutiliser une partie de ces transparents.

Page 2: INTRODUCTION AUX RÉSEAUX DE NEURONES

Réseau pleinement connecté(fully connected)

Aussi appelé perception multi-couches(multi-layers perceptron – MLP)

2

Vectorisation (flatten) de l’image

Image 32x32x3

1x3072

• Vectorisation détruit :– relations spatiales– canaux de couleurs

W1 : h1 ´ 3072

h1

W2

Page 3: INTRODUCTION AUX RÉSEAUX DE NEURONES

La connaissance du problème influence

la conception de l’architecture

• Les images possède une structure 2D• Forte corrélation locale dans les valeurs

des pixels

3

Page 4: INTRODUCTION AUX RÉSEAUX DE NEURONES

207 210 195 63 57 56 59

204 212 197 82 76 74 75

202 198 202 72 65 67 63

209 201 187 78 69 71 64

-533 -517 -28

-29 -505 -513 -25

I * F

1

1 0 1

2 0 2

1 0 1

F

Exemple « convolution »

-26

Appellation de Filtre (Filter), ou Noyau (Kernel)

Page 5: INTRODUCTION AUX RÉSEAUX DE NEURONES

Exemples de filtres calibrés manuellement

5

Détection bordure

Flou

Bordure verticale

Bordure horizontale

Adapté du cours de Design III de l’Université Laval (P. Hébert, D. Laurendeau)

5x5 15x15

1 0 1

1 0 1

1 0 1

1 1 1

0 0 0

1 1 1

1 1

1

1 1 1

Page 6: INTRODUCTION AUX RÉSEAUX DE NEURONES

• Vont extraire des features de bas niveau– Filtres Gabor :

– Filtres de bordure, ondelettes• Longtemps été un domaine de recherche

• Comme les filtres CNN sont différentiables, le réseau pourra les modifier à sa convenance– les ajuster pour maximiser les performances sur les

données d’apprentissage

Filtres

Mat

hWor

ks

orientation

fréqu

ence

Page 7: INTRODUCTION AUX RÉSEAUX DE NEURONES

Exemple de convolution

http://setosa.io/ev/image-kernels/

Page 8: INTRODUCTION AUX RÉSEAUX DE NEURONES

Conceptsen une dimension

8

x

Page 9: INTRODUCTION AUX RÉSEAUX DE NEURONES

Filtre :[ 1/3, 1/3, 1/3 ]

x

Page 10: INTRODUCTION AUX RÉSEAUX DE NEURONES

Filtre :[ -1, 0, 1 ]

x

Page 11: INTRODUCTION AUX RÉSEAUX DE NEURONES

Filtre :[ 1, 0, -1 ]

x

Page 12: INTRODUCTION AUX RÉSEAUX DE NEURONES

Pourquoi un filtre de taille impaire ?

• Pas de pixel « milieu » pour filtre taille paire• Exemple :

12

filtre taille 5 filtre taille 6La résultante est

imputée à un seul pixel de l’image en sortie

La résultante tombe à cheval entre des pixels

de l’image en sortie

(à titre informatif)

Page 13: INTRODUCTION AUX RÉSEAUX DE NEURONES

Couchepleinementconnectée

Filtre : [ w1 , w

2 , w

3 ]

Couchede convolution w

1 w

2 w

3 0 0 0

0 w1

w2

w3 0 0

0 0 w1

w2

w3 0

0 0 0 w1

w2

w3

Équivalent à

Succession de couchesconvolution → pleinement connectée

Page 14: INTRODUCTION AUX RÉSEAUX DE NEURONES

Couch

e

pleine

men

t

conn

ecté

e

Couche de convolution de deux filtres

Filtre 1 : [ w11

, w12

, w13

]Filtre 2 : [ w

21 , w

22 , w

23 ]

Plusieurs filtres pour une couche de convolution

vectorisation

Page 15: INTRODUCTION AUX RÉSEAUX DE NEURONES

Cou

che

plei

nem

ent

conn

ecté

e

1ère couchede convolution

(quatre filtres de taille 1x3)

2e couchede convolution

(deux filtres de taille 3x3)

w111

, w112

, w113

w

121 , w

122 , w

123

w132

, w132

, w133] [

w211

, w212

, w213

w

221 , w

222 , w

223

w232

, w232

, w233] [

Filtre 1 :

Filtre 2 :

(vectorisation)

Succession de couchesconvolution → convolution

Page 16: INTRODUCTION AUX RÉSEAUX DE NEURONES

x

ReLU

Filtre 1: [ 1/3, 1/3, 1/3 ]Filtre 2: [ -1, 0, 1 ]Filtre 3: [ 1, 0 , -1 ]

Fonction d’activation

Activation

Valeurs de la couche cachée

Page 17: INTRODUCTION AUX RÉSEAUX DE NEURONES

Couches de convolutions sur des images en couleurs

17

Photo de Sergueï Prokoudine-Gorski voir https://fr.wikipedia.org/wiki/Sergue%C3%AF_Prokoudine-Gorski

Page 18: INTRODUCTION AUX RÉSEAUX DE NEURONES

Filtres convolutifs

18

332

32 3 55

adapté de : cs231n, Université Stanford

Une image couleur possède typiquement C = 3 canaux (RGB) :

Page 19: INTRODUCTION AUX RÉSEAUX DE NEURONES

• Conserve la structure spatiale/couleur de l’entrée

19

332

32 3 55

adapté de : cs231n, Université Stanford

Profondeur du filtre est TOUJOURS la même que pour l’image/tenseur

en entrée de la couche

3

3

Filtres convolutifs

Page 20: INTRODUCTION AUX RÉSEAUX DE NEURONES

• « Glisser » spatialement le filtre F sur l’image, en calculant produit scalaire à chaque endroit de x

20

332

321 valeur

5

5

3

adapté de : cs231n, Université Stanford

F1 w1Tx(:)+b1

Filtres convolutifs

Page 21: INTRODUCTION AUX RÉSEAUX DE NEURONES

21

332

325

5

3

adapté de : cs231n, Université Stanford

F11 valeur

w1Tx(:)+b1

• « Glisser » spatialement le filtre F sur l’image, en calculant produit scalaire à chaque endroit de x

Filtres convolutifs

Page 22: INTRODUCTION AUX RÉSEAUX DE NEURONES

22

332

325

5

3

adapté de : cs231n, Université Stanford

F1

1 valeurw1

Tx(:)+b1

• « Glisser » spatialement le filtre F sur l’image, en calculant produit scalaire à chaque endroit de x

Filtres convolutifs

Page 23: INTRODUCTION AUX RÉSEAUX DE NEURONES

23

332

32

adapté de : cs231n, Université Stanford

28

28

1

« mesure » la présence du feature F1 à cet endroit de l’image.

feature map F1

• Sortie : feature map

(Note : la taille de sortie est différente ici…)

Filtres convolutifs

Page 24: INTRODUCTION AUX RÉSEAUX DE NEURONES

Banque de filtres convolutifs

24

332

32

adapté de : cs231n, Université Stanford

28

28

feature map F2

2

F2

Page 25: INTRODUCTION AUX RÉSEAUX DE NEURONES

25

332

32

adapté de : cs231n, Université Stanford3

feature map F3

28

28

F3

Banque de filtres convolutifs

Page 26: INTRODUCTION AUX RÉSEAUX DE NEURONES

26

332

32

adapté de : cs231n, Université Stanford

28

28

8

F8

feature map F8

Banque de filtres convolutifs

Page 27: INTRODUCTION AUX RÉSEAUX DE NEURONES

Résultante

27

28

28

8

Tenseur ordre 3

Page 28: INTRODUCTION AUX RÉSEAUX DE NEURONES

28

828

28

• Applique la fonction d’activation sur chaque entrée, individuellement

ReLU

Résultante

Page 29: INTRODUCTION AUX RÉSEAUX DE NEURONES

29

On recommence, avec une banque de filtres différents

8 33

26

26…

Produitscalaire

828

28(2)

1F

Succession de couches de convolutions

Page 30: INTRODUCTION AUX RÉSEAUX DE NEURONES

30

332

32

adapté de : cs231n, Université Stanford

conv 8 filtres5x5x3

+ ReLU

828

28

32

24

24

conv16 filtres3x3x32+ ReLU

conv32 filtres

5x5x8+ ReLU

Page 31: INTRODUCTION AUX RÉSEAUX DE NEURONES

Réduction # paramètres

31

332

32

adapté de : cs231n, Université Stanford

conv + ReLU,8 filtres5x5x3

828

28

Combien de paramètres pour une couche pleinement connectée ?Couche d’entrée : 32x32x3 = 3072 neuronesCouche cachée: 28x28x8 = 6272 neuronesTotal : 3072x6272 =19,267,584 paramètres

filtres

(5x5x3) x 8 = 600

Combien de paramètres pour cette couche?

3 55

• Perte de capacité d’expression vs. couche pleinement connectée– on ne peut pas établir de lien entre

les pixels très éloignés• Réduction importante du

nombre de paramètre

Page 32: INTRODUCTION AUX RÉSEAUX DE NEURONES

32(I. Goodfellow) deeplearningbook.org

Hiérarchiede filtres

Perme d’établir des liens entre des pixels de plus en plus éloignés

Page 33: INTRODUCTION AUX RÉSEAUX DE NEURONES

Effet de bord: changement de dimensions

33

filtre 3x3xCproduit scalaire sur le volume

Csortie

entrée 7x7xC

Page 34: INTRODUCTION AUX RÉSEAUX DE NEURONES

34

filtre 3x3xC

C

produit scalaire sur le volume

sortieentrée 7x7xC

Effet de bord: changement de dimensions

Page 35: INTRODUCTION AUX RÉSEAUX DE NEURONES

35

filtre 3x3xC

C

produit scalaire sur le volume

sortieentrée 7x7xC

Effet de bord: changement de dimensions

Page 36: INTRODUCTION AUX RÉSEAUX DE NEURONES

36

filtre 3x3xC

C

produit scalaire sur le volume

sortieentrée 7x7xC

Effet de bord: changement de dimensions

Page 37: INTRODUCTION AUX RÉSEAUX DE NEURONES

37

entrée 7x7xCsortie

filtre 3x3xC

C

produit scalaire sur le volume

Effet de bord: changement de dimensions

Page 38: INTRODUCTION AUX RÉSEAUX DE NEURONES

38

C sortie 5x5

entrée 7x7xCsortie

Effet de bord: changement de dimensions

Page 39: INTRODUCTION AUX RÉSEAUX DE NEURONES

Quelques questions!• Si j’ai une image de 224x224x3 en entrée,

complétez la taille du filtre : 5x5x?

• Si j’ai 32 filtres 5x5 appliqués sur cette image 224x224x3, quelle sont les dimensions du tenseur de sortie?

• Combien de paramètres à optimiser comporte cette couche cachée ?

39

Réponse : 5x5x3

Réponse : 220x220x32

Réponse : 5x5x3x32

Page 40: INTRODUCTION AUX RÉSEAUX DE NEURONES

Ajout de zéros (« zero padding »)

• Ajoute des entrées à 0 en bordure

40

0 0 0 0 0 0 0 0 0

0 0

0 0

0 0

0 0

0 0

0 0

0 0

0 0 0 0 0 0 0 0 0

9x9

conv 3x3

7x7

Originale7x7

(par simplicité, j’ai retiré la 3ème dimension)

Page 41: INTRODUCTION AUX RÉSEAUX DE NEURONES

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0

41

11x11

conv 5x5

7x7

Originale7x7

Pour filtre 3x3, padding de largeur 1Pour filtre 5x5, padding de largeur 2Pour filtre 7x7, padding de largeur 3

Ajout de zéros (« zero padding »)

Page 42: INTRODUCTION AUX RÉSEAUX DE NEURONES

• Permet de conserver la largeur au fil des couches

42

rougeur : impact du 0-paddingsa

ns 0-

padd

ing

avec

0-pa

ddin

g

Ajout de zéros (« zero padding »)

Impact incertain

Page 43: INTRODUCTION AUX RÉSEAUX DE NEURONES

43

Filtre 3x3xC

7x7xC input

produit scalaire sur le volume

C

output

Pas du filtre (« stride »)

Page 44: INTRODUCTION AUX RÉSEAUX DE NEURONES

44

7x7xC input

produit scalaire sur le volume

C

output

2

Pas du filtre (« stride »)

Page 45: INTRODUCTION AUX RÉSEAUX DE NEURONES

45

7x7xC input

produit scalaire sur le volume

C

sortie 3x3

2

Pas du filtre (« stride »)

Page 46: INTRODUCTION AUX RÉSEAUX DE NEURONES

Couches de type « Pooling »

Page 47: INTRODUCTION AUX RÉSEAUX DE NEURONES

Max Pooling

47

• Appliqué pour chaque tranche, indépendamment

5 3 0 3

4 0 9 4

2 4 1 2

1 3 2 3

5 94 3

On doit spécifier le «pas»

4

4

2 x 2pas

Page 48: INTRODUCTION AUX RÉSEAUX DE NEURONES

• Réduit la dimension du feature map• Souvent, on en profite pour augmenter le

nombre de filtre• Pourquoi ne pas faire plutôt une

moyenne?– Le « Max Pooling » permet de détecter la

présence d’un feature dans une région

48

Max Pooling

Page 49: INTRODUCTION AUX RÉSEAUX DE NEURONES

Pooling

49

-spat

ial

conv

maxpool

conv

maxpool

conv

maxpool

224x224

112x112

56x56

Classe: aucune spatialité

100% spatial

7x7 …• Augmente champ

réceptif rapidement• Réduit le nombre de

paramètre• Confère une certaine

invariance aux transformations géométriques (rotation, translation, échelle)

+abs

trait

softmax

Page 50: INTRODUCTION AUX RÉSEAUX DE NEURONES

Rétropropagation du gradient

50

a

b

p

si a > b

sinon MAX

Page 51: INTRODUCTION AUX RÉSEAUX DE NEURONES

Architectures

Page 52: INTRODUCTION AUX RÉSEAUX DE NEURONES

• La plupart des architectures sont organisées par alternance de blocs

• Facile de combiner des blocs de différents types, jouer sur la profondeur, réutiliser des idées

Approche par blocs

Blo

c B Bloc A

Blo

c C

Blo

c B

Co

uch

es

plein

eme

nt

con

necté es

Bloc ABloc A

sortieFo

ncti

on

sorti

e

Page 53: INTRODUCTION AUX RÉSEAUX DE NEURONES

53tiré de : cs231n, Université Stanford

Ne date pas d’hier

Page 54: INTRODUCTION AUX RÉSEAUX DE NEURONES

Large Scale Visual Recognition Challenge

54

0

5

10

15

20

25

30

SENetsHu et al.

2017

-Shao et al.

2016

28.225.8

3.57 2.99 2.25

5.1

HumanRussakovsky

et al. 2014 ResNetHe et al.

2015

6.7

GoogLeNetSzegedy et

al.2014

11.7

ZFNetZeiler and

Fergus2013

7.3

VGGSimonyan

and Zisserman

2014

16.4

AlexNetKrizhevsky

et al.2012

-Sanchez

and Perronnin

2011

-Lin et al.

2010

Réseaux profonds

• Image Classification Challenge :– 1,000 classes d’objets– 1,431,167 images

Erre

ur to

p-5

8 couches

Page 55: INTRODUCTION AUX RÉSEAUX DE NEURONES

55adapté de : cs231n

AlexNet

• 8 couches• 60M paramètres• Apparition des ReLU• Dropout de 0.5• Entraîné sur deux cartes GTX 580 (3 Go) en parallèle

Page 56: INTRODUCTION AUX RÉSEAUX DE NEURONES

[1000] FC8: 1000 neurons (class scores)[4096] FC7: 4096 neurons[4096] FC6: 4096 neurons[6x6x256] MAX POOL3: 3x3 filters at stride 2[13x13x256] CONV5: 256 3x3 filters at stride 1, pad 1[13x13x384] CONV4: 384 3x3 filters at stride 1, pad 1[13x13x384] CONV3: 384 3x3 filters at stride 1, pad 1[13x13x256] NORM2: Normalization layer[13x13x256] MAX POOL2: 3x3 filters at stride 2[27x27x256] CONV2: 256 5x5 filters at stride 1, pad 2[27x27x96] NORM1: Normalization layer[27x27x96] MAX POOL1: 3x3 filters at stride 2[55x55x96] CONV1: 96 11x11 filters at stride 4, pad 0[227x227x3] INPUT 56

adapté de : cs231n

AlexNet

Page 57: INTRODUCTION AUX RÉSEAUX DE NEURONES

Large Scale Visual Recognition Challenge

57

0

5

10

15

20

25

30

SENetsHu et al.

2017

-Shao et al.

2016

28.225.8

3.57 2.99 2.25

5.1

HumanRussakovsky

et al. 2014 ResNetHe et al.

2015

6.7

GoogLeNetSzegedy et

al.2014

11.7

ZFNetZeiler and

Fergus2013

7.3

VGGSimonyan

and Zisserman

2014

16.4

AlexNetKrizhevsky

et al.2012

-Sanchez

and Perronnin

2011

-Lin et al.

2010

Réseaux profonds

Erre

ur to

p-5

8 couches 8 couches

19 couches

Page 58: INTRODUCTION AUX RÉSEAUX DE NEURONES

VGGNet• Toujours 3 couches pleinement

connectées• 16-19 couches• ~130 millions de paramètres• Que des convolutions 3x3

adapté de : cs231n AlexNet VGG16 VGG19

Page 59: INTRODUCTION AUX RÉSEAUX DE NEURONES

« Finetuning »

tiré de : cs231n

Permet le transfert de l’apprentissage vers une tâche similaire