Deep Learning :
Chapitre 3: Réseaux de neurones artificiels (ANN)
Partie I : Introduction
Ouissem Ben Fredj
[email protected]Introduction
Algorithmes de classification
1. Un RNA est basé sur une collection d'unités connectées appelées
neurones artificiels, qui modélisent vaguement les neurones d'un
cerveau biologique .
2. Les ANN ont été introduits pour la première fois par Pitts en 1943 ,
qui a créé un modèle de calcul pour les NN basé sur des
algorithmes appelés logique de seuil.
3. Qu'est-ce qu'un neurone biologique ? Comment fonctionne-t-il ?
Algorithmes typiques :
Arbres de décision
Régression logistique
Réseaux de neurones
artificiels
K-Voisin le plus proche
Forêts aléatoires
Bayes naïf
SVM 3
Réseaux de neurones artificiels
Perceptron
Un poids représente la force de
la connexion entre les unités
4
Un neurone artificiel
Un neurone peut avoir n'importe quel nombre
d'entrées de un à n, où n est le nombre total
d'entrées.
Les entrées peuvent donc être représentées par x1 ,
x2 , x3 … xn .
poids correspondants pour les entrées comme w1 ,
w2 , w3 … wn .
Sortie a = x1 w1 + x2 w2 + x3 w3 ... + xn wn
Caractéristiques
5
5
Le résultat
-0,06
W1
W2
-2.5 f(x)
W3
1.4
Quelle est la sortie du Neuron ?
6
Le résultat
-0,06
2.7
-8.6
-2.5 f(x)
0,002 x = - 0,06×2,7 + 2,5×8,6 + 1,4×0,002 = 21,34
1.4
7
Fonction d'activation
o Les RNA sont biologiquement inspirés par l'activité de notre
cerveau, où différents neurones se déclenchent ou sont activés par
différents stimuli .
o Une fonction d'activation d'un neurone définit la sortie de ce
neurone compte tenu d'un ensemble d'entrées.
o La fonction d'activation transforme la somme entre un nombre de
limite inférieure et de limite supérieure.
o Il existe de nombreuses fonctions d'activation qui peuvent être
utilisées dans les réseaux de neurones artificiels (peu profonds ou
profonds) et chacune joue un rôle différent.
o Les fonctions d'activation comprennent :
a. Fonctions en escalier, Fonctions linéaires,
b. Fonctions sigmoïdes, fonctions Tanh….
c. Relu /Leaky Relu , …..
8
Les réseaux de neurones
Réseaux d'unités de traitement (neurones) avec des
connexions (synapses) entre elles
Grand nombre de neurones : 10 10
Grande connectivité : 10 5
Avantages :
1. Traitement parallèle par opposition à Séquentiel.
2. distribué /mémoire
3. Robuste au bruit, aux pannes (tolérance aux pannes)
4. Capable d'accomplir des tâches difficiles.
9
Perceptron
Unité logique à seuil
Un Perceptron ou Threshold Logic Unit (TLU) se compose
d'un seul neurone avec des entrées, des poids, une
fonction d'activation et une sortie.
Un Perceptron monocouche - est le type de réseau
neuronal à anticipation le plus simple et ne contient
aucune couche cachée.
entrées
poids
x1 w1
sortie
w2 Activation
x2 q
y
. 𝑛
. 𝑎 = 𝑤𝑖 𝑋𝑖
. wn
𝑖=1
x 1 si a 0
n
y= { 0 si a < 0 11
Perceptron monocouche
Les poids montrent la force d'un nœud particulier. Ils déterminent
la pente de la droite qui sert à séparer les deux classes.
Le biais permet de décaler la fonction vers le haut ou vers le bas.
La fonction d'activation est importante pour qu'un RNA apprenne
et donne un sens à quelque chose de vraiment compliqué.
La fonction d'activation décide si un neurone doit être activé ou
non en calculant la somme pondérée et en lui ajoutant un biais.
Le motif est d'introduire la non-linéarité dans la sortie d'un
neurone.
12
Perceptron à une seule couche
Le biais permet de Les poids déterminent la
décaler la fonction pente de la droite utilisée
d'activation vers le pour séparer les deux
haut ou vers le bas. classes.
Sortie = f(b + x 0 w 0 +x 1 w 1 + x 2 w 2 + x 3 w 3 ... + x n w n)
13
Que fait un Perceptron
Régression : y = wx + w 0 Classement : y =1( si wx +
w 0 >0)
y y
s y
w 0 w
w 0
w
X
w 0
X X
x 0 =+1
y sigmoid o
1
1 exp w T x
14
Apprentissage du
perceptron
Perceptron monocouche
Poids Y-Y'
attributs
Y = f(b + X0 w0 +x1 w1 + x2 w2 + x3 w3 ... + xm wm)
16
Perceptron : Apprentissage
1. Initialiser les poids W à des valeurs aléatoires
2. Choisissez un petit taux d'apprentissage (LR) (un nombre
entre 0 et 1: Learning rate)
3. Procédez comme suit jusqu'à ce que les critères d'arrêt soient
atteint
4. Pour chaque instance d'entraînement [ X (attributs) , y (réel) ]
I. calculer sortie d'activation (Prédiction): f(W,X) y'
II. La règle d'apprentissage : erreur = y – y' (Réel –
Prédiction)
III. Modifier le biais b = b + ( LR * erreur )
IV. Pour toutes les entrées, i : Wi = Wi + ( erreur * LR * Xi )
Où : W est le vecteur des poids , X est le vecteur d'entrée, y’ est
la sortie prédite du neurone, y est le label réelle de
l'enregistrement et b est le biais .
17
Perceptron multicouche (MLP)
Un réseau neuronal simple
Un Perceptron multicouche a une ou plusieurs couches cachées .
Alors que le perceptron monocouche ne peut apprendre que des
fonctions linéaires, un perceptron multicouche peut également
apprendre des fonctions non linéaires .
Poids
entrées Couche cachées Sortie
M 11
x1 M 12
a1 (1)
M 14 M 13
x2 a2 (1)
a1 (2)
Y
x3 a3 (1)
x4 a4 (1)
• L' objectif du réseau de neurones consiste à transformer les entrées
(attributs) en sorties significatives qui correspondent aux labels
disponibles . 19
Réseaux artificiels : termes
Couche
attributs
cachée
entrées
Couche des
Couche
de
sortie
Quels sont les termes utilisés pour
décrire la forme et la capacité d'un
réseau de neurones ?
1. Taille : Le nombre de nœuds dans le modèle.
2. Largeur : Le nombre de nœuds dans une couche spécifique .
3. Profondeur : Le nombre de couches dans un réseau de neurones.
4. Architecture : La disposition spécifique des couches et des nœuds dans le réseau.
20
Propriétés de l'architecture
•Aucune connexion dans une couche
•Aucune connexion directe entre les couches d'entrée et de sortie
• Entièrement connecté entre les couches
•Souvent plus de 3 couches
•Le nombre d'unités de sortie doit être égal au nombre de classes !
• Le nombre d'unités masquées par couche peut être supérieur ou
inférieur aux unités d’E/S
Chaque unité est un perceptron
m
yi f ( wij x j bi )
j 1
Incluent souvent le biais comme poids
supplémentaire 21
21
Perceptron multicouche et traitement
d'image
• Les réseaux de neurones artificiels ont été largement utilisés
pour classer les images .
• Chaque entrée représente un pixel d'une image.
• Pour une grande image (200x200) nous aurions besoin de
40 000 entrées !!
22
Nombre de paramètres
x1 a1 (1)
x2 a2 (1)
a1 (2) Y
x3 a3 (1)
Softmax
x4 a4 (1)
entrées couches sortie
cachées
une seule couche cachée
4 neurones
une sortie avec un seul neurone
Parametres: 4*4 + 4 + 1 = 21 23
Si l'entrée est une Image ?
RGB x1 a1 (1)
x2 a2 (1)
a1 (2) Y
x3 a3 (1)
400 X 400 X 3
a1000 (1)
x480000
entrées couches cachées Sortie
Nombre de paramètres
480000*1000 + 1000 +1 = environ 480 millions !!!
24
Nombre de paramètres
l=1(i=1,j=1) A1(j=1)
P(i=1) l=2(j=1,k=1)
A1(j=2) (j=2,k=1) l=2
l=2
l=1(i=2,j=1)
P(i=2) (i=2,k=2)
P(i=3)
l=1(i=3,j=4) A1(j=4)
:
: A1(j=5)
l=1(i=9,j=5)
P(i=9)
Exercice 1: Exercice 2 : W=nombre de poids, B=nombre de biais.
I=nombre d'entrées question: W+B=? (1) 20 ; (2) 35 ; (3)89 ; (4) 68
H=nombre de neurones cachés,
O=nombre de sorties
Question : I+H+O=__ ?
Choix : (1) 10 ; (2)15 ; (3)17 ;(4)23
25
Nombre de paramètres
l=1(i=1,j=1) A1(j=1)
P(i=1) l=2(j=1,k=1)
A1(j=2) (j=2,k=1) l=2
l=2
l=1(i=2,j=1)
P(i=2) (i=2,k=2)
P(i=3)
l=1(i=3,j=4) A1(j=4)
:
: A1(j=5)
l=1(i=9,j=5)
P(i=9)
Exercice 1: Exercice 2 : W=nombre de poids, B=nombre de biais.
I=nombre d'entrées question: W+B= (1) 20 ; (2) 35 ; (3)89 ; (4) 68
H=nombre de neurones cachés, W=9*5+5*3=60. B = 5 + 3 = 8,
O=nombre de sorties le neurone d'entrée n'a pas de biais.
Question : I+H+O=__ ? W+B=68
Choix : (1) 10 ; (2)15 ; (3)17 ;(4)23
Et : I=9, H=5, O=3, total=17
26
Labels
Classification binaire
un seul label parmi deux classes
Classification multi-classes
une classe parmi plusieurs comme classe de
sortie
Classification Multi-Labele
plusieurs classes possibles à la fois
27
Fonctions d'activation
Réseaux de neurones
artificiels
o Les RNA calculent une "somme pondérée" de son entrée, ajoutent
un biais et décident ensuite s'il doit être "declenché" ou "non"
o La valeur de Y peut être comprise entre –inf et +inf.
o Le neurone ne connaît pas les bornes de la valeur.
o Alors, comment décidons-nous si le neurone doit se déclencher ou
non ?
Fonctions d'activation
29
Fonctions d'activation
• Une fonction d'activation est une fonction qui est ajoutée à un
réseau de neurones artificiels afin d'aider le réseau à apprendre
des modèles complexes dans les données .
• Lorsqu'on compare avec un modèle basé sur les neurones qui se
trouve dans notre cerveau, la fonction d'activation décide à la fin ce
qui doit être envoyé au prochain neurone.
• C'est exactement ce que fait une fonction d'activation dans un RNA.
Il prend le signal de sortie de la cellule précédente et le convertit en
une forme qui peut être prise en entrée de la cellule suivante.
30
Réseaux de neurones
artificiels
o Les RNA calculent une "somme pondérée" de son entrée, ajoutent
un biais et décident ensuite s'il doit être "declenché" ou "non"
o Pour normaliser cette plage de valeurs, nous utilisons des
fonctions d'activation pour rendre l'ensemble du processus
statistiquement équilibré.
Différents types des fonctions
d'activation existent dans un RNA en
fonction de la couche et de la tâche
31
Fonctions d'activation
o Une fonction d'activation dans un réseau neuronal définit comment la
somme pondérée de l'entrée est transformée en une sortie d'un nœud ou de
nœuds dans une couche du réseau.
o Le choix de la fonction d'activation a un impact important sur la capacité
et les performances du réseau neuronal, et différentes fonctions
d'activation peuvent être utilisées dans différentes parties du modèle.
o Le choix de la fonction d'activation dans la couche cachée contrôlera la
façon dont le modèle de réseau apprend l'ensemble de données
d'apprentissage.
o Le choix de la fonction d'activation dans la couche de sortie définira le
type de prédictions que le modèle peut faire
32
Fonction d'activation Linéaire
Dans la fonction d'activation linéaire, la
sortie est proportionnelle à l'entrée
f(x)=ax
+ Le gradient ici ne devient pas nul .
+ Les fonctions linéaires peuvent être idéales pour des tâches simples où
l'interprétabilité est fortement souhaitée.
- Cependant, il y a certains inconvénients
• Étant donné que le gradient est une constante, les poids et les biais
seront mis à jour pendant le processus de rétropropagation, mais le
facteur de mise à jour serait le même.
33
Activation : Sigmoïde
Idéal pour la classification
binaire
Prend un nombre à valeur
réelle et le « condense »
dans une plage comprise
entre 0 et 1.
𝑅𝑛 → 0,1
Aussi appelée fonction
logistique
+ Belle interprétation comme la cadence de declenchement d'un neurone
+ Sigmoïde est très populaire dans les problèmes de classification.
• 0 = ne declenche pas du tout
• 1 = declenchement complete OK à utiliser dans la
dernière couche
- Les neurones saturent et tuent les gradients , ainsi RN apprendra à peine
• lorsque l'activation du neurone est à 0 ou 1 (saturation)
� gradient dans ces régions presque nul Vanishing gradient problem
� presque aucun signal ne circulera vers ses poids
� si les poids initiaux sont trop grands, la plupart des neurones satureraient
34
Activation : Tanh
Prend un nombre à valeur
réelle et le « condense »
dans une plage comprise
entre -1 et 1.
𝑅𝑛 → −1,1
- Comme sigmoïde, les neurones tanh saturent
- Cependant, le gradient est plus fort pour tanh que sigmoïde.
- Sa derivé est: 1−tanh2(x)
- Contrairement au sigmoïde, la sortie est centrée sur zéro
- Tanh est un sigmoïde mise à l'échelle
35
Activation : SoftMax
Convertit un vecteur de
nombres en un vecteur
de probabilités.
Idéal pour la classification multi-
classes
- Largement utilisé pour les tâches de classification
- il mappe notre sortie sur une plage [0,1]
- mappe également chaque sortie de manière à ce
que la somme totale soit 1 .
- La sortie de Softmax est donc une distribution de
probabilité.
36
Activation : SoftMax
Idéal pour la classification multi-classes
37
Activation : ReLU
Prend un nombre à valeur réelle
et le limite à zéro
f 𝑥 = max(0, 𝑥)
𝑅𝑛 → 𝑅+𝑛
Rectified Linear Unit
La plupart des réseaux profonds de nos jours utilisent ReLU
Utilisé dans les couches cachées
� S'entraîne beaucoup plus vite
• accélère la convergence de SGD
• en raison de la forme linéaire non saturante
� Des opérations moins coûteuses
• par rapport à sigmoïde / tanh (exponentiels, etc.)
• mis en œuvre en seuillant simplement une matrice à zéro
� Plus expressif
� Empêche le gradient vanishing problem
38
Activation : Leaky ReLU
Une version améliorée de la
fonction d'activation ReLU
x si x >0
f(x) = { 0.01x si x <= 0
Leaky Rectified Linear Unit
Certains réseaux profonds utilisent aujourd'hui Leaky ReLU
� RelU , le gradient est de 0 pour toutes les valeurs d'entrées
inférieures à zéro, ce qui désactiverait les neurones de cette région
et pourrait causer un problème de mort du ReLU
� Leaky ReLU est défini pour résoudre ce problème.
39
Fonctions d'activation : comparaison
https://medium.com/@himanshuxd/activation-functions-sigmoid-relu-leaky-relu-and-softmax-basics-for-neural-networks-and-deep-8d9c70eed91e
40
Un réseau neuronal simple
w1
Sigmoïde 1
x1 a1 (1)
(2)
w2 1 + 𝑒 −𝑤∗𝑎1
x2 a2 (1)
w3
a1 (2)
Y
x3 a3 (1)
w4
x4 a4 (1)
𝑎1(1) = 𝑓 𝑤1 ∗ 𝑥1 + 𝑤2 ∗ 𝑥2 + 𝑤3 ∗ 𝑥3 + 𝑤4 ∗ 𝑥4
f( ) est la fonction d'activation : Relu ou sigmoïde
𝑅𝑒𝑙𝑢: max(0, 𝑥)
𝑎1(1) = 𝑚𝑎𝑥 0, 𝑤1 ∗ 𝑥1 + 𝑤2 ∗ 𝑥2 + 𝑤3 ∗ 𝑥3 + 𝑤4 ∗ 𝑥4
41
Fonctions d'activation : propriétés
• Centré sur zéro : la sortie de la fonction d'activation doit être
symétrique à zéro afin que les gradients ne se déplacent pas dans
une direction particulière.
• Aide à converger plus rapidement, en particulier dans
l'apprentissage en profondeur
• Dépenses de calcul : les fonctions d'activation sont appliquées
après chaque couche et doivent être calculées des millions de fois
dans les réseaux profonds. Par conséquent, ils devraient être peu
coûteux en termes de calcul .
• ReLu est une opération moins coûteuse que sigmoïde/tanh
• Différenciable : Comme mentionné, les réseaux de neurones sont
entraînés à l'aide du processus de descente de gradient. Par
conséquent, les couches du modèle doivent être différenciables ou
au moins différenciables en partie.
• La différenciabilité est importante car elle nous permet de
rétropropager l'erreur du modèle lors de l'entraînement pour
optimiser les poids
42
MLP : Limites de décision
Limites de décision complexes
• Un réseau de neurones à une seule couche ne peut être
utilisé que pour représenter des fonctions linéairement
séparables . Cela signifie des problèmes très simples où,
par exemple, les deux classes d'un problème de
classification peuvent être nettement séparées par une
ligne.
• Un Perceptron multicouche peut être utilisé pour
représenter des régions convexes . Cela signifie qu'en
fait, ils peuvent apprendre à dessiner des formes autour
d'exemples dans un espace de grande dimension qui
peut les séparer et les classer, en surmontant la
limitation de la séparabilité linéaire .
44
Limites de décision complexes
• Il y a une découverte théorique de Lippmann dans
l'article de 1987 « An introduction to computing with
neural nets » qui montre qu'un MLP avec deux couches
cachées est suffisant pour créer des régions de
classification de n'importe quelle forme souhaitée . Ceci
est instructif, même s'il convient de noter qu'aucune
indication sur le nombre de nœuds à utiliser dans
chaque couche ou sur la manière d'apprendre les poids
n'est donnée.
• Une preuve théorique a montré que les MLP sont des
approximateurs universels . Qu'avec une couche cachée,
un MLP peut approximer n'importe quelle fonction dont
nous avons besoin.
45
Réseau à trois couches
x1
x2
entrées Sorties
xn
Couches cachées 46
46
Que fait chacune des couches ?
La 3ème couche peut
La 1ère couche La 2ème couche générer des limites
dessine des limites combine les limites arbitrairement
linéaires complexes 47
Comportement des réseaux de neurones
multicouches
Types de Régions Problème Classes avec Formes de
Structure de décision Exclusive-OR régions maillées région
plus générales
Une couche Demi-plan A B
délimité par B
un hyperplan A
B A
2 couches Régions A B
convexes B
ouvertes A
ou fermées B A
3 couches Arbitraire
(complexité limitée A B
par le nombre de B
A
nœuds) B A
48
Non-linéarités
Non-linéarités nécessaires pour apprendre des
représentations complexes (non linéaires) des
données, sinon le RN ne serait qu'une fonction
linéaire W1W2𝑥 = 𝑊𝑥
http://cs231n.github.io/assets/nn1/layer_sizes.jpeg
Plus de couches et de neurones peuvent
approximer des fonctions plus complexes
49
Présentation du deep learning
L'apprentissage en profondeur (Deep Learning) est un sous-
ensemble de l'apprentissage automatique, il fait référence à
la présence de nombreuses couches dans un réseau de
neurones.
Il est capable de traiter des données de grande dimension .
Par exemple, il peut traiter une image et générer une
réponse significative en fonction de l'application.
Réseau
Réseau peu profond
profond
50
Nombre des couches cachées
Un MLP avec une seule couche cachée (Shallow
Deep Network) peut théoriquement modéliser
même les fonctions les plus complexes
Pour des problèmes plus complexes, il serai
préférable d’augmenter le nombre des couches
cachées (Deep Neural Network)
Utiliser beaucoup de couches cachées pour un
problème simple mène au problème de
Overfitting
51
Nombre de neurones par couche
Le nombre de neurones pour la couche d’entrée
dépend du nombre des attributs
Le nombre de neurones pour la couche de sortie
dépend du nombre des labels
Le nombre des neurones pour les couches
cachées devrai former un pyramide, avec de
moins en moins de neurones à chaque couche
52
parametres de Keras
Classes de perte
BinaryCrossentropy: classification binaire : un
label, deux classes (0 ou 1)
model.compile(loss=tf.keras.losses.BinaryCro
ssentropy(), .... )
CategoricalCrossentropy: 2 ou plus labels
représentés en one_hot
SparseCategoricalCrossentropy: 2 ou plus
labels représentés en entiers
54
Méthodes d’optimisation
SGD
model.compile(loss="sparse_categorical_cross
entropy", optimizer="sgd“)
RMSprop
Adam
AdamW
Adadelta
Adagrad
Adamax
Adafactor
Nadam
Ftrl 55
Résumé
Résumé
o Les réseaux de neurones artificiels (RNA) sont des dispositifs de
traitement (algorithmes ou matériel réel) qui sont vaguement
modélisés d'après la structure neuronale du cortex cérébral des
mammifères, mais à des échelles beaucoup plus petites.
o Les perceptrons ont été introduits par Pitts dans les années
1940. Il a proposé une règle d'apprentissage Perceptron basée
sur le neurone MLP d'origine. Un Perceptron est un algorithme
d'apprentissage supervisé de classificateurs binaires . Cet
algorithme permet aux neurones d'apprendre et de traiter les
éléments de l'ensemble d'apprentissage un par un.
o Les réseaux de neurones sont généralement organisés en
couches. Les couches sont constituées d'un certain nombre de
« nœuds » interconnectés qui contiennent une « fonction
d'activation ».
57
Résumé
o Les modèles sont présentés au réseau neuronal via la « couche
d'entrée », qui communique avec une ou plusieurs « couches
cachées » où le traitement réel est effectué via un système de
« connexions » pondérées. Les couches cachées sont ensuite
liées à une «couche de sortie» où la réponse est sortie.
o Les RNA sont au cœur même du Deep Learning . Ils sont
polyvalents, puissants et évolutifs, ce qui les rend idéaux pour
s'attaquer à des tâches d'apprentissage automatique
volumineuses et très complexes , telles que la classification de
milliards d'images (par exemple, Google Images), les services de
reconnaissance vocale (par exemple, Siri d'Apple), la
recommandation des meilleures vidéos. regarder des centaines
de millions d'utilisateurs chaque jour (par exemple, YouTube), ou
apprendre à battre le champion du monde d’un jeu en examinant
des millions de jeux passés, puis en jouant contre lui-même
(AlphaGo de DeepMind).
58