En fait, le réseau de neurone (RdN) est un outil de décision avant tout. Comme le dit Nevion0u, ça peut s'appliquer à la recherche d'un emplacement pour des bancomats, mais pas seulement. En fait, le meilleur exemple que je connaisse, c'est la reconnaissance optique de caractères (OCR). En passant, c'est possible de s'amuser avec des exemples de RdN sur http://diwww.epfl.ch/mantra/tutorial/english/.
Comment ça marche ?
En fait, c'est un peut compliqué et je recommande de se trouver un bouquin ou de suivre un cours complet sur la chose, parce que ça ne s'explique pas aussi facilement que ça.
En résumé, un RdN est une succession de couches de neurones. Tous les neurones d'une couche sont interconnectés avec tous les neurones d'une autre (la première couche a bcp de neurones [en fait autant qu'il y a de variable d'entrée] alors que la dernière n'en a que très peu [en fait autant qu'il y a de sortie attendue]). Chaque interconnexion possède un poids qui va définir la probabilité de l'emprunter. On peut voir ça comme une sorte de labyrinthe: au départ tu as plein de chemins possibles, et selon le corrélations entre les variables d'entrée et les poids des interconnexions, tu te diriges vers une sortie spécifique.
Avant d'avoir quelque chose qui marche comme ça, il y a plusieurs étapes à suivre:
Phase d'entraînement:
C'est une phase d'apprentissage. Pour ça, il faut disposer d'une base de données des valeurs sources (dans le cas de l'OCR, des images de caractères - qu'il faudra encoder d'une manière ou d'une autre) et des valeurs d'arrivée évaluées par un expert (dans mon cas, les caractères représentés par les images). Le but de la phase d'apprentissage est de former le réseau, de lui faire adapter ses valeurs/poids afin "d'apprendre" à reconnaître des caractères. Attention toutefois à ne pas faire de l'overfitting: dans ce cas, le réseau est hyper doué pour reconnaître les caractères de la base de donnée d'apprentissage. Il connaît en fait tous les caractères (ce cas peut arriver par exemple si le réseau de neurones est trop grand). Bref, c'est pas bon du tout parce que le réseau est trop adapté à la base de donnée d'apprentissage, et sera perdu par la suite.
Phase de validation:
C'est une phase durant laquelle on évalue la qualité du réseau de neurone. En résumé, on teste si le réseau fonctionne bien avec une base de données inconnue.
Voilà pour les grandes lignes. En fait, mettre en place un RdN, c'est 10% de code, et 90% de tests, de tuning, d'adaptation de la taille du RdN, etc. Après ça, il faut bien garder à l'esprit qu'un RdN ne fonctionnera jamais correctement à 100%. Il y aura toujours des erreurs. En fait, l'avantage d'un RdN réside dans sa rapidité. Après, il faut avoir le filling pour faire un RdN qui soit le plus fiable possible.
Message édité par m0rbac le 04-07-2004 à 10:47:32