Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Black Friday: -25€ dès 75€ sur les livres en ligne, vidéos... avec le code BWEEK25. J'en profite !
  1. Livres et vidéos
  2. Intelligence artificielle vulgarisée
  3. Utilisation de plusieurs couches de neurones
Extrait - Intelligence artificielle vulgarisée Le Machine Learning et le Deep Learning par la pratique
Extraits du livre
Intelligence artificielle vulgarisée Le Machine Learning et le Deep Learning par la pratique
2 avis
Revenir à la page d'achat du livre

Utilisation de plusieurs couches de neurones

Ce que nous allons découvrir et les prérequis

Après avoir découvert dans le chapitre précédent le fonctionnement d’un neurone formel, nous allons à présent nous attarder sur les réseaux de neurones multicouches.

Prérequis nécessaires pour bien aborder ce chapitre : avoir lu les chapitres Les fondamentaux du langage Python, Des statistiques pour comprendre les données, Principaux algorithmes du Machine Learning et Un neurone pour prédire.

Fonctionnement des réseaux de neurones multicouches 

Le fonctionnement d’un neurone formel à l’aide de neurones d’entrée, de poids, d’un biais et une fonction d’activation est assez simple à comprendre. L’objectif de ce neurone étant de minimiser sa fonction de coût en apprenant de ses erreurs. Nous avons beaucoup insisté dans le chapitre précédent sur le fait qu’un neurone formel est capable uniquement de classifier des données linéairement séparables, or dans la pratique, il est bien rare que celles-ci le soient. C’est alors que sont apparus les réseaux de neurones multicouches.

Leur fonctionnement est identique à celui du neurone formel. À ce titre, nous retrouverons les actions de propagation et de rétropropagation s’appliquant à chaque couche du réseau. La fonction d’activation ne s’appliquant quant à elle qu’aux neurones chargés de réaliser la classification.

Le cas du Ou exclusif (XOR)

Souvenez-vous, nous avons vu que lorsque nous sommes face à l’utilisation de la fonction logique Ou Exclusif encore appelée XOR, les données ne sont pas linéairement séparables. En effet, il existe deux droites de séparations et non une seule. Par conséquent, un seul neurone ne peut réussir à classifier les données.

images/12FL01.png

Représentation graphique de la fonction logique OU Exclusif

1. De combien de couches et de neurones avons-nous besoin ?

Nous savons qu’un neurone formel a la faculté de classifier les données en deux classes. Dans le cas du XOR, nous avons deux séparations de deux classes à réaliser (deux droites), par conséquent nous aurons besoin (au minimum) d’une couche supplémentaire :

images/12FL02.png

Nombre de couches de neurones nécessaires

Nous pouvons alors modéliser notre réseau de neurones comme présenté sur la figure suivante, montrant les neurones d’entrée, la couche cachée, le neurone de sortie sans oublier les biais. Les neurones étant tous connectés les uns aux autres, nous disons que notre réseau est "complètement connecté" (Full connected).

images/12FL03.png

Réseaux de neurones multicouches

2. Un exemple chiffré

Il n’y a pas de grande complexité au codage de ces réseaux, les étapes à suivre sont celles correspondant au neurone formel :

  • Initialisation des poids

  • Calcul de la préactivation (sommes pondérées)

  • Activation

  • Calcul de l’erreur

  • Rétropropagation (mise à jour des poids de chaque couche)

a. Les données d’apprentissage

Le tableau ci-dessous reprend les différents résultats liés à la logique du Ou Exclusif respectant les règles suivantes :

  • Le résultat est VRAI si un et un seul des opérandes A et B est VRAI.

  • Le résultat est VRAI si les deux opérandes A et B ont des valeurs distinctes.

  • Le résultat est VRAI si un nombre impair d’entrées est vrai.

OU EXCLUSIF (XOR)

A

B

A XOR B

0

0

FAUX

0

1

VRAI

1

0

VRAI

1

1

FAUX

b. Initialisation des poids

Nous allons à présent initialiser de façon aléatoire les poids dans l’intervalle [-1 et 1] et donner la valeur 0 pour les biais :...

Le retour des mines et des rochers

Souvenez-vous, dans le chapitre Bien classifier n’est pas une option, nous avons traité le cas de classification d’un objet comme étant une mine ou un rocher en fonction de mesures effectuées par un sonar.

Ce cas d’étude fut également traité dans un article intitulé " Analysis of Hidden Units in a Layered Network Trained to Classify Sonar Targets " rédigé par Terry Sejnowski et R. Paul Gorman en 1988 dont le but était de démontrer l’importance du rôle du nombre de neurones dans la couche cachée sur la précision de classification.

Leur étude est bien entendu téléchargeable sur le Web, mais nous avons fait le choix de vous en proposer une copie que vous pourrez retrouver dans le répertoire dédié au code de ce chapitre téléchargeable depuis la page Informations générales.

Voici à présent les différents paramètres utilisés par ces deux scientifiques pour réaliser leur démonstration :

  • 192 données d’apprentissage

  • 16 données de tests

  • 60 neurones d’entrée (correspondant à chacune des fréquences)

  • 2 neurones de sortie (un pour la probabilité correspondant à une mine et l’autre pour la probabilité correspondant à un rocher)

  • 300 epochs

  • Un taux d’apprentissage de 2.0

  • Des poids initialisés dans l’intervalle de valeurs compris entre - 0.3 et 0,3

  • Une mise à jour des poids uniquement dans le cas où la valeur prédite diffère de plus ou moins 0.2 avec celle attendue

  • Utilisation d’une fonction d’activation de type sigmoïde

  • Une couche de neurones composée de 0, 2, 3, 12 ou 24 neurones

Dans ce chapitre, nous allons essayer d’obtenir les résultats obtenus lors de cette étude, mais nous allons essayer de démontrer également que le nombre de neurones sur une couche cachée influe sur la précision de la classification.

1. De meilleures performances avec plus de neurones sur la couche cachée ?

Avant de poursuivre, nous vous invitons à éventuellement créer un nouveau projet Python et d’y créer un répertoire datas chargé de contenir les données...

Conclusion

Dans ce chapitre, nous avons vu le principe de fonctionnement des réseaux de neurones multicouches qui nous permettent de réaliser des classifications sur des données non linéairement séparables.

Nous avons également pu valider l’affirmation de Terry Sejnowski et R. Paul Gorman selon laquelle le nombre de neurones présents sur la couche cachée influe sur le résultat de la classification. Nous pouvons également constater que nous sommes parvenus à un meilleur résultat de classification que celui obtenu dans le chapitre Bien classifier n’est pas une option, où à l’aide de l’algorithme des Machines à vecteurs de supports, le score de précision ne dépassait pas les 89 %. Mais il convient toutefois de bien veiller à ce que le modèle puisse se généraliser en évaluant l’écart entre la précision obtenue sur les données d’apprentissage et celle obtenue sur les données de tests.

Dans le chapitre suivant, nous allons à présent aborder le domaine de la classification d’image à l’aide d’un autre type de réseau de neurones, appelé réseau de neurones convolutifs.