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
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Le Machine Learning avec Python
  3. Les réseaux de neurones
Extrait - Le Machine Learning avec Python De la théorie à la pratique
Extraits du livre
Le Machine Learning avec Python De la théorie à la pratique
10 avis
Revenir à la page d'achat du livre

Les réseaux de neurones

Objectif du chapitre

Comme vous pouvez l’imaginer, les réseaux de neurones artificiels trouvent leur origine et leur inspiration dans les neurones biologiques, notamment dans les neurones humains. En effet, en plein milieu de la Seconde Guerre mondiale, en 1943, Warren McCulloch et Walter Pitts proposèrent une première formalisation du neurone. Une forme plus sophistiquée de ce formalisme a été introduite en 1957 par Frank Rosenblatt avec le modèle du perceptron. Outre les limites technologiques de l’époque, en 1969, Marvin Lee Minsky et Seymour Papert démontrent les limites théoriques des modèles de classification basés sur les réseaux de neurones à traiter les problèmes non linéaires. En conséquence de ces limites, technologiques et théoriques, les réseaux neuronaux ont été mis à l’écart pendant une bonne dizaine d’années.

En 1982, John Joseph Hopfield introduit un modèle de réseaux de neurones récurrents et, en 1986, le fameux modèle de perceptron multicouche basé sur la rétropropagation du gradient a été introduit par David Rumelhart. Une version similaire à ce dernier modèle a été introduite par Yann LeCun durant les années 1980. Suite à ces travaux, les réseaux...

Modélisation d’un neurone artificiel

Avant toute chose, il faut savoir que les modèles de neurones artificiels ne représentent pas fidèlement le fonctionnement des neurones biologiques. En effet, ces derniers présentent des structures complexes tant au niveau d’un neurone isolé qu’au niveau des interactions interneuronales. La tâche qui consiste à étudier le fonctionnement d’un cerveau, humain ou pas, reste encore et avant tout un travail exploratoire et difficile.

1. Le neurone biologique

Le neurone biologique a une structure similaire à celle représentée dans la figure 13-1 suivante :

images/13EPS01.png

Figure 13-1 : représentation d’un neurone biologique

Cette figure montre qu’un neurone est composé essentiellement des éléments suivants :

  • Les dendrites, qui servent d’interface en entrée pour un neurone. Concrètement, ces dendrites reçoivent l’influx nerveux provenant des autres neurones.

  • Le noyau, où ont lieu les réactions électrochimiques. En fonction de l’intensité des signaux qui arrivent à travers les dendrites, le noyau génère et envoie un influx nerveux électrique à travers l’axone.

  • L’axone joue le rôle de support de l’influx nerveux électrique qui sera transmis aux terminaisons synaptiques....

Architecture d’un réseau de neurones

La section précédente a montré qu’un neurone artificiel reçoit en entrée des données et, après avoir opéré une transformation sur ces données, il donne en sortie un résultat. Ce résultat peut être utilisé en entrée d’un neurone qui à son tour produira un autre résultat. Un réseau de neurones est constitué d’un ensemble de neurones répartis sur un ensemble de couches. L’architecture d’un réseau de neurones est déterminée par la nature des liens entre ses neurones et aussi la manière dont ils sont répartis.

La figure 13-4 suivante donne un exemple d’un réseau de neurones avec une couche d’entrée, deux couches cachées et une couche de sortie :

images/13EPS04.png

Figure 13-4 : un réseau de neurones avec deux couches cachées

Pour rendre plus simple la compréhension des notions qui vont être abordées dans la suite de ce chapitre, nous allons adopter les notations ci-dessous qui sont illustrées sur la figure 13-4.

  • Un réseau de neurones est constitué des couches images/13eq09.PNG avec images/13eq10.PNG. Le nombre de couches est donc égal à (L+1).
  • Chaque couche images/13eq11.PNG d’un réseau de neurones est associée à un ensemble de neurones images/13eq12.PNG.
  • Chaque neurone images/13eq13.PNG de la couche...

L’algorithme de rétropropagation

Le réseau de neurones avec rétropropagation est un algorithme itératif. Les étapes principales de cet algorithme se présentent comme suit :

Entrées : - Un ensemble d'observations images/13eq21.PNG  
          - Un ensemble de résultats images/13eq22.PNG  
            avec images/13eq23.PNG le résultat connu de l'observation images/13eq24.PNG 
          - Une fonction d'activation images/13eq04.PNG  
            avec images/13eq05.PNG le seuil d'activation 
          - Un réseau de neurones RN composé de L≥2 couches;   
            Une couche d'entrée images/13eq16.PNG he de sortie images/13eq19.PNG 
            et au moins une couche cachée  
          - Un taux d'apprentissage images/13eq25.PNG  
Sorties : le réseau de neurones RN  
avec les ensembles de poids images/13eq26.PNG ajustés. 
a) Pour chaque couche images/13eq11.PNG avec i allant de 1 à L faire : 
       Initialisation aléatoire des poids images/13eq27.PNG     
b) Répété jusqu'à ce qu'un critère d'arrêt soit atteint :  
       Pour chaque couple images/13eq28.PNG faire : 
 
        //Initialisation de la couche d'entrée  
        1- Affecter à chaque neurone j de la couche d'entrée images/13eq16.PNG  
           la valeur de images/13eq29.PNG (images/13eq29.PNG la valeur de la variable j de images/13eq30.PNG) 
           
        //Propagation avant 
        2- Pour chaque couche images/13eq11.PNG avec i allant de 1 à L faire : 
              Pour chaque neurone images/13eq13.PNG de la couche images/13eq11.PNG faire : 
               -  images/13eq31.PNG (q=le nombre de neurones de la 
                  couche précédente (images/13eq15.PNG), images/13eq32.PNG= la valeur de la  
                  kième entrée du neurone images/13eq13.PNG). Pour k=0,  
                  images/13eq33.PNG représente le biais du neurone images/13eq13.PNG et images/13eq34.PNG   
           ...

Exemple d’un réseau de neurones avec Scikit-learn

Dans cet exemple, nous allons appliquer un réseau de neurones basé sur le principe de la rétropropagation abordé précédemment. Ce réseau de neurones a comme objectif d’apprendre à reconnaître les chiffres écrits à la main. Pour entraîner et tester le réseau de neurones de cet exemple, nous utilisons le jeu de données Digit inclus dans Scikit-learn. Ce jeu de données contient la définition de 1797 images ainsi que leurs libellés. Chacune de ces images est définie par une matrice de 8x8 valeurs.

Nous commençons par le chargement de tous les modules nécessaires à la réalisation de notre exemple avec le code ci-après qui est saisi dans une cellule d’un notebook Jupyter. Vous pouvez également utiliser le notebook multi_layer_perceptron_classifier situé dans le dossier Code de ce chapitre :

from sklearn import datasets 
from sklearn.neural_network import MLPClassifier 
from sklearn.metrics import accuracy_score 
import matplotlib.pyplot as plt 
import matplotlib.colors  

La première instruction from sklearn import datasets permet d’importer le module datasets où est défini, entre autres, le jeu de données Digit. La deuxième instruction importe la classe MLPClassifier à partir du module sklearn.neural_network qui va nous permettre de définir notre réseau de neurones.

La fonction accuracy_score importée à partir de sklearn.metrics permet de mesurer la métrique de performance accuracy et les deux dernières instructions permettent d’importer les outils nécessaires pour réaliser des graphiques. 

Le code suivant permet de charger le jeu de données Digit dans data.

data = datasets.load_digits() 
dir(data)  

L’instruction dir(data) permet d’afficher les propriétés du jeu de données data. Le résultat de cette instruction sera affiché comme suit :

['DESCR', 'data', 'feature_names', 'frame', 'images', 'target', 'target_names']  

Les deux seules propriétés qui nous intéressent pour cet exemple sont les attributs suivants :...

Conclusion

Ce chapitre a introduit les concepts de base des réseaux de neurones. La structure formelle d’un neurone et la structure des réseaux de neurones ont été abordées dans un premier temps, puis l’algorithme de réseau de neurones avec rétropropagation a été expliqué à travers le déroulement d’un exemple complet d’une propagation avant et d’une propagation arrière de cet algorithme. Enfin, nous avons appliqué la bibliothèque Scikit-learn pour mettre en place un réseau de neurones pour la reconnaissance des chiffres à partir des images.