Vous êtes sur la page 1sur 57

Abonnez-vous à DeepL Pro pour éditer ce document.

Visitez www.DeepL.com/pro pour en savoir plus.

Réseaux
neuronaux artificiels 9

Ce chapitre couvre
• Comprendre l'inspiration et l'intuition des réseaux de neurones
artificiels

• Identifier les problèmes pouvant être résolus à l'aide de


réseaux neuronaux artificiels

• Comprendre et mettre en œuvre la propagation vers l'avant à


l'aide d'un réseau entraîné

• Comprendre et mettre en œuvre la rétro-propagation pour


former un réseau

• Conception d'architectures de réseaux neuronaux artificiels pour


résoudre différents problèmes
279
280Chapitre 9 I Réseaux de neurones artificiels

Que sont les réseaux neuronaux artificiels ?


Les réseaux de neurones artificiels (ANN) sont des outils puissants de la boîte à outils
de l'apprentissage automatique, utilisés de diverses manières pour atteindre des
objectifs tels que la reconnaissance d'images, le traitement du langage naturel et les
jeux. Les RNA apprennent de la même manière que les autres algorithmes
d'apprentissage automatique : en utilisant des données d'entraînement. Ils sont les
mieux adaptés aux données non structurées pour lesquelles il est difficile de
comprendre comment les caractéristiques sont liées les unes aux autres. Ce chapitre traite
de l'inspiration des ANN ; il montre également comment l'algorithme fonctionne et
comment les ANN sont conçus pour résoudre différents problèmes.
Pour bien comprendre comment les ANN s'intègrent dans le paysage plus vaste de
l'apprentissage automatique, nous devons examiner la composition et la
catégorisation des algorithmes d'apprentissage automatique. L'apprentissage profond
est le nom donné aux algorithmes qui utilisent les ANNs dans diverses architectures
pour atteindre un objectif. L'apprentissage profond, y compris les ANN, peut être
utilisé pour résoudre des problèmes d'apprentissage supervisé, d'apprentissage non
supervisé et d'apprentissage par renforcement. La figure 9.1 montre comment
l'apprentissage profond est lié aux ANN et à d'autres concepts d'apprentissage
automatique.

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

Figure 9.3 Modèle simplifié d'un système neuronal biologique

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.

Figure 9.4 La composition générale des neurones

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

Le perceptron : Une représentation d'un neurone


Le neurone est le concept fondamental qui compose le cerveau et le système nerveux.
Comme mentionné précédemment, il accepte de nombreuses entrées provenant
d'autres neurones, traite ces entrées et transfère le résultat à d'autres neurones
connectés. Les ANN sont basés sur le concept fondamental du perceptron, une
représentation logique d'un seul neurone biologique.
Comme les neurones, le Perceptron reçoit des entrées (comme les dendrites),
modifie ces entrées en utilisant des pondérations (comme les synapses), traite les
entrées pondérées (comme le corps cellulaire et le noyau) et produit un résultat
(comme les axones). Le Perceptron est vaguement basé sur un neurone. Vous pouvez
remarquer que les synapses sont représentées après les dendrites, ce qui représente
l'influence des synapses sur les entrées entrantes. La figure 9.5 illustre l'architecture
logique du Perceptron.

Figure 9.5 Architecture logique du Perceptron

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

• Nœud caché (somme et activation) : additionne les valeurs d'entrée pondérées,


puis applique une fonction d'activation au résultat additionné. Une fonction
d'activation détermine l'activation/sortie du nœud/neurone caché.
• Sortie - Décrit la sortie finale du perceptron.
Pour comprendre le fonctionnement du Perceptron, nous allons en examiner l'utilisation
en reprenant l'exemple de la recherche d'appartement du chapitre 8. Supposons que
nous soyons des agents immobiliers essayant de déterminer si un appartement spécifique
sera loué dans un mois, en fonction de la taille de l'appartement et de son prix.
Supposons qu'un Perceptron ait déjà été entraîné, ce qui signifie que les poids du
Perceptron ont déjà été ajustés. Nous étudierons plus loin dans ce chapitre la manière
dont les perceptrons et les ANN sont entraînés ; pour l'instant, comprenez que les poids
codent les relations entre les entrées en ajustant la force des entrées.
La figure 9.6 montre comment nous pouvons utiliser un Perceptron pré-entraîné pour
déterminer si un appartement sera loué. Les entrées représentent le prix d'un
appartement spécifique et la taille de cet appartement. Nous utilisons également le
prix et la taille maximum pour mettre à l'échelle les entrées (8 000 $ pour le prix
maximum et 80 mètres carrés pour la taille maximum). Pour en savoir plus sur la mise
à l'échelle des données, consultez la section suivante.

Figure 9.6 Un exemple d'utilisation d'un Perceptron entraîné

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.

Figure 9.7 La fonction sigmoïde

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

Figure 9.8 Exemple de problème de classification linéaire

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

En utilisant vos connaissances sur le fonctionnement du Perceptron, calculez


la sortie de l'équation suivante :
Définition des réseaux neuronaux 287
artificiels

SOLUTION : CALCULER LA SORTIE DE L'ENTRÉE SUIVANTE POUR LE PERCEPTRON

Définition des réseaux neuronaux artificiels


Le Perceptron est utile pour résoudre des problèmes simples, mais à mesure que les
dimensions des données augmentent, il devient moins réalisable. Les ANN utilisent les
principes du Perceptron et les appliquent à plusieurs nœuds cachés plutôt qu'à un
seul.
Pour explorer le fonctionnement des ANN multi-nœuds, prenons un exemple
d'ensemble de données lié aux collisions de voitures. Supposons que nous disposions de
données provenant de plusieurs voitures au moment où un objet non vu entre dans leur
trajectoire. L'ensemble de données contient des caractéristiques liées aux conditions et à
l'existence d'une collision, notamment les suivantes :
• Vitesse - La vitesse à laquelle la voiture roulait avant de rencontrer l'objet.
• Qualité du terrain : qualité de la route sur laquelle la voiture circulait avant
de rencontrer l'objet.
• Degré de vision : le degré de vision du conducteur avant que la voiture ne
rencontre l'objet.
• Expérience totale - L'expérience totale de conduite du conducteur de la voiture.
• Une collision s'est produite ? - Si une collision s'est produite ou non.
À partir de ces données, nous voulons former un modèle d'apprentissage
automatique, à savoir un ANN, pour apprendre la relation entre les caractéristiques
qui contribuent à une collision, comme le montre le tableau 9.1.
288 Chapitre 9 I Réseaux neuronaux
artificiels

Tableau 9.1 Jeu 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 65 km/h 5/10 180° 80 000 km Non
2 120 km/h 1/10 72° 110 000 km Oui
3 8 km/h 6/10 288° 50 000 km Non
4 50 km/h 2/10 324° 1 600 km Oui
5 25 km/h 9/10 36° 160 000 km Non
6 80 km/h 3/10 120° 6 000 km Oui
7 40 km/h 3/10 360° 400 000 km Non

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

Figure 9.9 Exemple d'architecture ANN pour l'exemple de collision de voitures

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

Figure 9.11 Exemple d'architecture ANN pour le problème de collision de voitures

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

Les nœuds d'une couche cachée peuvent être comparés conceptuellement à


l'analogie des fourmis décrite au chapitre 6. Les fourmis accomplissent
individuellement de petites tâches qui semblent insignifiantes, mais lorsque les
fourmis agissent en tant que colonie, un comportement intelligent émerge. De la
même manière, les nœuds cachés individuels contribuent à un objectif plus large dans
le réseau ANN.
En analysant la figure de l'ANN de collision de voitures et les opérations qui y sont
effectuées, nous pouvons décrire les structures de données nécessaires à l'algorithme
:
• Nœuds d'entrée - Les nœuds d'entrée peuvent être représentés par un tableau
unique qui stocke les valeurs d'un exemple spécifique. La taille du tableau
correspond au nombre de caractéristiques de l'ensemble de données utilisées
pour prédire une classe. Dans l'exemple de collision de voitures, nous avons
quatre entrées, la taille du tableau est donc de 4.
• Poids - Les poids peuvent être représentés par une matrice (un tableau 2D), car
chaque nœud d'entrée a une connexion vers chaque nœud caché et chaque
nœud d'entrée a cinq connexions. Comme il y a 4 nœuds d'entrée avec 5
connexions chacun, le réseau ANN a 20 poids vers la couche cachée et 5 vers la
couche de sortie, car il y a 5 nœuds cachés et 1 nœud de sortie.
• Nœuds cachés - Les nœuds cachés peuvent être représentés par un tableau unique
qui stocke les résultats de l'activation de chaque nœud respectif.
• Nœud de sortie : le nœud de sortie est une valeur unique représentant la classe
prédite d'un exemple spécifique ou la probabilité que l'exemple se trouve dans
une classe spécifique. La valeur de sortie peut être 1 ou 0, indiquant si une
collision s'est produite, ou quelque chose comme 0,65, indiquant une
probabilité de 65 % que l'exemple ait entraîné une collision.

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é

Propagation vers l'avant : Utilisation d'un


ANN entraîné
Un ANN entraîné est un réseau qui a appris à partir d'exemples et qui a ajusté ses poids
pour prédire au mieux la classe des nouveaux exemples. Ne vous affolez pas sur la
manière dont la formation se déroule et dont les poids sont ajustés ; nous aborderons ce
sujet dans la section suivante. Comprendre la propagation directe nous aidera à appréhender
la rétropropagation (comment les poids sont formés).
Maintenant que nous connaissons l'architecture générale des ANN et que nous
avons l'intuition de ce que les nœuds du réseau peuvent faire, parcourons
l'algorithme d'utilisation d'un ANN entraîné (figure 9.14).
296 I
Chapitre 9 Réseaux neuronaux
Figure 9.14 Cycle de vie de la propagation vers l'avant dans un ANN
artificiels
Propagation vers l'avant : Utilisation d'un 297
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.

Figure 9.15 Exemple de poids dans un ANN prétraîné


298 Chapitre 9 I Réseaux neuronaux
artificiels

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é

Figure 9.16 Dénomination mathématique d'un ANN

Comme pour le perceptron, la première étape consiste à calculer la somme pondérée


des entrées et le poids de chaque nœud caché. Dans la figure 9.17, chaque entrée est
multipliée par chaque poids et additionnée pour chaque noeud caché.

Figure 9.17 Calcul de la somme pondérée pour chaque nœud caché


300 Chapitre 9 I Réseaux neuronaux
artificiels

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

Figure 9.18 Calcul de la fonction d'activation pour chaque nœud caché

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.

REMARQUE Le symbole sigma (Σ) dans les nœuds cachés


représente l'opération de somme.
Propagation vers l'avant : Utilisation d'un 301
ANN entraîné

Figure 9.19 Calcul de l'activation finale pour le nœud de sortie

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

Qualité Degré de Expérienc Une


Vitesse du vision e totale collision
terrain s'est
produite ?
2 1.000 0.1 0.2 0.275 1
302 Chapitre 9 I Réseaux neuronaux
artificiels

SOLUTION : CALCULER LA PRÉDICTION POUR L'EXEMPLE EN UTILISANT LA


PROPAGATION VERS L'AVANT AVEC L'ANN SUIVANTE
Propagation vers l'avant : Utilisation d'un 303
ANN entraîné

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 :

Exp est une constante mathématique


appelée nombre d'Euler, approximativement
2,71828.

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.

Backpropagation : Formation d'un ANN


Comprendre le fonctionnement de la propagation vers l'avant est utile pour
comprendre comment les ANNs sont formés, car la propagation vers l'avant est
utilisée dans le processus de formation. Le cycle de vie de l'apprentissage
automatique et les principes couverts au chapitre 8 sont importants pour aborder la
propagation vers l'arrière dans les ANNs. Un ANN peut être considéré comme un
autre modèle d'apprentissage automatique. Nous devons toujours avoir une question à
poser. Nous sommes toujours en train de collecter et de comprendre des données dans le
contexte du problème, et nous devons préparer les données de manière à ce qu'elles
puissent être traitées par le modèle.
Nous avons besoin d'un sous-ensemble de données pour la formation et d'un sous-
ensemble de données pour tester les performances du modèle. De plus, nous allons
itérer et nous améliorer en collectant plus de données, en les préparant différemment
ou en changeant l'architecture et la configuration de l'ANN.
La formation d'un réseau ANN se compose de trois phases principales. La phase A
concerne la mise en place de l'architecture ANN, y compris la configuration des
entrées, des sorties et des couches cachées. La phase B est celle de la propagation
directe. La phase C est celle de la rétropropagation, où se déroule l'apprentissage
(figure 9.20).
304 Chapitre 9 I Réseaux neuronaux
artificiels

Figure 9.20 Cycle de vie de la formation d'un ANN

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

Phase A : Mise en place

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 B : Propagation vers l'avant


Ce processus est le même que celui que nous avons couvert dans la phase A. Les
mêmes calculs sont efectués. La sortie prédite sera toutefois comparée à la classe réelle pour
chaque exemple de l'ensemble d'apprentissage afin d'entraîner le réseau.

Phase C : Formation

1. Calculer le coût. En suivant la propagation directe, le coût est la différence entre


la sortie prédite et la classe réelle pour les exemples de l'ensemble
d'apprentissage. Le coût détermine effectivement à quel point l'ANN est
mauvais pour prédire la classe des exemples.
2. Mettre à jour les poids dans l'ANN. Les poids de l'ANN sont les seuls éléments
qui peuvent être ajustés par le réseau lui-même. L'architecture et les
configurations que nous avons définies dans la phase A ne changent pas
pendant l'entraînement du réseau. Les poids codent essentiellement
l'intelligence du réseau. Les poids sont ajustés pour être plus grands ou plus
petits, ce qui affecte la force des entrées.
3. Définissez une condition d'arrêt. L'apprentissage ne peut pas se dérouler
indéfiniment. Comme pour la plupart des algorithmes étudiés dans ce livre, il
convient de déterminer une condition d'arrêt raisonnable. Si nous disposons d'un
grand ensemble de données, nous pouvons décider d'utiliser 500 exemples dans
notre ensemble de données d'entraînement sur 1 000 itérations pour entraîner le
réseau ANN. Dans cet exemple, les 500 exemples seront passés par le réseau 1
000 fois, et les poids seront ajustés à chaque itération.
Lorsque nous avons travaillé sur la propagation directe, les poids étaient déjà définis
car le réseau avait été pré-formé. Avant de commencer à former le réseau, nous
devons initialiser les poids à une certaine valeur, et les poids doivent être ajustés en
fonction des exemples de formation. Une approche de l'initialisation des poids consiste
à choisir des poids aléatoires dans une distribution normale.
La figure 9.21 illustre les poids générés aléatoirement pour notre ANN. Elle montre
306 Chapitre 9 I Réseaux neuronaux
également les calculs de la propagation vers l'avant pour les nœuds cachés, à partir d'un
artificiels
seul exemple d'apprentissage. Le premier exemple d'entrée utilisé dans la section sur la
propagation vers l'avant est utilisé ici pour mettre en évidence les différences de
sortie, compte tenu des différents poids du réseau.
Backpropagation : Formation d'un 307
ANN

Figure 9.21 Exemple de poids initiaux pour un ANN

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

Figure 9.23 Tracé du poids en fonction du coût

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

Figure 9.24 Pentes des dérivées et direction des minimums

Figure 9.25 Exemple d'ajustement d'un poids en utilisant la descente de gradient

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

Figure 9.27 Calcul de la mise à jour du poids avec la règle de la chaîne

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

Figure 9.28 Exemple de mise à jour finale de la pondération pour l'ANN

EXERCICE : CALCULER LES NOUVELLES PONDÉRATIONS POUR LES PONDÉRATIONS MISES EN ÉVIDENCE
Backpropagation : Formation d'un 313
ANN

SOLUTION : CALCULER LES NOUVEAUX POIDS POUR LES POIDS EN SURBRILLANCE

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 :

Exp est une constante mathématique


appelée nombre d'Euler,
approximativement 2,71828.

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 :

Le symbole - implique une


multiplication de la
matrice.
Backpropagation : Formation d'un 315
ANN

Puisque nous disposons d'une classe représentant un réseau neuronal, de fonctions


permettant de mettre les données à l'échelle et de fonctions de propagation directe et
de rétropropagation, nous pouvons assembler ce code pour former un réseau neuronal.

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é :

Options pour les fonctions d'activation


Cette section vise à fournir une certaine intuition sur les fonctions d'activation et leurs
propriétés. Dans les exemples du Perceptron et de l'ANN, nous avons utilisé une
fonction sigmoïde comme fonction d'activation, ce qui était satisfaisant pour les
exemples avec lesquels nous travaillions. Les fonctions d'activation introduisent des
propriétés non linéaires dans l'ANN. Si nous n'utilisons pas de fonction d'activation, le
réseau neuronal se comportera de manière similaire à la régression linéaire décrite au
chapitre 8. La figure 9.29 décrit quelques fonctions d'activation couramment utilisées.
316 I
Chapitre Options pour neuronaux
9 Réseaux les fonctions d'activation315
artificiels

Figure 9.29 Fonctions d'activation couramment utilisées

Différentes fonctions d'activation sont utiles dans différents scénarios et


présentent différents avantages :
• Unité de pas - La fonction unité de pas est utilisée comme un classificateur
binaire. Étant donné une entrée entre -1 et 1, elle produit un résultat
d'exactement 0 ou 1. Un classificateur binaire n'est pas utile pour apprendre
des données dans une couche cachée, mais il peut être utilisé dans la couche de
sortie pour une classification binaire. Si nous voulons savoir si quelque chose
est un chat ou un chien, par exemple, 0 pourrait indiquer chat, et 1 pourrait
indiquer chien.
• Sigmoïde - La fonction sigmoïde donne une courbe en S entre 0 et 1, étant
donné une entrée entre -1 et 1. Comme la fonction sigmoïde permet aux
changements de x d'entraîner de petits changements de y, elle permet
d'apprendre et de résoudre des problèmes non linéaires. Le problème que l'on
rencontre parfois avec la fonction sigmoïde est qu'à mesure que les valeurs se
rapprochent des extrêmes, les changements de la dérivée deviennent
minuscules, ce qui entraîne un mauvais apprentissage. Ce problème est connu
sous le nom de problème du gradient évanescent.
• Tangente hyperbolique - La fonction tangente hyperbolique est similaire à la
fonction sigmoïde, mais elle donne des valeurs comprises entre -1 et 1.
L'avantage est que la tangente hyperbolique a des dérivées plus raides, ce qui
permet un apprentissage plus rapide. Le problème du gradient évanescent se
pose également aux extrêmes pour cette fonction, comme pour la fonction
sigmoïde.
• Unité linéaire rectifiée (ReLU) - La fonction ReLU donne 0 pour les valeurs
d'entrée comprises entre -1 et 0, et donne des valeurs linéairement croissantes
entre 0 et 1. Dans un grand ANN avec de nombreux neurones utilisant la fonction
sigmoïde ou tangente hyperbolique, tous les neurones s'activent tout le temps
(sauf lorsqu'ils donnent 0), ce qui entraîne beaucoup de calculs et de nombreuses
valeurs à ajuster finement pour trouver des solutions. La fonction ReLU permet
à certains neurones de ne pas s'activer, ce qui réduit le calcul et peut permettre
de trouver des solutions plus rapidement.
La section suivante aborde certaines considérations relatives à la conception d'un ANN.
316 Chapitre 9 I Réseaux neuronaux
artificiels

Conception de réseaux neuronaux artificiels


La conception des ANN est expérimentale et dépend du problème à résoudre.
L'architecture et la configuration d'un ANN sont généralement modifiées par essais et
erreurs au fur et à mesure que l'on tente d'améliorer les performances des
prédictions. Cette section énumère brièvement les paramètres de l'architecture que
nous pouvons modifier pour améliorer les performances ou résoudre différents
problèmes. La figure 9.30 illustre un réseau neuronal artificiel dont la configuration est
différente de celle vue tout au long de ce chapitre. La différence la plus notable est
l'introduction d'une nouvelle couche cachée et le réseau possède désormais deux
sorties.

NOTE Comme dans la plupart des problèmes scientifiques ou d'ingénierie,


la réponse à la question "Quelle est la conception idéale d'un ANN ?" est
souvent "Cela dépend". La configuration des ANNs nécessite une
compréhension approfondie des données et du problème à résoudre. Il n'existe
pas encore de modèle générique clair et net pour les architectures et les
configurations.

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.

Couches et nœuds cachés


Un ANN peut être composé de plusieurs couches cachées avec un nombre variable de
nœuds dans chaque couche. L'ajout d'un plus grand nombre de couches cachées
permet de résoudre des problèmes aux dimensions plus élevées et plus complexes
dans la ligne de discrimination de la classification. Dans l'exemple de la figure 9.8, une
simple ligne droite a classé les données avec précision. Parfois, la ligne est non linéaire
mais assez simple. Mais que se passe-t-il lorsque la ligne est une fonction plus
complexe avec de nombreuses courbes potentiellement sur plusieurs dimensions (que
nous ne pouvons même pas visualiser) ? L'ajout de couches supplémentaires permet
de trouver ces fonctions de classification complexes. La sélection du nombre de
couches et de nœuds dans un ANN relève généralement de l'expérimentation et de
l'amélioration itérative. Au fil du temps, nous pouvons acquérir de l'intuition sur les
configurations appropriées, en nous basant sur l'expérience de problèmes similaires et
en les résolvant avec des configurations similaires.

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.

Fonction de coût et taux d'apprentissage


Nous avons utilisé une fonction de coût simple dans l'exemple décrit précédemment,
où la sortie prédite est soustraite de la sortie réelle attendue, mais de nombreuses
fonctions de coût existent. Les fonctions de coût influencent grandement l'ANN, et
l'utilisation de la fonction correcte pour le problème et l'ensemble de données est
importante car elle décrit l'objectif de l'ANN. L'une des fonctions de coût les plus
courantes est l'erreur quadratique moyenne, qui est similaire à la fonction utilisée
dans le chapitre sur l'apprentissage automatique (chapitre 8). Mais les fonctions de
coût doivent être sélectionnées en fonction de la compréhension des données
d'entraînement, de la taille des données d'entraînement et des mesures de préci- sion et
de rappel souhaitées. Au fur et à mesure que nous expérimentons, nous devrions
examiner les options de la fonction de coût.
Enfin, le taux d'apprentissage du réseau ANN décrit la fréquence d'ajustement des poids
pendant la rétropropagation. Un taux d'apprentissage lent peut entraîner un long
processus d'apprentissage parce que les poids sont mis à jour par de petites quantités
à chaque fois, et un taux d'apprentissage élevé peut entraîner des changements
spectaculaires dans les poids, ce qui rend le processus d'apprentissage chaotique. Une
solution consiste à commencer avec un taux d'apprentissage fixe et à ajuster ce taux si
l'apprentissage stagne et n'améliore pas le coût. Ce processus, qui serait répété tout
au long du cycle de formation, nécessite une certaine expérimentation. La descente
de gradient stochastique est une modification utile de l'optimiseur qui combat ces
problèmes. Elle fonctionne de manière similaire à la descente de gradient, mais
permet aux poids de sortir des minimums locaux pour explorer de meilleures
solutions.
Les ANN standard, comme celui décrit dans ce chapitre, sont utiles pour résoudre
les problèmes de classification non linéaire. Si nous essayons de classer des exemples
sur la base de nombreuses caractéristiques, ce style d'ANN sera probablement une
bonne option.
Types de réseaux de neurones artificiels et cas 319
d'utilisation
Cela dit, un ANN n'est pas une solution miracle et ne devrait pas être l'algorithme à
privilégier pour n'importe quoi. Les algorithmes d'apprentissage automatique
traditionnels plus simples, décrits au chapitre 8, sont souvent plus performants dans
de nombreux cas d'utilisation courants. N'oubliez pas le cycle de vie de l'apprentissage
automatique. Vous pouvez essayer plusieurs modèles d'apprentissage automatique au
cours de vos itérations tout en cherchant à vous améliorer.
320 Chapitre 9 I Réseaux neuronaux
artificiels

Types de réseaux de neurones artificiels et cas


d'utilisation
Les ANN sont polyvalents et peuvent être conçus pour répondre à différents problèmes.
Des styles architecturaux spécifiques d'ANN sont utiles pour résoudre certains
problèmes. Considérez le style architectural d'un ANN comme étant la configuration
fondamentale du réseau. Les exemples de cette section mettent en évidence
différentes configurations.

Réseau neuronal convolutif


Les réseaux de neurones convolutifs (CNN) sont conçus pour la reconnaissance
d'images. Ces réseaux peuvent être utilisés pour trouver les relations entre différents
objets et des zones uniques dans les images. En reconnaissance d'images, la convolution
opère sur un seul pixel et ses voisins dans un certain rayon. Cette technique est
traditionnellement utilisée pour la détection des bords, l'amélioration de la netteté
des images et le flou des images. Les CNN utilisent la convolution et le pooling pour
trouver des relations entre les pixels d'une image. La convolution permet de trouver
des caractéristiques dans les images, et le pooling réduit l'échantillonnage des "
modèles " en résumant les caractéristiques, ce qui permet de coder de manière
concise les signatures uniques des images grâce à l'apprentissage à partir de plusieurs
images (figure 9.31).

Figure 9.31 Exemple simple d'un CNN

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

Réseau neuronal récurrent


Alors que les ANN standard acceptent un nombre fixe d'entrées, les réseaux
neuronaux récurrents (RNN) acceptent une séquence d'entrées sans longueur
prédéterminée. Ces entrées sont comme des phrases parlées. Les RNN ont un concept
de mémoire constitué de couches cachées qui représentent le temps ; ce concept
permet au réseau de conserver des informations sur les relations entre les séquences
d'entrées. Lorsque nous formons un RNN, les poids des couches cachées dans le temps
sont également influencés par la rétropropagation ; les poids multiples représentent le
même poids à différents moments (figure 9.32).

Figure 9.32 Exemple simple d'un RNN

Les RNN sont utiles dans les applications relatives à la reconnaissance et à la


prédiction de la parole et du texte. Les cas d'utilisation connexes comprennent
l'autocomplétion de phrases dans les applications de messagerie, la traduction de la
langue parlée en texte et la traduction entre les langues parlées.

Réseau adversarial génératif


Un réseau adversarial génératif (GAN) se compose d'un réseau générateur et d'un
réseau discriminateur. Par exemple, le générateur crée une solution potentielle telle
qu'une image ou un paysage, et un discriminateur utilise des images réelles de paysages
pour déterminer le caractère réel ou correct du paysage généré. L'erreur ou le coût est
réinjecté dans le réseau pour améliorer encore sa capacité à générer des paysages
convaincants et à déterminer leur exactitude. Le terme contradictoire est essentiel,
comme nous l'avons vu avec les arbres de jeu au chapitre 3. Ces deux composants
sont en compétition pour être meilleurs dans leur domaine et, grâce à cette
Types de réseaux de neurones artificiels et cas 323
d'utilisation
compétition, ils génèrent des solutions de plus en plus performantes (figure 9.33).
324 Chapitre 9 I Réseaux neuronaux
artificiels

Figure 9.33 Exemple simple d'un GAN

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

RÉSUMÉ DES RÉSEAUX NEURONAUX ARTIFICIELS

Vous aimerez peut-être aussi