Eviter des obstacles avec un réseau de neurones
| Réseau de neurones |
| Index de l'article |
|---|
| Eviter des obstacles avec un réseau de neurones |
| Page # |
| Toutes les pages |
Le précédent tutorial sur l’évitement d’obstacle était réalisé avec de la logique floue. Voyons maintenant comment résoudre le même problème avec un réseau de neurone. Nous abordons ici le plus simple des cas, on va chercher à construire un réseau de neurones de type classique perceptron multicouche afin de construire un robot uniquement réactif, ne tenant pas compte de son mouvement précédent. Si l’historique des mouvements est important, on utilise alors un réseau récursif. Voyons donc comment créer, entraîner et tester ce réseau de neurone.
Définition du réseau de neurone
Un réseau de neurones de type perceptron multicouche est très facile à créer et son fonctionnement est très intuitif. Je ne rentrerai pas dans le détail du fonctionnement d’un tel réseau, si vous souhaitez plus de détail, je vous conseille d’effectuer une recherche sur Internet il existe de nombreux site sur le sujet.
Dans ce tutorial, j’utilise deux logiciels j’ai recours régulièrement :
- SIMÂ : simulateur khepera, la version gratuite de l'actuel Webots

Téléchargement : http://diwww.epfl.ch/lami/team/michel/khep-sim/
- SNNS : Stuttgart Neural Network Simulator
Un simulateur de réseau de neurones possédant un très grand nombre de  types et de paramètres différents.
Téléchargement : http://www-ra.informatik.uni-tuebingen.de/SNNS/
J'ai choisit SNNS parce que j'ai l'habitude de l'utiliser et qu'il permet de générer du code en C. Mais vous pouvez utiliser n'importe quel autre générateur.Â


Un réseau de neurones nécessite d'être entraîné pour pouvoir fonctionner. Nous devons donc enregistrer un fichier d'exemples qui sera représentatif des problèmes que l'on peut rencontrer. Le fichier d'exemples doit mettre en correspondance les entrées données par les capteurs avec les sorties désirées correspondant au mouvement d’évitement que l’on souhaite donner au robot.
Les exemples d’apprentissage doivent être bien choisis si l’on veut pouvoir réduire la taille du fichier d’apprentissage au maximum et si l’on ne veut pas obtenir une solution correspond bien aux fichiers d’exemple, mais beaucoup moins à la réalité. En effet, un réseau de neurone apprend une fonction. On n’a pas besoin de lui donner tous les points de la fonction pour qu’il arrive à la modéliser. Sinon l’exercice deviendrait infini. Il suffit de lui donner quelques points et le laisser deviner ce qui les relie. Cela veut également dire que plus la fonction à modéliser est compliquée, plus il faudra d’exemple pour permettre au réseau d’approximer correctement les blancs.


Autre détail d'importance, pour bien fonctionner, le réseau de neurone doit utiliser des valeurs entre 0 et 1. Dans notre cas, les valeurs des capteurs vont de 0 à 1023, 1023 correspondant au choc du capteur avec un obstacle. Je considère que le robot ne doit plus s'approcher des obstacles quand le capteur renvoie une valeur de 700. Les entrées iront donc de 0 à 700. Pour les ramener dans l'interval 0 à 1 on divise donc par 700. On fait de même pour les valeurs de sorties. Voici donc à quoi ressemblerait un mini fichier d'apprentissage :
| SNNS pattern definition file V3.2 generated at Mon Apr 25 15:58:23 1994 No. of input units : 8 No. of output units : 2 # Input pattern 1: 0.490 0.522 0.497 0.492 0.507 0.512 0.524 0.383 # Output pattern 1: 0.1 0.9 # Input pattern 2: 0.493 0.516 0.524 0.480 0.517 0.508 0.503 0.507 # Output pattern 2: 1 1 # Input pattern 3: 0.383 0.524 0.512 0.507 0.492 0.497 0.522 0.490 # Output pattern 3: 0.9 0. 1 |
On entraine ensuite le réseaux de neuones, en répétant le fichiers d'exemples n fois, jusqu'à ce que l'erreur soit raisonnable.
bstacle,intelligence artificielle}