Les Réseaux de NeuronesJuin 2000
Ce document constitue une introduction rapide à la théorie des
réseaux de neurones. Pour des développements plus précis,
nous conseillons vivement la lecture d'une ouvrage spécialisé
dans le domaine.
Les réseaux de neurones sont souvent confondus avec les algorithmes
génétiques, la cybernétique et l'intelligence artificielle
en général. Ils constituent en fait un courant bien précis
de l'intelligence artificielle, dont le modèle de développement
est basé sur l'idée de calquer des algorithmes d'apprentissage
sur un modèle simplifié du cerveau. La NN
FAQ donne les quelques définitions suivantes pour les réseaux
de neurones.
Selon le DARPA Neural Network Study (1988, AFCEA
International Press, p. 60): ... 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. (1994), Neural Networks: A Comprehensive Foundation,
NY: Macmillan, p. 2: Un réseau de neurones est un
processeur massivement distribué en parallèle qui a une
propension naturelle pour stocker de la connaissance empirique (experiential
knowledge selon l'auteur) et la rendre disponible à l'usage. Il
ressemble au cerveau sur deux aspects:
- La connaissance est acquise par le réseau au travers d'un processus
d'apprentissage
- Les connexions entre les neurones, connues sous le nom de poids synaptiques
servent à stocker la connaissance
Selon Nigrin, A. (1993), Neural Networks for Pattern Recognition,
Cambridge, MA: The MIT Press, p. 11: 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.
Selon Zurada, J.M. (1992), Introduction To Artificial Neural Systems,
Boston: PWS Publishing Company, p. xv: 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 (experiential knowledge selon l'auteur).
Comme leur nom l'indique, les réseaux de neurones sont ainsi organisés
autour d'un ensemble de cellules ou neurones, connecté entre eux par
des liaisons affectées de poids (les synapses). Le principe de fonctionnement
est le suivant. Nous disposons initialement d'une base de connaissances constituée
de couples de données entrées / sorties et nous souhaitons utiliser
cette base de données pour "entrainer" une algorithme informatique
à reproduire les associations constatées entre les entrées
et les sorties del'échantillon. Un bon exemple est donné par le
diagnostic médical. Des médecins disposent d'une importante base
de donnée de symptômes auxquels sont associés différents
diagnostic qui ont été validés. Réaliser un réseau
de neurones reproduisant le diagnostic peut être effectué en utilisant
les couples symptômes diagnostics de cette base de données en tant
qu'échantillon d'apprentissage.
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 :
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 général non linéaires sur cette couche mais il n'y a pas de règle à 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 :
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.
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.
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
|