Le cerveau humain est un modèle dans le développement de l'intelligence artificielle. De simples enchevêtrements de neurones lui donnent toutes ses capacités, et c'est ce que tentent de reproduire les chercheurs grâce à l'électronique. Ce dossier nous présente les principes des réseaux de neurones artificiels.
L'auteur de ce dossier est Frédéric Perez (fffred sur le forum), un grand merci à lui.
Introduction
L'intelligence artificielle est en continuelle progression depuis l'invention de l'ordinateur et l'utilisation de programmes informatiques. Il existe en effet de nombreux programmes capables de réaliser des choses de plus en plus complexes: diriger un robot, résoudre des problèmes, jouer aux échecs... Mais ils sont très rarement capables de rivaliser avec le cerveau humain, et c'est pour cela que de nombreuses tâches sont encore irréalisables par les ordinateurs.
D'où vient cette différence ? La première chose est évidemment la capacité de calcul, le cerveau est une machine assurément incroyable. Cependant, les ordinateurs n'ont pas cette faculté d'apprentissage, ils ne connaissent pas le progrès si personne ne les modifie. Voilà le challenge pour l'intelligence artificielle: savoir apprendre.
D'un autre côté, la biologie a apporté un grand nombre d'informations sur le fonctionnement du cerveau, des neurones... Des mathématiciens ont alors tenté de reproduire le fonctionnement du cerveau en intégrant ces connaissances en biologie dans des programmes informatiques, et en leur donnant la possibilité d'apprendre. Cela a commencé en 1943 avec Mc Culloch et Pitts, mais en 1969, Minsky et Papert publièrent un livre pour montrer que le type de réseau élaboré à l'époque était limité. Heureusement, des progrès ont pu être réalisés par la suite. Ces recherches sur les "réseaux de neurones artificiels" ont maintenant beaucoup progressé. Nous en expliquerons les bases dans ce dossier.
2 - Les connaissances en biologie
Les modèles de réseaux de neurones artificiels sont, à l'origine, une imitation du fonctionnement du cerveau. Il contient, chez l'homme, environ 10 milliards de neurones, et chacun est connecté à environ 10.000 autres neurones. On voit ainsi sa complexité étonnante.
Les connexions permettent le transfert d'informations sous forme d'impulsions électriques entre les neurones.
Un neurone reçoit des impulsions de ses voisins par l'intermédiaire des "dendrites". Si la somme des signaux dépasse un certain seuil, il renvoie un signal vers d'autres neurones, par l'intermédiaire de son "axone". Ce mécanisme complexifie la façon dont les informations sont transmises: un neurone ne se borne pas à faire passer l'information, il la filtre.
Pour résumer, un neurone peut être schématisé ainsi: il fait la somme de toutes les informations qu'il reçoit et il émet un signal à condition que la somme soit suffisamment élevée.
Si l'on ramène la contribution d'un neurone au cerveau tout entier, on se rend compte que chacun effectue un travail très simple par rapport au résultat obtenu. En effet, les neurones réalisent des opérations basiques, et pourtant, lorsque l'on en met 10 milliards ensemble, on peut créer une entité pensante !
Cependant, cela n'est pas suffisant: un cerveau ne peut rien faire s'il n'a pas de quoi apprendre. Il a besoin d'informations venant de l'extérieur. C'est pour cela qu'il est relié aux différents organes du corps. Par exemple, il reçoit les images provenant des yeux, les sons, les douleurs...
Grâce à ces informations il est capable de faire son apprentissage: lorsqu'une action a provoqué une douleur, il doit changer l'organisation des neurones afin de ne pas répéter la même erreur.
L'objectif des réseaux de neurones artificiels est donc de modéliser le fonctionnement des neurones réels, mais aussi de permettre un apprentissage.
3 - Le neurone mathématique
On vient de voir que les neurones ont un fonctionnement assez simple et facilement applicable en mathématiques: il faut faire une sommation des informations qui lui sont fournies, puis appliquer un seuil à cette somme.
Pour schématiser cela, on admettra que les entrées (les informations que le neurone reçoit) ne peuvent valoir que 0 ou 1. Cela correspond aux signaux électriques fournis par les neurones voisins.
La somme (Σ) est l'opération habituelle. Le seuil est représenté par une fonction de Heaviside:
Ainsi, si la somme est suffisante, la sortie (signal transmis) vaut 1. Sinon, elle vaut 0.
Voilà ce qu'est un neurone en mathématiques. Il faut maintenant en assembler pour former un réseau.
Note: En réalité, les signaux utilisés ne sont pas binaires (0 ou 1): on assouplit la définition précédente en autorisant que ces signaux soient des nombres réels. De plus, la fonction seuil n'est pas aussi abrupte. On utilise plutôt une sigmoïde qui a une pente plus douce.
4 - Le réseau de neurones
Les neurones formels que l'on vient de définir doivent être assemblés pour former un réseau. Le type de réseau le plus simple s'appelle le "perceptron". Il est constitué en fait d'un seul neurone et permet de réaliser des opérations très simples. Il est cependant très limité. C'est pourquoi on utilise un type de réseau plus complexe, le Perceptron Multi-Couches (PMC). Comme son nom l'indique, il est constitué de plusieurs couches de neurones entièrement connectées entre elles (cf. figure ci-dessous).
Que veulent dire "entrées" et "sorties" ? Si l'on compare notre réseau au cerveau, on peut comprendre cela comme les signaux reçus, et les ordres émis. Par exemple, si l' "entrée" est une image provenant des yeux, disons, un ours qui attaque, alors il faut que le cerveau donne en "sortie" l'ordre de fuir ! Ainsi, lorsqu'un sens donne une information, le cerveau renvoie une réponse.
Note: Ces réseaux PMC sont les plus utilisés. Mais il en existe d'autres types, notamment les réseaux récurrents. Ce sont des réseaux qui bouclent sur eux-mêmes. Mais nous n'en parleront pas ici car la théorie est trop compliquée.
5 - Comment apprendre au réseau
Maintenant que l'on a créé un réseau, il faut lui faire apprendre quelque chose. Pour mieux comprendre cela, nous prendrons l'exemple de la reconnaissance de caractères: on présente des caractères au réseau et il a pour objectif de reconnaître ce caractère. Par exemple, si on lui montre la lettre "a" dessinée, il doit nous répondre que cela est un "a".
Comment réaliser cela ? La méthode est en quelque sorte une imitation du cerveau: si la réponse est correcte, c'est bien, mais s'il y a une erreur, il faut modifier le réseau afin de ne pas réitérer l'erreur.
On recommence plusieurs centaines de fois l'opération, jusqu'à ce que le réseau ait bien appris sa leçon !
Le principe est donc relativement simple. On fait l'éducation du réseau comme on éduquerais un enfant: il faut lui répéter plusieurs fois qu'il a fait une erreur, et à la fin, il a compris.
Note: Comment est-il possible de modifier le réseau ? Les liaisons entre les neurones ont en fait une particularité: elles ont un "poids". C'est un nombre réel souvent noté w. Ils interviennent dans la somme effectuée par chaque neurone (la somme est pondérée), et grâce à eux, il est possible de modifier le réseau en changeant leurs valeurs. Ceci dit, il n'est pas évident de savoir de combien il faut modifier ces poids. Plusieurs théories existent, elles permettent de modifier les poids de façon à converger vers une erreur minimale.
6 - Que peut faire un réseau ?
Les réseaux de neurones ont de nombreuses applications possibles. En voici quelques exemples:
- Approximation de fonctions: les fonctions trop compliquées peuvent être approximées, grâce au réseau, par une somme de fonctions plus simples comme des polynômes ou des sigmoïdes.
- Optimisation de trajectoires: en intégrant les paramètres tels que le vent, les conditions extérieures, .... On peut, par exemple, déterminer quelle est la meilleure trajectoire pour un avion, une fusée...
- Reconnaissance: un réseau peut servir à reconnaître des caractères. Cela est déjà utilisé à la Poste pour lire les codes postaux, ou même dans certaines banques pour lire les chèques. Il est aussi possible de retrouver la prononciation des mots à partir d'un texte.
- Prévision: on utilise de plus en plus les réseaux pour faire des prévisions en marketing (prédiction de comportement, de possibilité de vente d'un produit, ...) ou pour le trafic routier... Mais les prévisions en météo ou en bourse sont trop compliquées à réaliser.
- Contrôle: on peut contrôler les produits dans une industrie.
- Robotique: certains robots sont dotés de réseaux de neurones. Des entreprises japonaises se vantent déjà de leur utilisation, même pour des produits électroménagers ou informatiques.
Les réseaux de neurones ont encore beaucoup d'autres applications possibles. En général, cela se résume en un problème d'optimisation. Peut-être serons-nous capables, dans le futur, de reproduire une forme d'intelligence... Mais nous en sommes encore loin !