Â
Entraîner le réseau de neurone
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.

Une fonction mal repr�sent�e par les exemples

Une fonction mieux repr�sent�e
Â
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 patterns : 3 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.
Tester et amliorer les résultats
Une fois que l'on passe en phase d'apprentissage, il peut arriver que le réseaux de converge pas, ou que l'erreur reste très haute. Dans notre cas, cela peut provenir soit de la strucuture du réseau, soit du fichier d'exemples. La structure optimale est de 4 à 6 neurones sur la couche cachée, selon le comportement que vous voulez donner à votre robot. Si le changement du nombre de neurones sur la couche cachée n'a pas d'incidence sur la convergence, alors il faut probablement vérifier votre fichier d'exemples. Il est d'ailleurs très instructif d'étudier l'erreur exemple par exemple. Cela m'a permis à plusieurs reprises de m'apercevoir que les exemples qui ne sont pas "appris" et qui présente donc une valeur d'erreur importante sont des exemples corrects dans le pire des cas. La présence d'un exemple avec une erreur importante peut également vous indiquer que ce type de situations est mal documenté par les exemples que vous avez fournit. Il faut alors ajouter plus d'exemples de situations similaires.
Â
Hormis ce genre de problèmes, vous parviendrez rapidement à faire converger votre réseau vers un état satisfaisant. Se posera alors la question de savoir comment améliorer le réseau ? La recherche à la main des exemples peut être viable pour des petits problèmes comme celui de l'article. Néanmoins, dès que le problème devient plus important et possède plus de variable, on peut alors automatiser la recherche de solutions optimales au moyen d'algorithmes génétiques.
L'utilisation d'algorithmes génétiques pour la recherche de topologies permet de générer une grande quantité de types de réseaux en faisant varier la fonction d'apprentissage, le nombre de neurones sur la couche cachée, ou même le poids des connections lors de la phase d'initialisation. En effet, selon la valeur des poids lors de l'initialisation du réseau, la phase d'apprentissage qui va se dérouler ensuite ne va pas se dérouler de la même façon. Cela peut même influer sur la convergence ou non du réseaux de neurone. Le programme SNNS est très intéressant pour ce genre d'optimisation par algorithmes génétiques puisqu'il peut s'interfacer avec un autre programme nommé ENZO qui intègre un algorithme génétique d'optimisation de typologies.
Â
Quelques liens sur l'évitement d'obstacles avec réseau de neurones
Â
Evitement d'obstacles avec réseau de neurones et algorithmes génétiques
{jos_ri

bstacle,intelligence artificielle}