chapitre 2 introduction aux réseaux de neurones
TRANSCRIPT
Chapitre 2
Introduction aux réseaux de neurones
I. Introduction
Ce chapitre présente les réseaux de neurones, largement utilisés comme
modèle pour l’apprentissage automatique. Le réseau de neurones a une longue
histoire de développement et de nombreuses réalisations issues de travaux de
recherche. Il existe de nombreux livres disponibles qui se concentrent
uniquement sur le réseau de neurones. Parallèlement au regain d'intérêt croissant
pour le Deep Learning, les réseaux de neurones ont également considérablement
gagné en importance. Nous passerons brièvement en revue les techniques
pertinentes et pratiques permettant de mieux comprendre l'apprentissage
profond. Pour ceux qui sont nouveaux dans le concept de réseau de neurones,
nous commençons par les fondamentaux.
Dans un premier temps, nous verrons comment le réseau de neurones est lié
à l’apprentissage automatique. Les modèles d'apprentissage automatique
peuvent être mis en œuvre sous différentes formes. Le réseau de neurones est
l'un d'entre eux. La figure 2-1 illustre la relation entre le Machine Learning et le
réseau de neurones. Notez que nous avons le réseau de neurones à la place du
modèle et la règle d'apprentissage à la place de Machine Learning. Dans le
contexte du réseau de neurones, le processus de détermination du modèle
(paramètres du réseau de neurones) est appelé règle d'apprentissage. Ce chapitre
explique les règles d’apprentissage pour un réseau de neurones à une couche.
Les règles d'apprentissage d'un réseau de neurones multicouches sont abordées
dans les chapitres prochains.
Figure 2-1. La relation entre le Machine Learning et les réseaux de neurones
II. Nœuds d'un réseau de neurones Chaque fois que nous apprenons quelque chose, notre cerveau stocke les
connaissances. L'ordinateur utilise la mémoire pour stocker des informations.
Bien qu'ils stockent tous les deux des informations, leurs mécanismes sont très
différents. L'ordinateur stocke des informations à des emplacements spécifiés de
la mémoire, tandis que le cerveau modifie l'association des neurones. Le neurone
lui-même n'a pas de capacité de stockage ; il ne fait que transmettre des signaux
d'un neurone à l'autre. Le cerveau est un réseau gigantesque de ces neurones et
l'association des neurones forme une information spécifique.
Un réseau de neurones imite le mécanisme du cerveau. Comme le cerveau
est composé de connexions de nombreux neurones, le réseau de neurones est
construit avec des connexions de nœuds, qui sont des éléments correspondant aux
neurones du cerveau. Le réseau de neurones imite l’association des neurones, qui
est le mécanisme le plus important du cerveau, en utilisant la valeur de poids.
Expliquer cela plus tard en utilisant du texte peut causer plus de confusion.
Examinons un exemple simple pour mieux comprendre le mécanisme du réseau
de neurones. Considérons un nœud (un neurone) qui reçoit trois entrées, comme
illustré à la figure 2-2.
Figure 2-2. Un nœud (neurone) qui reçoit trois entrées
Le cercle et la flèche de la figure désignent respectivement le nœud (un
neurone) et le flux de signal. x1, x2 et x3 sont les signaux d'entrée. w1, w2 et
w3 sont les poids pour les signaux correspondants. Enfin, b est le biais, qui est un
autre facteur associé au stockage d'informations. En d'autres termes, les
informations du réseau neuronal sont stockées sous forme de poids et de biais.
Le signal entrant de l'extérieur est multiplié par le poids avant qu'il n'atteigne
le nœud. Une fois que les signaux pondérés sont collectés au nœud, ces valeurs
sont ajoutées pour constituer la somme pondérée. La somme pondérée de cet
exemple est calculée comme suit :
𝑣 = (𝑤1 𝑥1 ) + (𝑤2 𝑥2 ) + (𝑤3 𝑥3 ) + 𝑏
Cette équation indique que le signal avec un poids supérieur a un effet plus
important. Par exemple, si le poids w1 est égal à 2 et que w2 est égal à 10, l'effet
du signal x2 est cinq fois plus important que celui de x1. Lorsque w1 est égal à
zéro, x1 n'est pas du tout transmis au nœud(NEURONE). Cela signifie que x1 est
déconnecté du nœud. Cet exemple montre que les poids du réseau de neurones
imitent la manière dont le cerveau modifie l'association des neurones. L'équation
de la somme pondérée peut être écrite avec des matrices comme :
𝑣 = 𝑤𝑥 + 𝑏
Où 𝑤 = [𝑤1 𝑤2 𝑤3] et 𝑥 = [𝑥1 𝑥2 𝑥3]
Enfin, le nœud entre la somme pondérée dans la fonction d’activation,
notée souvent 𝜑 , et renvoie sa sortie. La fonction d'activation détermine le
comportement (aussi la sortie) du nœud.
𝑦 = 𝜑(𝑣)
𝑣 = 𝑤𝑥 + 𝑏
Où 𝑤 = [𝑤1 𝑤2 𝑤3] et 𝑥 = [𝑥1 𝑥2 𝑥3]
𝜑 de cette équation est la fonction d'activation. De nombreux types de
fonctions d'activation sont possibles pour les réseaux de neurones. Passons
brièvement en revue le mécanisme du réseau neuronal. Le processus suivant est
effectué à l'intérieur du nœud du réseau neuronal de la figure2-2 :
1. La somme pondérée des signaux d'entrée est calculée.
𝑣 = (𝑤1 𝑥1 ) + (𝑤2 𝑥2 ) + (𝑤3 𝑥3 ) + 𝑏
2. La sortie de la fonction d’activation vers la pondérée la somme est
passée à l'extérieur.
𝑦 = 𝜑(𝑣) = 𝜑(𝑤𝑥 + 𝑏)
III. Couches de réseau de neurones
Le cerveau étant un gigantesque réseau de neurones, le réseau de neurones
artificiel est un réseau de nœuds. Une variété de réseaux de neurones peut être
créée en fonction de la façon dont les nœuds sont connectés. L'un des types de
réseaux neuronaux les plus couramment utilisés utilise une structure en couches
de nœuds, comme illustré à la figure 2-3.
Figure 2-3. Une structure en couches de nœuds
Le groupe de nœuds carrés de la figure 2-3 s'appelle la couche d'entrée
(input layer). Les nœuds de la couche d'entrée agissent simplement comme le
passage qui transmet les signaux d'entrée aux nœuds suivants. Par conséquent, ils
ne calculent pas la somme pondérée et la fonction d'activation. C'est la raison
pour laquelle ils sont indiqués par des carrés et distingués des autres nœuds
circulaires. En revanche, le groupe des nœuds les plus à droite est appelé la
couche de sortie. La sortie de ces nœuds devient le résultat final du réseau de
neurones. Les couches situées entre les couches d'entrée et de sortie sont appelées
couches cachées. Ce nom leur est attribué, car ils ne sont pas accessibles de
l’extérieur du réseau de neurones.
Les réseaux de neurones artificiels ont été développés à partir d’une
architecture simple, et maintenant on retrouve dans la littérature des structures de
plus en plus complexes. Initialement, les pionniers des réseaux de neurones
avaient une architecture très simple avec uniquement des couches d'entrée et de
sortie, appelées réseaux de neurones à une couche. Lorsque des couches
masquées sont ajoutées à un réseau de neurones à une couche, un réseau de
neurones à plusieurs couches est créé. Par conséquent, le réseau de neurones
multicouches comprend une couche d'entrée, une ou plusieurs couches cachées
et une couche de sortie. Le réseau de neurones qui possède une seule couche
cachée est appelé réseau de neurones peu profond. Un réseau neuronal
multicouche contenant deux ou plusieurs couches cachées est appelé réseau
neuronal profond. La plupart des réseaux de neurones contemporains utilisés
dans des applications pratiques sont des réseaux de neurones profonds.
La raison pour laquelle nous classifions le réseau de neurones multicouches
selon ces deux types est liée à son historique de développement. Le réseau de
neurones a commencé comme le réseau de neurones à une couche et a évolué pour
devenir le réseau de neurones peu profond, suivi du réseau de neurones profonds.
Le réseau de neurones profonds n'a pas été sérieusement mis en évidence avant le
milieu des années 2000-2010, soit donc après deux décennies écoulées depuis le
développement du réseau de neurones peu profonds. Par conséquent, pendant
longtemps, le réseau neuronal multicouche ne désignait que le réseau neuronal
à couche cachée unique. Lorsque le besoin de distinguer plusieurs couches
cachées est apparu, ils ont attribué un nom distinct au réseau de neurones
profonds. Voir la figure 2-4.
Figure2-4 Type de réseaux de neurones
Dans le réseau de neurones en couches, le signal entre dans la couche
d'entrée, passe à travers les couches cachées et quitte à travers la couche de sortie.
Au cours de ce processus, le signal avance couche par couche. En d'autres
termes, les nœuds d'une couche reçoivent le signal simultanément et envoient le
signal traité à la couche suivante en même temps.
Suivons un exemple simple pour voir comment les données d’entrée sont
traitées lorsqu’elles traversent les couches. Considérez le réseau de neurones avec
une seule couche masquée illustrée à la figure 2-5.
Figure2-5 Un réseau de neurones avec une seule couche cachée
Juste pour des raisons pratiques, la fonction d'activation de chaque nœud est
supposée ici, dans cet exemple, être une fonction linéaire illustrée à la figure 2-6.
Cette fonction permet aux nœuds d’envoyer la somme pondérée elle-même.
Figure 2-6 Fonction d’activation linéaire
Nous allons maintenant calculer le résultat de la couche cachée (Figure 2-
7). Comme indiqué précédemment, aucun calcul n'est nécessaire pour les nœuds
d'entrée, car ils ne font que transmettre le signal.
Figure2-7 Calculer la sortie de la couche cachée
Le premier nœud de la couche masquée calcule la sortie comme suit:
𝑣 = (3 × 1) + (1 × 2) + 1 = 6
Comme la fonction d’activation est supposée linéaire, y=v=6
Pour le deuxième nœud de la couche cachée :
𝑣 = (2 × 1) + (4 × 2) + 1 = 11
Comme la fonction d’activation est supposée linéaire, y=v=11
L’écriture matricielle donne :
𝑌 = [3 12 4
] [12
] + [11
] = [6
11]
Les poids du premier nœud de la couche masquée sont dans la première ligne
et les poids du deuxième nœud sont dans la deuxième ligne. Ce résultat peut être
généralisé comme l'équation suivante :
𝑦 = 𝑣 = 𝑊𝑥 + 𝑏
Même procédure peut être appliquée à la couche de sortie. Regardez la
figure2-8.
Figure2-8 : Déterminer les sorties de la couche de sortie
𝑌 = [3 25 1
] [6
11] + [
11
] = [4142
]
Le processus peut être un peu lourd, mais le calcul en soi n’est pas difficile.
Comme nous venons de le voir, le réseau de neurones n'est rien d'autre qu'un
réseau de nœuds en couches, qui effectue uniquement des calculs simples. Cela
n'implique aucune équation difficile ni une architecture compliquée. Bien que cela
semble simple, le réseau de neurones a battu tous les records de performance
pour les principaux domaines du Machine Learning, tels que la reconnaissance
d'images et la reconnaissance vocale. N'est-ce pas intéressant ? On dirait que la
citation «Toute la vérité est simple» est une description pertinente.
Je dois laisser un dernier commentaire avant de terminer la section. Nous
avons utilisé une équation linéaire pour l'activation des nœuds cachés, simplement
par commodité. Ce n'est pas pratiquement correct. L'utilisation d'une fonction
linéaire pour les nœuds annule l'effet de l'ajout d'une couche. Dans ce cas, le
modèle est mathématiquement identique à un réseau de neurones à une seule
couche, qui ne comporte pas de couches cachées. Voyons ce qui se passe
réellement. En substituant l'équation de la somme pondérée de la couche masquée
à l'équation de la somme pondérée de la couche en sortie, on obtient l'équation
suivante (un petit détail est donné dans la diapo du cours avec une explication en
cours) :
Cette équation matricielle indique que cet exemple de réseau de neurones est
équivalent à un réseau de neurones à une seule couche, comme illustré à la figure
2-9.
Figure 2-9. Cet exemple de réseau de neurones est équivalent à un réseau de
neurones à une seule couche
Gardez à l'esprit que la couche masquée devient inefficace lorsque les nœuds
masqués ont des fonctions d'activation linéaire. Cependant, les nœuds de sortie
peuvent, et doivent parfois, utiliser des fonctions d'activation linéaires.
IV. Apprentissage supervisé d'un réseau de neurones
Cette section présente les concepts et le processus d’apprentissage supervisé
du réseau de neurones. Parmi les nombreuses méthodes d’apprentissage utilisées,
ce cours ne traite que de l’apprentissage supervisé. Par conséquent, seul
l’apprentissage supervisé est également abordé pour le réseau de neurones. Dans
l’ensemble, l’apprentissage supervisé du réseau de neurones se déroule comme
suit:
1. Initialisez les poids avec des valeurs adéquates.
2. Prenez «l'entrée» dans les données d'apprentissage, qui est organisée
comme {entrée, sortie correcte}, et entrez-la dans le réseau de
neurones. Obtenez la sortie du réseau de neurones et calculez l'erreur
à partir de la sortie correcte.
3. Ajustez les poids pour réduire l'erreur.
4. Répétez les étapes 2 et 3 pour toutes les données d'entrainement.
Ces étapes sont fondamentalement identiques au processus d’apprentissage
supervisé pour « l’apprentissage automatique». Cela a du sens, car l’apprentissage
supervisé est un processus qui modifie le modèle pour réduire la différence entre
la sortie correcte et la sortie du modèle. La seule différence est que la
modification du modèle devient les changements de poids du réseau de neurones.
La figure 2-10 illustre le concept d'apprentissage supervisé expliqué jusqu'à
présent. Cela vous aidera à comprendre clairement les étapes décrites
précédemment.
Figure 2-10 Le concept d'apprentissage supervisé en réseaux de neurones
V. Entrainement d'un réseau de neurones monocouche :
Comme indiqué précédemment, le réseau de neurones stocke les
informations sous forme de poids. Par conséquent, afin de former le réseau de
neurones avec de nouvelles informations, les poids doivent être modifiés en
conséquence. L’approche systématique pour modifier les poids en fonction de
l’information donnée est appelée règle d’apprentissage. Étant donné que
l’entrainement est le seul moyen pour le réseau de neurones de stocker
systématiquement les informations, la règle d'apprentissage est un élément
essentiel de la recherche sur les réseaux de neurones.
Dans cette section, nous traitons de la règle delta, la règle d’apprentissage
représentative du réseau de neurones à une couche. Bien qu'il ne soit pas capable
de former un réseau de neurones multicouches, il est très utile pour étudier les
concepts importants de la règle d'apprentissage du réseau de neurones.
Prenons un réseau de neurones à une seule couche, comme illustré à la
figure 2-11. Dans la figure, di est la sortie correcte du nœud de sortie i.
Figure 2-11. Un réseau de neurones monocouche
La règle delta qui permet à ce type de réseaux d’apprendre à partir des
données d’entrainement est :
𝑤𝑖𝑗 = 𝑤𝑖𝑗 + 𝛼 𝑒𝑖𝑥𝑗 Equation 2.1
𝑥𝑗 = la sortie du noeud d'entrée j, (j = 1, 2, 3)
𝑒𝑖 = l'erreur du noeud de sortie i
𝑤𝑖𝑗 = le poids entre le noeud de sortie i et l'entrée noeud j
α = taux d'apprentissage (0 < α < 1)
Le taux d'apprentissage, α, détermine le taux de la modification du poids à
chaque itération. Si cette valeur est trop élevée, la sortie risque de rater la
solution et ne convergera pas. En revanche, s'elle est trop basse, le calcul
convergera trop lentement. Pour prendre un exemple concret, considérons le
réseau de neurones monocouche, composé de trois nœuds d'entrée et d'un nœud
de sortie, comme illustré à la figure 2-12. Par souci de commodité, nous ne
supposons aucun biais pour le nœud de sortie pour le moment. Nous utilisons
une fonction d'activation linéaire ; c'est-à-dire que la somme pondérée est
directement transférée à la sortie.
Figure 2-12. Un réseau de neurones monocouche avec trois noeuds d'entrée et un noeud de
sortie
Notez que le premier numéro de l'indice (1) indique le numéro du nœud dans
lequel l'entrée est entrée. Par exemple, le poids entre le nœud d'entrée 2 et le nœud
de sortie 1 est noté w12. Cette notation permet des opérations plus simples avec
des matrices ; les poids associés au nœud i sont attribués au rang i-ème de la
matrice de poids. L'application de la règle delta de l'équation 2.1 à l'exemple de
réseau neuronal donne le renouvellement des pondérations sous la forme:
𝑤11 = 𝑤11 + 𝛼 𝑒1𝑥1
𝑤12 = 𝑤12 + 𝛼 𝑒1𝑥2
𝑤13 = 𝑤13 + 𝛼 𝑒1𝑥3
Résumons l’algorithme d’apprentissage en utilisant la règle delta pour le
réseau de neurones à une couche.
1. Initialisez les poids aux valeurs adéquates.
2. Prenez «l'entrée» dans les données d'apprentissage de {entrée, sortie
correcte} et entrez-la dans le réseau de neurones. Calculez l'erreur de la sortie,
yi, de la sortie correcte, di, à l'entrée.
𝑒𝑖 = 𝑑𝑖 − 𝑦𝑖
3. Calculez les mises à jour de poids en fonction de la règle de delta
suivante :
∆𝑤𝑖𝑗 = 𝛼 𝑒𝑖𝑥𝑗
4. Ajustez les poids comme suit :
𝑤𝑖𝑗 = 𝑤𝑖𝑗 + ∆𝑤𝑖𝑗
5. Effectuez les étapes 2 à 4 pour toutes les données d'entrainement.
6. Répétez les étapes 2 à 5 jusqu'à ce que l'erreur atteigne un niveau de
tolérance acceptable.
Figure 2-13. Le processus de formation
Ces étapes sont presque identiques à celles du processus d’apprentissage
supervisé de la section «Apprentissage supervisé d’un réseau de neurones». La
seule différence est l'ajout de l'étape 6. L'étape 6 indique simplement que
l'ensemble du processus de formation est répété. Une fois l’étape 5 terminée, le
modèle a été formé à chaque point de données. Alors, pourquoi le formons-nous
en utilisant toutes les mêmes données de formation ? C'est parce que la règle delta
recherche la solution à mesure qu'elle répète le processus, plutôt que de la
résoudre en une seule fois. L'ensemble du processus est répété, car la nouvelle
formation du modèle avec les mêmes données peut améliorer le modèle. À titre
de référence, le nombre d'itérations de formation, dans chacune desquelles toutes
les données de formation passent par les étapes 2 à 5 une fois, est appelé une
époque. Par exemple, epoch = 10 signifie que le réseau de neurones effectue 10
processus de formation répétés avec le même jeu de données.
V.2. Généralisation de la loi de Widrow-Hoff (règle dalta)
Cette section aborde certains aspects théoriques de la règle du delta. Nous
allons passer en revue les sujets les plus essentiels sans trop préciser sur les détails.
La règle delta de la section précédente est plutôt obsolète. Des études ultérieures
ont révélé qu'il existait une forme plus généralisée de la règle du delta. Pour une
fonction d'activation arbitraire, la règle delta est exprimée sous la forme de
l'équation suivante.
𝑤𝑖𝑗 = 𝑤𝑖𝑗 + 𝛼𝛿𝑖𝑥𝑗 Equation 2.2
C'est la même chose que la règle delta de la section précédente, sauf que
𝑒𝑖 est remplacé par 𝛿𝑖. Dans cette équation, 𝛿𝑖 est défini comme suit:
𝛿𝑖 = 𝜑′(𝑣𝑖)𝑒𝑖 Equation 2.3
Avec :
𝑒𝑖 = l'erreur du noeud de sortie i
𝑣𝑖 = la somme pondérée du noeud de sortie i
𝜑 ′ = La dérivée de la fonction d'activation du nœud de sortie i
V.3. Stochastic Gradient Descent, méthode du gradient stochastique
La descente de gradient stochastique (SGD) calcule l’erreur pour chaque
donnée d’entrainement et ajuste les poids immédiatement (en utilisant les
équations 2.2 et 2.3). Si nous avons 100 points de données d’entrainement, le SGD
ajuste les poids 100 fois.
V.3 La méthode BATCH, par lot
Dans la méthode par lots, chaque mise à jour de poids est calculée pour toutes
les erreurs des données d'apprentissage et la moyenne des mises à jour de poids
est utilisée pour ajuster les poids. Cette méthode utilise toutes les données
d'apprentissage et ne se met à jour qu'une seule fois.
V.4. La méthode Mini Batch, Mini Lot
La méthode des mini lots est un mélange des méthodes SGD et batch. Elle
sélectionne une partie des données d'apprentissage et l'utilise pour l'apprentissage
de la méthode par lots. Par conséquent, il calcule les mises à jour de poids des
données sélectionnées et entraine le réseau de neurones avec la mise à jour de
poids moyen. Par exemple, si 20 points de données arbitraires sont sélectionnés
sur 100 points de données d'apprentissage, la méthode par lots est appliquée aux
20 points de données. Dans ce cas, cinq ajustements de poids au total sont
effectués pour terminer le processus d’entrainement pour tous les points de
données (5 = 100/20).