Bonjour,
Je m'intéresse depuis quelques temps aux réseaux de neurones et plus particulièrement à la prédiction de séries temporelles.
Je précise que je suis totalement novice en codage (étudiant en droit), je suis cependant assez "geek" donc je peux apprendre si on m'en donne le temps. Je me suis renseigné sur la théorie des réseaux de neurones que je pense comprendre dans les grandes lignes, même si les subtilités mathématiques m'échappent souvent.
Je m'adresse à vous car je n'arrive pas à utiliser le Neural Network Tool de Matlab et Simulink pour arriver à mon but. J'ai fouillé dans la base "Help" de Matlab, du NNT, et de Simulink, mais il y a tellement d'informations que ça m'a plus embrouillé qu'autre chose. J'ai cru comprendre qu'on pouvait effectuer la même action de plusieurs façons, mais il y en a tellement que je ne sais pas par quel bout prendre le problème. J'ai également cherché inlassablement sur Google et sur Youtube mais je crois que j'ai épuisé tous les articles ou posts de forum qui auraient pu résoudre mon problème.
Voici mon problème :
Imaginons la ville de Trifouilli-La-Coquine, qui est très pluvieuse. Je souhaiterais prévoir les niveaux de précipitation de 2016 et 2017 sur la base des niveaux de précipitation des années 1990-2014.
Je vous écris les données (créées de toutes pièces) que j'essaie d'utiliser (en input et en target) dans le NNT :
INPUT :
1990 700
1991 714.5
1992 750
1993 680
1994 756.8
1995 710
1996 713
1997 715
1998 718
1999 680
2000 520
2001 700
2002 716
2003 719
2004 721
2005 699
2007 702.5
2008 703.5
2009 705.6
2010 708
2011 719
2012 704
2013 708
TARGET :
2014 709
2015 713
Le plus simple pour moi serait de savoir ce que quelqu'un d'expérimenté ferait à partir de ces données pour entraîner le réseau de neurones à produire les données TARGET à partir des données INPUT ? (pas besoin que la prédiction soit réaliste, je veux juste comprendre comment je peux lui faire prédire quelque chose)
Je détaille tous les problèmes auxquels j'ai été confronté :
* Jusqu'ici j'ai rentré ces données en utilisant le "Time Series App" (ce qui semble correspondre à mon problème). Je ne sais pas trop avec quel modèle de réseau de neurones je dois entrer les données, donc j'ai testé les deux qui semblaient les plus simples :
- Le "Non-Linear Input-Output" (le plus simple, on entre X pour prévoir Y)
- Le "Non-Linear AutoRegressive (NAR)"
Je vois que les réseaux de NNTool semblent être des réseaux à 3 couches.
* A chaque fois, j'ai essayé d'entrer les données de la période 1990-2013 en Inputs, et les données 2014-2015 en Targets avec un fichier .txt
Mais à chaque fois j'ai eu un problème m’empêchant d'appuyer sur le bouton "Next" en m'affichant un message d'erreur "Data has less than 10 timestep" quand je sélectionne "cell column" ou "matrix column", ou "Data selection has differents number of timesteps" quand je sélectionne "matric row".
Bon du coup j'ai essayé de rajouter des données fictives pour qu'il y ait le même nombre de données en INPUT et TARGET (du coup j'ai transformé les données 2014-2015 en 2014-2036 en inventant des données). Ça ne change rien concernant les messages d'erreur de "cell column" et matrix column" , mais quand je sélectionne "matrix row", là ça me laisse continuer. Je ne sais pas trop ce que ça veut dire mais bon, au moins je peux avancer.
* A partir de là je peux entraîner mon réseau, donc bon je valide (peu importe s'il est fiable ou pas, je voudrais juste pouvoir le "tester" sur de nouvelles données pour qu'il me donne une réponse qu'il crée de lui-même, ce que je ne suis pas encore arrivé à faire), et je fais créer un "simulink diagram" (les fonctions Matlab, j'ai essayé mais tellement de code que je ne m'y retrouve pas).
Ce qui me donne ça :
*J'ai cru comprendre qu'en double cliquant sur le neurone en input, en rentrait les données en input, donc je double clique, je vois qu'il y a une fenêtre qui s'affiche avec deux lignes "Constant value" et "Sample Time", et là je suis complètement bloqué. Déjà je ne comprends pas quelles sont les données qui sont inscrites par défaut dans ces lignes ( le "[0.78;0.081]" sur l'image). Quand j'essaie de rentrer des données dans une des deux lignes en me disant "bon les données inputs on doit pouvoir les mettre là", je me reçois toujours un message d'erreur.
Donc je me demande bien comment "injecter" des données à ce maudit réseau de neurones pour qu'il me renvoie des données en output... ?
Voilà la plupart de mes problèmes, mais en gros j'ai 3 questions :
- Quelle est le type de données qu'il faut injecter dans la NNTool ? Je me le demande car mes données en .txt sont reconnues comme "double" alors que les autres données en exemple dans le NTTool sont toutes de type "cell". Et je ne sais pas comment créer des données en "cell", ni quelles conséquences ça peut avoir de ne pas en utiliser...
- Quel modèle de réseaux de neurones me conseillez-vous pour ma prédiction ? NARX, NAR ou Non-Linear Input-Output ?
- ET SURTOUT : Une fois le réseau "ouvert" dans Simulink, comment puis-je "injecter" des données en input pour qu'il me renvoie des données "prédictives" en output ?
PS. Je précise que je suis conscient qu'un bon apprentissage se manifeste notamment par un "mean square error" le plus proche de 0 possible et une "Regression R values" le plus proche de 1 possible, mais je m'occuperait de tout cela dans un second temps, je veux d'abord comprendre comment simuler un réseau de neurones après l'apprentissage, qu'il soit fiable ou pas.
Please help me !
Partager