Académique Documents
Professionnel Documents
Culture Documents
Réseaux
neuronaux artificiels 9
Ce chapitre couvre
• Comprendre l'inspiration et l'intuition des réseaux de neurones
artificiels
Figure 9.1 Une carte décrivant la flexibilité de l'apprentissage profond et des ANNs
Que sont les réseaux neuronaux artificiels ?
281
Les ANN peuvent être considérés comme un modèle de plus dans le cycle de vie de
l'apprentissage automatique (chapitre 8). La figure 9.2 récapitule ce cycle de vie. Un
problème doit être identifié ; les données doivent être collectées, comprises et
préparées ; et le modèle ANN sera testé et amélioré si nécessaire.
Figure 9.2 Un flux de travail pour les expériences et les projets d'apprentissage
automatique
Maintenant que nous avons une idée de la place des ANN dans le paysage abstrait de
l'apprentissage automatique et que nous savons qu'un ANN est un autre modèle
entraîné dans le cycle de vie, explorons l'intuition et le fonctionnement des ANN.
Comme les algorithmes génétiques et les algorithmes d'intelligence artificielle, les
ANN s'inspirent de phénomènes naturels - dans ce cas, le cerveau et le système
nerveux. Le système nerveux est une structure biologique qui nous permet de ressentir
des sensations et constitue la base du fonctionnement de notre cerveau. Nous avons des
nerfs dans tout notre corps et des neurones qui se comportent de manière similaire
dans notre cerveau.
Les réseaux neuronaux sont constitués de neurones interconnectés qui
transmettent des informations en utilisant des signaux électriques et chimiques. Les
neurones transmettent des informations à d'autres neurones et ajustent les
informations pour accomplir une fonction spécifique. Lorsque vous prenez une tasse
et buvez une gorgée d'eau, des millions de neurones traitent l'intention de ce que
vous voulez faire, l'action physique pour l'accomplir et le retour d'information pour
déterminer si vous avez réussi. Pensez aux petits enfants qui apprennent à boire dans
une tasse. Ils commencent généralement mal, laissant souvent tomber la tasse. Puis
ils apprennent à la saisir à deux mains. Petit à petit, ils apprennent à saisir la tasse
d'une seule main et à boire une gorgée sans problème. Ce processus prend des mois.
Ce qui se passe, c'est que leur cerveau et leur système nerveux apprennent par la
pratique ou l'entraînement. La figure 9.3 présente un modèle simplifié de réception
d'entrées (stimuli), de traitement de ces entrées dans un réseau neuronal et de
production de sorties (réponse).
282 Chapitre 9 I Réseaux neuronaux
artificiels
Pour simplifier, un neurone (figure 9.4) se compose de dendrites qui reçoivent des
signaux d'autres neurones, d'un corps cellulaire et d'un noyau qui activent et ajustent
le signal, d'un axone qui transmet le signal à d'autres neurones et de synapses qui
transportent le signal et l'ajustent avant de le transmettre aux dendrites du neurone
suivant. Grâce à environ 90 milliards de neurones qui travaillent ensemble, notre
cerveau peut fonctionner avec le haut niveau d'intelligence que nous connaissons.
Bien que les ANN s'inspirent des réseaux neuronaux biologiques et utilisent de
nombreux concepts observés dans ces systèmes, ils ne sont pas des représentations
identiques des systèmes neuronaux biologiques. Nous avons encore beaucoup à
apprendre sur le cerveau et le système nerveux.
Le perceptron : Une représentation d'un 283
neurone
Les composants du perceptron sont décrits par des variables utiles au calcul de la sortie.
Les poids modifient les entrées ; cette valeur est traitée par un noeud caché ; et enfin, le
résultat est fourni comme sortie.
Voici une brève description des composants du Perceptron :
• Entrées : décrivez les valeurs d'entrée. Dans un neurone, ces valeurs
seraient un signal d'entrée.
• Poids - Décrit les poids de chaque connexion entre une entrée et le nœud
caché. Les poids influencent l'intensité d'une entrée et donnent lieu à une
entrée pondérée. Dans un neurone, ces connexions seraient les synapses.
284 Chapitre 9 I Réseaux neuronaux
artificiels
Remarquez que le prix et la taille sont les entrées et que la probabilité prédite que
l'appartement soit loué est la sortie. Les poids sont essentiels pour obtenir cette
prédiction. Les poids sont les variables du réseau qui apprennent les relations entre les
entrées. Les fonctions de sommation et d'activation sont utilisées pour traiter les
entrées multipliées par les poids afin de réaliser une prédiction.
Le perceptron : Une représentation d'un 285
neurone
Remarquez que nous utilisons une fonction d'activation appelée fonction sigmoïde.
Les fonctions d'activation jouent un rôle essentiel dans le Perceptron et les ANN. Dans
ce cas, la fonction d'activation nous aide à résoudre un problème linéaire. Mais
lorsque nous examinerons les ANN dans la section suivante, nous verrons comment les
fonctions d'activation sont utiles pour recevoir des entrées afin de résoudre des
problèmes non linéaires. La figure 9.7 décrit les principes de base des problèmes
linéaires.
La fonction sigmoïde donne une courbe en S entre 0 et 1, pour des entrées entre 0
et 1. Comme la fonction sigmoïde permet aux changements de x d'entraîner de petits
changements de y, elle permet un apprentissage progressif. Lorsque nous aborderons
le fonctionnement profond des ANN plus tard dans ce chapitre, nous verrons
comment cette fonction permet également de résoudre des problèmes non linéaires.
Prenons un peu de recul et examinons les données que nous utilisons pour le
Perceptron. Il est important de comprendre les données relatives à la vente d'un
appartement pour comprendre ce que fait le Perceptron. La figure 9.8 illustre les
exemples de l'ensemble de données, y compris le prix et la taille de chaque appartement.
Chaque appartement est étiqueté comme l'une des deux classes suivantes : loué ou non
loué. La ligne qui sépare les deux classes est la fonction décrite par le Perceptron.
286 Chapitre 9 I Réseaux neuronaux
artificiels
Bien que le Perceptron soit utile pour résoudre les problèmes linéaires, il ne peut pas
résoudre les problèmes non linéaires. Si un ensemble de données ne peut pas être
classé par une ligne droite, le Perceptron échouera.
Les ANN utilisent le concept du Perceptron à l'échelle. De nombreux neurones
similaires au Perceptron travaillent ensemble pour résoudre des problèmes non
linéaires dans de nombreuses dimensions. Notez que la fonction d'activation utilisée
influence les capacités d'apprentissage de l'ANN.
EXERCICE : CALCULEZ LA SORTIE DE L'ENTRÉE SUIVANTE POUR LE PERCEPTRON
Un exemple d'architecture ANN peut être utilisé pour déterminer si une collision va se
produire sur la base des caractéristiques dont nous disposons. Les caractéristiques de
l'ensemble de données doivent être cartographiées en tant qu'entrées de l'ANN, et la
classe que nous essayons de prédire est cartographiée en tant que sortie de l'ANN. Dans
cet exemple, les nœuds d'entrée sont la vitesse, la qualité du terrain, le degré de
vision et l'expérience totale ; le nœud de sortie est l'occurrence d'une collision (figure
9.9).
Comme pour les autres algorithmes d'apprentissage automatique que nous avons
étudiés, la préparation des données est importante pour permettre à un ANN de
Définition des réseaux neuronaux 289
artificiels
classer les données avec succès. La principale préoccupation est de représenter les
données de manière comparable. En tant qu'humains, nous comprenons le concept de
vitesse et de degré de vision, mais l'ANN ne dispose pas de ce contexte. En comparant
directement
290 Chapitre 9 I Réseaux neuronaux
artificiels
65 km/h et 36 degrés de vision n'a pas de sens pour l'ANN, mais la comparaison du
rapport entre la vitesse et le degré de vision est utile. Pour accomplir cette tâche,
nous devons mettre nos données à l'échelle.
Une façon courante de mettre à l'échelle des données afin de pouvoir les comparer
est d'utiliser l'approche de mise à l'échelle min-max, qui vise à mettre à l'échelle les
données à des valeurs comprises entre 0 et 1. En mettant à l'échelle toutes les données
d'un ensemble de données pour que leur format soit cohérent, nous rendons les
différentes caractéristiques comparables. Comme les ANN ne disposent d'aucun
contexte concernant les caractéristiques brutes, nous éliminons également les biais
liés aux grandes valeurs d'entrée. Par exemple, 1 000 semble être beaucoup plus
grand que 65, mais 1 000 dans le contexte de l'expérience de conduite totale est
faible, et 65 dans le contexte de la vitesse de conduite est significatif. La mise à
l'échelle Min-Max représente ces données dans le bon contexte en prenant en
compte les valeurs minimales et maximales possibles pour chaque caractéristique.
Voici les valeurs minimales et maximales sélectionnées pour les caractéristiques
dans les données de collision de voitures :
• Vitesse - La vitesse minimale est 0, ce qui signifie que la voiture ne se déplace
pas. Nous utiliserons la vitesse maximale de 120, car 120 km/h est la vitesse
maximale légale dans la plupart des endroits du monde. Nous supposerons que
le conducteur respecte les règles.
• Qualité du terrain - Parce que les données sont déjà dans un système de
notation, la valeur minimale est 0, et la valeur maximale est 10.
• Degré de vision - Nous savons que le champ de vision total en degrés est de 360.
La valeur minimale est donc 0, et la valeur maximale est 360.
• Expérience totale - La valeur minimale est de 0 si le conducteur n'a aucune
expérience. Nous allons subjectivement fixer la valeur maximale à 400 000
pour l'expérience de conduite. Le raisonnement est le suivant : si un
conducteur a 400 000 km d'expérience de conduite, nous considérons qu'il est
hautement compétent et que toute autre expérience n'a pas d'importance.
La mise à l'échelle Min-Max utilise les valeurs minimum et maximum d'une
caractéristique et trouve le pourcentage de la valeur réelle de la caractéristique. La
formule est simple : soustrayez le minimum de la valeur, puis divisez le résultat par le
minimum soustrait du maximum. La figure 9.10 illustre le calcul de l'échelle min-max
pour la première ligne de données de l'exemple de collision de voitures :
Qualité Degré de Expérienc Une
Vitesse du vision e totale collision
terrain s'est
produite ?
1 65 km/h 5/10 180° 80 000 km Non
Définition des réseaux neuronaux 291
artificiels
Figure 9.10 Exemple de mise à l'échelle Min-Max avec des données de collision de voitures
Remarquez que toutes les valeurs sont comprises entre 0 et 1 et peuvent être
comparées de manière égale. La même formule est appliquée à toutes les lignes de
l'ensemble de données pour garantir que chaque valeur est mise à l'échelle. Notez que
pour la valeur de la fonction "Collision occurred ?", Yes est remplacé par 1, et No par
0. Le tableau 9.2 présente les données de collision de voitures mises à l'échelle.
Tableau 9.2 Mise à l'échelle de l'ensemble de données sur les collisions de voitures
Qualité Degré de Expérienc Une
Vitesse du vision e totale collision
terrain s'est
produite ?
1 0.542 0.5 0.5 0.200 0
2 1.000 0.1 0.2 0.275 1
3 0.067 0.6 0.8 0.125 0
4 0.417 0.2 0.9 0.004 1
5 0.208 0.9 0.1 0.400 0
6 0.667 0.3 0.3 0.015 1
7 0.333 0.3 1.0 1.000 0
Pseudocode
Le code pour la mise à l'échelle des données suit la logique et les calculs de la mise à
l'échelle min-max de manière identique. Nous avons besoin des minimums et maximums
pour chaque caractéristique, ainsi que du nombre total de caractéristiques dans notre
ensemble de données. La fonction scale_dataset utilise ces paramètres pour itérer
292 Chapitre 9 I Réseaux neuronaux
sur chaque exemple dans artificiels
l'ensemble de
données et mettre à l'échelle la valeur en utilisant
la fonction scale_ data_feature :
Définition des réseaux neuronaux 293
artificiels
Maintenant que nous avons préparé les données de manière à ce qu'elles puissent être
traitées par un ANN, explorons l'architecture d'un ANN simple. Rappelez-vous que les
caractéristiques utilisées pour prédire une classe sont les nœuds d'entrée, et que la
classe prédite est le nœud de sortie.
La figure 9.11 montre un ANN avec une couche cachée, qui est la seule couche
verticale de la figure, avec cinq nœuds cachés. Ces couches sont appelées couches cachées
car elles ne sont pas directement observées de l'extérieur du réseau. Seules les entrées
et les sorties sont interagies, ce qui donne l'impression que les ANN sont des boîtes
noires. Chaque nœud caché est similaire au perceptron. Un nœud caché prend les
entrées et les poids, puis calcule la somme et une fonction d'activation. Les résultats
de chaque nœud caché sont ensuite traités par un seul nœud de sortie.
294 Chapitre 9 I Réseaux neuronaux
artificiels
Avant d'examiner les calculs d'un ANN, essayons de comprendre de manière intuitive
ce que font les poids du réseau à un niveau élevé. Étant donné qu'un seul nœud caché
est connecté à chaque nœud d'entrée, mais que chaque connexion a un poids différent, les
nœuds cachés indépendants peuvent être concernés par des relations spécifiques
entre deux ou plusieurs nœuds d'entrée.
La figure 9.12 illustre un scénario dans lequel le premier nœud caché a une forte
pondération sur les liens avec la qualité du terrain et le degré de vision, mais une
faible pondération sur les liens avec la vitesse et l'expérience totale. Ce nœud caché
spécifique est concerné par la relation entre la qualité du terrain et le degré de vision.
Il pourrait permettre de comprendre la relation entre ces deux caractéristiques et la
manière dont elles influencent la survenue de collisions ; une mauvaise qualité de
terrain et un faible degré de vision, par exemple, pourraient influencer davantage la
probabilité de collisions qu'une bonne qualité de terrain et un degré de vision moyen.
Ces relations sont généralement plus complexes que cet exemple simple.
Définition des réseaux neuronaux 295
artificiels
Figure 9.12 Exemple de nœud caché comparant la qualité du terrain et le degré de vision
Dans la figure 9.13, le deuxième nœud caché pourrait avoir une forte pondération sur les
connexions avec la qualité du terrain et l'expérience totale. Il existe peut-être une
relation entre les différentes qualités de terrain et la variance de l'expérience totale
de conduite qui contribue aux collisions.
Figure 9.13 Exemple de nœud caché comparant la qualité du terrain et l'expérience totale
296 Chapitre 9 I Réseaux neuronaux
artificiels
Pseudocode
Le morceau de pseudocode suivant décrit une classe qui représente un réseau neuronal.
Remarquez que les couches sont représentées comme des propriétés de la classe et
que toutes les propriétés sont des tableaux, à l'exception des poids, qui sont des
matrices. Une propriété de sortie représente les prédictions pour les exemples
donnés, et une propriété expected_output est utilisée pendant le processus de
formation :
Propagation vers l'avant : Utilisation d'un 295
ANN entraîné
Comme mentionné précédemment, les étapes du calcul des résultats des nœuds d'un ANN
sont similaires à celles du Perceptron. Des opérations similaires sont effectuées sur de
nombreux nœuds qui travaillent ensemble ; cela permet de remédier aux défauts du
Perceptron et de résoudre des problèmes qui ont plus de dimensions. Le déroulement
général de la propagation vers l'avant comprend les étapes suivantes :
1. Saisir un exemple - Fournir un seul exemple de l'ensemble de données pour
lequel nous voulons prédire la classe.
2. Multiplier les entrées et les poids : multipliez chaque entrée par chaque
poids de sa connexion aux nœuds cachés.
3. Somme des résultats des entrées pondérées pour chaque nœud caché -
Somme des résultats des entrées pondérées.
4. Fonction d'activation pour chaque nœud caché : appliquez une fonction
d'activation aux entrées pondérées additionnées.
5. Somme des résultats des sorties pondérées des nœuds cachés vers le nœud
de sortie - Somme des résultats pondérés de la fonction d'activation de tous
les nœuds cachés.
6. Fonction d'activation pour le nœud de sortie : appliquez une fonction
d'activation aux nœuds cachés pondérés additionnés.
Pour étudier la propagation vers l'avant, nous supposerons que le réseau ANN a été
entraîné et que les poids optimaux du réseau ont été trouvés. La figure 9.15 illustre les
poids de chaque connexion. La première case à côté du premier nœud caché, par exemple,
a un poids de 3,35, qui est lié au nœud d'entrée Vitesse ; le poids -5,82 est lié au nœud
d'entrée Qualité du terrain ; et ainsi de suite.
Le réseau neuronal ayant été entraîné, nous pouvons l'utiliser pour prédire la probabilité
de collisions en lui fournissant un seul exemple. Le tableau 9.3 rappelle l'ensemble de
données à l'échelle que nous utilisons.
Tableau 9.3 Mise à l'échelle de l'ensemble de données sur les collisions de voitures
Qualité Degré de Expérienc Une
Vitess du vision e totale collision
e terrain s'est
produite ?
1 0.542 0.5 0.5 0.200 0
2 1.000 0.1 0.2 0.275 1
3 0.067 0.6 0.8 0.125 0
4 0.417 0.2 0.9 0.004 1
5 0.208 0.9 0.1 0.400 0
6 0.667 0.3 0.3 0.015 1
7 0.333 0.3 1.0 1.000 0
Si vous vous êtes déjà intéressé aux ANN, vous avez peut-être remarqué certaines
notations mathématiques potentiellement effrayantes. Décortiquons certains des
concepts qui peuvent être représentés mathématiquement.
Les entrées de l'ANN sont désignées par X. Chaque variable d'entrée sera X sous
l'indice d'un nombre. La vitesse est X0, la qualité du terrain est X1, et ainsi de suite. La
sortie du réseau est désignée par y, et les poids du réseau sont désignés par W.
Comme le réseau ANN comporte deux couches - une couche cachée et une couche de
sortie - il existe deux groupes de poids.
Le premier groupe est désigné par l'exposant W0, et le second par W1. Ensuite,
chaque poids est désigné par les nœuds auxquels il est connecté. Le poids entre le nœud
Vitesse et le premier nœud caché est W00,0, et le poids entre le nœud Qualité du
terrain et le premier nœud caché est W01,0. Ces dénotations ne sont pas
nécessairement importantes pour cet examen, mais les comprendre maintenant
facilitera l'apprentissage futur.
La figure 9.16 montre comment les données suivantes sont représentées dans un ANN :
Qualité Degré de Expérienc Une
Vitesse du vision e totale collision
terrain s'est
produite ?
1 0.542 0.5 0.5 0.200 0
Propagation vers l'avant : Utilisation d'un 299
ANN entraîné
L'étape suivante consiste à calculer l'activation de chaque nœud caché. Nous utilisons la
fonction sigmoïde, et l'entrée de la fonction est la somme pondérée des entrées
calculées pour chaque nœud caché (figure 9.18).
Nous avons maintenant les résultats de l'activation pour chaque nœud caché. Lorsque
nous renvoyons ce résultat aux neurones, les résultats d'activation représentent
l'intensité d'activation de chaque neurone. Étant donné que différents nœuds cachés
peuvent être concernés par différentes relations dans les données par le biais des
poids, les activations peuvent être utilisées conjointement pour déterminer une
activation globale qui représente la probabilité d'une collision, compte tenu des
entrées.
La figure 9.19 illustre les activations de chaque nœud caché et les poids de chaque
nœud caché vers le nœud de sortie. Pour calculer la sortie finale, nous répétons le
processus consistant à calculer la somme pondérée des résultats de chaque nœud
caché et à appliquer la fonction d'activation sigmoïde à ce résultat.
Nous avons calculé la prédiction de sortie pour notre exemple. Le résultat est 0,00214,
mais que signifie ce chiffre ? La sortie est une valeur comprise entre 0 et 1 qui représente
la probabilité qu'une collision se produise. Dans ce cas, le résultat est de 0,214 % (0,00214
100), ce qui indique que la probabilité de collision est presque nulle.
L'exercice suivant utilise un autre exemple de l'ensemble de données.
EXERCICE : CALCULEZ LA PRÉDICTION POUR L'EXEMPLE EN UTILISANT LA PROPAGATION AVANT
AVEC L'ANN SUIVANTE
Lorsque nous soumettons cet exemple à notre ANN pré-entraîné, la sortie est de
0,99996, soit 99,996 %, ce qui signifie qu'il y a une chance extrêmement élevée qu'une
collision se produise. En appliquant un peu d'intuition humaine à ce seul exemple, nous
pouvons voir pourquoi une collision est probable. Le conducteur roulait à la vitesse
maximale légale, sur un terrain de très mauvaise qualité, avec un champ de vision
réduit.
Pseudocode
L'une des fonctions importantes pour l'activation dans notre exemple est la fonction
sigmoïde. Cette méthode décrit la fonction mathématique qui représente la courbe S :
Remarquez que la même classe de réseau neuronal définie plus tôt dans le chapitre
est décrite dans le code suivant. Cette fois, une fonction de propagation
directe est incluse. Cette fonction additionne l'entrée et les poids entre les nœuds
d'entrée et cachés, applique la fonction sig- moide à chaque résultat et stocke la sortie
comme résultat pour les nœuds de la couche cachée. Cette opération est également
effectuée pour la sortie du nœud caché et les poids vers le nœud de sortie :
Backpropagation : Formation d'un 303
ANN
Le symbole - implique
une multiplication de
la matrice.
La phase A, la phase B et la phase C décrivent les phases et les opérations impliquées dans
l'algorithme de rétro propagation.
Backpropagation : Formation d'un 305
ANN
1. Définir l'architecture ANN. Cette étape consiste à définir les nœuds d'entrée,
les nœuds de sortie, le nombre de couches cachées, le nombre de neurones dans
chaque couche cachée, les fonctions d'activation utilisées, etc.
2. Initialiser les poids de l'ANN. Les poids dans l'ANN doivent être initialisés à une
certaine valeur. Nous pouvons adopter différentes approches. Le principe clé est
que les poids seront constamment ajustés au fur et à mesure que l'ANN apprend
des exemples d'entraînement.
Phase C : Formation
L'étape suivante est la propagation vers l'avant (figure 9.22). La principale modification
consiste à vérifier la différence entre la prédiction obtenue et la classe réelle.
Figure 9.22 Exemple de propagation vers l'avant avec des poids initialisés de façon aléatoire
308 Chapitre 9 I Réseaux neuronaux
artificiels
En comparant le résultat prédit avec la classe réelle, nous pouvons calculer un coût. La
fonction de coût que nous allons utiliser est simple : soustraire le résultat prédit du résultat
réel. Dans cet exemple, 0,84274 est soustrait de 0,0, et le coût est de -0,84274. Ce résultat
indique à quel point la prédiction était incorrecte et peut être utilisé pour ajuster les poids
dans le réseau ANN. Les poids dans le réseau ANN sont légèrement ajustés chaque fois
qu'un coût est calculé. Cela se produit des milliers de fois en utilisant des données
d'entraînement afin de déterminer les poids optimaux pour que le réseau ANN fasse des
prédictions précises. Notez qu'un entraînement trop long sur le même ensemble de
données peut entraîner un surajustement, décrit au chapitre 8.
C'est ici qu'entrent en jeu des mathématiques potentiellement peu familières : la
règle des chaînes. Avant d'utiliser la règle des chaînes, nous devons comprendre ce que
signifient les poids et comment leur ajustement améliore les performances de l'ANN.
Si nous reportons les poids possibles en fonction de leur coût respectif sur un
graphique, nous trouvons une fonction qui représente les poids possibles. Certains points
de la fonction donnent un coût plus faible, et d'autres points un coût plus élevé. Nous
recherchons les points qui minimisent le coût (figure 9.23).
Un outil utile du domaine du calcul, appelé descente de gradient, peut nous aider à
rapprocher le poids de la valeur minimale en trouvant la dérivée. La dérivée est
importante car elle mesure la sensibilité au changement pour cette fonction. Par exemple,
la vitesse peut être la dérivée de la position d'un objet par rapport au temps, et
l'accélération est la dérivée de la vitesse de l'objet par rapport au temps. Les dérivées
permettent de trouver la pente à un point spécifique de la fonction. La descente par
gradient utilise la connaissance de la pente pour déterminer dans quelle direction se
déplacer et de combien. Les figures 9.24 et 9.25 décrivent comment les dérivées et la
pente indiquent la direction des minimums.
Backpropagation : Formation d'un 309
ANN
Lorsque nous examinons un poids isolément, il peut sembler trivial de trouver une
valeur qui minimise le coût, mais de nombreux poids équilibrés affectent le coût du
réseau global. Certains poids peuvent être proches de leur point optimal pour réduire
le coût, et d'autres non, même si le réseau ANN est performant.
Comme plusieurs fonctions composent le ANN, nous pouvons utiliser la règle de la
chaîne. La règle de la chaîne est un théorème du domaine du calcul qui calcule la
dérivée d'une fonction composite. Une fonction composite utilise une fonction g comme
paramètre d'une fonction f pour produire une fonction h, en utilisant essentiellement
une fonction comme paramètre d'une autre fonction.
La figure 9.26 illustre l'utilisation de la règle de la chaîne pour calculer la valeur de
mise à jour des poids dans les différentes couches du réseau ANN.
310 Chapitre 9 I Réseaux neuronaux
artificiels
Figure 9.26 Formule pour le calcul des mises à jour de poids avec la règle de la chaîne
Nous pouvons calculer la mise à jour des poids en insérant les valeurs respectives dans
la formule décrite. Les calculs semblent effrayants, mais faites attention aux variables
utilisées et à leur rôle dans l'ANN. Bien que la formule semble complexe, elle utilise les
valeurs que nous avons déjà calculées (figure 9.27).
Backpropagation : Formation d'un 311
ANN
Voici un examen plus approfondi des calculs utilisés dans la figure 9.27 :
Maintenant que les valeurs de mise à jour sont calculées, nous pouvons appliquer les
résultats aux poids du ANN en ajoutant la valeur de mise à jour aux poids respectifs. La
figure 9.28 illustre l'application des résultats de la mise à jour des poids aux poids des
différentes couches.
312 Chapitre 9 I Réseaux neuronaux
artificiels
EXERCICE : CALCULER LES NOUVELLES PONDÉRATIONS POUR LES PONDÉRATIONS MISES EN ÉVIDENCE
Backpropagation : Formation d'un 313
ANN
Le problème que la règle des chaînes résout peut vous rappeler le problème des
drones examiné au chapitre 7. L'optimisation par essaims de particules est efficace
pour trouver des valeurs optimales dans des espaces à haute dimension tels que celui-
ci, qui comporte 25 poids à optimiser. Trouver les poids d'un ANN est un problème
d'optimisation. La descente de gradient n'est pas la seule façon d'optimiser les poids ;
nous pouvons utiliser de nombreuses approches, en fonction du contexte et du problème
à résoudre.
314 Chapitre 9 I Réseaux neuronaux
artificiels
Pseudocode
La dérivée est importante dans l'algorithme de rétropropagation. Le morceau de
pseudocode suivant revisite la fonction sigmoïde et décrit la formule de sa dérivée,
dont nous avons besoin pour ajuster les poids :
Nous revisitons la classe des réseaux neuronaux, cette fois avec une fonction de
rétropropagation qui calcule le coût, le montant par lequel les poids doivent être mis à
jour en utilisant la règle de la chaîne, et ajoute les résultats de la mise à jour des poids
aux poids existants. Ce processus calculera le changement pour chaque poids en fonction
du coût. Rappelez-vous que le coût est calculé en utilisant les caractéristiques de
l'exemple, la sortie prédite et la sortie attendue. La différence entre la sortie prédite et la
sortie attendue est le coût :
Pseudocode
Dans ce morceau de pseudocode, on trouve une fonction run_neural_network qui
accepte les époques comme entrée. Cette fonction met les données à l'échelle et crée
un nouveau réseau neuronal avec les données mises à l'échelle, les étiquettes et le
nombre de nœuds cachés. La fonction exécute ensuite la propagation avant et
la propagation arrière pour le nombre d'époques spécifié :
Figure 9.30 Exemple de réseau ANN multicouche avec plus d'une sortie
Conception de réseaux neuronaux artificiels317
Entrées et sorties
Les entrées et les sorties d'un ANN sont les paramètres fondamentaux pour
l'utilisation du réseau. Après l'entraînement d'un modèle ANN, ce dernier sera
potentiellement utilisé dans différents contextes et systèmes, et par différentes
personnes. Les entrées et les sorties définissent l'interface du réseau. Tout au long de
ce chapitre, nous avons vu un exemple d'ANN avec quatre entrées décrivant les
caractéristiques d'un scénario de conduite et une sortie décrivant la probabilité d'une
collision. Cependant, nous pouvons rencontrer un problème lorsque les entrées et les
sorties ont des significations différentes. Si nous disposons d'une image de 16 par 16
pixels représentant un chiffre écrit à la main, par exemple, nous pouvons utiliser les
pixels comme entrées et le chiffre qu'ils représentent comme sortie. L'entrée consisterait
en 256 nœuds représentant les valeurs des pixels, et la sortie en 10 nœuds représentant
0 à 9, chaque résultat indiquant la probabilité que l'image soit le chiffre
correspondant.
Poids
L'initialisation des poids est importante car elle établit un point de départ à partir
duquel le poids sera légèrement ajusté au cours de nombreuses itérations. Des poids
initialisés trop petits conduisent au problème du gradient évanescent décrit
précédemment, et des poids initialisés trop grands conduisent à un autre problème, le
problème du gradient explosif, dans lequel les poids se déplacent de façon erratique
autour du résultat souhaité.
Il existe différents schémas d'initialisation des poids, chacun ayant ses propres
avantages et inconvénients. Une règle empirique consiste à s'assurer que la moyenne des
résultats d'activation dans une couche est égale à 0 - la moyenne de tous les résultats des
nœuds cachés dans une couche. De même, la variance des résultats d'activation doit
être la même : la variabilité des résultats de chaque nœud caché doit être cohérente
sur plusieurs itérations.
318 Chapitre 9 I Réseaux neuronaux
Biais artificiels
Nous pouvons utiliser un biais dans un ANN en ajoutant une valeur à la somme
pondérée des nœuds d'entrée ou des autres couches du réseau. Un biais peut
déplacer la valeur d'activation de la fonction d'activation. Un biais apporte de la
flexibilité dans un ANN et déplace la fonction d'activation vers la gauche ou la droite.
318 Chapitre 9 I Réseaux neuronaux
artificiels
Une façon simple de comprendre le biais est d'imaginer une ligne qui passe toujours par
0,0 sur un plan ; nous pouvons influencer cette ligne pour qu'elle passe par une autre
intersection en ajoutant +1 à une variable. Cette valeur sera basée sur le problème à
résoudre.
Fonctions d'activation
Plus tôt, nous avons abordé les fonctions d'activation courantes utilisées dans les
ANN. Une règle de base est de s'assurer que tous les nœuds d'une même couche
utilisent la même fonction d'activation. Dans les réseaux ANN multicouches, les
différentes couches peuvent utiliser différentes fonctions d'activation en fonction du
problème à résoudre. Un réseau qui détermine si des prêts doivent être accordés, par
exemple, peut utiliser la fonction sigmoïde dans les couches cachées pour déterminer les
probabilités et une fonction d'étape en sortie pour obtenir une décision claire de 0 ou
1.
Les CNN sont utilisés pour la classification des images. Si vous avez déjà recherché une
image en ligne, vous avez probablement interagi indirectement avec un CNN. Ces
Types de réseaux de neurones artificiels et cas 321
réseaux sont également d'utilisation
utiles pour la reconnaissance optique de caractères afin
d'extraire des données textuelles d'une image. Les CNN ont été utilisés dans l'industrie
médicale pour des applications qui détectent des anomalies et des conditions
médicales par le biais de rayons X et d'autres scans corporels.
322 Chapitre 9 I Réseaux neuronaux
artificiels
Les GAN sont utilisés pour générer de fausses vidéos convaincantes (également
appelées deepfakes) de personnes célèbres, ce qui suscite des inquiétudes quant à
l'authenticité des informations dans les médias. Les GAN ont également des
applications utiles, comme la superposition de coiffures sur le visage des gens. Les
GAN ont été utilisés pour générer des objets 3D à partir d'images 2D, par exemple
pour générer une chaise 3D à partir d'une image 2D. Ce cas d'utilisation peut sembler
sans importance, mais le réseau estime et crée avec précision des informations à partir
d'une source incomplète. C'est un grand pas en avant dans l'avancement de l'IA et de la
technologie en général.
Ce chapitre visait à faire le lien entre les concepts de l'apprentissage automatique
et le monde quelque peu mystérieux des ANN. Pour en savoir plus sur les ANNs et
l'apprentissage profond, essayez Grokking Deep Learning (Manning Publications) ; et
pour un guide pratique d'un cadre de construction d'ANNs, voir Deep Learning with
Python (Manning Publications).
Types de réseaux de neurones artificiels et cas 325
d'utilisation