Introduction aux Réseaux de Neurones

Sylvain Barthélémy, Juin 2000

Les réseaux de neurones, bien souvent assimils ou confondus avec les algorithmes génétiques, la cybernétique et l'intelligence artificielle en général, constituent une famille précise d'algorithmes d'apprentissage. La NN FAQ en donne quelques définitions intressantes. Ainsi, selon le DARPA Neural Network Study (AFCEA International Press, 1988): "... un réseau de neurones est un système composé de plusieurs unités de calcul simples fonctionnant en parallèle, dont la fonction est déterminée par la structure du réseau, la solidité des connexions, et l'opération effectuée par les éléments ou noeuds. Selon Haykin, S. (Neural Networks: A Comprehensive Foundation, NY: Macmillan, 1994), "Un réseau de neurones est un processeur massivement distribué en parallèle qui a une propension naturelle pour stocker de la connaissance empirique et la rendre disponible à l'usage. Il ressemble au cerveau sur deux aspects: (1) La connaissance est acquise par le réseau au travers d'un processus d'apprentissage et (2) les connexions entre les neurones, connues sous le nom de poids synaptiques servent à stocker la connaissance." Selon Nigrin, A. (Neural Networks for Pattern Recognition, Cambridge, MA: The MIT Press, 1993), "Un réseau de neurones est un circuit composé d'un nombre très important d'unités de calcul simples basées sur des neurones. Chaque élément opère seulement sur l'information locale. Chaque élément opère de façon asynchrone; il n'y a donc pas d'horloge générale pour le système. " Enfin, selon Zurada, J.M. (Introduction To Artificial Neural Systems, Boston: PWS Publishing Company, 1992), "Les système de neurones artificiels, ou réseaux de neurones, sont des système physiques cellulaires qui peuvent acquérir, stocker et utiliser de la connaissance empririque".

Comme leur nom l'indique, les réseaux de neurones sont organisés autour d'un ensemble de cellules / neurones, connectés entre eux par des liaisons affectées de poids (les synapses). Les valeurs de ces poids tant quand eux optimiss l'aide de processus d'optimisation (rtro-propagation, quickprop, ...), tablis sur la base de donnes d'apprentissage (historique de diagnostics mdicaux, historiques de crises financires, donnes mto,...).


Couches, connexions et fonctions d'activation

Un réseau de neurones est ainsi constitué de cellules (ou neurones), connectée entre elles par des liaisons affectées de poids. Ces liaisons permettent à chaque cellule de disposer d'un canal pour envoyer et recevoir des signaux en provenance d'autres cellules du réseau. Chacune de ces connexions recoit un poids (une pondération), qui détermine sont impact sur les cellules qu'elle connecte. Chaque cellule dispose ainsi d'une entrée, qui lui permet de recevoir de l'information d'autres cellules, mais aussi de ce que l'on appelle une fonction d'activation, qui est dans les cas les plus simple, une simple identité du résultat obtenu par la l'entrée et enfin une sortie. Ainsi, pour un réseau de neurones avec N cellules dans la première couche, notées C(1),...,C(N) , et N poids affectées aux liaisons et notés w(1),...,w(N) l'entrée d'une cellule de la seconde couche sera généralement une somme pondérée des valeur de sortie des neurones précédents :

X = w(1)*C(1) + w(2)*C(2) + w(3)*C(3) + ... + w(N)*C(N)

Pour obtenir la valeur de sortie Y du neurones concerné, nous pouvons utiliser une fonction d'activation identité du type :

Y = d*X

Mais le choix d'une fonction d'activation se révèle être un élément constitutif important des réseaux de neurones. Ainsi, l'identité n'est pas toujours suffisante, bien au contraire, et le plus souvent des fonctions non linéaires et plus évoluées seront nécessaires. A titre illustratif voici quelques fonctions couramment utilisées comme fonctions d'activation :

  • La fonction logistique: Y = F(X) = 1/(1 + exp(-d*X))

  • La tangente hyperbolique : Y = 2 / (1 + exp(-2 * X)) - 1

  • La fonction Gaussienne : Y = exp(-(X^2)/2)

  • Une fonction à seuil : Y = 0 si X<0 et Y=1 si X>0

L'exemple le plus simple de réseau de neurones est souvent donné par le perceptron multicouches (qui est un cas particulier de réseau de neurones). Dans un perceptron, plusieurs couches contenant des neurones sont connectées entre elles de l'entrée vers la sortie. Afin d'illuster un peu ces propos, le dessins suivant représente le schémas type d'un perceptron à trois couches :


  • Les noeuds d'entrée
    La première couche est appelée couche d'entrée. Elle recevra les données source que l'on veut utiliser pour l'analyse. Dans le cas de l'aide au diagnostic médical, cette couche recevra les symptômes. Sa taille est donc directement déterminée par le nombre de variables d'entrées.

  • Les noeuds cachés
    La seconde couche est une couche cachée, en ce sens qu'elle n'a qu'une utilité intrinsèque pour le réseau de neurones et n'a pas de contact direct avec l'extérieur. Les fonctions d'activations sont en gnral non linaires sur cette couche mais il n'y a pas de rgle respecter. Le choix de sa taille n'est pas implicite et doit être ajusté. En général, on peut commencer par une taille moyenne des couches d'entrée et de sortie mais ce n'est pas toujours le meilleur choix. Il sera souvent préférable pour obtenir de bon résultats, d'essayer le plus de tailles possibles.

  • Les noeuds de sortie
    La troisième couche est appelée couche de sortie. Elle donne le résultat obtenu après compilation par le réseau des données entrée dans la première couche. Dans le cas de l'aide au diagnostic médical, cette couche donne le diagnostic. Sa taille est directement déterminée par le nombre de variables qu'on veut en sortie.


Les étapes de la conception d'un réseau

Le novice est souvent surpris d'apprendre que pour construire un réseau de neurones, la première chose à faire n'est pas de choisir le type de réseau mais de bien choisir ses échantillons de données d'apprentissage, de tests et validation. Ce n'est qu'ensuite que le choix du type de réseau interviendra. Afin de clarifier un peu les idées, voici chronologiquement les quatres grandes étapes qui doivent guider la création d'un réseau de neurones.

  • Choix et préparation des échantillons
    Le processus d'élaboration d'un réseau de neurones commence toujours par le choix et la préparation des échantillons de données. Comme dans les cas d'analyse de données, cette étape est cruciale et va aider le concepteur à déterminer le type de réseau le plus approprié pour résoudre sont problème. La façon dont se présente l'échantillon conditionne : le type de réseau, le nombre de cellules d'entrée, le nombre de cellules de sortie et la façon dont il faudra mener l'apprentissage, les tests et la validation.

  • Elaboration de la structure du réseau
    La structure du réseau dépend étroitement du type des échantillons. Il faut d'abord choisir le type de réseau : un perceptron standard, un réseau de Hopfield, un réseau à décalage temporel (TDNN), un réseau de Kohonen, un ARTMAP etc... Dans le cas du perceptron par exemple, il faudra aussi choisir le nombre de neurones dans la couche cachée. Plusieurs méthodes existent et on peut par exemple prendre une moyenne du nombre de neurones d'entrée et de sortie, mais rien de vaut de tester toutes les possibilités et de choisir celle qui offre les meilleurs résultats.

  • Apprentissage
    L'apprentissage consiste tout d'abord à calculer les pondération optimales des différentes liaisons, en utilisant un échantillon. La méthode la plus utilisée est la rétropropagation : on entre des valeurs du les cellules d'entrée et en fonction de l'erreur obtenue en sortie (le delta), on corrige les poids accordés aux pondérations. C'est un cycle qui est répété jusqu'à ce que la courbe d'erreurs du réseau ne soit croissante (il faut bien prendre garde ne ne pas sur-entrainer un réseau de neurones qui deviendra alors moins performant). Il existe d'autres méthodes d'apprentissage telles que le quickprop par exemple.

  • Validation et Tests
    Alors que les tests concernent la vérification des performances d'un réseau de neurones hors échantillon et sa capacité de généralisation, la validation est parfois utilisée lors de l'apprentissage (ex: cas du early stopping). Une fois le réseau calculé, il faut toujours procéder à des tests afin de vérifier que notre réseau réagit correctement. Il y a plusieurs méthodes pour effectuer une validation : la cross validation, le bootstrapping... mais pour les tests, dans le cas général, une partie de l'échantillon est simplement écarté de l'échantillon d'apprentissage et conservé pour les tests hors échantillon. On peut par exemple utiliser 60% de l'échantillon pour l'apprentissage, 20% pour la validation et 20% pour les tests. Dans les cas de petits échantillons, on ne peut pas toujours utiliser une telle distinction, simplement parce qu'il n'est pas toujours possible d'avoir suffisemment de données dans chacun des groupes ainsi crée. On a alors parfois recours à des procédures comme la cross-validation pour établir la structure optimale du réseau.


Les grands types de réseaux

Il n'est pas possible d'énumérer l'ensemble des type de réseaux de neurones disponibles à ce jour. Cependant, à titre illustratif sont présentés familles parmis les plus populaires. Les chercheurs n'ont de cesse que d'inventer de nouveaux types de réseaux toujours mieux adaptés à la recherche de solutions de problèmes particuliers.

  • Les Perceptrons Multicouches
    Malgré son nom quelque peu barbare, le perceptron multicouches est sans doute le plus simple et le plus connu des réseaux de neurones. La structure est relativement simple : une couche d'entrée, une couche de sortie et une ou plusieurs couches cachées. Chaque neurone n'est relié qu'aux neurones des couches précédentes, mais à tous les neurones de la couche précédente. La fonction d'activation utilisée est en générale une somme pondérée.

  • Les Réseaux de Kohonen
    Les réseaux de Kohonen décrivent dont on parle généralement sans les distinguer, décrivent en fait trois familles de réseaux de neurones :

    1. VQ: Vector Quantization. (apprentissage non supervisé)
      Introduite par Grossberg (1976), la quantification vectorielle est une méthode généralement qualifiée d'estimateur de densité non supervisé. Elle permet de retrouver des groupes sur un ensemble de données, de facon relativement similaire à un k-means algorithm que l'on préfèrera d'ailleurs généralement à un VQ si la simplicité d'implémentation n'est pas un élément majeur de la résolution du problème.

    2. SOM: Self Organizing Map. (apprentissage non supervisé)
      Les SOM sont issus des travaux de Fausett (1994) et Kohonen (1995). Ces réseaux sont très utilisés pour l'analyse de données. Ils permettent de cartographier en deux dimension et de distinguer des groupes dans des ensembles de données. Les SOM sont encore largement utilisés mais les scientifiques leur préfèrent maintenant les LVQ.

    3. LVQ: Learning Vector Quantization. (apprentissage supervisé)
      Les réseaux utilisant la méthode LVQ ont été proposés par Kohonen (1988). Des trois types de réseaux présentés ici, la LVQ est la seule méthode qui soit réellement adaptée à la classification de données par "recherche du plus proche voisin".

  • Les Réseaux de Hopfield
    Ces réseaux sont des réseaux récursifs, un peu plus complexes que les perceptrons multicouches. Chaque cellule est connectée à toutes les autres et les changements de valeurs de cellules s'enchainent en cascade jusqu'à un état stable. Ces réseaux sont bien adaptés à la reconnaissance de formes.


Autres sources d'information

Organisations et groupes de recherches

Documents répondant aux questions fréquemment posées (FAQ)

Réseaux de neurones en finance et économie


θ  π